begin process at 2013 06 19 00:30:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > ETUDE "COMPLÈTE" D'UN TRINÔME

ETUDE "COMPLÈTE" D'UN TRINÔME


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Classé sous :trinôme, polynome, etude, second, degré Niveau :Débutant Date de création :11/03/2006 Date de mise à jour :11/03/2006 19:47:50 Vu :10 761

Auteur : Sniperman113

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

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

  • <?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."".$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>';
  • }
  • }
  • ?>
<?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_trinom e.php

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


 Historique

11 mars 2006 19:47:50 :
Rajout de la forme factorisée du trinôme ainsi qu'optimisation du calcul de la dérivée :)

 Sources du même auteur

Source avec Zip THALES FACILE !
Source avec Zip Source avec une capture LIVE MESSAGERIE V1.0
Source avec une capture CALCULS GÉOMÉTRIQUES

 Sources de la même categorie

CRYPTER/DECRYPTER ALEATOIRE par ravorasolofo
Source avec Zip Source avec une capture GENERATEUR DE LABYRINTHES PARFAITS AVEC GD par Gallien69
EXEMPLE D'APPLICATION DE L'ALGORITHME DE DIJKSTRA EN PHP par philtr8
CLEF POUR EAN 13 ET 14 par RaftY
FONCTION DE CALCUL DU NOMBRE DE DUEL UNIQUE POUR UN NOMBRE N... par mtrix000

 Sources en rapport avec celle ci

Source avec Zip RÉSOLUTION D'ÉQUATIONS DU SECOND DEGRÉ (AX² + BX + C) par FunkyFamily
Source avec Zip Source avec une capture ETUDE DES POLYNOMES DU SECOND DEGRÉ : DOMAINE, PARITÉ, LIMIT... par puisea

Commentaires et avis

Commentaire de coucou747 le 11/03/2006 18:27:09 administrateur CS

#                 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 />";
#                     }


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."<br />";

euh...

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

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...

Commentaire de Sniperman113 le 11/03/2006 18:32:12

coucou alors:
1) je suis d'accord avec toi pour "echo 'La dérivée du trinôme est : '.(2*$a).'x+'.$b.'<br />';" 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 :)

Commentaire de coucou747 le 11/03/2006 18:37:27 administrateur CS

"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...)

Commentaire de Sniperman113 le 11/03/2006 18:39:22

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 :/

Commentaire de coucou747 le 11/03/2006 19:08:11 administrateur CS

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...

Commentaire de Sniperman113 le 11/03/2006 19:49:10

Voilà, j'ai fait la forme factorisée bon c'est pas top si les racines sont négatives pcq ça fait 2 - mais bon j'ai pas le choix :/

Commentaire de coucou747 le 11/03/2006 20:06:24 administrateur CS

comment ça ?

Commentaire de Sniperman113 le 11/03/2006 20:09:55

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)

Commentaire de coucou747 le 11/03/2006 20:22:36 administrateur CS

"et tout et là j'ai pas le temps ^^"=> alors pourquoi t'as posté ta source ?

fais echo str_replace('--','+', 'ma forme cannonique...');

Commentaire de Sniperman113 le 11/03/2006 20:33:35

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.

Commentaire de zut69 le 15/03/2006 14:42:59

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

x= 1065/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à.

Commentaire de coucou747 le 15/03/2006 14:49:29 administrateur CS

ça ne marchera pas si ta pèriode est trop longue à cause des limites de nombres...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

accès membre entre différents sites (sessions) [ par bisopale ] bonjour,j'ai un gros souci avec mes sessions.j'ai, sur mon serveur web en intranet, plusieurs sites par le biais des virtual hosts (2 &#224; ce jour). simple problème HTML.. [ par syndrael ] Bonjour, J'essaie de mettre un tableau dans chacun des deux div.. Puis en cliquant sur un lien en bas, le second 'devrait disparaitre'.. mais non.. problème fenetre et list box [ par jasou62114 ] Bonjour, voilà j'ai deux petit soucis, je suis en train de développer un système de messagerie qui sera utilisé par une standardiste, en php. Premier projet de fin d'etude [ par rima111 ] j'ai bessoin  de votre aide j'ai bessoin d'une application :site web dynamique d'une portail médicale en php et sql aussi je vous merci Projet Fin d'etude [ par breackca ] je veux que quelqu'un m'aide pour mon projet de fin d'etude qui se resume dans une application de gestion des affectations des emplois de serveillance projet du fin d'etude [ par manoula13 ] hy! every bodyslt! chui etudiante en informtique option genie logiciel, chui en 3eme année.g besoin d'aide sur le theme ke g choisis"conception d'un o demande d aide pour un formulaire multicritere [ par aerobi ] bonjour exuser moi de vous derangeje suis debutant en php   et j aimerai faire un form   multicritere    g un form   mais je c pas quoi faire avec la Boucle listage de dossier avec menu déroulant [ par jerem3000 ] Bonjour,je dois faire une menu déroulant qui liste les dossier qu'il trouve mais je me heurte a un problème au niveau de &lt;li&gt;&lt;ul&gt; ... impo Je veut une idée de projet fin d'etude [ par zouba123 ] salut j'ai un projet de fin d'année ;j'ai appris durant mon année d'étude le (c,java,vb.net,php....) vous pouvez m'aidez de trouver un sujet[^^sad2] projet de fin d'etude [ par mhota ] [i]bonjour[/i][^^happy13] je suis en train de travailler mon projet de fin d'étude c'est une application de [b]gestion de surveillance des examens uni


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales