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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 586 fois - Téléchargée 27 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
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
ça ne marchera pas si ta pèriode est trop longue à cause des limites de nombres...
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
joli, moi je m etais amusé à faire une version assez complexe de 500 lignes de codes, mais il resout aussi les inéquations en calculant le delta reaffichant le calcul, affichage du tableau des signes, reponse sous forme numérique ou d intervalle... bon si tu veux voir le résultat c est la: http://gamwin.activity-net.com/test/ mais y a tjs un problème, j arrive pa a afficher la réponse sous forme de fraction si c est rond. Si quelqu un saurait comment faire c est volontiers.
Parce qu en fait on a vu en math comment passer des chiffres a virgules en fraction, mais j arrive pa a adapter en php: On doit detecter la periode, ensuite multiplier jusqu a que la periode soit devant la virgule puis faire - le chiffre d origine. c est ptetre pa clair alors regarde un exemple:

x = 0.0757575...
10x = 10.757575...
1000x = 1075.75...

mnt:
1000x 1075.75...
- 10x - 10.75...
990x 1065

x1065/990 213/198 = 71/66

en fait le truc c est qu il faut reconnaitre la periode, ensuite la mettre devant, soustraire, simplifier la fraction. C est assez complexe et je ne suis pas informaticien alors voilà.
Messages postés
99
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
21 février 2012

Parce que j'ai codé la source à minuit parce que j'avais rien à faire que j'avais envie de toucher un peu de PHP et que now j'ai d'autres trucs à faire :) mais je la modifierai dès que j'aurai un peu de temps libre.
Merci pour la fonction.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
"et tout et là j'ai pas le temps ^^"=> alors pourquoi t'as posté ta source ?

fais echo str_replace('--','+', 'ma forme cannonique...');
Messages postés
99
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
21 février 2012

Si par exemple tu rentres des coefficients qui rendent une racine x1 > 0 yaura pas de pb ça fra a(x-x1) mais si par exemple la 2eme racine x2 < 0 alors ça fra a(x-x1)(x--x2)

c'est pas top mais fodrai que je rechoppe la valeur absolue de la racine et que je la traite en fonction et tout et là j'ai pas le temps ^^

Par contre si tu peux trouver le problème pour la forme canonique et par la même l'étude de la parabole (les 2 sont liés car l'étude est fausse au niveau de l'utilisation des résultats de la forme canonique)
Afficher les 12 commentaires

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.