Indice del forum
 FAQ   Cerca   Lista utenti   Gruppi   Registrati   Profilo   Messaggi privati   Log in 
Metodo di jacobi

 
Nuovo argomento   Rispondi    Indice del forum -> Programmazione: c#, c++, Java, HTML, PHP, Javascript...
Precedente :: Successivo  

Autore

Messaggio

maris.p
Novizio


Registrato: 30/10/09 12:27
Messaggi: 9

MessaggioInviato: Mer Dic 02, 2009 7:18 pm    Oggetto: Metodo di jacobi

Rispondi citando


Ho un grosso problema con il metodo di jacobi. Ecco la traccia:
calcolare con il metodo di Jacobi la soluzione, accurata entro la tolleranza, del sistema Ax=b. Ecco il codice che ho scritto, ma il risultato non va..
qualcuno può aiutarmi??? Grazie mille

Codice:
#include<iostream>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

#define EPS 0,00001   //tolleranza
#define MAXINTER 100000  //numero max di interazioni
using namespace std;

const int MAX_DIM = 10;

void leggi(double A[MAX_DIM][MAX_DIM],int &dim);
void leggi_b(int dimensione, double b[]);
void stampa(double A[MAX_DIM][MAX_DIM], double x[MAX_DIM], int dim);

int jacobi(double A[MAX_DIM][MAX_DIM], double b[MAX_DIM],int dim)
{
      int i,j;
      int flag=0;
      double sum;
      double X[MAX_DIM];
      for( i=0; i<dim; i++){
          X[i]=b[i]/A[i][i];
          }   
          while(EPS && flag < MAXINTER)
          {
               
                for(i=0;i<dim;i++){
                    b[i]=X[i];
                    sum=b[i];
                    for(j=0;j<dim;++j)
                    if(j!=i)
                    sum-=A[i][j]*b[j];
                    X[i]=sum/A[i][i];
                    for (i=0;i<dim;i++)
                    if(fabs(X[i]- b[i])>fabs(X[i])*EPS)
                    ++flag;
                    }         
           }                     
               
               
}


void leggi( double A[MAX_DIM][MAX_DIM], int &dim)
{
       int i,j;
       cout << "Inserire la dimensione della matrice: ";
       cin >> dim;
       for( i=0; i<dim; i++)
          for( j=0; j<dim; j++) {
             cout << "A(" << i+1 << "," << j+1 << ")=";
             cin >> A[i][j];
          }
}


void leggi_b( int dim, double b[MAX_DIM])
{
       int i;
       for( i=0; i<dim; i++) {
          cout << "b(" << i+1 << ")=";
          cin >> b[i];
       }
}


void stampa(double A[MAX_DIM][MAX_DIM], double term_noti[MAX_DIM], int dim)
{
       int i,j;
       cout << "Matrice\n";
       for(i=0;i<dim;i++) {
          for(j=0;j<dim;j++)
              cout << "\tA("
              << i+1 << ","
              << j+1 << ")="
              <<A[i][j];
              cout << "\n";
       }
}


void stampa_sol(double x[MAX_DIM], int dim)
{
       int i;
       cout << "Vettore soluzioni\n";
       for(i=0;i<dim;i++) {           
           cout << "\tx(" << i+1 << ")=" << x[i];
           cout << "\n";
       }
}


main()
{
       double A[MAX_DIM][MAX_DIM],b[MAX_DIM], X[MAX_DIM];
       int dim;
       int success;

       cout << "\n\n\n";
       leggi(A,dim);
       leggi_b(dim,b);
       stampa(A,b,dim);
       jacobi(A,b,dim);
       cout << "\n\nIl vettore delle soluzioni e’:\n";
       stampa_sol(X,dim);
       

       system ("PAUSE"); return 0;
}

Top

Profilo Invia messaggio privato

cali1981
Site Admin


Registrato: 16/01/06 22:01
Messaggi: 836

MessaggioInviato: Gio Dic 03, 2009 2:26 pm    Oggetto:

Rispondi citando


Qual'è il problema? Che errore da?
_________________
Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!

Realizzazione siti web e applicazioni ASp.NEt, C/C++, C#

Top

Profilo Invia messaggio privato Invia e-mail

maris.p
Novizio


Registrato: 30/10/09 12:27
Messaggi: 9

MessaggioInviato: Gio Dic 03, 2009 8:04 pm    Oggetto:

Rispondi citando


i valori del vettore x delle soluzioni non si trova con gli esempi che ho per fare le prove.. ma non riesco a capire il perchè..
per esempio con dim =4:
la matrice A è:
a11= 3 a12=-13 a13=9 a14=3
a21=-6 a22=4 a23=1 a24=-18
a31=6 a32=-2 a33=2 a34=4
a41=12 a42=-8 a43=6 a44=10

il vettore b è: b1=-19 b2=-34 b3=16 b4=26

il vettore x dovrebbe uscire: x1=3 x2=1 x3=-2 x4=1

ma con il codice che ho scritto non esce questo risultato.

Top

Profilo Invia messaggio privato

cali1981
Site Admin


Registrato: 16/01/06 22:01
Messaggi: 836

MessaggioInviato: Ven Dic 04, 2009 2:44 pm    Oggetto:

Rispondi citando


Hai controllato bene i conti? Io non conosco il metodo quindi non posso aiutarti per le operazioni da fare...
_________________
Visita anche il sito Agriturismo Umbria per maggiori informazioni sull'Umbria!

Realizzazione siti web e applicazioni ASp.NEt, C/C++, C#

Top

Profilo Invia messaggio privato Invia e-mail

maris.p
Novizio


Registrato: 30/10/09 12:27
Messaggi: 9

MessaggioInviato: Ven Dic 04, 2009 6:10 pm    Oggetto:

Rispondi citando


ok cali, ti ringrazio cmq tantissimo.. ciao

Top

Profilo Invia messaggio privato

Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione: c#, c++, Java, HTML, PHP, Javascript... Tutti i fusi orari sono GMT
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi
Forum del sito TuttoMontefalco.it - Umbria - Italy topic RSS feed 


Torna al sito TuttoMontefalco.it


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it

SoftGreen 1.1 phpBB theme by DaTutorials.com
Copyright © DaTutorials 2005