Ho da risolvere il sistema di equazioni non lineari seguente e non so come fare in MATLAB:



Mi potreste aiutare? GRAZIE
Moderatori:
PietroBaima,
Ianero





function J = Jfun( x )
%UNTITLED3 Summary of this function goes here
% Detailed explanation goes here
J(1,1)=x(3)-x(2)^2*x(3)/2;
J(1,2)=x(1)*x(2)*x(3);
J(1,3)=x(1)-x(1)*x(2)^2/2;
J(2,1)=x(2)*x(3);
J(2,2)=x(1)*x(3);
J(2,3)=x(1)*x(2);
J(3,1)=-x(1)*x(3);
J(3,2)=0;
J(3,3)=1-x(1)^2/2;
end
function F = Ffun( x )
%UNTITLED4 Summary of this function goes here
% Detailed explanation goes here
F(1,1)=x(1)*x(3)-x(1)*x(2)^2*x(3)/2-0.0131;
F(2,1)=x(1)*x(2)*x(3)-7.72e-04;
F(3,1)=x(3)-x(1)^2*x(3)/2-0.6245;
end
%% I valori di F_x F_y e F_z sono valori reali misurati in un certo istante
function [ x,F,niter ] = newtonsys( Ffun,Jfun,x0,tol,nmax,varargin )
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
niter=0;
err=tol+1;
x=x0;
while err>= tol && niter<=nmax
J=feval(Jfun,x,varargin{:});
F=feval(Ffun,x,varargin{:});
delta=-J\F;
x=x+delta;
err=norm(delta);
niter=niter+1;
end
F=norm(feval(Ffun,x,varargin{:}));
if(niter==nmax && err>tol)
fprintf({'Il metodo non converge nel massimo numero di iterazioni',...
'la ultima iterata calcolata ha residuo relativo pari a %e \n'},F)
else
fprintf('Il metodo converge');
end
end


minidiable ha scritto:Il problema e' che mi da una soluzione, mi dice che esiste, ma la soluzione (logicamente) varia al variare del punto di partenza dell'algoritmo, come si fa a trovare la soluzione "vera" di questo sistema?


Visitano il forum: Nessuno e 35 ospiti