El método de Newton-Raphson es un método iterativo ampliamente utilizado para encontrar aproximaciones de las raíces de ecuaciones no lineales. A diferencia de otros métodos que dividen intervalos, este método se basa en la idea de aproximar la raíz mediante una tangente a la curva de la función en un punto inicial. Aquí el código realizado en Matlab:
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
Your point of view caught my eye and was very interesting. Thanks. I have a question for you.
hola soy principiante, tienes el codigo para un sistema de de dos o mas variables por el metodo de newton
hola me sale lo siguiente
>> x^3-3*x-1
error: ‘x’ undefined near line 1 column 1
>> x^3-3*x-1=0
parse error:
invalid left hand side of assignment
>>> x^3-3*x-1=0
para que el programa no muestre error al momento de ingresar la funcion se debe colocar syms x; antes del input de la funcion
syms x;
f=input(‘Ingrese la función: ‘);
grax crack
tu k dises kbrn
oye guapo tienes msn?????:)
gracias
No me ha servido de nada pero gracias por participar.
nah era broma, gracias
no lo tienes para un sistema de ecuaciones?
Me sale este error:
Error using fprintf
Function is not defined for ‘sym’ inputs.
Error in jalaplz (line 20)
fprintf(‘%2d \t %11.7f \t %7.3f \n’,j-1,fx(j),ea(j));
como mismo es se ingresa la funcion 🙁
como puedo hacer el metodo de biseccion sin usar la tolerancia ni el error solo diciendole al usuario que ingrese la funcion y los valores para a y b
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
agregale syms x;
antes del input de la funcion
syms x;
f=input(‘Ingrese la función: ‘);
vflufyfgvñp
no tienes x ahí le método de la secante y el de biseccion, Soy principiante con este IDE, y debo precentar los codiigos.. :/
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];
cual es la forma correcta de introducir la ecuacion??? p.e. x^3-x^2+x-5
??? Undefined function or method ‘syms’ for input arguments of type
‘char’.
Error in ==> newton at 3
syms x;
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.
epa men no tienes x ahi le metodo de la secante y el de biseccion? gracias! enviarlo a mi correo gracias
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.
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
estas fallando en tus interacciones
soy diego el guapo
una vez tienes este codigo como haces para que funcione? soy novato en esto de matlab, que se necesita para completarlo? gracias!
eres todo un maestro
si jala bien
muchas gracias
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
como pongo la funcion?? por ejemplo x^3+2x^2
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;
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
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
Gracias por decírmelo daniel, espero dejar bien comentado los códigos que postee en adelante..
Saludos
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;