Está en la página 1de 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

Escalar
f1 ( x1 , x 2 ,..., x n ) 0

f2 ( x1 , x 2 ,..., x n ) 0

f n ( x1 , x 2 ,..., x n ) 0

fi : IR n
IR
( x1 ,..., x n ) fi ( x1 ,..., x n )

Vectorial
F( x) 0

F : IR n

IR n

x ( x 1 ,..., x n ) ( f1 ( x),... f n ( x))

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, 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

Mtodo de Punto Fijo

Punto fijo

F( x) 0

x G ( x)

Estimacin inicial
x ( 0) ( x1( 0) ,..., x (n0) )

Iteraciones

x ( k 1) G ( x ( k ) )

Criterio de parada
x

( k 1)

(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

2
2
x 1 81( x 2 01
. ) sen( x 3 106
. 0

x1x 2
e
20x 3 10 / 3 1 0

Problema de Punto Fijo

x 1 cos( x 2 x 3 ) / 3 1 6

x 2 9 x sen x 3 106
. 01
.

x1 x 2
1
x 3 20 (1 e
)/6

2
1

Punto Fijo con desplazamientos simultneos

x 1( k 1) cos( x (2k ) x (3k ) ) / 3 1 6

x (2k 1)

x (3k 1)

9
20

(k) 2
(k)
. 01
.
x1 sen x 3 106

(k) (k)
1 exp x 1 x 2 / 6

Punto Fijo con desplazamientos sucesivos


x 1( k 1) cos( x (2k ) x (3k ) ) / 3
x (2k 1)

x (3k 1)

9
20

( k 1) 2
(k)
x1 sen x 3 1.06 0.1

( k 1) ( k 1)
1 exp x 1 x 2 / 6

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

x1(k)

x2(k)

x3(k)

0.10000000 0.10000000 -0.10000000

0.49998333 0.00944115 -0.52310127

0.49999593 0.00002557 -0.52336331

0.5

0.00001234 -0.52359814

0.5

3.41679E8 -0.52359847

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

x1(k)

x2(k)

0.10000000

0.10000000 -0.10000000

0.49998333

0.02222979 -0.52304613

0.49997747

0.00002815 -0.52359807

0.5

3.762202E-8 -0.52359877

0.5

5.028E-11

x3(k)

-0.5235987756

Mtodo de Newton

Sistema de ecuaciones

F : IR n IR n

x ( x 1 ,..., x n ) ( f1 ( x),... f n ( x))

F( x) 0

Aproximacin por el plano tangente


F( x) F( x ( 0) ) DF( x ( 0) ) ( x x ( 0) )

Paso de Newton
x

(1)

( 0)

( 0 ) 1

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
El archivo
if incr>tol, disp(No converge), end

f.m
evala la funcin
y el jacobiano

Mtodo de Newton. Ejemplo 2

Sistema
x 2 y 2 1 0

2
2
1
x y 2 0

Sol: x

Estimacin inicial

Primera x1 x 0
2x0 2y0

iteracin
2 x 0 2 y 0
y
y
1

, y

x 0 1,

y0 3

x02 y02 1

x 0 y 0 2

Resultados Newton Ejemplo 2


k
0 1

y
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

Mtodo de Newton. Ejemplo 3

Sistema no lineal
3x 1 cos( x 2 x 3 ) 1 2 0

x 81( x 2 01
. ) sen( x 3 106
. 0
2
1

e x1x 2 20x 3 10 / 3 1 0

Jacobiana

DF( x)

3
2x1

x1x 2

x
e

x 3 sen( x 2 x 3 )
162( x 2 01
.)

x 2 sen( x 2 x 3 )

cos( x 3 )

x 1 e x1x 2

20

Resultados Newton. Ejemplo 3


k
0
1
2
3
4
5
6

x1
0.10000000
0.49986967
0.50001423
0.50000012
0.50000000
0.50000000
0.50000000

x2
0.10000000
0.01946685
0.00160764
1.48294E5
2.08910E8
2.792E11
4.E14

x3
0.10000000
0.52152047
0.52313166
0.52355872
0.52359840
0.52359878
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

f ( x1 ) f ( x 0 )
f ' ( x1 ) a 1
x1 x 0
x ( 2)

(1)
f
(
x
)
(1)
x
a1

DF( x (1) ) A1
x

( 2)

(1)

A1 F( x )
(1)

Mtodo de Broyden
Iterar

siendo

(k 1)

x A k F(x )
(k)

A k A k 1

(k)

(y k A k 1s k )
sk

y k F(x ) F(x
(k)

s k x (k) x (k 1)

(k 1)

sk

Actualizacin de la inversa

Ak

( y k A k 1s k ) T

A k 1
sk
2

1
k 1

T
1
k 1 k
k
T 1
k
k 1 k

(s k A y )s A

s A y

1
k 1

k 1,2,...

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)

Actualizacin 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;
% Transformacin rango 1
M = M+R;
% Inversa nueva: Ak-1
s = M*v; % Paso de Broyden: sk+1

Algoritmo
de Broyden
% Inicio
v = F(x0)
M = inv(DF(x0))
% Inversa Jacobiano
s = M*v;
x = x0+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
0
1
2
3
4
5

x1
0.10000000
0.49986967
0.49998637
0.50000660
0.50000032
0.50000000

x2
0.10000000
0.01946684
0.00873783
0.00086727
0.00003953
0.00000019

x3
0.10000000
0.52152047
0.52317457
0.52357234
0.52359768
0.52359877

Alternativas al primer paso


Estimar el Jacobiano por diferencias
divididas
Estimacin unidimensional del
Jacobiano

A 0 diag ((F( x1 ) F( x 0 )). /( x1 x 0 ))

Fin

También podría gustarte