Documentos de Académico
Documentos de Profesional
Documentos de Cultura
\
|
|
.
|
\
|
A
+ =
A
= A A |
.
|
\
|
~ A
A
= + A
|
|
.
|
\
|
+ A |
.
|
\
|
+
= A +
A
=
+
(k)
(k) (k) 1) (k
) (
(k)
(k)
(k) (k)
) 0 (
(0)
) 0 ( (1)
(0)
(0) (0) (0)
) 0 (
(0)
(0)
2 (0)
) 0 (
2
2
(0)
) 0 (
(0)
(0) (0)
(0) (0)
x Si
x x x
c
x
) x ( c
: Definiendo
Raphson - Newton de algoritmo al identifica nto procedimie este de uso Sucesivo
c
x
: n aproximaci segunda la en resultar inicial estimacin la a x Sumando
residuo. el ) x ( c siendo , x c
: resultando os despreciad ser pueden
alto orden de terminos los pequeo, muy es x error el que Asumiendo
... ) x (
! 2
1
x ) x (
: Taylor de serie en izquierda la de trmino el o Expandiend
) x x (
: tenemos correcta, solucin la de desviacin pequea la es x y inicial, estimacin la es x Si
) (
: por dada es l diemnsiona - uni ecuacin una de solucin La
k
J
f c
dx
df
J
dx
df
x
f c
dx
df
c
dx
f d
dx
df
f
c f
c x f
Interpretacin grfica:
C=0
Ac
(0)
Ax
(0)
Ac
(1)
Ax
(1)
J
(0)
J
(1)
Ejemplo 6.1:
a) Bsqueda de la raz de f(x)=x
3
-6 x
2
+9x-4.
clear
dx=1; % Se inicializa el error con un valor elevado
fun=input('Nombre de la funcin: '); % Nombre de la funcin.m donde estn las expr.
% de f y J.
vx=input('Entre la estimacin inicial y rango de ploteo [xe xi xf] -> ');
x=vx(1);
iter = 0;
k=1;
disp('iter Dc J dx x')% Encabezamiento de resultados
while abs(dx) >= 0.001 & iter < 100 % Test de convergencia
iter = iter + 1; % No. de iteraciones
[f,J]=feval(fun,x); % feval ejecuta la funcin especificada
% en el string fun con el argumento x.
yp(k)=f; % Puntos para graficar las
xp(k)=x; % pendientes.
Dc=0 - f; % Residuo
dx= Dc/J; % Se actualiza el error
x=x+dx; % Soluciones sucesivas
yp(k+1)=0; % Puntos para graficar las
xp(k+1)=x; % pendientes.
k=k+2;
fprintf('%g', iter) % Se muestra iter sin ceros
% no significativos
disp([Dc, J, dx, x]) % Se completa con el resto de las
% variables.
end
x=(vx(2):.1:vx(3)); % Rango de x para ploteo.
f=feval(fun,x); % Se evala f en ese rango
plot(x,f,x,0*x,xp,yp)
axis([vx(2) vx(3) min(f) max(f)]) % Se fijan los ejes para x y f.
function[f,J]=pol3(x)
f=x.^3-6*x.^2+9*x-4;
J=3*x.^2-12*x+9;
te6ej1
Nombre de la funcin: 'pol3'
Entre la estimacin inicial y rango de ploteo [xe xi xf] -> [6 0 6]
iter Dc J dx x
1 -50.0000 45.0000 -1.1111 4.8889
2 -13.4431 22.0370 -0.6100 4.2789
3 -2.9981 12.5797 -0.2383 4.0405
4 -0.3748 9.4914 -0.0395 4.0011
5 -0.0095 9.0126 -0.0011 4.0000
6 -0.0000 9.0000 -0.0000 4.0000
0 1 2 3 4 5 6
0
5
10
15
20
25
30
35
40
45
50
Ejemplo 6.1:
b) Estudio de convergencia de f(x)=atg(x).
function[f,J]=atx(x)
f=atan(x);
J=1./(1+x.*x);
te6ej1
Nombre de la funcin: 'atx'
Entre la estimacin inicial y rango de ploteo [xe xi xf] -> [1.4 -20 20]
-20 -15 -10 -5 0 5 10 15 20
-1.5
-1
-0.5
0
0.5
1
1.5
| | | || | | | . : a denomina se , C
: compacta forma en
.
.
. .
. . . .
. . . .
. .
. .
) (
.
.
) (
) (
: matricial forma la en o
... ) (
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
... ) (
... ) (
: orden mayor de terminos los do desprecian
Taylor, de series en izquierda la de termino el o Expandiend
) ,..., , (
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
) ,..., , (
) ,..., , (
: variables con ecuaciones ahora do Consideran
) 0 ( ) 0 ( (0)
) 0 (
) 0 (
2
) 0 (
1
2 1
2
2
2
1
2
1
2
1
1
1
) 0 (
) 0 (
2 2
) 0 (
1 1
) 0 ( ) 0 (
2
2
) 0 (
1
1
) 0 (
2
) 0 (
2
) 0 (
2
2
2
) 0 (
1
1
2 ) 0 (
2
1
) 0 (
1
) 0 (
2
2
1
) 0 (
1
1
1 ) 0 (
1
) 0 ( ) 0 ( ) 0 (
2
) 0 (
2
) 0 (
1
) 0 (
1
2
) 0 ( ) 0 ( ) 0 (
2
) 0 (
2
) 0 (
1
) 0 (
1 2
1
) 0 ( ) 0 ( ) 0 (
2
) 0 (
2
) 0 (
1
) 0 (
1 1
obiana matriz J ac J X J
x
x
x
x
f
x
f
x
f
x
f
x
f
x
f
x
f
x
f
x
f
f c
f c
f c
c x
x
f
x
x
f
x
x
f
f
c x
x
f
x
x
f
x
x
f
f
c x
x
f
x
x
f
x
x
f
f
c x x x x x x f
c x x x x x x f
c x x x x x x f
n n
n
n
n n n
n
n
n n
n n
n
n n n
n
n
n
n
n
n n n n
n n
n n
A = A
(
(
(
(
(
(
(
(
(
(
A
A
A
(
(
(
(
(
(
(
(
(
(
|
|
.
|
\
|
c
c
|
|
.
|
\
|
c
c
|
|
.
|
\
|
c
c
|
|
.
|
\
|
c
c
|
|
.
|
\
|
c
c
|
|
.
|
\
|
c
c
|
|
.
|
\
|
c
c
|
|
.
|
\
|
c
c
|
|
.
|
\
|
c
c
=
(
(
(
(
(
(
(
(
(
(
= A
|
|
.
|
\
|
c
c
+ + A
|
|
.
|
\
|
c
c
+ A
|
|
.
|
\
|
c
c
+
= A
|
|
.
|
\
|
c
c
+ + A
|
|
.
|
\
|
c
c
+ A
|
|
.
|
\
|
c
c
+
= A
|
|
.
|
\
|
c
c
+ + A
|
|
.
|
\
|
c
c
+ A
|
|
.
|
\
|
c
c
+
= A + A + A +
= A + A + A +
= A + A + A +
Quedando entonces el algoritmo de Newton-Raphson:
) 0 ( ) 0 (
2
) 0 (
1
,..., , iniciales valores los estiman Se
n
x x x
| |
| |
| | | | | |
| | | | | |
c que mayor es X de elemento algn Si
X
X
Jacobiana la calcula Se
) (
.
.
) (
) (
C
(k)
(k) ) ( ) 1 (
) (
1
) ( (k)
) (
) (
) (
2 2
) (
1 1
(k)
A
+
A + =
+
A = A
+
+
(
(
(
(
(
(
(
(
(
(
= A
+
k k
k k
k
k
n n
k
k
X X
C J
J
f c
f c
f c
*
*
El problema se reduce entonces a resolver un sistema de ecuaciones lineares.
En Matlab, la solucin del sistema de ecuaciones es obtenida
usando el operador de divisin de matrices \, o sea \ el cual es
basado en factorizacin triangular y eliminacin Gaussiana, mucho ms eficiente
que invertir
| | | || | X J A = A C
| | | | | | X J A = A X
| | J .
Ejemplo 6.2:
Se usa el mtodo de Newton-Raphson para encontrar la interseccin de las curvas
1
4
2 2
= +
= +
y e
y x
x
La siguiente rutina (te6ej2a) genera las grficas
tita=0:.02:2*pi; % Rango del ngulo de la cfa.
r = 2*ones(1, length(tita)); % Vector radio de la cfa.
x=-3:.02:1.5; % Rango de x para la segunda ec.
y=1- exp(x); % Segunda ec.
plot(x,y),grid
axis([-3 3 -3 3]);
axis('square'); % Relacin de ejes tal que no deformen la cfa.
xlabel('x')
text(1.1,1.8,' x^2+y^2=4')
text(1.2,-2.3,' e^x+y=1')
hold on; % Se "fija" la grfica tal que las sucesivas
% se hagan en la misma figura con los mismos ejes.
polar(tita, r) % Ploteo polar en un sistema cartesiano.
hold off; % Se "libera" la figura
-3 -2 -1 0 1 2 3
-3
-2
-1
0
1
2
3
x
y
x
2
+y
2
=4
e
x
+y=1
Tomando las derivadas parciales, la matriz Jacobiana resulta:
(
=
1
2 2
x
e
y x
J
La siguiente rutina (te6ej2b) aplica Newton-Raphson para el sistema arriba
iter = 0;
x=input('Entre el vector estimacin inicial [x1; x2] -> ');
Dx=[1; 1];
C=[4; 1];
disp('Iter DC Matriz Jacobiana Dx x');
while max(abs(Dx)) >= .0001 & iter < 100
iter=iter+1;
f = [x(1)^2+x(2)^2; exp(x(1))+x(2)];
DC = C - f;
J = [2*x(1) 2*x(2)
exp(x(1)) 1];
Dx=J\DC; % Resolucin del sistema de ecuaciones
x=x+Dx;
fprintf('%g', iter)
disp([DC, J, Dx, x])
end
te6ej2b
Entre el vector estimacin inicial [x1; x2] -> [0.5 -1]'
Iter DC Matriz Jacobiana Dx x
1 2.7500 1.0000 -2.0000 0.8034 1.3034
0.3513 1.6487 1.0000 -0.9733 -1.9733
2 -1.5928 2.6068 -3.9466 -0.2561 1.0473
-0.7085 3.6818 1.0000 0.2344 -1.7389
3 -0.1205 2.0946 -3.4778 -0.0422 1.0051
-0.1111 2.8499 1.0000 0.0092 -1.7296
4 -0.0019 2.0102 -3.4593 -0.0009 1.0042
-0.0025 2.7321 1.0000 0.0000 -1.7296
5 -0.0000 2.0083 -3.4593 -0.0000 1.0042
-0.0000 2.7296 1.0000 -0.0000 -1.7296