viernes, 4 de diciembre de 2009

Programa 2.6 (Metodo de la secante - pagina 93).

%Programa 2.6 (Metodo de la secante - pagina 93).
% Aproximacion a una raiz de f(x)=0 a partir de los valores iniciales
% p<0> y p<1> mediante la iteracion
% p = p - ( f(p)(p - p) ) / ( f(p) - f(p) ) para k=1,2,...
%
%
%Sintaxis
% secant(f,p0,p1,delta,epsilon,max1)
%
%Datos
% - f es la funcion, introducida como una cadena de caracteres 'f'
% - p0 y p1 son las aproximaciones iniciales a un cero de f
% - delta es la tolerancia para p1
% - epsilon es la tolerancia para los valores de la funcion
% - max1 es el numero maximo de iteraciones
%Resultados
% - p1 es la aproximacion al cero, optenida con el metodo de la secante
% - err es una etimacion del error de p1
% - k es el numero de iteraciones realizadas
% - y es el valor de la funcion f(p1)

for k=1:max1
x=p0;
fenp0=feval(f,x);
x=p1;
fenp1=feval(f,x);
p2=p1-fenp1*(p1-p0)/(fenp1-fenp0);
disp(['p(',num2str(k+1),')=']);disp(p2);
err=abs(p2-p1);
relerr=2*err/(abs(p2)+delta);
p0=p1;
p1=p2;
x=p1;
y=feval(f,x);
%disp(['y(',num2str(k+1),')=']);disp(y);
if (err < delta) (relerr < delta) (abs(y) < epsilon),break,end
end

No hay comentarios:

Publicar un comentario