NEWTON

NEWTON

martes, 20 de septiembre de 2011

Sexto Programa: Metodo de la Secante

METODO DE LA SECANTE:
El método de la secante es un método que permite evaluar las raíces de funciones cuya derivada es difícil de calcular. En dichos casos, la derivada se puede aproximar mediante una diferencia finita dividida hacia atrás. Y se obtiene de este modo la siguiente fórmula iterativa.

Codigo para Octave:
  
%SECANTE
disp('METODO :  SECANTE');
disp('por:');
disp('Carolina Perez Gaviria');
disp('Jennifer Olano Arrieta');
disp('Carlos Trujillo');
disp('  ');
format long
Xo=input('INDIQUE EL VALOR DONDE DESEA QUE COMIENCE LA BUSQUEDA DE RAICES: ');
X1=input('INGRESE EL SEGUNDO VALOR DONDE TERMINA LA BUSQUEDA DE RAICES: ');
TOL=input('INGRESE LA TOLERANCIA QUE USTED DESEA: ');
ITER=input('CANTIDAD MAXIMA DE ITERACIONES: ');
Fun=input('COLOQUE LA FUNCION ENTRE COMILLAS EN LA CUAL SE BUSCARA LA RAIZ = ','s');
F=inline (Fun);
Yo=F(Xo)
Y1=F(X1)
               if Yo==0
                fprintf('Xo ES RAIZ DE ESTA FUNCION: ');
      else
      DEN=y1-yo;
      %DEN se utiliza para indicar el denominador
      E=TOL+1;
      cont=0;
      T= [Xo, X1, Y1, E];
%T, es la matriz en la que se almacenan los resultados de cada una de las iteraciones que realiza el programa para ser finalmente entregados en una tabla.
    while Y1~=0 & E>TOL& cont<ITER & DEN~=0
    %While es el que permite que de manera repetitiva se ejecute mientras las condiciones sean verdaderas.
    
               X2=X1-((Y1*(X1-Xo))/(Y1-Yo));
        Y2=F(X2);
        E=abs((X2-X1)/X2);
        cont=cont+1;
        Xo=X1;
        Yo=Y1;
        X1=X2;
        Y1=Y2;
        DEN=Y1-Yo;
        T(cont,1)=cont;
        T(cont,2)=Xo;
        T(cont,3)=X1;
        T(cont,4)=Y1;
        T(cont,5)=E;

    end
                if Y1==0
        fprintf('X1 es raiz: ');
   else
               if E<TOL
               fprintf('X1 ES RAIZ CON UN VALOR DE %g y un error de %g        : ',X1,E); 

               else
            if DEN==0
                fprintf('DENOMINADOR ES CERO : ');
                else
                fprintf('NUMERO MENOR DE ITERACIONES: ');
                   end
               end
    end
end
               fprintf('interaciones Xo X1 Y1 Error relativo: ');
               disp(T);

No hay comentarios:

Publicar un comentario