PDA

View Full Version : [matlab] soluzione sistemi non lineari


eugenes
11-12-2008, 13:58
sto utilizzando la funzione seguente per risolvere sistemi di equazioni non lineari con il metodo di newton:

function [x,cont]= newton(fun,jac,x0,ep)
%
% Funzione per la risoluzione del sistema f(x)=0
% mediante il metodo di Newton.
%
% INPUT:
% fun, jac nomi dei file contenenti rispettivamente
% la funzione non lineare e
% la matrice Jacobiana della funzione
% x0 vettore contenente l'approssimazione iniziale della soluzione
% ep parametro di tolleranza per l'errore
% OUTPUT:
% x vettore soluzione del sistema (o equazione) non lineare
% cont numero di iterazioni fatte per ottenere l'approssimazione
% desiderata
%

y=feval(jac,x0)\feval(fun,x0);
x=x0-y;
cont=1;
while (norm(x-x0,'inf') > ep) & (cont<100)
x0=x;
y=feval(jac,x0)\feval(fun,x0);
x=x0-y;
cont=cont+1;
end
if cont==100
disp('Il procedimento non converge con la ');
disp('precisione desiderata.');
disp('Dopo 100 passi');
fprintf('\t\t norma = %f .',norm(x-x0,'inf'));
end

la fun in ingresso naturalmente è una funzione che contiene le espressioni delle singole funzioni non lineari.
se volessi ottenere una funzione newton che non richieda in ingresso la matrice jacobiana già calcolata analiticamente, ma calcoli le derivate parziali passo per passo come dovrei modificarla?

esiste già una funzione di matlab per farlo?

grazie!

Ken1986
11-12-2008, 16:23
Non ho mai risolto eq. non lineari con matlab, comunque prova a dare uno sguardo a questo (http://dm.ing.unibs.it/gastaldi/didattica2005/meccanica/lezioni/lab-zeri.pdf)

Hardware Upgrade Forum Database Error
Database Error Database error
The Hardware Upgrade Forum database has encountered a problem.

Please try the following:
  • Load the page again by clicking the Refresh button in your web browser.
  • Open the www.hwupgrade.it home page, then try to open another page.
  • Click the Back button to try another link.
The www.hwupgrade.it forum technical staff have been notified of the error, though you may contact them if the problem persists.
 
We apologise for any inconvenience.