Mayarin Lopéz
Monday, April 04, 2016
Adaptado al ejercicio visto en clases.
## Método para hallar P(xo) y P´(xo)
n<-4 #Grado del polinomio
x0<-(-2)
a0<-(-4) # Término independiente del polinomio
a<-c(3, -3, 0, 2) # coeficientes del polinomio desde a1 hasta a4
y<-a[n]
z<-a[n]
j<-n-1
while (0<j){
y<-x0*y+a[j]
z<-x0*z+y
j<-j-1}
z
## [1] -49
y<-x0*y+a0
y
## [1] 10
supongamos ahora que a partir del método de Horner queremos usar el método de Newton para hallar una raiz de P, con aproximación inicial \[x_0\]
n<-4 #Grado del polinomio
i<-1 # iniciar la primera iteración
N<-2 #Número de iteraciones,
##(coloqué estas para que coincida con el ejemplo del libro)
x0<-(-2) # aproximaci+on inicial
a0<-(-4) # Término independiente del polinomio
a<-c(3, -3, 0, 2) # coeficientes del polinomio desde a1 hasta a4
while(i<=N){
y<-a[n]
z<-a[n]
j<-n-1
while (0<j){
y<-x0*y+a[j]
z<-x0*z+y
j<-j-1}
z
y<-x0*y+a0
y
x0<-x0-y/z
i<-i+1}
x0
## [1] -1.742433
El siguiente algoritmo nos da una raiz apróximada de \[P(x) =16x^4-40x^3+5x^2+20x+6\] tomando como aproximaciones iniciales: \[x_0=0.5\] \[x_1=1.0\] \[x_2=1.5\]y una tolerancia de \[10^{-5}\]
# Método de Müller
f<-function(x)(16*x^4-40*x^3+5*x^2+20*x+6)
x0<-0.5
x1<-1.0
x2<-1.5
tol<-0.00001
N<-80
h1<-x1-x0
h2<-x2-x1
d1<-(f(x1)-f(x0))/h1
d2<-(f(x2)-f(x1))/h2
d<-(d2-d1)/h2+h1
i<-3
while(i<N){b<-d2+h2*d
D<-(b^2-4*(f(x2)*d))^(1/2)
if (abs(b-D)<abs(b+D)){E<-b+D}
else {E<-b-D}
h<-2*f(x2)/E
p<-x2+h
if (abs(h)<tol){p
break}
x0<-x1
x1<-x2
x2<-p
h1<-x1-x0
d1<-(f(x1)-f(x0))/h1
d2<-(f(x2)-f(x1))/h2
d<-(d2-d1)/h2+h1
i<-i+1
}
p
## [1] 1.241677
Hemos obtenido así la primera raiz real del polinomio \[P(x)\]