Si quieren que el usuario ingrese las funciones, jacobiana, tolerancia, etc. deben ocupar el comando input.
%newton raphson multivariable
clear all; close all; clc;
%funciones x^2+x*y+y^2-1=0
% x^2-y=0
f=inline('[x(1)^2+x(1)*x(2)+x(2)^2-1; x(2)-x(1)^2]');
df=inline('[2*x(1)+x(2) x(1)+2*x(2); -2*x(1) 1]');
%punto de partida para x e y
x0=[1;1];
%iteraciones máximas
maxi=10;
%tolerancia
tol=1.e-12;
corr=tol+1;
k=0;
while k<=maxi & norm(corr,inf)>tol
fx0=feval(f,x0);
dfx0=feval(df,x0);
corr=dfx0\fx0;
x=x0-corr;
x0=x;
k=k+1;
end
disp('la solución es')
disp(x)
if norm(corr,inf)>tol
error('Se alcanzó el número máximo de iteraciones')
end
disp(['se calculo en ' num2str(k) ' iteraciones'])
No funciona.
ResponderEliminarSí funciona, en que parte te tira el error?
ResponderEliminarAmigo feval no funciona para un script el programa solo sirve en el comand line... para un script da el siguiente error Error using sym/eval (line 15)
ResponderEliminarAttempt to add "Qc" to a static workspace.
See MATLAB Programming, Restrictions on Assigning to Variables for details.
puedes cambiarlo por el feval por
Eliminarwhile k<=maxi & norm(corr,inf)>tol
fx0=f(x0);
dfx0=df(x0);
corr=dfx0\fx0;
x=x0-corr;
x0=x;
k=k+1;
end
saludos
No sirve este codigo
ResponderEliminardónde está el error?, probaste con la solución que le di a anónimo? a mi me corre sin problemas en el matlab 2011b con todos los toolboxes
Eliminarsaludos
A mí sí me funcionó!!!! :D Mil gracias
ResponderEliminarpara n ecuación y hacer el interfaz de usted es solamente para 2 ecuaciones
ResponderEliminar