CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] Multiplication de matrice

Gremy39
Gremy39
Niveau 7
02 décembre 2011 à 17:51:17

Bonjour j'ai un petit problème, je me souviens plus de l'algo pour faire une multiplication de 2 matrices.
Je sais que ca se fait avec 3boucles imbriquées, mais je sais plus quoi mettre dedans.
Je fais :
(Dsl les indentations marchent pas)

for(int i=0; i<Lig; i++) //Parcours des lignes
{
for(int j=0; j<Col; j++) //Parcours des colonnes
{
...
}
}

Je parcours les lignes et les colonnes mais je sais plus comment traduire les opérations à faire dans le langage C++.

Pour info, une multiplication de matrice ce fait de la facon suivante : pour une matrice A[2][2] et B[2][2], pour faire A*B=C, il faut multiplier A[0][0] avec B[0][0], puis multiplier A[0][1] avec B[1][0], et additionné les résultats trouvés, ce qui nous donnera le chiffre à mettre dans la matrice résultat C[0][0].
Ensuite on fait A[0][0] * B[0][1], et A[0][1] * B[1][1], on additionne les résultats trouvés ce qui nous donne le chiffre à mettre dans C[0][1], etc etc
Exemple :

1 2
3 4

*

5 6
7 8
=
19 22
43 50

godrik
godrik
Niveau 30
02 décembre 2011 à 18:02:31

demande a wikipedia la definition d'un produit de matrice.

Gremy39
Gremy39
Niveau 7
02 décembre 2011 à 18:03:53

Je l'ai, je sais très bien comment on fait. (J'ai surement un peu de mal à l'expliquer ^^')
C'est juste que j'arrive pas à le traduire en programme.

MaarGan
MaarGan
Niveau 7
02 décembre 2011 à 18:08:01

Il faut que tu fasse une boucle de for comme tu l'as mis dans l'exemple, et à l'intérieur tu insère la définition d'un produit de matrice.

Ce sera un truc du style

C[i][j]=A[i][i]*B[i][j] + etc... (là j'ai mis un truc au bol).

Tu fais ca pour les matrices 2*2 uniquement, ou tu veux faire pour toutes matrices? et uniquement pour matrices carrées?

Gremy39
Gremy39
Niveau 7
02 décembre 2011 à 18:15:45

Pour toute sorte de matrice. Avant les boucles j'ai fait le test "if" pour faire le calcul uniquement si le nombre de colonne et égale au nombre de ligne. Il me manque que le calcule enfaite.
Mais je crois qu'il me faut une variable aussi, dans laquelle je dois mettre la somme des multiplications.

godrik
godrik
Niveau 30
02 décembre 2011 à 18:19:10

C'est quoi la definition d'un produit de matrice?

C=A*B

c[i][j]= A[i] . Transpose(B)[j] ; (ou l'inverse en fonction de si tu utilise la convention row major ou column major)

MaarGan
MaarGan
Niveau 7
02 décembre 2011 à 18:19:23

T'arriverais à poster le résultat général pour calculer l'élément C[i][j] issu de la multiplication de deux matrices A et B?

Gremy39
Gremy39
Niveau 7
02 décembre 2011 à 18:25:34

http://fr.wikipedia.org/wiki/Matrice_%28math%C3%A9matiques%29#Addition_et_multiplication_par_un_scalaire
Il y a un dessin qui représente bien ce qu'il faut faire
(Dsl c'est dur d'expliquer ca sur un forum)

MaarGan
MaarGan
Niveau 7
02 décembre 2011 à 18:30:59

Non mais je sais aussi ce qu'il faut faire pour multiplier 2 matrices. En revanche je connais pas le résultat général pour tout élément i;j

godrik
godrik
Niveau 30
02 décembre 2011 à 18:31:23

Gremy39, on sait bien ce qu'il faut faire nous :). Est ce qeu tu peux ecrire le code qui fait ce que le dessin suggere?

Gremy39
Gremy39
Niveau 7
02 décembre 2011 à 18:35:48

binh c'est justement ce que je cherche ^^
mais je pense avoir trouvé
http://www.cppfrance.com/forum/sujet-MULTIPLICATION-MATRICES_934005.aspx

godrik
godrik
Niveau 30
02 décembre 2011 à 18:38:49

Arretes d'utiliser google et utilise ton cerveau! Si tu demandes a google et sur des forums des que tu as un probleme et que tu cherches a copier/coller des codes trouve sur le net, tu n'apprendras jamais rien.

Gremy39
Gremy39
Niveau 7
02 décembre 2011 à 18:43:08

Non mais j'ai cherché avant, c'est juste un petit truc qui me manque et qui m'énerve. Je te rassure je fais pas de copier coller. Je verrai en cours au pire, mais je voulais le faire pour le week end. Tant pis. Merci quand meme

godrik
godrik
Niveau 30
02 décembre 2011 à 18:46:24

ah, ok tu as un cerveau qui ne marche pas... Parceque trouver un algo pour faire un produit de matrices a partir de l'image sur wikipedia, c'est un niveau de premiere annee.

Gremy39
Gremy39
Niveau 7
02 décembre 2011 à 19:01:29

Je suis en première année, tout a fait. Et j'ai un peu de mal, c'est pour ca que je demande de l'aide sur ce forum, mais je trouve qu'une personne pédante apparemment...
Pourquoi tu me demande si tu le connais l'algo? Moi c'est ce que je cherche, et je coince sur cette connerie.
Je sais pas comment faire ma 3ieme boucle.

Gremy39
Gremy39
Niveau 7
02 décembre 2011 à 19:06:56

Je débute la programmation, on est pas tous des ingénieurs, il y a un début a tout. Bref, merci quand meme d'avoir pris le temps de me répondre.

godrik
godrik
Niveau 30
02 décembre 2011 à 19:11:36

Comment tu calcules c[i][j]? En faisant le produit scalaire du vecteur A[i][.] par le vecteur B[.][j] (attention au indices en fonction de si tu es row major ou column major). C'est exactement ce que suggere le dessin sur wikipedia. Ecris juste ca.

Gremy39
Gremy39
Niveau 7
02 décembre 2011 à 19:15:16

je sais pas ce que c'est row major et column major. Tu veux dire en fonction si je parcours les lignes ou les colonnes en premier?
J'essaierai des trucs lundi.

godrik
godrik
Niveau 30
02 décembre 2011 à 19:17:33

quand tu parles de A[i][j], si i designe les colonnes, c'est column major. Si ca designe les lignes c'est row major. Les francais et les anglais n'utilisent pas toujours les memes notations. Donc il faut faire attention.

Gremy39
Gremy39
Niveau 7
02 décembre 2011 à 19:21:26

ah ok, j'ai pris l'habitude de désigner i pour les lignes et j pour les colonnes quand je dis A[i][j]. Row major donc.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment