Saturday, February 04, 2006

Gabo, tieni qui, il "Metodo de Newton", come ti ho promesso.

function [flag, root, iter] = Newton(x0, maxiter, tol)

iter=0;
xn = x0;
xnext = xn-f(xn)/fp(xn);
iter = iter+1;

NewtonErrors(iter)=abs(xnext-xn);

while((iter < maxiter & abs(xnext-xn)) >= tol)
xn = xnext;
xnext = xn-f(xn)/fp(xn);
iter = iter+1;
NewtonErrors(iter) = abs(xnext-xn);
end

if (iter) < (maxiter)
root=xnext;
flag=0;
else
flag=1;
end

iteraciones = 1:iter;
plot(iteraciones, NewtonErrors,'r+-');
grid on;
xlabel('Iteraciones');
ylabel('Error del metodo de Newton');
title('Iteraciones vs. Error obtenido');
return
end

function [f_x]= f(x)
f_x = 2*x*cos(2*x)-(x-2)^2;
end

function [fp_x] = fp(x)
fp_x = 2*(cos(2*x) - 2*x*sin(2*x)-x+2);
end


Recuerda que para usar tienes que cambiar f(x) en el codigo y lo mismo con la derivada de f(x). Este codigo tambien grafica el comportamiento del error para que asi puedas ver cuan rapido converge. Ah y una cosa importante si al correr el programita flag=1 el resultado almacenado en root es irrelevante.

Bueno, ojala te sirva de algo.... Cuidate boy e parliamo dopo.... ciao

0 Comments:

Post a Comment

<< Home




MP3 Player Turtorial