Sei sulla pagina 1di 7

%METODO DE PUNTO FIJO

%fprintf me permite ingresar comentarios de manera textual que pueden


orientar
%al usuario en el uso del programa
fprintf('Calculo de una raiz por el metodo de punto fijo\n')
%format long permite utilizar la maxima capacidad del computador en
%el almacenamiento de digitos, para evitar que el error al realizar una
%iteracin aumente.
format long
%input es un comando de solicitud de entrada de datos del usuario.
Xo=input('ingrese el valor inicial\n');
Iter=input('ingrese el nmero de iteraciones\n');
Tol=input('ingrese la tolerancia que desea\n');
Fun=input('ingrese la funcion en comillas simples\n');
G=input('ingrese la funcion despejada en comillas simples\n');
%El comando inline permite hacer la asignacin posterior de variables en
%una funcin.
f=inline(Fun);
g=inline(G);
Y1=f(Xo);
%La sentencia if tiene como funcion evaluar una condicin y si es cierta
%ejecuta las ordenes que esten antes del primer end, dado el caso
contario
%ejecuta ordenes diferentes bajo la sentencia else.
if Y1==0
fprintf('Xo es raiz\n');
else
Error=Tol+1;
Cont=0;
A=[Cont,Xo,Y1,Error];
%La sentencia While ejecuta todas las ordenes mientras la expresion sea
%verdadera.
while Y1~=0 & Error>Tol & Cont<Iter %expresion

X1=g(Xo); %orden
Y1=f(X1); %orden
Error=abs((X1-Xo)/X1); %orden
Cont=Cont+1; %orden
A(Cont,1)=Cont; %orden
A(Cont,2)=Xo; %orden
A(Cont,3)=X1; %orden
A(Cont,4)=Y1; %orden
A(Cont,5)=Error; %orden
Xo=X1; %orden
end
if Y1==0
fprintf('X1 es raiz\n');
else
if Error<Tol
fprintf('La raiz es %g con un error de %g\n',X1,Error);
else
fprintf('Se llego al maximo de Iteraciones\n');
end
end
fprintf('Pasos, Xo, X1, Y1, Error\n')
% la funcin disp permite que el usuario visualice el resultado, en este
% caso el usuario puede observar una tabla con todos los resultados
% obtenidos y en el orden definido dentro del while.
disp(A)
end
ezplot(f);
%El comando ezplot permite grafica una funcin.

MaTLap

%METODO DE PUNTO FIJO


%fprintf me permite ingresar comentarios de manera textual que pueden orientar
%al usuario en el uso del programa.
fprintf('Calculo de una raiz por el metodo de punto fijo\n')
%format long permite utilizar la maxima capacidad del computador en
%el almacenamiento de digitos, para evitar que el error al realizar una
%iteracin aumente.
format long
%input es un comando de solicitud de entrada de datos del usuario.
Xo=input('ingrese el valor inicial\n');
Iter=input('ingrese el nmero de iteraciones\n');
Tol=input('ingrese la tolerancia que desea\n');
Fun=input('ingrese la funcion en comillas simples\n');
G=input('ingrese la funcion despejada en comillas simples\n');
%El comando inline permite hacer la asignacin posterior de variables en
%una funcin.
f=inline(Fun);
g=inline(G);
Y1=f(Xo);
%La sentencia if tiene como funcion evaluar una condicin y si es cierta
%ejecuta las ordenes que esten antes del primer end, dado el caso contario
%ejecuta ordenes diferentes bajo la sentencia else.
if Y1==0
fprintf('Xo es raiz\n');
else
Error=Tol+1;
Cont=0;
A=[Cont,Xo,Y1,Error];
%La sentencia While ejecuta todas las ordenes mientras la expresion sea
%verdadera.
while Y1~=0 & Error>Tol & Cont<Iter %expresion
X1=g(Xo);
%orden
Y1=f(X1);
%orden
Error=abs((X1-Xo)/X1);
%orden
Cont=Cont+1;
%orden
A(Cont,1)=Cont;
%orden
A(Cont,2)=Xo;
%orden
A(Cont,3)=X1;
%orden
A(Cont,4)=Y1;
%orden
A(Cont,5)=Error;
%orden
Xo=X1;
%orden
end
if Y1==0
fprintf('X1 es raiz\n');
else
if Error<Tol
fprintf('La raiz es %g con un error de %g\n',X1,Error);
else
fprintf('Se llego al maximo de Iteraciones\n');
end
end
fprintf('Pasos,
Xo,
X1,
Y1,
Error\n')
% la funcin disp permite que el usuario visualice el resultado, en este
% caso el usuario puede observar una tabla con todos los resultados
% obtenidos y en el orden definido dentro del while.
disp(A)
end
ezplot(f);
%El comando ezplot permite grafica una funcin.

MatLap 2

clear all;
clc;
fprintf('\nCalculo de la raizde una ecuacion por el metodo del Punto Fijo\n\n');
f=input('Dame la funcion f(x):','s');
xi=input('Dame el valor inicial de x : ');
e=input('Dame el porciento del error : ');
ea=1000;
c=1;
x=xi;
while ea>e
g=eval(f);
ea=abs((g-x)/g*100);
x=g;
c=c+1;
end
fprintf('\n\n\n\nLa raiz exacta es: %d',g)
fprintf('\n\nNumero de iteraciones: %d',c);

matlap 3 +

% Mtodos acotados: Mtodo del punto fijo


Clear,clc
cf=input('Ingrese funcin f: ');
cg=input('Ingrese funcin g: ');
f= inline(cf);
g=inline(cg);
syms x
dg=diff(cg, x);
x=input('Ingrese primer valor: ');

if(abs(eval(dg))<1)
tol=input ('Ingrese tolerancia: ');
disp('

fprintf('

x0
0.0000

error')
%7.4f

------\n',x)

n=0;error=100;
while(error > tol)
n=n+1;
anterior=x;
x= g(x);
error=abs(x-anterior);
disp([n,x,error])
end
else
disp('Ingrese otra funcin g(x), pues con la actual, el mtodo diverge. ')
end

probar:
'cos(x)-3*x'
'cos(x)/3'
'cos(x)-2*x'

converge
diverge

Otro Matlap
function punto
global fun1 fun
fprintf('\t\tMetodo punto fijo\n');
fun=input('Ingrese la funcin y(x):\n', 's');
fun1=input('Ingrese la funcin g(x):\n', 's');
x0=input('Ingrese el punto incial:\n');
tol=input('Ingrese tolerancia:\n');
it=0;
fprintf(' it

x0

x1

|x1-x0|');

while(it<50)
it=it+1;
x=x0;
x1=eval(fun1);
fprintf('\n%3.0f%13.9f%13.9f%13.9f\n',it,x0,abs(x0-x1));
if(abs(x1-x0)<tol)
fprintf('el proceso se completo satisfactoriamente:\n');
break
end
x0=x1;
end
fprintf('La raz buscada es = %15.9f\n',x1);
hold on
ezplot(fun1);
ezplot(fun),grid on,axis([-5 7 -5 10])
hold off
line([-20,0;20,0],[0,-20;0,20], 'color', 'r')

Potrebbero piacerti anche