IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Calcul de matrice en PHP


Sujet :

Langage PHP

  1. #1
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut Calcul de matrice en PHP
    Bonjour,
    J'ai besoin de faire un algorithme pour calculer la matrice inverse et le produit d'une matrice. Pour le moment je me suis restreint à une matrice de 2 lignes et 2 colonnes (je sais que la formule est différente pour celle de plus de 3 lignes, mais ça je verrai après !).
    Je tiens à préciser que mon code est fonctionnel (pour avoir eu le même résultat dans Excel), mais ce que j'aimerais, c'est de voir si c'est possible de l'optimiser ??

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
    $matrice = array(array());
    $matrice[0][0] = '1';
    $matrice[0][1] = '3';
    $matrice[1][0] = '2';
    $matrice[1][1] = '7';
     
    //Matrice identitaire
    $matrice[0][2] = '1';
    $matrice[0][3] = '0';
    $matrice[1][2] = '0';
    $matrice[1][3] = '1';
     
    echo "Matrice de départ (+ ajout d'une matrice identitaire):\r\n";
    echo implode(" ", $matrice[0]);
    echo "\r\n";
    echo implode(" ", $matrice[1]);
    echo "\r\n\r\nPremière itération:\r\n";
     
    $matrice2 = array(array());
    for ($i = 0; $i < 4; $i++) {
        $matrice2[0][$i] = $matrice[0][$i];
        $matrice2[1][$i] = $matrice[1][$i] - ($matrice[1][0] * $matrice[0][$i]); 
    }
     
    echo implode(" ", $matrice2[0]);
    echo "\r\n";
    echo implode(" ", $matrice2[1]);
    echo "\r\n\r\nDeuxième itération:\r\n";
     
    $matrice3 = array(array());
    for ($i = 0; $i < 4; $i++) {
        $matrice3[0][$i] = $matrice2[0][$i] - ($matrice2[0][1] * $matrice2[1][$i]);
        $matrice3[1][$i] = $matrice2[1][$i];
    }
     
    echo implode(" ", $matrice3[0]);
    echo "\r\n";
    echo implode(" ", $matrice3[1]);
    echo "\r\n\r\nRésultat final de la matrice inverse:\r\n";
    for ($i = 0; $i < 2; $i++) echo $matrice3[$i][2]." ".$matrice3[$i][3]."\r\n";
     
    echo "\r\nProduit des 2 matrices (matrice inverse * matrice de départ):\r\n";
    echo $matrice3[0][2]." ".$matrice3[0][3]."\t*\t".$matrice[0][0]." ".$matrice[0][1];
    echo "\r\n";
    echo $matrice3[1][2]." ".$matrice3[1][3]."\t*\t".$matrice[1][0]." ".$matrice[1][1];
    echo "\r\n";
     
    $produit = array(array());
    $produit[0][0] = ($matrice3[0][2] * $matrice[0][0]) + ($matrice3[0][3] * $matrice[1][0]);
    $produit[0][1] = ($matrice3[0][2] * $matrice[0][1]) + ($matrice3[0][3] * $matrice[1][1]);
    $produit[1][0] = ($matrice3[1][2] * $matrice[0][0]) + ($matrice3[1][3] * $matrice[1][0]);
    $produit[1][1] = ($matrice3[1][2] * $matrice[0][1]) + ($matrice3[1][3] * $matrice[1][1]);
     
    echo "\r\nRésultat:\r\n";
    for ($i = 0; $i < 2; $i++) echo $produit[$i][0]." ".$produit[$i][1]."\r\n";
    ?>
    Pour info, voici le retour de mon résultat:
    Matrice de départ (+ ajout d'une matrice identitaire):
    1 3 1 0
    2 7 0 1

    Première itération:
    1 3 1 0
    0 1 -2 1

    Deuxième itération:
    1 0 7 -3
    0 1 -2 1

    Résultat final de la matrice inverse:
    7 -3
    -2 1

    Produit des 2 matrices (matrice inverse * matrice de départ):
    7 -3 * 1 3
    -2 1 * 2 7

    Résultat:
    1 0
    0 1
    Pour tester directement mon code, j'ai utilisé le site suivant: http://codepad.org/amBlzD6j
    Je sais que la librairie de PHP Lapack le permet, mais il faudrait que je l'installe sur le serveur (ce dont je ne préfère pas), c'est pourquoi je refais l'algorithme manuellement.
    http://www.php.net/manual/fr/class.lapack.php

    Merci
    Pensez à mettre comme si c'est le cas !

  2. #2
    Membre éprouvé Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Points : 1 174
    Points
    1 174
    Par défaut
    Le code me parait pas mal optimisé, pour qu'il soit plus simple de fonctionnement tu devrais en faire une class avec pour chaque type de matrice ça method.
    Agence web Dim'Solution, créateur de solutions numériques
    Sites internet, ecommerce, logiciels, applications mobiles, référencement (SEO), plugin Prestashop, Magento, WordPress, Joomla!...

    Cours de trading gratuit | Envoyer des sms gratuitement | Envoyer des fax gratuitement | Plateforme de Fax à l'international

  3. #3
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut
    Merci "Shuty",

    Je pensais effectivement mettre mon code dans des fonctions/méthodes pour simplier, mais je voulais d'abord le tester comme ça.

    Sincèrement moi non plus, je ne vois pas comment je pourrai l'optimisé plus ! J'attendais simplement les retours de personnes qui ont peut-être eu recours à faire des calculs de matrices en PHP.

    Mis à part, la librairie pré-cités ci-dessous "Lapack", je ne vois pas comment je pourrai faire d'autres !!!

    J'attends, sait-on jamais que d'autres personnes ont d'autres idées... :-)
    Pensez à mettre comme si c'est le cas !

  4. #4
    Membre éprouvé Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Points : 1 174
    Points
    1 174
    Par défaut
    N'oubli pas que pour un soucis de propreté et d'évolution, que tes méthodes ne doivent jamais retournée de echo et ce sera parfait.
    Agence web Dim'Solution, créateur de solutions numériques
    Sites internet, ecommerce, logiciels, applications mobiles, référencement (SEO), plugin Prestashop, Magento, WordPress, Joomla!...

    Cours de trading gratuit | Envoyer des sms gratuitement | Envoyer des fax gratuitement | Plateforme de Fax à l'international

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calculer une matrice avec la méthode de EULER
    Par lematlabeur dans le forum MATLAB
    Réponses: 7
    Dernier message: 05/11/2007, 18h22
  2. [PHP-JS] Calculs dans une page php à l'aide javascript
    Par GClavet dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 31/10/2006, 09h10
  3. [PHP-JS] calculs mathématiques avancés en php
    Par jejerome dans le forum Langage
    Réponses: 8
    Dernier message: 12/07/2006, 13h05
  4. Moteur 2D: Pb de calcul de Matrice de transformation
    Par themadmax dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 29/06/2006, 11h22
  5. calcul de matrice
    Par harsh dans le forum OpenGL
    Réponses: 1
    Dernier message: 08/03/2005, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo