The::Beastieux

Sangre de Bestia + Corazón de Pingüino | Un blog acerca de Linux, *BSD, Open Source, Software Libre, Programación …

Código Matlab – Método de Newton-Raphson


x0=input('Ingrese el valor inicial: ');
tol=input('Ingrese el porcentaje de error: ');
f=input('Ingrese la función: ');
i=1;
fx(i)=x0;

syms x;
f1=subs(f,x,fx(i));
z=diff(f);
d=subs(z,x,fx(i));

ea(1)=100;

while abs(ea(i))>=tol;
    fx(i+1)=fx(i)-f1/d; f1=subs(f,x,fx(i+1)); d=subs(z,x,fx(i+1));
    ea(i+1)=abs((fx(i+1)-fx(i))/fx(i+1)*100);
    i=i+1;
end
fprintf('i     fx(i)         Error aprox (i) \n');
for j=1:i;
    fprintf('%2d \t %11.7f \t %7.3f \n',j-1,fx(j),ea(j));
end
About these ads

21 Respuestas a “Código Matlab – Método de Newton-Raphson

  1. john mayo 18, 2014 en 6:19 pm

    ola tengo una duda como debo de introducir los datos de la ecuacion y si me pudieran explicar como va cada parte del programa soy nuevo en esto de antemano gracias

  2. Anónimo septiembre 4, 2013 en 8:26 am

    vflufyfgvñp

  3. Josh junio 2, 2013 en 11:23 am

    no tienes x ahí le método de la secante y el de biseccion, Soy principiante con este IDE, y debo precentar los codiigos.. :/

    • guille noviembre 8, 2013 en 11:44 pm

      oeoeo
      te mando el de la secante y biseccion en matlab no se si esten muy bueno
      function x=secant(f,a,b,n,e)
      disp ‘Método de la Secante’
      f=inline(f);
      for k=1:n
      t=b;
      b=(f(b)*a-f(a)*b)/(f(b)-f(a));
      a=t;

      if(abs(b-a)e && k<n
      m=(a+b)*1/2;
      if f(a)*f(m)<=0
      b=m;
      else
      a=m;
      end
      k=k+1;
      end
      out=[a,b];

  4. Anónimo junio 27, 2012 en 12:35 pm

    cual es la forma correcta de introducir la ecuacion??? p.e. x^3-x^2+x-5

  5. asdasdasdasdasdasd mayo 24, 2012 en 5:33 am

    ??? Undefined function or method ‘syms’ for input arguments of type
    ‘char’.

    Error in ==> newton at 3
    syms x;

  6. Xavier abril 17, 2012 en 6:39 pm

    Use una variación del programa utilizado por el autor, con el consiguiente código:

    function Newtonraphson
    clc
    clear
    syms x;

    x0=input(‘Ingrese el valor inicial: ‘);
    tol=input(‘Ingrese el porcentaje de error: ‘);
    f=input(‘Ingrese la función: ‘);
    i=1;
    fx(i)=x0;

    f1=subs(f,x,fx(i));
    z=diff(f);
    d=subs(z,x,fx(i));

    ea(1)=100;

    while abs(ea(i))>=tol;
    fx(i+1)=fx(i)-f1/d; f1=subs(f,x,fx(i+1)); d=subs(z,x,fx(i+1));
    ea(i+1)=abs((fx(i+1)-fx(i))/fx(i+1)*100);
    i=i+1;
    end
    fprintf(‘i fx(i) Error aprox (i) \n’);
    for j=1:i;
    fprintf(‘%2d \t %11.7f \t %7.3f \n’,j-1,fx(j),ea(j));
    end

    Si ponen al principio syms x, el programa reconoce a x como una variable simbolica y deja de dar errores. Además hay que tener cuidado al meter la ecuación al programa, siempre considerando a f(x)=0, y respetando la forma en como matlab escribe las ecuaciones.

    • Anónimo junio 24, 2012 en 3:34 pm

      epa men no tienes x ahi le metodo de la secante y el de biseccion? gracias! enviarlo a mi correo gracias

  7. Anónimo abril 17, 2012 en 10:52 am

    ola soy (tapia) lo que pasa que estoy buscando un hombre que me enseñe a manegar el programa de matlab que sea juapo atractivo y muy varonil cualquier cosa que necesite estoy a sus odenes solo a para ti…….hablame te lo ponjo a tu imaginacion.

  8. Alberto abril 8, 2012 en 4:24 am

    hola, soy novato en Matlab y estoy intentando resolver un sistema con las siguientes funciones:
    u=2x-y-e^x
    v=-x+2y-e^(-y)

    Para ello he creado el siguiente programa pero no me dan los resultados deseados, podrían decirme si el fallo es en el programa o es porque estas no convergen?

    Gracias.

    function Primeraparte
    clc
    clear
    close all

    B=Calculo;
    end

    function B=Calculo
    i=2;
    B=[0 0;1 1];
    T=0.001;

    while abs(B(i,1)-B(i-1,1))>T && abs(B(i,2)-B(i-1,2))>T

    J=[2-exp(B(i,1)) -1;-1 2+exp(-B(i,2))];

    D=det(J);

    u=2*B(i,1)-B(i,2)-exp(B(i,1));
    v=-B(i,1)+2*B(i,2)-exp(-B(i,2));

    B(i+1,1)=B(i,1)-(((u*J(2,2))-(v*J(1,2)))/D);
    B(i+1,2)=B(i,2)-(((v*J(1,1))-(u*J(2,1)))/D);

    i=i+1;
    end
    disp(B(i-1,1))
    disp(B(i-1,2))
    end

    • Anónimo abril 26, 2013 en 12:39 pm

      estas fallando en tus interacciones

  9. Anónimo marzo 28, 2012 en 2:31 pm

    soy diego el guapo

  10. jorge marzo 13, 2012 en 7:08 am

    una vez tienes este codigo como haces para que funcione? soy novato en esto de matlab, que se necesita para completarlo? gracias!

  11. Anónimo noviembre 17, 2011 en 8:27 pm

    eres todo un maestro
    si jala bien
    muchas gracias

  12. Anónimo noviembre 17, 2011 en 7:52 pm

    oye me aparece esto al ingresar la funcion:
    ??? Error using ==> input
    Undefined function or variable ‘x’.

    Error in ==> newton1 at 3
    f=input(‘Ingrese la función: ‘);

    que puedo hacer

  13. Anónimo octubre 18, 2011 en 8:18 pm

    como pongo la funcion?? por ejemplo x^3+2x^2

  14. Anónimo junio 22, 2011 en 4:36 am

    Te complicas la vida: asi es mucho mas facil.

    function sol=newton(fn,dfn,x0,tol)
    old = x0+1;while abs (x0−old)> tol;
    old=x0;
    x0 =old−feval(fn,old)/feval(dfn,old);end; sol=x0;

    • Anónimo julio 20, 2011 en 12:03 pm

      esta bien tu programa.. solo deves especificar par los principiantes que debes declarar tu funcion fn= inline(‘funcon deseada’) y que ademas debesn poner la funcion en funcion de x0 n_n

  15. daniel mayo 3, 2011 en 2:08 pm

    hola muy buenos los aportes, pero me gustaria q los dejaras un poquito explicados, pues bueno muchos somos principiantes y no sabesmos bn, sobre la programacion, solo es para q nos quede un poco mas facil el entender el programa….

    grax

    • BeAsTiEuX mayo 4, 2011 en 10:47 pm

      Gracias por decírmelo daniel, espero dejar bien comentado los códigos que postee en adelante..
      Saludos

      • Santiago marzo 23, 2012 en 9:07 pm

        mire que me aparece Error using ==> input
        Undefined function or variable ‘x’. que hago ay le mando el codigo para que me ayude por favor x0=input(‘Ingrese el valor inicial: ‘);

        tol=input(‘Ingrese el porcentaje de error: ‘);
        f=input(‘Ingrese la función: ‘);

        i=1;
        fx(i)=x0;

        syms x;
        f1=subs(f,x,fx(i));
        z=diff(f);
        d=subs(z,x,fx(i));

        ea(1)=100;

        while abs(ea(i))>=tol;

        fx(i+1)=fx(i)-f1/d; f1=subs(f,x,fx(i+1)); d=subs(z,x,fx(i+1));
        ea(i+1)=abs((fx(i+1)-fx(i))/fx(i+1)*100);

        i=i+1;

        end

        fprintf(‘i fx(i) Error aprox (i) \n’);

        for j=1:i;

        fprintf(‘%2d \t %11.7f \t %7.3f \n’,j-1,fx(j),ea(j));

        end

        por otro lado en que linea coloco el sgte codigo

        function sol=newton(fn,dfn,x0,tol)
        old = x0+1;while abs (x0−old)> tol;
        old=x0;
        x0 =old−feval(fn,old)/feval(dfn,old);end; sol=x0;

No te quedes callado. Pregunta, Comenta, Comparte, Sígueme, Suscríbete, Déjame tu opinión... Soy Beastieux Zeroo...

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 536 seguidores

A %d blogueros les gusta esto: