Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Etude "complète" d'un trinôme

5/5 (12 avis)

Snippet vu 10 974 fois - Téléchargée 16 fois

Contenu du snippet

Voilà une source codée un peu en speed (1h30 environ) que j'ai essayé d'optimiser au maximum. Il en existe déjà une de ce type sur le site mais la mienne ne nécessite qu'une seule et unique page.
Au menu : Rappel du trinôme rentré, calcul du discriminant, calcul des racines du trinôme, signe du trinôme, dérivée du trinôme et enfin 2 trucs qui sont erronés mais je ne trouve pas l'origine (donc si vous trouvez, n'hésitez pas à me le signaler en commentaire) la forme canonique et l'étude de la parabole.
Cet source est de niveau 1ere S donc ne m'hurlez pas dessus si il y a des trucs évidents d'un niveau supérieur que je n'ai pas mis.

Source / Exemple :


<?PHP 
//Verif post
if(empty($_GET['post'])) { 
	echo '<form action="?post=ok" method="post">
	Votre trinôme (mettre le signe (- ou +) suivi du nombre): <input size="5" type="text" name="a" />x²<input size="5" type="text" name="b" />x<input size="5" type="text" name="c" /><br />
	<input type="submit" value="Etudier" />
	</form>';
} else {
	//Recup donnees
	$a = $_POST['a'];
	$b = $_POST['b'];
	$c = $_POST['c'];
	
	//Verif valeurs numeriques
	if((is_numeric($a))&&(is_numeric($b))&&(is_numeric($c))) {
	//Verif a different de 0
		if ($a!=0) {
		echo "ETUDE DU TRINÔME :<br /><br /><br />Le trinôme entré est : ".$a."x²".$b."x".$c."<br />";
		//Calcul du discriminant
		$delta = bcpow($b,2)-(4*$a*$c);
		echo "Le discriminant du trinôme a pour valeur : ".$delta."<br />";
		
		//Calcul de la forme canonique (erroné)
//		$forme_cano1 = ($b/(2*$a));
//		$forme_cano2 = -($delta)/(2*bcpow($a,2));
//		if (($forme_cano1>=0)&&($forme_cano2>=0)) { $forme_cano = "Le trinôme a pour forme canonique : ".$a."((x+".$forme_cano1.")²+".$forme_cano2.")"; }
//		if (($forme_cano1<=0)&&($forme_cano2<=0)) { $forme_cano = "Le trinôme a pour forme canonique : ".$a."((x".$forme_cano1.")²".$forme_cano2.")"; }
//		if (($forme_cano1>=0)&&($forme_cano2<=0)) { $forme_cano = "Le trinôme a pour forme canonique : ".$a."((x+".$forme_cano1.")²".$forme_cano2.")"; }
//		if (($forme_cano1<=0)&&($forme_cano2>=0)) { $forme_cano = "Le trinôme a pour forme canonique : ".$a."((x".$forme_cano1.")²+".$forme_cano2.")"; }
//		echo $forme_cano."<br />";
		
		//Verif discriminant pour calculs des racines et du signe
			if($delta<0) {
				echo "Le trinôme n'a pas de racines.<br />";
					if($a<0) {
					echo "Le trinôme est négatif (signe de ".$a.") sur R.<br />";
					} else {
					echo "Le trinôme est positif (signe de ".$a.") sur R.<br />";
					}
			}
			if($delta==0) {
				$sol=((-$b)/(2*$a));
				echo "Le trinôme a une unique solution : ".$sol."<br />"; 
					if($a<0) {
					echo "Le trinôme est négatif (signe de ".$a.") sur R.<br />";
					} else {
					echo "Le trinôme est positif (signe de ".$a.") sur R.<br />";
					}
			}
			if($delta>0) {
				$sol=((-$b-sqrt($delta))/(2*$a));
				$sol2=((-$b+sqrt($delta))/(2*$a));
				//forme factorisée
				echo "La forme factorisée du trinôme est : ".$a."(x-".$sol.")(x-".$sol2.")<br />";
				//racines + signe du trinôme
				echo "Le trinôme a deux solutions : ".$sol." et ".$sol2."<br />";
					if(($a<0)&&($sol>$sol2)) {
						echo 'Le trinôme est négatif (signe de '.$a.') sur ]-infini;'.$sol2.'] et sur ['.$sol.';+infini[<br />
						et positif (signe de -('.$a.')) sur ['.$sol2.';'.$sol.'].<br />';
					}
					if(($a<0)&&($sol<$sol2)) { 
						echo "Le trinôme est négatif (signe de ".$a.") sur ]-infini;".$sol."] et sur [".$sol2.";+infini[<br />
						et positif (signe de -(".$a.")) sur [".$sol.";".$sol2."].<br />";
					}
					if (($a>0)&&($sol>$sol2)) {
						echo "Le trinôme est positif (signe de ".$a.") sur ]-infini;".$sol2."] et sur [".$sol.";+infini[<br />
						et négatif (signe de -(".$a.")) sur [".$sol2.";".$sol."].<br />";
					}
					if (($a>0)&&($sol<$sol2)) {
						echo "Le trinôme est positif (signe de ".$a.") sur ]-infini;".$sol."] et sur [".$sol2.";+infini[<br />
						et négatif (signe de -(".$a.")) sur [".$sol.";".$sol2."].<br />";
					}
			}
		//Calcul derivee
		$derivee = "La dérivée du trinôme est : ".(2*$a)."x".$b."";
		echo $derivee."<br />";
		
		//Calcul sommet de la parabole + forme de celle-ci + sens de variation (erroné)
//		$sommetx = -$forme_cano1;
//		$sommety = $forme_cano2;
//		if ($a>0) {
//		echo "Le trinôme est une parabole convexe de sommet: M(".$sommetx.";".$sommety.")<br />La parabole du trinôme est décroissante sur ]-infini;".$sommetx."] et croissante sur [".$sommetx.";+infini[";
//		} else {
//		echo "Le trinôme est une parabole concave de sommet: M(".$sommetx.";".$sommety.")<br />La parabole du trinôme est croissante sur ]-infini;".$sommetx."] et décroissante sur [".$sommetx.";+infini[";
//		}
	
	echo '<br /><br /><form action="?post=" method="post"><input type="submit" value="Nouvelle étude" /></form>';
	} else {
		echo "Il faut que le premier coefficient du trinôme (ou a) soit différent de 0 !!!";
		echo '<br /><br /><form action="?post=" method="post"><input type="submit" value="Nouvelle étude" /></form>';
	}
	} else {
	echo "Vous devez remplir correctement les nombres du trinôme";
	echo '<br /><br /><form action="?post=" method="post"><input type="submit" value="Nouvelle étude" /></form>';
	}
}
?>

Conclusion :


N'oubliez pas le calcul de la forme canonique et l'étude de la parabole sont erronés. N'hésitez pas à m'aider à corriger tout ça :)
Et pour finir, ce code est en possibilité de testabilité (I love french) sur: http://sniperman113.free.fr/calculgeo/etude_trinome.php

Voili voilou, j'attends vos commentaires EN FRANCAIS, s'il vous plait :)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.