Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - metodo di jacobi
Forum - C/C++ - metodo di jacobi

Avatar
zaire90 (Normal User)
Rookie


Messaggi: 46
Iscritto: 16/10/2009

Segnala al moderatore
Postato alle 19:11
Lunedì, 30/11/2009
Salve, potete linkarmi o dire dove trovare un codice in c che risolve un sistema lineare applicando il metodo di Jacobi per favore...perchè sto provando a farlo con degli appunti molto scarsi e sul web non è mi si chiariscano molto le idee.
O se almeno mi potreste dire dove andarlo a studiare perchè spiegato bene...GRAZIE:hail:

PM Quote
Avatar
ingMark (Ex-Member)
Pro


Messaggi: 176
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 20:23
Lunedì, 30/11/2009
L'altr'anno ne ho implementata una versione matlab durante il corso di calcolo numerico.

Codice sorgente - presumibilmente C/C++

  1. %es11
  2.  
  3.  
  4.  
  5. function [x,r] = jacobi(A,b,itermax);
  6.  
  7.  
  8.  
  9. N = length(b);
  10.  
  11. D = diag(diag(A));
  12.  
  13. x= zeros(N,1);
  14.  
  15.  
  16.  
  17. %facoltativo per verificare la teoria
  18.  
  19. %si calcola il raggio spettrale della matrice
  20.  
  21. %se il raggio spettrale è minore di uno il metodo converge
  22.  
  23. I = eye(N);
  24.  
  25. D1 = inv(D);
  26.  
  27. Bj = I - D1*A; %matrice di interazione di jacobi
  28.  
  29. r = max(abs(eig(Bj))); %raggio spettrale
  30.  
  31. %////////////////////////////////////////
  32.  
  33.  
  34.  
  35. for i=1:itermax
  36.  
  37. x = D1*((D-A)*x+b);
  38.  
  39. %x = D\((D-A)*x+b); da usare se non si calcola il raggio spettrale
  40.  
  41. end;



Tradurlo in C non dovrebbe essere molto difficile, a patto di avere qualche nozione di algebra lineare (wikipedia ti può sicuramente aiutare)

PM Quote