Professional Documents
Culture Documents
syms x;
fprintf('punto fijo \n');
gx=input('ingrese la funcion igualada a x: ');
g=inline(gx);
x=input('ingrese el valor inicial: ');
niter=input('ingrese numero de iteraciones: ');
error=input(' error tolerado: ');
i=1;
fprintf('i \t x \t \t error \n')
fprintf('0 \t %f \n',x)
while(i<=niter)
a=x;
x=g(a);
e=abs(x-a);
fprintf('%d \t %1.7f\t %f\n',i,x,e)
if (e<error)
i=niter+1;
end
i=i+1;
end
NEWTON
%METODO DE NEWTON
format long;
%format long permite utilizar la máxima capacidad del computador
f=inline(F);
%El comando inline permite hacer la asignación posterior de variables en
%una función.
Y1=f(Xo);
Derivada=diff(F)
%El comando diff permite calcular la derivada de una función.
Der=char(Derivada);
%regresa los valores a texto
D=inline(Der);
%inline, permite asignar a una función el valor de una variable.
De=D(Xo);
%Se evalúa la derivada en la X inicial, y así saber si es adecuada para
%ejecutar el resto del método, es decir si es diferente de cero.
Error=Tol+1;
Cont=0;
Z1= [Cont, Xo, Y1, De, Error];
%Z es una matriz la cual permitira observar lo datos como una tabla a la
%finalizacion del programa
%La sentencia While ejecuta todas las órdenes mientras la expresión sea
%verdadera.
Z= [Cont, Xo, Y1, De, Error];
while Y1~=0 & Error>Tol & Cont<Iter & De~=0
X1=Xo-(Y1/De);
Y1=f(X1);
De=D(X1);
Error=abs((X1-Xo)/X1);
Cont=Cont+1;
Z(Cont,1)=Cont;
Z(Cont,2)=Xo;
Z(Cont,3)=Y1;
Z(Cont,4)=De;
Z(Cont,5)=Error;
%las z son las posiciones asignadas en la tabla a los resultados que se
% observarán
Xo=X1;
end
if Y1==0
fprintf('\n\nSOLUCION:\n')
fprintf('%g es raíz\n\n',Xo);
else
if Error<Tol
fprintf('\n\nSOLUCION:\n')
fprintf( '%g es una aproximacion a una raìz con una tolerancia %g
\n\n',Xo,Tol)
else
if De==0
fprintf('\n\nSOLUCION:\n')
fprintf('Se esta haciendo división por cero y Xo posiblemente es una raiz
multiple\n\n')
else
fprintf('\n\nSOLUCION:\n')
fprintf('Fracaso en %g iteraciones\n\n',Iter);
end
end
end
grid on