La micro du net




RSS | Recherche

Fonction pour résoudre une équation du second degré - Tutoriels

Fonction pour résoudre une équation du second degré

Par -=$!m0n=-, le 14/09/2008 | 0 commentaires
Catégorie : Site Web
Sous catégorie : PHP


Introduction

Bonjour à tous, dans ce tutoriel nous allons créer une fonction pour résoudre des équations du second degré. Je pense que si vous êtes en 1ère (S), ce tutoriel vous plaira beaucoup. Mais il faut avoir au moins quelques bases en PHP pour comprendre ce tutoriel.
Accrochez vous, c'est parti !
Cliquez ici pour tester le script.


Pour commencer, je vais vous faire un petit rappel pour résoudre une équation du second degré.
Une équation du second degré est du type : ax²+bx+c=0. Pour résoudre cette équation, il faut d'abord calculer le discriminant (delta) grâce à cette formule : b²-4*a*c. Une fois que delta est calculé, 3 cas différents peuvent apparaitrent :

1er cas :
Delta est supérieur à 0 (>0). Dans ce cas, il faut trouver 2 solutions x1 et x2.

Pour calculer x1, on utilise la formule : (-b-racine(delta))/2*a
Pour calculer x2, on utilise la formule : (-b+racine(delta))/2*a

2ème cas : Delta est égal à 0 (=0). Il faut trouver une solution que l'on calculera avec cette formule : -b/2*a

3ème cas : Delta est négatif (<0). Dans ce cas, il n'y a aucune solutions ! C'est donc le cas le plus facile.

Après ces petits rappels, attaquons nous au plus important : le code source.

On va commencer par créer une fonction grâce à function. Cette fonction prendra 3 paramètres : a, b et c.

Mais qu'est ce que valent "a, b et c" ?

Petit exemple pour comprendre. Prenons une équation du second degré : -15x²+5x-2=0.

Ici a vaut -15, b vaut 5 et c vaut -2.

Créons notre fonction :

Langage : PHP
  1. function equation_deux_inconnues($a, $b, $c)
  2. {


Ici, on crée donc la fonction equation_deux_inconnues qui prend trois paramètres a, b et c.

Continuons :

Langage : PHP
  1. $delta = $b*$b-4*$a*$c;


On calcule simplement delta avec la formule vue précédemment : b²-4*a*c.
Après ceci, on avait vu que trois cas s'offraient à nous, soit delta est positif, soit il est nul (=0), soit il est négatif.

On va donc commencer en supposant que delta est positif :

Langage : PHP
  1. if ($delta > 0)
  2. {
  3. $racine_delta = sqrt($delta);
  4. $a2 = 2*$a;
  5. $resultat_x1 = (-$b-$racine_delta)/($a2);
  6. echo 'Delta vaut ' .$delta. ', donc x<sub>1</sub> vaut ' .$resultat_x1.'';
  7. $resultat_x2 = (-$b+$racine_delta)/($a2);
  8. echo ' et x<sub>2</sub> vaut ' .$resultat_x2. '';
  9. echo '<br />';
  10. }

Commentons ce code :
1ère ligne : C'est une condition signifiant Si delta est supérieur à 0.
2ème ligne : On ouvre simplement une accolade.
3ème ligne : On calcule la racine carré de delta avec sqrt. Si vous vous souvenez bien, nous avons besoin de la racine carré pour calculer x1 et x2.
4ème ligne : On calcule le dénominateur de x1 et x2, qui est, si vous vous souvenez des formules : 2*a.
5ème ligne : On calcule x1 grâce à la formule vu plus haut.
6ème ligne : On affiche le résultat, echo sert à afficher quelque chose sur l'écran du visiteur. Ici le visiteur verra Delta vaut (quelque chose) donc x1 vaut (quelque chose). Vous voyez aussi <sub></sub>, ceci permet d'afficher le "1" un petit peut en dessous du x.
7ème ligne : On calcule le 2ème résultat x2.
8ème ligne : Comme tout à l'heure, on affiche le résultat.
9ème ligne : On crée un retour à la ligne.
10ème ligne : On ferme l'accolade.

Voila ! Si je peut vous rassurer, le plus dur est passé lol

Passons maintenant au second cas, si delta est égal à 0 :
Langage : PHP
  1. if (($delta == 0) && isset($_POST['a']))
  2. {
  3. $resultat_x0 = -$b/2*$a;
  4. echo 'Delta vaut ' .$delta. ' donc x<sub>0</sub> vaut ' .$resultat_x0. '';
  5. }


Commentons ce code qui est à peu près similaire à celui d'avant :

1ère ligne : Pareil que tout à l'heure sauf que la, on ne vérifie pas si delta est positif mais si il est égal à 0. Vous voyez qu'en PHP, pour dire égal(=), on utilise deux ==. Vous voyez également un bout de code en plus : isset($_POST['a'])). On vérifie simplement si la variable a existe, c'est à dire si le visiteur à envoyé quelque chose via le formulaire que nous mettrons en place tout à l'heure.
Nous vérifions ceci car si le visiteur arrive sur la page et qu'il n'a rien posté dans le formulaire, delta vaudra 0. Donc même si le visiteur n'a rien posté, il verra la phrase lui disant que delta est égal à 0.
En bref, on vérifie juste si le visiteur a posté quelque chose dans le formulaire, si vous n'avez pas compris, quand nous aurons finit d'écrire le code, vous essayerez d'enlever cette ligne et vous verrez ce qui se passe. Vous comprendrez tout de suite !
2ème ligne : On ouvre l'accolade
3ème ligne : On calcule x0 avec la formule vue plus haut : -b/2*a
4ème ligne : On affiche le résultat comme tout à l'heure
5ème ligne : On ferme l'accolade

Voila pour le cas ou delta est égal à 0.

Passons maintenant au cas le plus facile : Delta est inférieur à 0 :
Langage : PHP
  1. ($delta < 0)
  2. {
  3. echo ' Delta est inférieur à zéro, il n\'y a pas de solutions';
  4. }


1ère ligne : On vérifie que delta est inférieur à 0.
2ème ligne : On ouvre l'accolade
3ème ligne : On affiche une phrase disant qu'il n'y a aucune solutions lorsque delta est négatif.

Et maintenant pour finir la fonction :
Langage : PHP
  1. return $delta;
  2. }


On "retourne" le résultat de delta, c'est à dire qu'on envoie le résultat. Si vous ne mettez pas de return, vous ne sauriez pas la valeur de delta.
Puis pour terminer la fonction, on ferme l'accolade.

Maintenant que le fonction est terminée, le plus gros du travail est fait, il ne reste plus qu'à créer le formulaire :

Langage : HTML
  1. <form action='equations_sec_deg.php' method='post' name="formulaire">
  2. <label for="a">Tapez a :</label><input type="text" name="a" id="a" /> <br /> <br />
  3. <label for="b">Tapez b :</label><input type="text" name="b" id="b" /> <br /> <br />
  4. <label for="c">Tapez c :</label><input type="text" name="c" id="c" /> <br /> <br />
  5. <input type="submit" value="Ok !" />
  6. <input type="reset" value="Effacer" />
  7. </form>


On crée simplement le formulaire où l'on demande d'entrer a, b et c.

Et pour finir :
Langage : PHP
  1. <?php $_POST['a'] = $a;
  2. $_POST['b'] = $b;
  3. $_POST['c'] = $c;
  4. $delta = equation_deux_inconnues($a, $b, $c);
  5. ?>


On récupère ce que le visiteur à entré via le formulaire, et enfin on entre les 3 paramètres à la fonction.

Voila pour votre fonction, amusez vous bien !


Conclusion

Sachez que il existe d'autres manières pour créer une fonction comme ceci. Après à vous de voir si vous voulez changer un peu le code source.
Petit bonus : si vous avez une calculatrice TI (une calculette pour le lycée), une fonction très pratique s'offre à vous. La fonction "FRAC" qui permet de mettre un nombre en fraction. Par exemple tapez 0.3333333333 (dix 3), allez dans le menu MATH, appuyez sur FRAC puis sur Entrée. Il apparaitra 1/3.
A bientôt !


Creative Commons License
Cette création est mise à disposition sous un contrat Creative Commons.