kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 23 oct. 2003 à 01:18
les tests, ca doit rester, ca peux pas se simplifier comme ca.
moi j'ai juste indique la permutation car c'est la qu'il y a une modif a faire, pas dans les tests...
l'avantage de ma technique se fais surtout sentir qd N deviens grand. pour des petits systemes d'equations, la difference est pas trop sensible pour nous.
par contre, tu peux me faire un petit resume sur la diagonalisation ? ainsi que sur ta methode de resolution ? Je connaissais pas cette methode de resolution. J'en ai une autre mais vu que je l'ai pas utilise depuis un certain temps, il faudrais que je me replonge dedans.
Dailleur, histoire de verifier mon resultat, peut tu me donner le resultat du system que tu as mis dans ton source ?
Ok, effectivement, ça accèlère la permutatiion de lignes !!
Il faut tout de même remarquer que les permutations ne sont pas systématiques, il se peut même qu'aucune permutation ne soit effectuée au cours de la résolution d'un système quelconque...
Mais c'est vrai que c'est une grosse erreur de ma part, merci pour ta rectification.
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 21 oct. 2003 à 00:26
gros bug de conception !!!!!!!
imagine une matrice 100*100, soit 10 000 valeurs
quand tu fais tes permutations de lignes, tu vas mettre un temps fou a tout commuter 1 par 1. apparemment tu fais des permuts par coonnes alors pourquoi ne pas faire
class matrice
{
private:
double *mat[N];
.....
ta permutation :
for(int l=0;l<N;l++)
{
temp=mat[i][l];
mat[i][l]=mat[k][l];
mat[k][l]=temp;
}
ca deviens :
double *temp;
temp=mat[i];
mat[i]=mat[k];
mat[k]=temp;
(si je me trompe pas)
comme ca, pas besoin de mettre une boucle et ca s'executera dans le meme temps quelque soit N...
et si tu veux economiser des variables (juste pour rire un peu)
mat[k]=(mat[k] ^ (mat[i] = mat[i] ^ (mat[k] = mat[k] ^ mat[i])))
23 oct. 2003 à 01:18
moi j'ai juste indique la permutation car c'est la qu'il y a une modif a faire, pas dans les tests...
l'avantage de ma technique se fais surtout sentir qd N deviens grand. pour des petits systemes d'equations, la difference est pas trop sensible pour nous.
par contre, tu peux me faire un petit resume sur la diagonalisation ? ainsi que sur ta methode de resolution ? Je connaissais pas cette methode de resolution. J'en ai une autre mais vu que je l'ai pas utilise depuis un certain temps, il faudrais que je me replonge dedans.
Dailleur, histoire de verifier mon resultat, peut tu me donner le resultat du system que tu as mis dans ton source ?
merci d'avance
21 oct. 2003 à 07:39
Il faut tout de même remarquer que les permutations ne sont pas systématiques, il se peut même qu'aucune permutation ne soit effectuée au cours de la résolution d'un système quelconque...
Mais c'est vrai que c'est une grosse erreur de ma part, merci pour ta rectification.
21 oct. 2003 à 00:26
imagine une matrice 100*100, soit 10 000 valeurs
quand tu fais tes permutations de lignes, tu vas mettre un temps fou a tout commuter 1 par 1. apparemment tu fais des permuts par coonnes alors pourquoi ne pas faire
class matrice
{
private:
double *mat[N];
.....
ta permutation :
for(int l=0;l<N;l++)
{
temp=mat[i][l];
mat[i][l]=mat[k][l];
mat[k][l]=temp;
}
ca deviens :
double *temp;
temp=mat[i];
mat[i]=mat[k];
mat[k]=temp;
(si je me trompe pas)
comme ca, pas besoin de mettre une boucle et ca s'executera dans le meme temps quelque soit N...
et si tu veux economiser des variables (juste pour rire un peu)
mat[k]=(mat[k] ^ (mat[i] = mat[i] ^ (mat[k] = mat[k] ^ mat[i])))
ca s'appelle la permutation par ou exclusif ...