Bonjour à tous,
Je suis actuellement en cursus physique, et j'essaie de progresser dans la partie Méthodes Numériques appliquées au C++ qui me posent pas mal de problèmes.
Est ce que parmis vous une ame charitables pourrais m'aider à y voir plus claire?
Je vous remercie infiniement tous par avance!!
J'ai mis mes fichier en PJ compressés en ZIP
Merci encore à tous
QUESTION 1
Je n'arrive pas à utiliser comme demandé le pointeur this* et à l'adapter à ce qui se trouve dans mon squelette de programme (voir SysLin.cpp)
J'ai trouvé ça pour m'aider mais je n'arrive pas à l'adapter à l'amorce qu'on me donne dans SysLin.cpp dans partie décomposition LU au tout début
http://www.sanfoundry.com/cpp-progra...on-any-matrix/
http://www.sci.utah.edu/~wallstedt/LU.htm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 // Crout uses unit diagonals for the upper triangle void Crout(int d,double*S,double*D){ for(int k=0;k<d;++k){ for(int i=k;i<d;++i){ double sum=0.; for(int p=0;p<k;++p)sum+=D[i*d+p]*D[p*d+k]; D[i*d+k]=S[i*d+k]-sum; // not dividing by diagonals } for(int j=k+1;j<d;++j){ double sum=0.; for(int p=0;p<k;++p)sum+=D[k*d+p]*D[p*d+j]; D[k*d+j]=(S[k*d+j]-sum)/D[k*d+k]; } } } void solveCrout(int d,double*LU,double*b,double*x){ double y[d]; for(int i=0;i<d;++i){ double sum=0.; for(int k=0;k<i;++k)sum+=LU[i*d+k]*y[k]; y[i]=(b[i]-sum)/LU[i*d+i]; } for(int i=d-1;i>=0;--i){ double sum=0.; for(int k=i+1;k<d;++k)sum+=LU[i*d+k]*x[k]; x[i]=(y[i]-sum); // not dividing by diagonals } }
QUESTION 2
J'ai répondu 2
QUESTION 3
D'après le fichier SysLin.h, on peut voir que c'est réponse 5
La matrice inversible hérite de la matrice carrée
Partager