Una de las formas más utilizadas para encontrar raíces es la fórmula de Newton-Raphson. Si el valor inicial para la raíz es xi, entonces se puede trazar una tangente desde el punto [xi, f(xi)] de la curva. Por lo común el punto donde esta tangente cruza al eje x representa una aproximación mejorada de la raíz.
Codigo para Octave:
%Metodo de Newton
format long
Xo=input ('coloque el valor inicial: ');
Iter=input ('cantidad de iteraciones: ');
Tol=input ('indique la tolerancia deseada: ');
Fun=input ('ingrese la funci—n = ','s');
Der=input ('ingrese la derivada de la funcion = ','s');
f=inline (Fun);
Y1=f (Xo);
Der=inline (Du);
D=Der (Xo);
% Evalua la derivada en Xo para poder saber si es adecuad para seguir con este mŽtodo, es decir que sea diferente de cero
Error=Tol+1;
%Ya que solo calcule un valor de x, debemos utilizar un valor mayor a la tolerancia.
Cont=0;
% el contador se encuentra en cero ya que no se ha realizado ninguna operaci—n.
Z= [Cont, Xo, Y1, Error];
%Z, es la matriz en la que se almacenan los resultados de cada una de las iteraciones que realiza el programa para ser finalmente entregados en una tabla.
while Y1~=0 & Error>Tol & Cont<Iter&D~=0
%while, comando que permite ejecutar el programa mientras se cumplan ciertas condiciones.
X1=Xo-(Y1/D);
Y1=f(X1);
D=Der (X1);
Error=abs((X1-Xo)/X1);
Cont=Cont+1;
Z(Cont,1)=Cont;
Z(Cont,2)=Xo;
Z(Cont,3)=Y1;
Z(Cont,4)=D;
Z(Cont,5)=Error;
Xo=X1;
end
if Y1==0
fprintf('X1 es raíz\n');
else
if Error<Tol
fprintf('La raíz es %g con un error de %g\n',X1,Error);
else
if D==0
fprintf('Se esta dividiendo por cero')
else
fprintf('numero m‡ximo de iteraciones\n');
end
end
end
fprintf(' Xo, X1, Y1, Error\n');
disp(Z);
No hay comentarios:
Publicar un comentario