Multiplication de deux matrices

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Multiplication de deux matrices

Re: Multiplication de deux matrices

par Sardinoux » 13 mars 2013, 16:31

D'accord et merci pour la déclaration, j'aurais jamais trouvé.

L'astuce d'utiliser le += c'est vraiment malin aussi!

Merci beaucoup :D

Re: Multiplication de deux matrices

par xTG » 13 mars 2013, 16:05

$tabRes[][]= array(0, 0); //initialisation du tableau resultat
Cela n'initialise pas ce que tu veux.
Là tu créés :
$tabRes[0][0] = array( 0=> 0, 1 => 0);
// équivalent à
$tabRes[0][0][0] = 0;
$tabRes[0][0][1] = 0;
L'initialisation doit se faire dans la seconde boucle.
function Multiplication($tab1, $tab2, $nbLignes1, $nbLignes2, $nbColonnes1, $nbColonnes2) {
    $tabRes = array();
    echo '<table>';
    for ($i = 0; $i < $nbLignes1; $i++) {
        $tabRes[$i] = array();
        echo '<tr>';
        for ($j = 0; $j < $nbColonnes2; $j++) {
            $tabRes[$i][$j] = 0;
            for ($k = 0; $k < $nbColonnes1; $k++) {
                $tabRes[$i][$j] += $tab1[$i][$k] * $tab2[$k][$j];
                echo '<td>' . $tabRes[$i][$j] . '</td>';
            }
        }
        echo '</tr>';
    }
    echo '</table>';
}
Et sinon le calcul est bon, c'est juste l'affichage qui lui montre les différents calculs et non la matrice finale.

Multiplication de deux matrices

par Sardinoux » 13 mars 2013, 15:40

Bonjour,

Dans le cadre d'un cours j'essaie de faire une multiplication de deux matrices, donc de deux tableaux mais avec les règles qui sont propres au produit matriciel

(1er ligne du 1er tableau * 1er colonne deuxième tableau, etc...).

J'ai donc ecrit une fonction qui est sensée le faire et qui bien-sur ne marche pas:
function Multiplication($tab1, $tab2, $nbLignes1, $nbLignes2, $nbColonnes1, $nbColonnes2) {
    $tabRes[][]= array(0, 0); //initialisation du tableau resultat
    for ($i = 0; $i < $nbLignes1; $i++) {
        echo '<tr>';
        for ($j = 0; $j < $nbColonnes2; $j++) {
            for ($k = 0; $k < $nbColonnes1; $k++) {
                $tabRes[$i][$j] = $tabRes[$i][$j] +($tab1[$i][$k] * $tab2[$k][$j]);
                echo "<td>{$tabRes[$i][$j]}</td>";
            }
        }
    }
}
Donc si quelqu'un ici pouvait me donner une piste pour me débloquer cela m'aiderai.

P.S.: Je ne sais pas si je peux écrire un tableau comme ça $tab[$i][$j] ou $i est la ligne et $j la colonne.