Vous êtes sur la page 1sur 11

33

3.3

Mtodo de Newton

Sean f: RR, y la ecuacin f(x)=0. Sea r tal que f(r)=0, entonces r es una raz real de la
ecuacin.
El mtodo de Newton, o Newton-Raphson, es una frmula eficiente para encontrar r. Es un
caso especial del mtodo del punto fijo en el que la ecuacin f(x) = 0 se re-escribe en la forma
x = g(x) eligiendo g de tal manera que la convergencia sea de segundo orden.
3.3.1

La frmula de Newton

Suponer que g es una funcin diferenciable en una regin que incluye a la raz r y al valor xi
(calculado en la iteracin i). Desarrollando con la serie de Taylor:
2

g(xi) = g(r) + (xi - r) g(r) + (xi - r) g(r)/2! + . . .


Con las definiciones del mtodo del punto fijo:
r = g(r)
xi+1 = g(xi), i = 0, 1, 2, 3, . . .
Se obtiene:
2
xi+1 = r + (xi - r) g(r) + (xi - r) g(r)/2! + . . .
Si se define el error de truncamiento de la siguiente forma:
Error en la iteracin i
Ei = xi - r:

Ei+ 1 = xi+1 - r:

Error en la iteracin i +1

Finalmente se obtiene:
Ei+ 1 = Ei g(r) + Ei2 g(r)/2! + . . .
Si se hace que g(r) = 0, y si g(r) 0, entonces se tendr:
Ei+ 1 = O( Ei2 ),
Con lo que el mtodo tendr convergencia cuadrtica.
El procedimiento para hacer que g(r) = 0, consiste en elegir una forma apropiada para g(x):
g(x) = x - f(x) h(x), en donde h es alguna funcin que debe especificarse
Es necesario verificar que la ecuacin x = g(x) se satisface con la raz r de la ecuacin f(x) = 0
g(r) = r - f(r) h(r) = r g(r) = r
Se deriva g(x) y se evala en r
g(x) = 1 - f(x) h(x) - f(x) h(x)
g(r) = 1 - f(r) h(r) - f(r) h(r) = 1 - f(r) h(r)
Para que la convergencia sea cuadrtica se necesita que g(r) = 0
g(r) = 0 0 = 1 - f(r) h(r) h(r) = 1/f(r) h(x) = 1/f(x), f'(x)0
Con lo que se puede especificar h(x) para que la convergencia sea cuadrtica.
Al sustituir en la frmula propuesta se obtiene x = g(x) = x - f(x)/f(x), y se puede escribir la
frmula iterativa de Newton:
Definicin: Frmula iterativa de Newton

f(xi )
xi + 1 =
xi
, f '(xi ) 0 , i = 0, 1, 2, . . .
f '(xi )

34
3.3.2

Algoritmo del mtodo de Newton

Para calcular una raz r real de la ecuacin f(x) = 0 con precisin E se usa la frmula iterativa
f(xi )
xi + 1 =
xi
, f '(xi ) 0 y se genera una sucesin de valores xi esperando que tienda a un
f '(xi )
valor que satisfaga la ecuacin.
1) Elegir el valor inicial x0
2) Generar la sucesin de valores con la frmula iterativa:
f(xi )
xi + 1 =
xi
, f '(xi ) 0 , i = 0, 1, 2, 3, ...
f '(xi )
3) Si el mtodo converge, la sucesin xi tender hacia un valor fijo que satisface la
ecuacin f(x) = 0
Ejemplo. Calcule una raz real de f(x) = e - x = 0 con la frmula de Newton
x

Suponer el valor inicial: x0 = 0.5


f(x 0 )
e x0 x 0
e0.5 0.5
x1 =
x0
=
x0
=
0.5

=
0.5522
f '(x 0 )
e0.5
e x0

x 2 =
x1

f(x1 )
e x1 x1
e0.5522 0.5522
=
x1
=
0.5522

=
0.5538
f '(x1 )
e0.5522
e x1

f(x 2 )
e x2 x 2
e0.5538 0.5538
=
=

=
x2
0.5538
0.5538
f '(x 2 )
e0.5538
e x2
En los resultados se observa la rpida convergencia. En la tercera iteracin el resultado tiene
cuatro decimales que no cambian.
x 3 =
x2

3.3.3

Interpretacin grfica del mtodo de Newton

Suponer que f es como se muestra en el siguiente grfico y x0 es el valor inicial:

Seguimos el siguiente procedimiento:


Calcular f(x0)
Trazar una tangente a f en el punto (x0, f(x0)) hasta intersecar al eje horizontal
El punto obtenido es x1
Entonces tan(0) = f(x0) = f(x0)/(x0 x1) de donde se obtiene x1 = x0 f(x0)/f(x0)
Calcular f(x1)
Trazar una tangente a f en el punto (x1, f(x1)) hasta intersecar al eje horizontal:
El punto obtenido es x2
Entonces tan(1) = f(x1) = f(x1)/(x1 x2) de donde se obtiene x2 = x1 f(x1)/f(x1)

35
Con estos dos resultados se puede generalizar:
tan(i) = f(xi) = f(xi)/(xi xi+1) de donde se obtiene xi+1 = xi f(xi)/f(xi)
Es la frmula de Newton.
Esta interpretacin grfica permite observar que la secuencia de valores calculados con la
frmula de Newton sigue la trayectoria de las tangentes a f(x). Si hay convergencia, esta
secuencia tiende a la raz r. En la siguiente seccin se analiza la propiedad de convergencia
de ste mtodo.
3.3.4

Convergencia del mtodo de Newton

Se estableci en el mtodo del punto fijo que la ecuacin recurrente x=g(x) tiene la siguiente
propiedad de convergencia: | Ei+ 1 |=| g'(z) || Ei | , i = 0, 1, 2, 3, . . . La convergencia se produce
si se cumple que |g(x)|<1
Para el mtodo de Newton se obtuvo la siguiente ecuacin recurrente:
x = g(x) = x - f(x)/f(x),
f(x)f ''(x)
g'(x) =
Entonces,
, f(xi ) 0
[f '(x)]2
Si se supone que en alguna regin cercana a r en la cual se incluyen los valores calculados x,
se tiene que f(x)0, y si r es una raz de f(x)=0, entonces f(r) = 0, y por lo tanto:
f(r)f ''(r)
g'(r) =
0
=
[f '(r)]2
Esto demuestra que existe algn intervalo cercano r en el que |g(x)|<1 siempre que g sea
continua en ese intervalo
La frmula de Newton converge si los valores calculados se
mantienen dentro de este intervalo.
Para obtener el intervalo de convergencia, no es prctico usar la definicin anterior pues
involucra resolver una ecuacin no lineal complicada. Existen otros procedimientos para
analizar la convergencia de esta frmula como se muestra a continuacin.
3.3.5

Una condicin de convergencia local para el mtodo de Newton

Dada la ecuacin f(x)=0. Suponer que f(x), f(x), f(x) son continuas y limitadas en un intervalo
[a, b] que contiene a la raz r como se muestra en el siguiente grfico:

Para este caso, f(x) tiene las siguientes propiedades


a) f(x) > 0, x(r, b]
b) f(x) > 0, x(r, b]
c) f(x) > 0, x(r, b]
Demostrar que la frmula de Newton converge para cualquier valor inicial x0 elegido en el
intervalo (r, b].
Demostracin
Frmula iterativa de Newton
f(xi )
xi + 1 =
xi
, f(xi ) 0 , i=0, 1, 2,...
f '(xi )

36
1) Las propiedades a) y b) implican que xi+ 1 < xi :

f(xi )
xi + 1 < xi
(1)
f '(xi )
Al sumar a la derecha un trmino positivo, pues f(x), f'(x) son positivos, es vlido el enunciado
xi+=
xi
1

2) La propiedad c) implica que r < xi+ 1 :


Desarrollamos f(x) con tres trminos de la serie de Taylor alrededor de xi

f(r)= f(xi ) + (r xi )f '(xi ) + (r xi )2 f ''(z) / 2!


El ltimo trmino representa el error de truncamiento de la serie. Este trmino es positivo pues
f''(x) es positivo, por lo tanto, al restar a la derecha un trmino positivo:

f(r) > f(xi ) + (r xi )f '(xi ) 0 > f(xi ) + (r xi )f '(xi ) r < xi f(xi ) / f '(xi ) r < xi+ 1

(2)

Combinando los resultados (1) y (2) se tiene

r < xi+ 1 < xi , i = 0, 1, 2,...


Se define una sucesin numrica decreciente que tiende a r.
Esto prueba la convergencia de la frmula iterativa de Newton:

xi
i

Si se dispone del grfico de f es fcil reconocer visualmente si se cumplen las condiciones a),
b) y c) como el caso anterior y se puede definir un intervalo para la convergencia del mtodo.
Si f tiene otra forma, igualmente se pueden enunciar y demostrar las condiciones para que se
produzca la convergencia en cada caso.

Ejemplo. Determine la convergencia del mtodo de Newton si f tuviese la siguiente forma

Su geometra se puede describir con:


a) f(x)>0, x[a, r)
b) f(x)<0, x[a, r)
c) f(x)>0, x[a, r)
Con un desarrollo similar al anterior, se puede probar que el mtodo converge para cualquier
valor inicial x0 elegido en el intervalo [a, r), (a la izquierda de la raz r).
El uso de esta propiedad es simple si se dispone de un grfico de la ecuacin. Se elige como
intervalo de convergencia aquella regin en la que se observa que la trayectoria de las
tangentes produce la convergencia a la raz. Si se elije un valor inicial arbitrario no se puede
asegurar que el mtodo converge.

37
Ejemplo.- Si un crculo de radio a rueda en el plano a lo largo del eje horizontal, un punto P
de la circunferencia trazar una curva denominada cicloide. Esta curva puede expresarse
mediante las siguientes ecuaciones paramtricas
x(t) = a(t sen t),
y(t) = a(1 cos t)
Suponga que el radio es 1 metro, si (x, y) se miden en metros y t representa tiempo en
segundos, determine el primer instante en el que la magnitud de la velocidad es 0.5 m/s. Use
el mtodo de Newton, E=0.0001
Grfico de la cicloide

Su trayectoria:
u(t) = (x(t), y(t)) = (t sen t, 1 cos t)
Su velocidad:
u(t) = (1 cos t, sen t)
Magnitud de la velocidad:

u'(t) =
(1 cos t)2 + (sent)2
Grfico de la magnitud de la velocidad

Dato especificado:

(1 cos t)2 + (sent)2 = 0.5

f(t) = (1 cost)2 + (sent)2 0.25 = 0

Mtodo de Newton
f(ti )
(1 cos ti )2 + (senti )2 0.25
ti+ 1 =
ti
ti
=
f '(ti )
2(1 cos ti )(senti ) + 2(senti )(cos ti )

(frmula iterativa)

t0 = 0.5

(del grfico)

t1 = ... = 0.505386
t2 = ... = 0.505360
t3 = ... = 0.505360

(iteraciones)

38
3.3.6

Prctica computacional

En esta seccin se describe el uso de MATLAB para usar el mtodo de Newton. Se lo har
directamente en la ventana de comandos.
Para calcular una raz debe elegirse un valor inicial cercano a la respuesta esperada de
acuerdo a la propiedad de convergencia estudiada para este mtodo.
Para realizar los clculos se usa la frmula de Newton en notacin algortmica:
f(xi )
xi+=
xi
, i=0, 1, 2, 3,
1
f '(xi )
es el valor inicial
x0
son los valores calculados
x1, x2, x3,
En los lenguajes computacionales como MATLAB no se requieren ndices para indicar que el
valor de una variable a la izquierda es el resultado de la evaluacin de una expresin a la
derecha con un valor anterior de la misma variable.
La ecuacin se puede definir como una cadena de caracteres entre comillas simples. La
derivada se obtiene con la funcin diff de MATLAB y con la funcin eval se evalan las
expresiones matemticas. Opcionalmente se puede usar el tipo syms para definir variables
simblicas o la funcin sym para operar algebraicamente con expresiones matemticas.
Forma computacional de la frmula de Newton en MATLAB:
x=x-eval(f)/eval(diff(f))
Presionando repetidamente la tecla del cursor se obtienen resultados sucesivos. La
convergencia o divergencia se puede observar directamente en los resultados.
Ejemplo. Calcule con MATLAB las races reales de f(x) = e - x = 0 con la frmula de Newton.
x

Es conveniente graficar la ecuacin mediante los siguientes comandos de MATLAB. Tambin


se puede editar el dibujo directamente en la ventana de graficacin:
>> syms x
>> f=exp(x)-pi*x;
>> ezplot(f,[0,2]),grid on

A continuacin se utliza la frmula de Newton en MATLAB eligiendo del grfico un valor inicial.
Reutilizando este comando se obtiene una secuencia de aproximaciones:
>> format long
>> x=0.5;

39
>> x=x-eval(f)/eval(diff(f))
x=
0.552198029112459
>> x=x-eval(f)/eval(diff(f))
x=
0.553825394773978
>> x=x-eval(f)/eval(diff(f))
x=
0.553827036642841
>> x=x-eval(f)/eval(diff(f))
x=
0.553827036644514
>> x=x-eval(f)/eval(diff(f))
x=
0.553827036644514
El ltimo resultado tiene quince decimales fijos.
Se puede observar la rapidez con la que el mtodo se acerca a la respuesta duplicando
aproximadamente, la precisin en cada iteracin. Esto concuerda con la propiedad de
convergencia cuadrtica.
Finalmente, es necesario verificar que este resultado satisface a la ecuacin:
>> eval(f)
ans =
0
Ejemplo. Se propone el siguiente modelo para describir la demanda de un producto, en donde
x es tiempo en meses:

d(x) = 20x e 0.075x


Encuentre el valor de x para el cual la demanda alcanza el valor de 80 unidades. Use el
mtodo de Newton para los clculos. Elija el valor inicial del grfico y muestre los valores
intermedios.
La ecuacin a resolver es:
=
f(x) 20x e 0.075x
=
80 0
>> syms x
>> f=20*x*exp(-0.075*x)-80;
>> ezplot(f,[0,50]),grid on
>> x=5;
>> x=x-eval(f)/eval(diff(f))
x=
6.311945053556490
>> x=x-eval(f)/eval(diff(f))
x=
6.520455024943885
>> x=x-eval(f)/eval(diff(f))
x=
6.525360358429755
>> x=x-eval(f)/eval(diff(f))
x=
6.525363029068742
>> x=x-eval(f)/eval(diff(f))
x=
6.525363029069534
>> x=x-eval(f)/eval(diff(f))
x=
6.525363029069534

(20 x)/exp((3 x)/40) - 80


20

-20

-40

-60

-80
0

10

20

30
x

40

50

40
Ejemplo. Una partcula se mueve en el plano X-Y de acuerdo con las ecuaciones paramtricas
siguientes, donde t es tiempo, entre 0 y 1:
x(t)=t*exp(t)
y(t)=1+t*exp(2t)
Con la frmula de Newton calcule el tiempo en el que la partcula est ms cerca del punto
(1,1)

=
d

Distancia de un punto (x, y) al punto (1, 1) :

(x(t) 1)2 + (y(t) 1)2

Para encontrar la menor distancia, debe resolverse la ecuacin: f(t) = d(t) = 0


>> t=[0:0.01:1];
>> x=t.*exp(t);
>> y=1+t.*exp(2*t);
>> plot(x,y)

Puntos para evaluar las ecuaciones paramtricas

Grfico del recorrido


9
8
7
6
5
4
3
2
1
0

0.5

1.5

>> syms t
>> x=t*exp(t);
>> y=1+t*exp(2*t);
>> d=sqrt((x-1)^2+(y-1)^2)
d=
(t^2*exp(4*t) + (t*exp(t) - 1)^2)^(1/2)
>> f=diff(d);
>> t=0.5;
>> t=t-eval(f)/eval(diff(f))
t=
0.278246639067713
>> t=t-eval(f)/eval(diff(f))
t=
0.258310527656699
>> t=t-eval(f)/eval(diff(f))
t=
0.256777599742604
>> t=t-eval(f)/eval(diff(f))
t=
0.256768238259669
>> t=t-eval(f)/eval(diff(f))
t=
0.256768237910400
>> t=t-eval(f)/eval(diff(f))
t=
0.256768237910400
>> eval(d)
ans =
0.794004939848305

2.5

(para operar algebraicamente)

(tiempo para la menor distancia)

(es la menor distancia)

41
Ejemplo. Encuentre una interseccin de las siguientes ecuaciones en coordenadas polares
r=2+cos(3*t)
t
r=2- e
Ecuacin a resolver:

f(t) = 2+cos(3*t) (2-e )

>> t=[-pi:0.01:2*pi];
>> r=2+cos(3*t);
>> polar(t,r),hold on
>> r=2- exp(t);
>> polar(t,r)

Puntos para evaluar las ecuaciones

Grfico en coordenadas polares


90

120

60
2

150

30
1

180

330

210

300

240
270

>> syms t
>> f=2+cos(3*t)-(2-exp(t));
>> t=-1;
>> t=t-eval(f)/eval(diff(f))
t=
-0.213748703557153
>> t=t-eval(f)/eval(diff(f))
t=
-0.832049609116596
>> t=t-eval(f)/eval(diff(f))
t=
-0.669680711112045
>> t=t-eval(f)/eval(diff(f))
t=
-0.696790503081824
>> t=t-eval(f)/eval(diff(f))
t=
-0.697328890705191
>> t=t-eval(f)/eval(diff(f))
t=
-0.697329123134159
>> t=t-eval(f)/eval(diff(f))
t=
-0.697329123134202
>> t=t-eval(f)/eval(diff(f))
t=
-0.697329123134202
>> r=2+cos(3*t)
r=
1.502086605214547

(valor inicial)

(ngulo: -39.95. grados)

(radio)

42
3.3.7 Instrumentacin computacional del mtodo de Newton
Para evitar iterar desde la ventana de comandos, se puede instrumentar una funcin que reciba
la ecuacin a resolver f, la variable independiente v definida como smbolo matemtico y el
valor inicial u. Adicionalmente se puede enviar un parmetro e para controlar la precisin
requerida y otro parmetro m para el mximo de iteraciones.
La funcin entrega la solucin calculada u y el nmero de iteraciones realizadas k. Si el
mtodo no converge en el mximo de iteraciones previsto, u ser un valor nulo y el nmero de
iteraciones k ser igual al mximo m.
function [u,k]=newton(f,v,u,e,m)
t=u;
for k=1:m
u=u-subs(f,v,u)/subs(diff(f,v),v,u);
if abs(t-u)<e
return
end
t=u;
end
u=[ ];
k=m;
Ejemplo. Calcule las dos races reales de f(x) = e - x = 0 con la funcin newton. Los valores
iniciales son tomados del grfico.
x

>> syms x
>> f=exp(x)-pi*x;
>> ezplot(f,[0,2]),grid on
exp(x) - x
1.2
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4

0.2

0.4

0.6

0.8

1
x

1.2

1.4

1.6

1.8

>> [u,k]=newton(f, x, 0.5, 0.000001, 10)


u=
0.553827036644514
k=
4
>> [u,k]=newton(f, x, 1.6, 0.000001, 10)
u=
1.638528419970363
k=
4

Primera raz

Segunda raz

Si no es de inters el nmero de iteraciones, la funcin puede llamarse solo con un parmetro


>> u=newton(f, x, 0.5, 0.000001, 10)
u=
0.553827036644514

43
3.3.8

Uso de funciones especiales de MATLAB

MATLAB dispone de funciones especiales para calcular races de ecuaciones no lineales.


La funcin fzero
Es equivalente a usar los mtodos de la biseccin y de Newton
Ejemplo. Resuelva la ecuacin f(x) = e - x = 0 usando fzero
x

>> f='exp(x)-pi*x';
>> r=fzero(f, [0.4, 0.8])
r=
0.55382703664451

(Para usar como el mtodo de la biseccin


se especifica el intervalo que contiene a la raz)

>> f='exp(x)-pi*x';
>> r=fzero(f, 0.4)
r=
0.553827036644514
>> r=fzero(f, 1.6)
r=
1.638528419970363

(Para usar como el mtodo de Newton


se especifica un valor cercano a la raz)

La funcin solve
Se usa resolver ecuaciones en forma simblica exacta. En algunos casos la solucin queda
expresada mediante smbolos predefinidos en MATLAB. Con la funcin eval se convierten las
soluciones al formato numrico decimal. Esta funcin no entrega todas las soluciones de una
ecuacin.
Ejemplo. Resuelva la ecuacin f(x) = e - x = 0 usando solve
x

>> f='exp(x)-pi*x';
>> r=eval(solve(f))
r=
0.553827036644514

(Raz real en forma numrica decimal)

La funcin roots
Sirve para calcular todas las races de ecuaciones polinmicas. Los coeficientes del
polinomio deben almacenarse en un vector.
3

Ejemplo. Encuentre todas las races del polinomio 2x - 5x - 4x - 7 = 0 usando roots


>> a=[2, -5, -4, -7];
>> r=roots(a)
r=
3.39334562071304
-0.44667281035652 + 0.91209311493838i
-0.44667281035652 - 0.91209311493838i

(Coeficientes del polinomio)

(Una raz real y dos races complejas)

Vous aimerez peut-être aussi