Métodos numéricos para

la resolución de
Sistemas de Ecuaciones
no Lineales
Contenido
 Planteamiento del problema
 Método de Punto Fijo
 Método de Newton
 Variantes del método de Newton
• Evaluación diferida del jacobiano
• Aproximación por diferencias finitas
• Newton unidimensional
 Métodos cuasi-Newton (Broyden)
Notación
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
Resolución iterativa
 x
(0)
estimación inicial de la solución
 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
Método de Punto Fijo
 Punto fijo

 Estimación 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 simultáneos



 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
Código de la función
function y=f(x)
% Función para el método de punto
% fijo con desplazamientos simultáneos

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. simultáneos
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.41679E÷8
-0.52359847
5 0.5
1.64870 E÷8
-0.52359877
Código de la función
function y=f(x)
% Función para el método 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
Método de Newton
 Sistema de ecuaciones


 Aproximación 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
evalúa la función
y el jacobiano
Método de Newton. Ejemplo 2
 Sistema



 Estimación inicial

 Primera
iteración

( )
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
Método 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.48294E÷5 ÷0.52355872
4 0.50000000
2.08910E÷8 ÷0.52359840
5 0.50000000
2.792E÷11 ÷0.52359878
6 0.50000000
4.E÷14 ÷0.52359878
Variantes de Newton (Ejercicio...)
 Actualización periódica del
Jacobiano
 Aproximación del Jacobiano por
diferencias divididas
 Newton con desplazamiento
unidimensional
Métodos casi-Newton
 Idea de la secante
• No usa las
derivadas
parciales
• Convergencia
superlineal

 Formulación
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 (
· + =
~
÷
Método 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
Actualización 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
)

Actualización de M
w = v; % F(x
k÷1
)
v = F(x); % F del iterado actual
y = v ÷ w; % F(x
k
) ÷ F(x
k÷1
)
z = ÷ M*y; % ÷ A
k÷1
-1
*
y
k

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

*
A
k÷1
-1
*
y
k

q = s' *M; % s
k

T

*
A
k÷1
-1

R = (s+z)*q/p; % Transformación 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(k÷1))
v = F(x);
y = v÷w; % F(x(k)) ÷ F(x(k÷1))
z = ÷ M*y; % ÷inv(A(k÷1))*y(k)
p = ÷ s' *z;
q = s' *M; % s(k)'*inv(A(k÷1)
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
 Estimación unidimensional del
Jacobiano
)) x x /( )). x ( F ) x ( F (( diag A
0 1 0 1 0
÷ ÷ =
F i n

Sign up to vote on this title
UsefulNot useful