Está en la página 1de 1

function Secante

clc
clear all
format short;
%Ingreso de variables
x0=input('Punto x0: '); %punto inicial
xi=input('Punto xi: '); %punto secundario
graf=input('Funcin f(x)=','s'); %Funcion
syms x; %declaro la variable x como una variable simbolica
deriv = diff(graf,x);%derivada de primer orden
deriv2 = diff(deriv,x);%derivada de 2do orden
%Grafica de la funcion
f=inline(graf);%Expresa la funcion para ser utilizada como funcion de otras
n=1000;%numero de puntos de la grafica
DOM=linspace(xi-1.25*xi,xi+1.25*xi,n);%intervalo de existencia de la grafica
for i=1:n
y(i)=f(DOM(i));%Evaluacion de la funcion
end
iter=input('Nmero de iteraciones: '); %Contador de iteraciones
plot(DOM,y)
xlabel('x')
ylabel('f(x)')
title('Grafica de la Funcion')
grid on
hold on
y2=zeros;
plot(DOM,y2,'k')
x2=zeros;
plot(x2,y,'k')
%find(graf==zeros)
%c=fzero(graf,[1 1.5]);
for k=1:iter%Condicion de llegar al numero de iteraciones
%xn=x0-(f(x0)*(xi-x0))/(f(xi)-f(x0));%Obtengo el valor xn
xn=xi-((f(xi)*(xi-x0))/(f(xi)-f(x0)));
if k==1
e=0;
else
e=abs((xn-rv)/xn)*100;
end
%e2=abs(((c-xn)/c)*100);
A(k,:)=[k xi x0 f(xi) f(x0) xn f(xn) e
];%e2];
rv=xn;
x0=xi;
xi=xn;
end
fprintf('\n \tIter
\txi
\tx0 \tf(xi) \tf(x0) \txn \tf(xn) \tEr
ror rel \tError abs \n')
disp(A)
fprintf('Solucin:\n xi=%8.5f\n',xn)
fprintf('f(xi)=%8.5f\n',f(xn))
fprintf('error abs=%8.5f\n',e)
end

También podría gustarte