Professional Documents
Culture Documents
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
Escalar
f1 ( x1 , x 2 ,..., x n ) 0
f2 ( x1 , x 2 ,..., x n ) 0 fi : IR n IR
( x1 ,..., x n ) fi ( x1 ,..., x n )
f n ( x1 , x 2 ,..., x n ) 0
Vectorial
F : IR n IR n
F( x ) 0
x ( x 1 ,..., x n ) ( f 1 ( x ),... f n ( x ))
Resolución iterativa
Criterio de convergencia
• | x(k+1) - x(k) | < tol
Criterio de parada
• k > maxiter
Esquema del algoritmo
Entrada: f, x0, tol, maxiter
Proceso
• Inicializar incr, iter
• Mientras incr > tol & iter < maxiter
– Obtener x
– incr = norm(x - x0)
– Actualizar x0, iter
Salida: x, iter, incr
• Si incr > tol no converge
Método de Punto Fijo
Punto fijo
F( x) 0 x G( x)
Estimación inicial
x( 0) ( x1( 0) ,..., x(n0) )
Iteraciones
x ( k 1) G( x ( k ) )
Criterio de parada
( k 1)
x -x (k)
tol
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
3x 1 - cos( x 2 x 3 ) - 1 2 0
x 1 - 81( x 2 01
2
. ) sen( x 3 106
2
. 0
- x1 x 2
e 20x 3 10 / 3 - 1 0
- x1 x 2
x 3 20 (1 - e
1
)-/6
Punto Fijo con desplazamientos simultáneos
x (3k 1) 1
20 (k) (k)
1 - exp - x 1 x 2 - / 6
Punto Fijo con desplazamientos sucesivos
x 1( k 1) cos( x (2k ) x (3k ) ) / 3 1
6
x (2k 1) 1
9 x 1 sen x 3 1.06 - 0.1
( k 1) 2 (k)
x (3k 1) 1
20
1 - exp - x 1 x 2 - / 6
( k 1) ( k 1)
Código de la función
function y=f(x)
% Función para el método de punto
% fijo con desplazamientos simultáneos
F( x) F( x ( 0) ) DF( x ( 0) ) ( x - x ( 0) )
Paso de Newton
x (1) x ( 0) - DF( x ( 0) ) -1 F( x ( 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;
El archivo f.m
incr = norm(delta);
evalúa la función
iter = iter+1; y el jacobiano
x = x + delta;
end
if incr>tol, disp(‘No converge’), end
Método de Newton. Ejemplo 2
Sistema
x2 y2 - 1 0
x - y 2 0
2 2 1
Sol: x 1
2 , y 3
4
Estimación inicial x 0 1, y0 3
Primera x x
0 -1
2 2
-1 x y
iteración - 2x0 2y0
1 0 0
2x0 - 2y0
y1 y0 1
x 0 - y 0 2
2 2
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
Método de Newton. Ejemplo 3
Sistema no lineal
3x 1 - cos( x 2 x 3 ) - 1 2 0
x 1 - 81( x 2 01
2
. ) sen( x 3 106
2
. 0
- x1 x 2
e 20x 3 10 / 3 - 1 0
Jacobiana
3 x 3 sen( x 2 x 3 ) x 2 sen( x 2 x 3 )
DF( x) 2 x 1 - 162( x 2 0.1) cos( x 3 )
- x1 x 2
- x 2 e - x 1 e - x1 x 2 20
Resultados Newton. Ejemplo 3
k x1 x2 x3
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...)
• Convergencia a1
superlineal
(yk - Ak -1sk )
Ak Ak -1
T
sk
siendo sk
2
(k -1)
yk F(x ) - F(x (k)
)
(k -1)
sk x - x (k)
Actualización de la inversa
-1
( y k - A k -1sk ) T
Ak -1
A k -1 sk
2
s k
-1 -1
-1
(s k - A y )s A
k -1 k k
T
k -1
A k -1 T -1 k 1,2,...
ks A y k -1 k
Algoritmo de Broyden
Entrada
• x0 ,tol, maxiter
Inicio
• M: Inversa del Jacobiano en x0
• x1 = x0 - M*F(x0)
• incr, iter
Iteraciones: k = 1, 2, ...
• Actualizar M % Ak-1-1 Ak-1
• xk+1 = xk - M*F(xk)
Actualización de M
w = v; % F(xk-1)
v = F(x); % F del iterado actual
y = v - w; % F(xk) - F(xk-1)
z = - M*y; % - Ak-1-1 * yk
p = - s' *z; % (sk - xk-1)T * Ak-1-1 * yk
q = s' *M; % sk T * Ak-1-1
R = (s+z)*q/p; % Transformación rango 1
M = M+R; % Inversa nueva: Ak-1
s = - M*v; % Paso de Broyden: sk+1
Algoritmo while incr > tol
w = v; % F(x(k-1))
de Broyden v = F(x);
y = v-w; % F(x(k)) - F(x(k-1))
% Inicio z = - M*y; % -inv(A(k-1))*y(k)
v = F(x0) p = - s' *z;
M = inv(DF(x0)) q = s' *M; % s(k)'*inv(A(k-1)
% Inversa Jacobiano R = (s+z)*q/p;
s = - M*v; M = M+R; % inversa de A(k)
x = x0+s; s = - M*v;
% Paso de Newton x = x+s; % Paso de Broyden
incr = norm(s); incr = norm(s);
end
Resultados de Broyden. Ejemplo 3
k x1 x2 x3
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