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 produit scalaire sous PHP


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut calcul de produit scalaire sous PHP
    Bonjour à tous,

    Je suis en BTS informatique de gestion. J'ai un exercice : je dois écrire et faire fonctionner le calcul de produit scalaire ou la multiplication de matrice.

    Je possède le cour de mathématique, mais je n'arrive vraie ment pas à le mettre sous le langage PHP, pour ensuite en faire un petit programme qui puisse tourné.


    Merci par avance

    Cordialement

    Audrey

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, peux-tu nous indiquer le code que tu as déjà testé ? (j'espère que tu ne nous demandes pas de faire l'exercice à ta place )

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut

    Biensur que non, je ne souhaite pas que vous faisiez l'éxo à ma place, voici le début de 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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
     
    <head>
    <title>Produit de matrices</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <strong>
    Mulitiplication de deux matrices<br><br>
    </strong>
     
     
     <?php
     
     /*************************************************************************
     ************************      bibliotèque des fonctions        ********************
    **************************************************************************/
     
    function afficher_liste($nomvar,$n) {
    	$la_liste = "<select name=$nomvar>";
    	for ($i=1;$i<=$n;$i++) {
    		$la_liste .= "<option value=$i>$i</option>";
    	}
    	$la_liste .= "</select>";
    	echo $la_liste;
    }
     
    function fabrique_tableau($nom_tab,$nb_ligne,$nb_colonne) {
    	$le_tableau = "<table cellpadding='1' cellspacing='1'>";
    	for ($i=1;$i<=$nb_ligne;$i++) {
    		$le_tableau .= "<tr>";
    		for ($j=1;$j<=$nb_colonne;$j++) {
    			$le_tableau .= "<td><input name = ".$nom_tab.$i.$j." value='0' size='5'></td>";
    		}
    		$le_tableau .= "</tr>";
    	}
    	$le_tableau .= "</table>";
    	echo $le_tableau;
    }
     
    function somme($i,$j,$colonneA) {
    	$valeur = 0;
    	for ($k=1;$k<=$colonneA;$k++) {
    		$valeur += $_POST['A'.$i.$k]*$_POST['B'.$k.$j];
    	}
    	return $valeur;
    }
     
    /*************************************************************************
     **********              Saisie de la dimension des matrices           ******************
    **************************************************************************/
     
    $dim_maxi = 100;
    echo "<form action='index.php' method='post'>";
    echo "Matrice A : lignes ";
    afficher_liste("ligneA",$dim_maxi);
    echo "&nbsp;colonnes ";
    afficher_liste("colonneA",$dim_maxi);
    echo "<br>";
    echo "Matrice B : lignes ";
    afficher_liste("ligneB",$dim_maxi);
    echo "&nbsp;colonnes ";
    afficher_liste("colonneB",$dim_maxi);
    echo "<br>";
    echo "<input type='submit' value='Creer'></form>";
     
    /*************************************************************************
     **********              formulaire de remplissage des matrices           ***************
    **************************************************************************/
     
    if (!empty($_POST['ligneA']) && !empty($_POST['colonneA'])) {
    if (!empty($_POST['ligneB']) && !empty($_POST['colonneB'])) {
    	$ligneA = $_POST['ligneA'];
    	$colonneA = $_POST['colonneA'];
    	$ligneB = $_POST['ligneB'];
    	$colonneB = $_POST['colonneB'];
    	echo"<form action='index.php' method='post'>";
    	echo"********************************************************<br>";
    	echo"Matrice A : $ligneA Ligne(s) par $colonneA Colonne(s)<br>";
    	fabrique_tableau("A",$ligneA,$colonneA)."<br>";
    	echo"********************************************************<br>";
    	echo"Matrice B : $ligneB Ligne(s) par $colonneB Colonne(s)<br>";
    	fabrique_tableau("B",$ligneB,$colonneB);
    	echo"********************************************************<br>";
    	echo"<input type='hidden' name = 'calcul' value=1>";
    	echo"<input type='hidden' name = 'ligneA' value=".$ligneA.">";
    	echo"<input type='hidden' name = 'colonneA' value=".$colonneA.">";
    	echo"<input type='hidden' name = 'ligneB' value=".$ligneB.">";
    	echo"<input type='hidden' name = 'colonneB' value=".$colonneB.">";
    	echo"<input type='submit' value='Calculer'>";
    	echo"</form>";
    }
    }
     
    /*************************************************************************
     *******************              Multiplication des matrices           *****************
    **************************************************************************/
    if (!empty($_POST['calcul'])) {
    	$ligneA = $_POST['ligneA'];
    	$colonneA = $_POST['colonneA'];
    	$ligneB = $_POST['ligneB'];
    	$colonneB = $_POST['colonneB'];
    	if ($colonneA != $ligneB) {
    		echo "Les dimensions que vous avez saisies ne sont pas compatibles.<br>";
    		echo "Il faut que le nombre de colone(s) de A soit egal au nombre de lignes(s) de B.<br>";
    		echo "Et ici le nombre de colone(s) de A = $colonneA <> $ligneB = au nombre de lignes(s) de B.<br>";
    	} else {
     
    		echo "Le produit des 2 matrice donnent.<br>";
     
     
    		function somme($i,$j,$colonneA) {
    	$valeur = 0;
    	for ($k=1;$k<=$colonneA;$k++) {
    		$valeur += $_POST['A'.$i.$k]*$_POST['B'.$k.$j];
    	}
    	return $valeur;
    }
     
     
    	}
    }
    ?>
    </body>
    </html>

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut comment faire le calcul d'un produit scalaire sous PHP
    Est ce que quelqu'un peut m'aider pour faire un produit scalaire sous PHP,
    voici le début de 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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
     
    <head>
    <title>Produit de matrices</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <strong>
    Mulitiplication de deux matrices<br><br>
    </strong>
     
     
     <?php
     
     /*************************************************************************
     ************************      bibliotèque des fonctions        ********************
    **************************************************************************/
     
    function afficher_liste($nomvar,$n) {
    	$la_liste = "<select name=$nomvar>";
    	for ($i=1;$i<=$n;$i++) {
    		$la_liste .= "<option value=$i>$i</option>";
    	}
    	$la_liste .= "</select>";
    	echo $la_liste;
    }
     
    function fabrique_tableau($nom_tab,$nb_ligne,$nb_colonne) {
    	$le_tableau = "<table cellpadding='1' cellspacing='1'>";
    	for ($i=1;$i<=$nb_ligne;$i++) {
    		$le_tableau .= "<tr>";
    		for ($j=1;$j<=$nb_colonne;$j++) {
    			$le_tableau .= "<td><input name = ".$nom_tab.$i.$j." value='0' size='5'></td>";
    		}
    		$le_tableau .= "</tr>";
    	}
    	$le_tableau .= "</table>";
    	echo $le_tableau;
    }
     
    function somme($i,$j,$colonneA) {
    	$valeur = 0;
    	for ($k=1;$k<=$colonneA;$k++) {
    		$valeur += $_POST['A'.$i.$k]*$_POST['B'.$k.$j];
    	}
    	return $valeur;
    }
     
    /*************************************************************************
     **********              Saisie de la dimension des matrices           ******************
    **************************************************************************/
     
    $dim_maxi = 100;
    echo "<form action='index.php' method='post'>";
    echo "Matrice A : lignes ";
    afficher_liste("ligneA",$dim_maxi);
    echo "&nbsp;colonnes ";
    afficher_liste("colonneA",$dim_maxi);
    echo "<br>";
    echo "Matrice B : lignes ";
    afficher_liste("ligneB",$dim_maxi);
    echo "&nbsp;colonnes ";
    afficher_liste("colonneB",$dim_maxi);
    echo "<br>";
    echo "<input type='submit' value='Creer'></form>";
     
    /*************************************************************************
     **********              formulaire de remplissage des matrices           ***************
    **************************************************************************/
     
    if (!empty($_POST['ligneA']) && !empty($_POST['colonneA'])) {
    if (!empty($_POST['ligneB']) && !empty($_POST['colonneB'])) {
    	$ligneA = $_POST['ligneA'];
    	$colonneA = $_POST['colonneA'];
    	$ligneB = $_POST['ligneB'];
    	$colonneB = $_POST['colonneB'];
    	echo"<form action='index.php' method='post'>";
    	echo"********************************************************<br>";
    	echo"Matrice A : $ligneA Ligne(s) par $colonneA Colonne(s)<br>";
    	fabrique_tableau("A",$ligneA,$colonneA)."<br>";
    	echo"********************************************************<br>";
    	echo"Matrice B : $ligneB Ligne(s) par $colonneB Colonne(s)<br>";
    	fabrique_tableau("B",$ligneB,$colonneB);
    	echo"********************************************************<br>";
    	echo"<input type='hidden' name = 'calcul' value=1>";
    	echo"<input type='hidden' name = 'ligneA' value=".$ligneA.">";
    	echo"<input type='hidden' name = 'colonneA' value=".$colonneA.">";
    	echo"<input type='hidden' name = 'ligneB' value=".$ligneB.">";
    	echo"<input type='hidden' name = 'colonneB' value=".$colonneB.">";
    	echo"<input type='submit' value='Calculer'>";
    	echo"</form>";
    }
    }
     
    /*************************************************************************
     *******************              Multiplication des matrices           *****************
    **************************************************************************/
    if (!empty($_POST['calcul'])) {
    	$ligneA = $_POST['ligneA'];
    	$colonneA = $_POST['colonneA'];
    	$ligneB = $_POST['ligneB'];
    	$colonneB = $_POST['colonneB'];
    	if ($colonneA != $ligneB) {
    		echo "Les dimensions que vous avez saisies ne sont pas compatibles.<br>";
    		echo "Il faut que le nombre de colone(s) de A soit egal au nombre de lignes(s) de B.<br>";
    		echo "Et ici le nombre de colone(s) de A = $colonneA <> $ligneB = au nombre de lignes(s) de B.<br>";
    	} else {
     
    		echo "Le produit des 2 matrice donnent.<br>";
     
     
    		function somme($i,$j,$colonneA) {
    	$valeur = 0;
    	for ($k=1;$k<=$colonneA;$k++) {
    		$valeur += $_POST['A'.$i.$k]*$_POST['B'.$k.$j];
    	}
    	return $valeur;
    }
     
     
    	}
    }
    ?>
    </body>
    </html>

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Si tu nous disais ce qui cloche, on pourrait peut-être faire quelque chose pour toi
    Message d'erreur ?

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    bon effectivement, il faisait la multiplication même si c'était pas possible.

    Donc voici le code modifier qui vérifie si effectivement le nombre de colonnes de A est équivalant au nombre de lignes de B

    Code php : 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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
     
    <head>
    <title>Produit de matrices</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <strong>
    Mulitiplication de deux matrices<br><br>
    </strong>
     
     
     <?php
     
     /*************************************************************************
     ************************      bibliotèque des fonctions        ********************
    **************************************************************************/
     
    function afficher_liste($nomvar,$n) {
    	$la_liste = "<select name=$nomvar>";
    	for ($i=1;$i<=$n;$i++) {
    		$la_liste .= "<option value=$i>$i</option>";
    	}
    	$la_liste .= "</select>";
    	echo $la_liste;
    }
     
    function fabrique_tableau($nom_tab,$nb_ligne,$nb_colonne) {
    	$le_tableau = "<table cellpadding='1' cellspacing='1'>";
    	for ($i=1;$i<=$nb_ligne;$i++) {
    		$le_tableau .= "<tr>";
    		for ($j=1;$j<=$nb_colonne;$j++) {
    			$le_tableau .= "<td><input name = ".$nom_tab.$i.$j." value='0' size='5'></td>";
    		}
    		$le_tableau .= "</tr>";
    	}
    	$le_tableau .= "</table>";
    	echo $le_tableau;
    }
     
    function somme($i,$j,$colonneA) {
    	$valeur = 0;
    	for ($k=1;$k<=$colonneA;$k++) {
    		$valeur += $_POST['A'.$i.$k]*$_POST['B'.$k.$j];
    	}
    	return $valeur;
    }
     
    /*************************************************************************
     **********              Saisie de la dimension des matrices           ******************
    **************************************************************************/
    if( !isset($error) )
    	$error = 0; 
    $dim_maxi = 100;
    echo "<form action='index.php' method='post'>";
    echo"<input type='hidden' name = 'calcul' value='1'>";
    echo "Matrice A : lignes ";
    afficher_liste("ligneA",$dim_maxi);
    echo "&nbsp;colonnes ";
    afficher_liste("colonneA",$dim_maxi);
    echo "<br>";
    echo "Matrice B : lignes ";
    afficher_liste("ligneB",$dim_maxi);
    echo "&nbsp;colonnes ";
    afficher_liste("colonneB",$dim_maxi);
    echo "<br>";
    echo "<input type='submit' value='Creer'></form>";
     
    /*************************************************************************
     **********              formulaire de remplissage des matrices           ***************
    **************************************************************************/
     
    if ( !empty($_POST['ligneA']) && !empty($_POST['colonneA']) && !empty($_POST['ligneB']) && !empty($_POST['colonneB']) && $error = 0 ) {
    	$ligneA = $_POST['ligneA'];
    	$colonneA = $_POST['colonneA'];
    	$ligneB = $_POST['ligneB'];
    	$colonneB = $_POST['colonneB'];
    	echo"<form action='index.php' method='post'>";
    	echo"********************************************************<br>";
    	echo"Matrice A : $ligneA Ligne(s) par $colonneA Colonne(s)<br>";
    	fabrique_tableau("A",$ligneA,$colonneA)."<br>";
    	echo"********************************************************<br>";
    	echo"Matrice B : $ligneB Ligne(s) par $colonneB Colonne(s)<br>";
    	fabrique_tableau("B",$ligneB,$colonneB);
    	echo"********************************************************<br>";
    	echo"<input type='hidden' name = 'calcul' value='1'>";
    	echo"<input type='hidden' name = 'ligneA' value=".$ligneA.">";
    	echo"<input type='hidden' name = 'colonneA' value=".$colonneA.">";
    	echo"<input type='hidden' name = 'ligneB' value=".$ligneB.">";
    	echo"<input type='hidden' name = 'colonneB' value=".$colonneB.">";
    	echo"<input type='submit' value='Calculer'>";
    	echo"</form>";
    }
     
    /*************************************************************************
     *******************              Multiplication des matrices           *****************
    **************************************************************************/
    if (!empty($_POST['calcul'])) {
    	$ligneA = $_POST['ligneA'];
    	$colonneA = $_POST['colonneA'];
    	$ligneB = $_POST['ligneB'];
    	$colonneB = $_POST['colonneB'];
    	if ($colonneA != $ligneB) {
    		$error = 1;
    		echo "Les dimensions que vous avez saisies ne sont pas compatibles.<br>";
    		echo "Il faut que le nombre de colone(s) de A soit egal au nombre de lignes(s) de B.<br>";
    		echo "Et ici le nombre de colone(s) de A = $colonneA <> $ligneB = au nombre de lignes(s) de B.<br>";
    	} else {
     
    		echo "Le produit des 2 matrice donnent.<br>";
     
     
    		function somme($i,$j,$colonneA) {
    	$valeur = 0;
    	for ($k=1;$k<=$colonneA;$k++) {
    		$valeur += $_POST['A'.$i.$k]*$_POST['B'.$k.$j];
    	}
    	return $valeur;
    }
     
     
    	}
    }
    ?>
    </body>
    </html>

    Après par contre il y a un problème car au lieu d'utiliser la fonction somme() tu la redéclares. Tu obtiens donc un message d'erreur !

    De plus, pour parcourir une matrice à 2 dimensions, il te faut 2 boucles ! (for() en général car plus pratique )

    Je te laisse y regarder, si tu n'y arrives pas, reviens poster un message

Discussions similaires

  1. produit scalaire sous vba sommeprod
    Par erlerwade dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/08/2011, 17h24
  2. problème de calcul sous php
    Par melatonin dans le forum Langage
    Réponses: 1
    Dernier message: 28/04/2010, 20h26
  3. [PostgreSQL] Calculs sous PHP ou dans fonctions PostgreSQL
    Par ilalaina dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/09/2008, 09h20
  4. comment calculer le produit de deux nombres en PHP
    Par batalich dans le forum Langage
    Réponses: 3
    Dernier message: 12/03/2007, 10h02

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