(matlab) metodo di Newton inesatto
Salve a tutti. vorrei chiedere un parere, o meglio un aiuto, sul Metodo di Newton inesatto, o forse conosciuto anche come metodo di newton esteso a funzioni vettoriali.
In teoria ho capito come funziona, infatti volevo partire dal metodo di risoluzione di Jacobi che ho implementato (vi posto il codice a fine post) e modificarlo a dovere, tanto più o meno cambia il calcolo fatto dentro il for.
Il problema è che non so proprio come calcolare la matrice jacobiana con matlab, trovassi il modo penso sarei apposto, e no so da dove partire...
Di qui il codice del Metodo di jacobi.
Grazie mille a tutti anticipatamente.
In teoria ho capito come funziona, infatti volevo partire dal metodo di risoluzione di Jacobi che ho implementato (vi posto il codice a fine post) e modificarlo a dovere, tanto più o meno cambia il calcolo fatto dentro il for.
Il problema è che non so proprio come calcolare la matrice jacobiana con matlab, trovassi il modo penso sarei apposto, e no so da dove partire...
Di qui il codice del Metodo di jacobi.
Grazie mille a tutti anticipatamente.
function [niterazioni,vettoresoluzione,tJ] = jacobi(A,b,toll,Nmax) %JACOBI metodo di Jacobi per la risoluzione di sistemi lineari % % [niterazioni,vettoresoluzione,tJ] = jacobi(A,b,toll,Nmax) applica il % metodo di Jacobi alla matrice d'ingresso (A), al vettore dei termini % noti (b), considerando l'errore relativo massimo e il numero di % iterazioni massime (Nmax); restituisce il numero di iterazioni % (niterazioniJ), il vettore soluzione (vettoresoluzioneJ) e il tempo % impiegato dal metodo (tJ) per risolvere il sistema lineare. % NB: i dati sono visualizzati in FORMAT LONG (tale formato alla fine % della computazione torna a default) % % Maurizio Idini format long n=size(A,1); %dimesione della matrice A x=zeros(n,1); %inizializzazione del vettore soluzione k=0; %contatore xv=ones(n,1); %vettore soluzione esatto tic %inizio contatore di tempo while (k<Nmax) xv=x; x=x'; k=k+1; for i=1:n if (i==1) s = sum(A(i,i+1:n).*x(i+1:n)); x (i) = ( b(i) - s) / A(i,i); else s = sum(A(i,1:i-1).*x(1:i-1)); s = s + sum(A(i,i+1:n).*x(i+1:n)); x (i) = ( b(i) - s) / A(i,i); end end x=x'; if(norm(x-xv,2)<toll*norm(x,2)),break,end end tJ=toc; fprintf('il tempo di calcolo è %f \n', tJ); niterazioni=k; fprintf('Il numero di interazioni è %d \n', niterazioni); vettoresoluzione=x; disp('il vettore di soluzione è '); vettoresoluzione format short
Risposte
jacobian(F,v)
in cui F è la funzione definita in simbolico(col syms) e v è il vettore contenente le variabili rispetto a cui derivare
Un esempio:
>>syms u v
>>jacobian(u*exp(v),[u;v])
ans =
[ exp(v), u*exp(v)]
>>
in cui F è la funzione definita in simbolico(col syms) e v è il vettore contenente le variabili rispetto a cui derivare
Un esempio:
>>syms u v
>>jacobian(u*exp(v),[u;v])
ans =
[ exp(v), u*exp(v)]
>>
Salve a tutti, ho trovato la soluzione e dunque ho passato l'esame.
Perciò chiedo ai moderatori di poter mettere "chiuso" al thread!! (sinceramente non so come fare!)
Allora, in pratica questo programma calcola il vettore di soluzione di newton vettoriale, ovvero con un sistema di n equazioni in n incognite.
Per la teoria fate riferimento a queste slide:
http://xmlservices.unisi.it/ing_online/iscrizione/materiali/6392/Lezione_2.ppt
per calcolare il vettore Delta_X utilizza per l'appunto jacobi.
Ovviamente c'è da tener conto del fatto che alcune matrici convergono a Jacobi ( e quindi la soluzione calcolata con Newton converge) mentre altre no.
Vi posto per cui i vari file dentro un zip. Troverete sia il metodo di jacobi, sia il metodo di newton, sia i vari test fatti con matrici che convergono e non, oltre alla traccia d'esame e la relazione.
https://rapidshare.com/files/1321751824/Elaborato%20A.zip
Per qualsiasi chiarimento postate qui o per mess privato.
Ciao a tutti!
Perciò chiedo ai moderatori di poter mettere "chiuso" al thread!! (sinceramente non so come fare!)
Allora, in pratica questo programma calcola il vettore di soluzione di newton vettoriale, ovvero con un sistema di n equazioni in n incognite.
Per la teoria fate riferimento a queste slide:
http://xmlservices.unisi.it/ing_online/iscrizione/materiali/6392/Lezione_2.ppt
per calcolare il vettore Delta_X utilizza per l'appunto jacobi.
Ovviamente c'è da tener conto del fatto che alcune matrici convergono a Jacobi ( e quindi la soluzione calcolata con Newton converge) mentre altre no.
Vi posto per cui i vari file dentro un zip. Troverete sia il metodo di jacobi, sia il metodo di newton, sia i vari test fatti con matrici che convergono e non, oltre alla traccia d'esame e la relazione.
https://rapidshare.com/files/1321751824/Elaborato%20A.zip
Per qualsiasi chiarimento postate qui o per mess privato.
Ciao a tutti!
