Ayuda método newton sistema ec. no lineales
Publicado por Javier (2 intervenciones) el 02/03/2012 16:39:46
Hola a todos. Estoy intentando utilizar l método de Newton para hallar los valores de dos variables, para resolver dos ecuaciones no lineales y no hay manera. Las ecuaciones son,(se ven desde estas direcciones):
http://www.alciro.org/cgi/tex.cgi?0=\frac{2}{G}-\sum_{v}^{n}\frac{1}{\sqrt[]{(\varepsilon%20{v}-\lambda%20)^{2}+^{\delta%20^{2}}}}
http://www.alciro.org/cgi/tex.cgi?0=N-\sum_{v}^{n}1-\frac{(\varepsilon%20{v}-\delta%20)}{\sqrt[]{(\varepsilon%20{v}-\lambda%20)^{2}+^{\delta%20^{2}}}}
donde G, N y los eps(v) los conozco. Las incognitas son lambda y delta, que las llamo x(1) y x(2) en Matlab respectivamente. Yo hago lo siguiente:
---------------------------------------------------------------------------------------
clear
clc
eps=[-0.83055E+01;-0.70276E+01];
n=length(eps);
f(1)= 0;
f(2)= 0;
J(1,1) = 0;
J(1,2) = 0;
J(2,1) = 0;
J(2,2) = 0;
counter = 1;
error = 10;
h=0.01;
k=0.01;
x = input('Introduce el vector ');
while error > 1e-6 && counter < 10
for i=1:n
f(1)=f(1)+((-(1/sqrt((eps(i)-x(2))^2+x(1)^2)))+(2/(0.157*n)));
f(2)=f(2)+((-n+((eps(i)-x(2))/sqrt((eps(i)-x(2))^2+x(1)^2)))+(8/n));
J(1,1) = J(1,1)+(((-(1/sqrt((eps(i)-x(2))^2+(x(1)+h)^2)))+(2/(0.157*n))-(-(1/sqrt((eps(i)-x(2))^2+x(1)^2)))+(2/(0.157*n)))/h);
J(1,2) = J(1,2)+(((-(1/sqrt((eps(i)-(x(2)+k))^2+x(1)^2)))+(2/(0.157*n))-(-(1/sqrt((eps(i)-x(2))^2+x(1)^2)))+(2/(0.157*n)))/k);
J(2,1) = J(2,1)+(((-n+((eps(i)-x(2))/sqrt((eps(i)-x(2))^2+(x(1)+h)^2)))+(8/n)-(-n+((eps(i)-x(2))/sqrt((eps(i)-x(2))^2+x(1)^2)))+...
(8/n))/h);
J(2,2) = J(2,1)+(((-n+((eps(i)-(x(2)+k))/sqrt((eps(i)-(x(2)+k))^2+x(1)^2)))+(8/n)-(-n+((eps(i)-x(2))/sqrt((eps(i)-x(2))^2+x(1)^2)))+...
(8/n))/k);
end
xn = x - J\f';
error = max(abs(xn(1)-x(1)),abs(xn(2)-x(2)));
counter = counter + 1;
x = xn;
end
xn
------------------------------------------------------------------------
Pero no logro que converja es decir, que las f(1) y f(2) sean cero. Falla el sumatorio pero no se como Hacerlo. Quería saber si alguien me puede echar un cable porque me tiene desesperado.
Un saludo y gracias!!!
http://www.alciro.org/cgi/tex.cgi?0=\frac{2}{G}-\sum_{v}^{n}\frac{1}{\sqrt[]{(\varepsilon%20{v}-\lambda%20)^{2}+^{\delta%20^{2}}}}
http://www.alciro.org/cgi/tex.cgi?0=N-\sum_{v}^{n}1-\frac{(\varepsilon%20{v}-\delta%20)}{\sqrt[]{(\varepsilon%20{v}-\lambda%20)^{2}+^{\delta%20^{2}}}}
donde G, N y los eps(v) los conozco. Las incognitas son lambda y delta, que las llamo x(1) y x(2) en Matlab respectivamente. Yo hago lo siguiente:
---------------------------------------------------------------------------------------
clear
clc
eps=[-0.83055E+01;-0.70276E+01];
n=length(eps);
f(1)= 0;
f(2)= 0;
J(1,1) = 0;
J(1,2) = 0;
J(2,1) = 0;
J(2,2) = 0;
counter = 1;
error = 10;
h=0.01;
k=0.01;
x = input('Introduce el vector ');
while error > 1e-6 && counter < 10
for i=1:n
f(1)=f(1)+((-(1/sqrt((eps(i)-x(2))^2+x(1)^2)))+(2/(0.157*n)));
f(2)=f(2)+((-n+((eps(i)-x(2))/sqrt((eps(i)-x(2))^2+x(1)^2)))+(8/n));
J(1,1) = J(1,1)+(((-(1/sqrt((eps(i)-x(2))^2+(x(1)+h)^2)))+(2/(0.157*n))-(-(1/sqrt((eps(i)-x(2))^2+x(1)^2)))+(2/(0.157*n)))/h);
J(1,2) = J(1,2)+(((-(1/sqrt((eps(i)-(x(2)+k))^2+x(1)^2)))+(2/(0.157*n))-(-(1/sqrt((eps(i)-x(2))^2+x(1)^2)))+(2/(0.157*n)))/k);
J(2,1) = J(2,1)+(((-n+((eps(i)-x(2))/sqrt((eps(i)-x(2))^2+(x(1)+h)^2)))+(8/n)-(-n+((eps(i)-x(2))/sqrt((eps(i)-x(2))^2+x(1)^2)))+...
(8/n))/h);
J(2,2) = J(2,1)+(((-n+((eps(i)-(x(2)+k))/sqrt((eps(i)-(x(2)+k))^2+x(1)^2)))+(8/n)-(-n+((eps(i)-x(2))/sqrt((eps(i)-x(2))^2+x(1)^2)))+...
(8/n))/k);
end
xn = x - J\f';
error = max(abs(xn(1)-x(1)),abs(xn(2)-x(2)));
counter = counter + 1;
x = xn;
end
xn
------------------------------------------------------------------------
Pero no logro que converja es decir, que las f(1) y f(2) sean cero. Falla el sumatorio pero no se como Hacerlo. Quería saber si alguien me puede echar un cable porque me tiene desesperado.
Un saludo y gracias!!!
Valora esta pregunta


0