Академический Документы
Профессиональный Документы
Культура Документы
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
f 2 ( x1 , x 2 ,..., x n ) 0 f i : IR n IR
( x1 ,..., x n ) f i ( 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
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, 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
0
2
x 1 81( x 2 0.1) sen( x 3 1.06 0
2 2
x1x 2
e 20 x 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
( 0 ) 1
x ( 1)
x ( 0)
DF( x ) 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;
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
x 2 y 2 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 1 x 0 1 x 0 y 0 1
2 2
Jacobiana
3 x 3 sen( x 2 x 3 ) x 2 sen( x 2 x 3 )
DF( x) 2 x 1 162( x 2 01 .) cos( x 3 )
x1x 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.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...)
• Convergencia a1
superlineal
(y k A k 1s k ) T
A k A k 1 sk
siendo sk
2
(k 1)
y k F(x ) F(x
(k)
)
s k x (k) x (k 1)
Actualización de la inversa
1
( y k A k 1s k ) T
Ak 1
A k 1 sk
s
2
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,...
s A y
k 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(xk1)
v = F(x); % F del iterado actual
y = v w; % F(xk) F(xk1)
z = M*y; % Ak1-1 * yk
p = s' *z; % (sk - xk-1)T * Ak1-1 * yk
q = s' *M; % sk T * Ak1-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
de Broyden w = v; % F(x(k1))
v = F(x);
y = vw; % F(x(k)) F(x(k1))
% Inicio z = M*y; % inv(A(k1))*y(k)
v = F(x0) p = s' *z;
M = inv(DF(x0)) q = s' *M; % s(k)'*inv(A(k1)
% 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
A 0 diag((F( x1 ) F( x 0 )). /( x1 x 0 ))
Fin