You are on page 1of 29

Mtodos numricos para

la resolucin de
Sistemas de Ecuaciones
no Lineales
Contenido
Planteamiento del problema
Mtodo de Punto Fijo
Mtodo de Newton
Variantes del mtodo de Newton
Evaluacin diferida del jacobiano
Aproximacin por diferencias finitas
Newton unidimensional
Mtodos cuasi-Newton (Broyden)
Notacin
f x x x
f x x x
f x x x
f IR IR
x x f x x
n
n
n n
i
n
n i n
1 1 2
2 1 2
1 2
1 1
0
0
0
( , ,..., )
( , ,..., )
( , ,..., )
:
( ,..., ) ( ,..., )
=
=
=

F x
F IR IR
x x x f x f x
n n
n n
( )
:
( , ... , ) ( ( ), ... ( ))
=

=

0
1 1
Escalar




Vectorial
Resolucin iterativa
x
(0)
estimacin inicial de la solucin
Iteraciones: x
(1)
, x
(2)
, , x
(k)

Criterio de convergencia
| x
(k+1)
x
(k)
| < tol
Criterio de parada
k > maxiter
Esquema del algoritmo
Entrada: f, x
0
, tol, maxiter
Proceso
Inicializar incr, iter
Mientras incr > tol & iter < maxiter
Obtener x
incr = norm(x x
0
)
Actualizar x
0
, iter
Salida: x, iter, incr
Si incr > tol no converge
Mtodo de Punto Fijo
Punto fijo

Estimacin inicial

Iteraciones

Criterio de parada
x G x
k k ( ) ( )
( )
+
=
1
x x x
n
( ) ( ) ( )
( ,..., )
0
1
0 0
=
x x tol
k k ( ) ( ) +
<
1
F x x G x ( ) ( ) = = 0
Algoritmo de Punto Fijo
function [x,iter,incr] = pfijo(g,x0,tol,
maxiter)
iter = 0;
incr = tol + 1;
while incr > tol & iter < maxiter
x = feval(g,x0);
incr = norm(x - x0);
iter = iter + 1;
x0 = x;
end
if incr > tol, disp(No converge), end
Ejemplo
Sistema no lineal



Problema de Punto Fijo
3 0
81 01 106 0
20 10 3 1 0
1 2 3
1
2
1
2
2
2
3
3
1 2
x x x
x x x
e x
x x
=
+ + + =
+ + =

cos( )
( . ) sen( .
/ t
x x x
x x x
x e
x x
1 2 3
1
6
2
1
9
1
2
3
3
1
20
3
106 01
1 6
1 2
= +
= + +
=

cos( ) /
sen . .
( ) / t
( )
( ) ( )
x x x
x x x
x x x
k k k
k k k
k k k
1
1
2 3
1
6
2
1
1
9
1
1
2
3
3
1
1
20
1
1
2
1
3
106 01
1 6
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( )
cos( ) /
sen . .
exp /
+
+ +
+ + +
= +
= + +
=

t
Punto Fijo con desplazamientos simultneos



Punto Fijo con desplazamientos sucesivos
( )
( ) ( )
x x x
x x x
x x x
k k k
k k k
k k k
1
1
2 3
1
6
2
1
1
9
1
2
3
3
1
1
20
1 2
3
106 01
1 6
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( )
cos( ) /
sen . .
exp /
+
+
+
= +
= + +
=

t
Cdigo de la funcin
function y=f(x)
% Funcin para el mtodo de punto
% fijo con desplazamientos simultneos

y(1) = cos(x(2)*x(3))/3 + 1/6;
y(2) = sqrt(x(1)^2+sin(x(3))+1.06)/9-0.1;
y(3) = (1-exp(-x(1)*x(2)))/20 - pi/6;
Ejemplo 1: Desp. simultneos
Iter x
1
(k)
x
2
(k)
x
3
(k)
0 0.10000000 0.10000000 -0.10000000
1 0.49998333 0.00944115 -0.52310127
2 0.49999593 0.00002557 -0.52336331
3 0.5 0.00001234 -0.52359814
4 0.5
3.41679E8
-0.52359847
5 0.5
1.64870 E8
-0.52359877
Cdigo de la funcin
function y=f(x)
% Funcin para el mtodo de punto
% fijo con desplazamientos sucesivos

y(1) = cos(x(2)*x(3))/3 + 1/6;
y(2) = sqrt(y(1)^2+sin(x(3))+1.06)/9-0.1;
y(3) = (1-exp(-y(1)*y(2)))/20 - pi/6;
Ejemplo 1: Desp. sucesivos
Iter x
1
(k)
x
2
(k)
x
3
(k)
0 0.10000000 0.10000000 -0.10000000
1 0.49998333 0.02222979 -0.52304613
2 0.49997747 0.00002815 -0.52359807
3 0.5 3.762202E-8 -0.52359877
4 0.5 5.028E-11
-0.5235987756
Mtodo de Newton
Sistema de ecuaciones


Aproximacin por el plano tangente

Paso de Newton
F x
F IR IR
x x x f x f x
n n
n n
( )
:
( , ... , ) ( ( ), ... ( ))
=

=

0
1 1
F x F x DF x x x ( ) ( ) ( ) ( )
( ) ( ) ( )
~ +
0 0 0
x x DF x F x
( ) ( ) ( ) ( )
( ) ( )
1 0 0 1 0
=

Algoritmo de Newton
function [x,iter,incr] = newton(f,x,tol,
maxiter)
iter = 0; incr = tol+1;
while incr > tol & iter < maxiter
[fx,dfx] = feval(f,x);
delta = - dfx \ fx;
incr = norm(delta);
iter = iter+1;
x = x + delta;
end
if incr>tol, disp(No converge), end
El archivo f.m
evala la funcin
y el jacobiano
Mtodo de Newton. Ejemplo 2
Sistema



Estimacin inicial

Primera
iteracin

( )
x y
x y
Sol x y
2 2
2 2
1
2
1
2
3
4
1 0
0
+ =
+ =

`

= = : ,
x y
0 0
1 3 = = ,
x
y
x
y
x y
x y
x y
x y
1
1
0
0
0 0
0 0
1
0
2
0
2
0
2
0
2
1
2
2 2
2 2
1
|
\

|
.
|
|
=
|
\

|
.
|
|


|
\

|
.
|
+
+
|
\

|
.
|
|
|

Resultados Newton Ejemplo 2


k x y
0 1 3
1 0.62500000000000 1.62500000000000
2 0.51250000000000 1.04326923076923
3 0.50015243902439 0.88108161999291
4 0.50000002323057 0.86615404660332
5 0.50000000000000 0.86602541333757
6 0.50000000000000 0.86602540378444
DF x
x x x x x x
x x x
x e x e
x x x x
( )
sen( ) sen( )
( . ) cos( ) = +

|
\

|
.
|
|
|

3
2 162 01
20
3 2 3 2 2 3
1 2 3
2 1
1 2 1 2
Mtodo de Newton. Ejemplo 3
Sistema no lineal



Jacobiana
3 0
81 01 106 0
20 10 3 1 0
1 2 3
1
2
1
2
2
2
3
3
1 2
x x x
x x x
e x
x x
=
+ + + =
+ + =

cos( )
( . ) sen( .
/ t
Resultados Newton. Ejemplo 3
k x
1
x
2
x
3
0 0.10000000 0.10000000
0.10000000
1 0.49986967 0.01946685
0.52152047
2 0.50001423 0.00160764
0.52313166
3 0.50000012
1.48294E5 0.52355872
4 0.50000000
2.08910E8 0.52359840
5 0.50000000
2.792E11 0.52359878
6 0.50000000
4.E14 0.52359878
Variantes de Newton (Ejercicio...)
Actualizacin peridica del
Jacobiano
Aproximacin del Jacobiano por
diferencias divididas
Newton con desplazamiento
unidimensional
Mtodos casi-Newton
Idea de la secante
No usa las
derivadas
parciales
Convergencia
superlineal

Formulacin
matricial
1
) 1 (
) 1 ( ) 2 (
0 1
0 1
1 1
a
) x ( f
x x
x x
) x ( f ) x ( f
a ) x ( ' f
=

= ~
) x ( F A x x
A ) x ( DF
) 1 (
1
1
) 1 ( ) 2 (
1
) 1 (
+ =
~

Mtodo de Broyden
1) (k (k)
k
1) (k (k)
k
T
k
2
k
k 1 k k
1 k k
(k)
1
k
(k) 1) (k
x x s
) F(x ) F(x y
s
s
) s A (y
A A
) F(x A x x

+
=
=

+ =
=
Iterar


siendo
Actualizacin de la inversa
A A
y A s
s
s
A
s A y s A
s A y
k
k k
k k k
k
k
k
k k k k k
k k k

= +

|
\

|
.
|
|
=
= +

=
1
1
1
2
1
1
1
1
1
1
1
1
1
12
( )
( )
, ,...
T
T
T
Algoritmo de Broyden
Entrada
x
0
,tol, maxiter
Inicio
M: Inversa del Jacobiano en x
0
x
1
= x
0
M*F(x
0
)
incr, iter
Iteraciones: k = 1, 2, ...
Actualizar M % A
k-1
-1
A
k
-1

x
k+1
= x
k
M*F(x
k
)

Actualizacin de M
w = v; % F(x
k1
)
v = F(x); % F del iterado actual
y = v w; % F(x
k
) F(x
k1
)
z = M*y; % A
k1
-1
*
y
k

p = s' *z; % (s
k
- x
k-1
)
T

*
A
k1
-1
*
y
k

q = s' *M; % s
k

T

*
A
k1
-1

R = (s+z)*q/p; % Transformacin rango 1
M = M+R; % Inversa nueva: A
k
-1

s = M*v; % Paso de Broyden: s
k+1

Algoritmo
de Broyden
% Inicio
v = F(x
0
)
M = inv(DF(x
0
))
% Inversa Jacobiano
s = M*v;
x = x
0
+s;
% Paso de Newton
incr = norm(s);
while incr > tol
w = v; % F(x(k1))
v = F(x);
y = vw; % F(x(k)) F(x(k1))
z = M*y; % inv(A(k1))*y(k)
p = s' *z;
q = s' *M; % s(k)'*inv(A(k1)
R = (s+z)*q/p;
M = M+R; % inversa de A(k)
s = M*v;
x = x+s; % Paso de Broyden
incr = norm(s);
end
Resultados de Broyden. Ejemplo 3
k x
1
x
2
x
3
0 0.10000000 0.10000000
0.10000000
1 0.49986967 0.01946684
0.52152047
2 0.49998637 0.00873783
0.52317457
3 0.50000660 0.00086727
0.52357234
4 0.50000032 0.00003953
0.52359768
5 0.50000000 0.00000019
0.52359877
Alternativas al primer paso
Estimar el Jacobiano por diferencias
divididas
Estimacin unidimensional del
Jacobiano
)) x x /( )). x ( F ) x ( F (( diag A
0 1 0 1 0
=
F i n

You might also like