Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

HELP. Turbo Pascal : Matrice.

Par Kalero|Sysla le 14/1/2003 à 19:46:20 (#3021195)

J'ai un petit probleme en turbo Pascal (programme que j'utilise a l'école en derniere année de secondaire) pour calculer le determinant d'une Matrice carrée.

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)

soit M une matrice
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)

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

Par Arkanne le 14/1/2003 à 19:56:49 (#3021296)

j'y connais rien en programmation, mais t'as demande sur usenet ?

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)

De toute façon ça m'etonnerait qu'il cherche la resolution mathematique, ça se trouve dans n'importe quel bouquin et sûrement sur le net.

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)

[edit a dit une connerie avait lu multi de matrice sorry]

Par Zdravo, le le 14/1/2003 à 20:59:24 (#3021905)

idem... j'ai du déjà le faire....
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)

ARGH à l'aide des Maths !! :monstre:

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)

Solution pour ecrire le programme qui realise ton algo recursif : tu sais calculer le determinant d'une matrice 2x2 (formule donnée dans le 2e post). Donc ca sera ton cas de base (j'ecris en pseudo C je ne sais plus faire de pascal depuis belle lurette) :


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)

Merci Beaucoup...

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)

Juste un truc, si tu es sur que ta matrice est carrée, Mothra a parfaitement raison, il y a nettement plus simple, ne fut ce que par sarrus (plus facile à programmer :))

Par Karsus le 14/1/2003 à 22:19:10 (#3022592)

bon j'ai dans mon cours de licence info un algo.... qui utilise la methode de Gauss pour determiner le determinant :) ( par contre, je sais pas comment marche cette fameuse methode de gauss, j'ai pas fais de maths en premier cycle :D , mais y a de la triangularisation dedans )

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)

ma prepa est un peu trop loin, mais enfin on en revient tjs a la meme methode pour calculer les determinants (dvp suivant les lignes et les colonnes) sachant que les manipulations sur les lignes ou colonnes change rien au resultat (le signe change slmt en cas de permutation de lignes ou colonnes).
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