Sec Ante

Embed Size (px)

DESCRIPTION

Codigo secante Matlab

Citation preview

function Secanteclcclear allformat short;%Ingreso de variablesx0=input('Punto x0: '); %punto inicialxi=input('Punto xi: '); %punto secundariograf=input('Funcin f(x)=','s'); %Funcionsyms x; %declaro la variable x como una variable simbolicaderiv = diff(graf,x);%derivada de primer ordenderiv2 = diff(deriv,x);%derivada de 2do orden%Grafica de la funcionf=inline(graf);%Expresa la funcion para ser utilizada como funcion de otras n=1000;%numero de puntos de la graficaDOM=linspace(xi-1.25*xi,xi+1.25*xi,n);%intervalo de existencia de la graficafor i=1:n y(i)=f(DOM(i));%Evaluacion de la funcionenditer=input('Nmero de iteraciones: '); %Contador de iteracionesplot(DOM,y)xlabel('x')ylabel('f(x)')title('Grafica de la Funcion')grid onhold ony2=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;endfprintf('\n \tIter \txi \tx0 \tf(xi) \tf(x0) \txn \tf(xn) \tError 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