hola Ivan.
%=========================
clear all
syms x;
format long
fprintf('metodo de secantes\n');
ft=input('ingrese la ecuacion a evaluar:' , 's');
p1=input('ingrese el primer valor de x:');
p2=input('ingrese el segundo valor de x:');
pfail=input('ingrese el error estimado:');
i=1;
a=input('teclee 1 si quiere modo didactico o 2 si quiere modo directo');
if a==1
while i<=30
i=i+1;
fprintf('%2d',i);
xnext= p2-subs(ft,p2)*((p2-p1)/(subs(ft,p2)-subs(ft,p1)));
disp([p1 p2 xnext])
if abs(xnext-p2)<pfail
fprintf('el valor de la iteracion es: %g\n',p2)
break;
end
p1=p2;
p2=xnext;
if i>30
disp ('la convergencia es mayor al numero de iteracion')
break
end
end
else
while i<=30
i=i+1;
xnext= p2-subs(ft,p2)*((p2-p1)/(subs(ft,p2)-subs(ft,p1)));
if abs(xnext-p2)<pfail
fprintf('el valor de la iteracion es: %g\n',p2)
break;
end
p1=p2;
p2=xnext;
if i>30
disp ('la convergencia es mayor al numero de iteracion')
break
end
end
end
%=========================
EJECUCION
>> secantes1
metodo de secantes
ingrese la ecuacion a evaluar:exp(x)-2
ingrese el primer valor de x:0
ingrese el segundo valor de x:1
ingrese el error estimado:0.01
teclee 1 si quiere modo didactico o 2 si quiere modo directo1
2 0 1.000000000000000 0.581976706869326
3 1.000000000000000 0.581976706869326 0.676692703760405
4 0.581976706869326 0.676692703760405 0.694081399681418
5 0.676692703760405 0.694081399681418 0.693139474644914
el valor de la iteracion es: 0.694081
>> secantes1
metodo de secantes
ingrese la ecuacion a evaluar:exp(x)-2
ingrese el primer valor de x:0
ingrese el segundo valor de x:1
ingrese el error estimado:0.01
teclee 1 si quiere modo didactico o 2 si quiere modo directo2
el valor de la iteracion es: 0.694081
saludos
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
[email protected]