Vous êtes sur la page 1sur 3

Use una variacin del programa utilizado por el autor, con el consiguiente cdigo:

function Newtonraphson
clc
clear
syms x;
x0=input(Ingrese el valor inicial: );
tol=input(Ingrese el porcentaje de error: );
f=input(Ingrese la funcin: );
i=1;
fx(i)=x0;
f1=subs(f,x,fx(i));
z=diff(f);
d=subs(z,x,fx(i));
ea(1)=100;
while abs(ea(i))>=tol;
fx(i+1)=fx(i)-f1/d; f1=subs(f,x,fx(i+1)); d=subs(z,x,fx(i+1));
ea(i+1)=abs((fx(i+1)-fx(i))/fx(i+1)*100);
i=i+1;
end
fprintf(i fx(i) Error aprox (i) \n);
for j=1:i;
fprintf(%2d \t %11.7f \t %7.3f \n,j-1,fx(j),ea(j));
end
Si ponen al principio syms x, el programa reconoce a x como una variable simbolica y deja de dar errores.
Adems hay que tener cuidado al meter la ecuacin al programa, siempre considerando a f(x)=0, y
respetando la forma en como matlab escribe las ecuaciones.
Secante
clc
clear

f=input('Ingrese la funcion:\n','s');;
f=inline(f);
x0=input('Ingrese el primer punto inicial:\n');;
x1=input('Ingrese el segundo punto inicial:\n');
xra=0;
xr=0;
tol=0.01;
i=1;
error_aprox=1;
error=0;

fx1=f(x1);
fx0=f(x0);

xr=x1-((x1-x0)/(fx1-fx0))*fx1;

fprintf('It. X0 X1 Xr Error aprox
\n');
fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %11.7f
\n',i,x0,x1,xr,error);

while error_aprox >= tol,
xra=xr;
x1=xr;

fx1=f(x1);
fx0=f(x0);

xr=x1-((x1-x0)/(fx1-fx0))*fx1;

error = abs((xr - xra) / xr);
error_aprox = error;

i=i+1;

fprintf('%2d \t %11.7f \t %11.7f \t %11.7f \t %11.7f
\n',i,x0,x1,xr,error_aprox);

end

punto fijo
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);


Este es el codigo del Metodo de Biseccion en Matlab para hallar raices de una funcion
Aqui les va el codigo:
%Metodo de Biseccion - Metodos Numericos Matlab
clc;
Fx=input('Ingrese la funcion: ','s');
a=input('Ingrese a : ');
c=input('Ingrese c : ');
e=input('Ingrese el error : ');

x=a;
Fa=eval(Fx);
x=c;
Fc=eval(Fx);
fprintf('\n %6s %7s %8s %10s %8s %8s %8s \n
','A','B','C','F(a)','F(b)','F(c)','|c-a|');
while abs(c-a)>e
b=(a+c)/2;
x=b;
Fb=eval(Fx);

fprintf('\n %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f
\n',a,b,c,Fa,Fb,Fc,abs(c-a));
if Fa*Fb<=0
c=b;
Fc=Fb;
else
a=b;
Fa=Fb;
end

end
fprintf('\nEl resultado sera %.4f\n',b);
ezplot(Fx);%graficamos la funcion
grid on;

Vous aimerez peut-être aussi