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
Dóname $1 si te he ayudado!! :D
Me gusta:
Sé el primero en decir que te gusta esta post.
??? 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.
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
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;