Archives des forums MMO/MMORPG > Forums divers > La Taverne > HELP. Turbo Pascal : Matrice.
HELP. Turbo Pascal : Matrice.
Par Kalero|Sysla le 14/1/2003 à 19:46:20 (#3021195)
J'ai bcp chercher sur le net, rien trouver pour m'aider, j'ai essayer de transformer un programme en Basic et en C mais impossible trop de fonction qui existent ou existent pas.
Bref je suis vraiment bloquer. Surtout que je dois pouvoir généraliser le probleme pour des Matrices de toute les tailles.
Quelqu'un peut m'aider un peu ?
Je sais que j'ai peu de chance d'avoir une réponse vu que surement peu d'entre vous ont utilisé TP7 (au passé parce que c'est largement dépassé) et dans ceux qui savent le faire surement que peu d'entre eux savent comment faire un déterminant de Matrice carrée (même a la main)
Enfin... j'aurai tout essayer en demandant ici.
Merci a ceux qui pourront m'aider.
Par Grim le 14/1/2003 à 19:54:00 (#3021265)
a b
c d
le déterminant vaut ad - bc (ai pas tout oublier des cours de maths :D)
Plus sérieusement, j'avoue que si ta matrice est carrée, c'est loin d'être insurmontable comme problème :confus:
Edit :
Comme je me rends compte que m'a réponse est plus une réaction à ta provoc sur les déterminants, j'édite :
Dit nous où tu bloques, je doutes que tu trouves qqn qui le fasse à ta place, et mon TP est trop rouillé :rolleyes:
Par Zdravo, le le 14/1/2003 à 19:56:49 (#3021295)
je sais bcp plus facil à dire qu'à faire :rasta:
Mais si tu trouves en Math... tu trouvera l'algorythme...et donc.... la traduction en Pascal :D
Par Arkanne le 14/1/2003 à 19:56:49 (#3021296)
fr.comp.pascal
Par Grim le 14/1/2003 à 20:01:58 (#3021347)
Provient du message de Zdravo, le
essaie d'abord de régler ce probleme de façon mathématique... :p
je sais bcp plus facil à dire qu'à faire :rasta:
ben non, c'est assez simple en math, c'est une différence de somme (long à expliquer et c'est pas le sujet :))
Par Arkanne le 14/1/2003 à 20:13:52 (#3021447)
Par Kalero|Sysla le 14/1/2003 à 20:31:55 (#3021612)
Provient du message de Zdravo, le
essaie d'abord de régler ce probleme de façon mathématique... :p
je sais bcp plus facil à dire qu'à faire :rasta:
Mais si tu trouves en Math... tu trouvera l'algorythme...et donc.... la traduction en Pascal :D
Mdr je sais très bien comment le faire de facon mathématique... et même de facon mathématique qu'il faut utilisé dans le programme pour faire simple (que le prof y dit lol)
Alors soit A(matrice) =
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 3 4 5
Une matrice 5*5 c'est 5 matrice 4*4 multiplié par le chiffre correspondant de la ligne du dessus avec une multiplication par -1 lorsque celle ci sont en possition impaire. (lol je sens que deja plus personne me suit)
Donc (premiere possition)
A1 =
3 4 5 1
4 5 1 2
5 1 2 3
1 2 3 4 * 1 (possition 1.1)
Mais une matrice 4*4 c'est 4 matrice 3*3... et ainsi de suite...
Donc tout ca pour dire que je sais comment l'utiliser dans ma tête.
Le probleme c'est que le programmer c'est autre chose (le plus simple étant de maniere récursive)
lol... bon sinon tant pis hein ;)
Par Avygael le 14/1/2003 à 20:56:40 (#3021873)
Par Zdravo, le le 14/1/2003 à 20:59:24 (#3021905)
donc je dois avoir l'algo quelques parts :monstre: .. mais pas la traduc en pascal :p :p
Re: HELP. Turbo Pascal : Matrice.
Par Mothra le 14/1/2003 à 21:04:40 (#3021946)
Provient du message de Kalero|Sysla
Je sais que j'ai peu de chance d'avoir une réponse vu que surement peu d'entre vous ont utilisé TP7 (au passé parce que c'est largement dépassé) et dans ceux qui savent le faire surement que peu d'entre eux savent comment faire un déterminant de Matrice carrée (même a la main)
LOL, t'es sur un forum jeux online, autrement dit tu t'adresse a une population de 15 25 ans qui s'interessent de pres ou de loin a l'informatique, a vue de nez tu vas donc avoir au bas mots 20 25% de mecs qui sont en fac de maths/info dans l'assistance, et ils font quoi en fac de maths/info les etudiants ? Du turbo pascal et des maths basiques ;)
Cela dit je ne sais plus t'aider, mon TP remonte a plusieurs années, tout comme mes calculs de determinant. Tu aurais utilisé un autre ton j'aurais peut-etre essayé de refouiner pour retrouver mais la je n'ais pas envie :mdr:
En passant ton algorithme a une complexité catastrophique et tu ne pourras pas resoudre de matrices de grande taille avec ton programme. Il existe un autre algorithme de calcul de determinant beaucoup plus efficace en complexité polynomiale.
Par Mongole à batteries le 14/1/2003 à 21:18:40 (#3022063)
Provient du message de Kalero|Sysla
Le probleme c'est que le programmer c'est autre chose (le plus simple étant de maniere récursive)
ARF! de la recursivité en Pascal ca doit etre assez ....enfin je me comprends! :(
Deja que mes Travaux Pratique de C++ pour la recursivité...outch!
Meme si mon nom est Pascal (sisi), je peux pas t'aider... :(
Par Manaloup le 14/1/2003 à 21:22:02 (#3022093)
Manaloup, 5/20 en Maths :rasta:
*va essayer de pas flooder qd même et aider*
*arf y arrive po :sanglote: *
C'est quoi le déterminant d'une matrice :confus: :confus:
Par Mothra le 14/1/2003 à 21:41:04 (#3022286)
fonction det(A)
{
si hauteur_matrice(A) = 2 et largeur_matrice(A) = 2 alors
retourner A[1,1]*A[1,2]-A[2,1]*A[2,2]
sinon
calculer tous les det(Aij) comme ca :
(1 - 2 (i modulo 2)) * A[i,j]*det(submat(A,i,j)) ou submat extrait une matrice de dimension n-1 n-1 en retirant une ligne et une colone. Me souviens plus du reste de la formule.
fsi
}
Par Kalero|Sysla le 14/1/2003 à 21:51:24 (#3022377)
J'ai compris plus ou moins ton algorithme... et j'vais essayer de l'adapter et de le généralisé... enfin j'ai encore un mois pour finir ce programme
(Et dire que sur les 10 truc a faire c'est seulement le déterminant qui me bloque... :( )
Par Grim le 14/1/2003 à 22:01:48 (#3022464)
Par Karsus le 14/1/2003 à 22:19:10 (#3022592)
c'est en complexite O(M^3)
function DeterminantGauss( ref : A : matrice, val N : entier ) // N = taille de ta matrice carree
{
int i, j, k, det, Q;
Q = 1;
for( i = 1 ; i <= N - 1 ; i++ ){
for( j = i + 1 ; j <= N ; j++ ){
A[i,j] = 0;
for( k = i + 1 ; k <= N ; k++ ){
A[j,k] = A[j,k] * A[i,j] - A[i,k] * A[j,i];
Q = Q * A[j,i];
}
}
}
det = 1;
for( i = 1 ; i <= N ; i++ ){
det = det * A[i,i];
}
return ( det / Q ) ;
}
Par Forrest le 15/1/2003 à 10:11:40 (#3025331)
je te conseille fortement d'aller ici :
http://www.les-mathematiques.net/
dans la section forum pose ta question en etant poli. c'est un repaire de thesard, profs et taupins. meme s'ils ne te filent pas le code ils te diront quel est le meilleur algo a employer.
de tte facon des qu'on fait du calcul matriciel c'est lourd et bourrin :/
je tiens quand meme a rappeller qu'un determinant c'est uniquement pour une matrice carree hein...
JOL Archives 1.0.1
@ JOL / JeuxOnLine