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