domingo, 12 de febrero de 2012

Método de Newton Raphson Modificado en Matlab

clear;
clc; 
 fprintf('\n metodo de Newton Rapson Modificado\n\n');
   funcion=input('Dame la funcion f(x) : ','s');
   dfuncion=input('Dame la derivada de funcion f(x) : ','s');
     d2funcion=input('Dame la segunda derivada de funcion f(x) : ','s');
        xi=input('Dame el valor inicial de x : ');
     e=input('Dame el porciento del error : ');
   ea=1000;
  c=1;
 x=xi;
while ea>e 
 g=eval(funcion);
  h=eval(dfuncion);
   k=eval(d2funcion);
     j=x-(g*h)/(h^(2)-(g*k));
   ea=abs((j-x)/j*100);
  x=j;
 c=c+1;
end
 fprintf('\n\n\n\nLa raiz exacta es: %d',j)
  fprintf('\n\nNumero de iteraciones: %d',c);

4 comentarios:

  1. Respuestas
    1. Segunda derivada, perdon, use www.tohtml.com para editar el codigo pero ha presentado errores . =(

      Eliminar
  2. clc
    x0=input('introducir el vector inicial (3):');
    it=0;
    ep=1;
    Nmax=input('introducir el numero de iteraciones maximas:');

    while ep>0.0001 & it<Nmax
    it=it+1;
    f1=x0(1)^2-4*x0(1)+x0(2)^2;
    f2=x0(1)^2-x0(1)-12*x0(2)+1;
    f3=x0(1)+x0(2)+x0(3)-6;
    df1x=2*x0(1)-4;
    df1y=2*x0(2);
    df1z=0;
    df2x=2*x0(1)-1;
    df2y=-12;
    df2z=0;
    df3x=1;
    df3y=1;
    df3z=1;
    A=[df1x df1y df1z -f1;df2x df2y df2z -f2;df3x df3y df3z -f3];

    A(1,:)=A(1,:)/A(1,1);
    A(2,:)=A(2,:)-A(1,:)*A(2,1);
    A(3,:)=A(3,:)-A(1,:)*A(3,1);

    A(2,:)=A(2,:)/A(2,2);
    A(3,:)=A(3,:)-A(2,:)*A(3,2);

    A(3,:)=A(3,:)/A(3,3);

    A(2,:)=A(2,:)-A(3,:)*A(2,3);
    A(1,:)=A(1,:)-A(3,:)*A(1,3);

    A(1,:)=A(1,:)-A(2,:)*A(1,2);

    D=A(:,4);

    x=D'+x0

    ep=norm(x0-x);

    disp([it x ep]);

    x0=x;
    end

    ResponderEliminar