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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 924 fois - Téléchargée 29 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

Ajouter un commentaire Commentaires
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
11 mars 2006 à 18:27
# echo "Le trinôme n'a pas de racines.
";
# if($a<0) {
# echo "Le trinôme est négatif (signe de ".$a.") sur R.
";
# } else {
# echo "Le trinôme est positif (signe de ".$a.") sur R.
";
# }


t'as oublié un truc important : il n'a pas de racines sur R...

Bon, sinon, c'est incomplet... t'as pas le sens de variation, t'as pas de forme factorisée....

# //Calcul derivee
# $prem_derivee = 2*$a;
# $derivee = "La dérivée du trinôme est : ".$prem_derivee."x".$b."";
# echo $derivee."
";

euh...

echo 'La dérivée du trinôme est : '.(2*$a).'x+'.$b.'
';

parceque là, non seulement le code est moche, trop long, pas optimisé et bouffe plus de mémoire, mais en plus, il te manque un +, donc ta dérivée est fausse...
Sniperman113 Messages postés 99 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 21 février 2012
11 mars 2006 à 18:32
coucou alors:
1) je suis d'accord avec toi pour "echo 'La dérivée du trinôme est : '.(2*$a).'x+'.$b.'
';" seulement quand tu dis que ma dérivée est fausse, c'est faux car dans le formulaire, on doit mettre le signe du coefficient qu'on utilise.
2) "Bon, sinon, c'est incomplet... t'as pas le sens de variation, t'as pas de forme factorisée...." Il faut lire tous les commentaires que je mets ...
3) "t'as oublié un truc important : il n'a pas de racines sur R..." Hum, s'il n'en a pas sur R, il en aura sur un autre intervalle ?

Pour le reste je corrige merci :)
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
11 mars 2006 à 18:37
"Il faut lire tous les commentaires que je mets ..."=> ton commentaire n'est pas exécuté... on ne voit pas la forme factorisée s'afficher...
(x-x1)(x-x2)=0

Bon, sinon : pour l'autre intervale : c'est C (intervale des complexe... un endroit ou l'on voit des racines de nombres négatifs, et ou on représente les nombres dans un plan et non sur un axe...)
Sniperman113 Messages postés 99 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 21 février 2012
11 mars 2006 à 18:39
ok pour la forme factorisée je la ferai quand j'aurai quelques minutes
Pour l'autre intervalle c'est pas de mon niveau (1ère S) donc :/
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
11 mars 2006 à 19:08
je suis en term S... l'année prochaine, tu apprendras à résoudre : m+n=10 & mn=30... en attendant, ta source est incomplète...

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.