CALCUL DE POLYNÔMES DU SECOND DEGRÉ AVEC SES VARIATIONS SUR R.

mackhai Messages postés 5 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 25 juillet 2006 - 22 déc. 2003 à 17:22
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 27 déc. 2003 à 21:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18880-calcul-de-polynomes-du-second-degre-avec-ses-variations-sur-r

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
27 déc. 2003 à 21:13
Au temps pour moi il s'agit bien d'homomorphismes
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
27 déc. 2003 à 21:11
Tu es bien gentil Ratio mais le but de ce programme était il me semble d'étudier une fonction ploynomiale sur R et donc les racines complexes ne nous interressent pas ici. Par ailleurs je me demande pourquoi du parles de "homomorphisemes" (homéomorphismes?)
Ratio Messages postés 2 Date d'inscription vendredi 26 décembre 2003 Statut Membre Dernière intervention 26 décembre 2003
26 déc. 2003 à 17:41
J'ai fait une petite erreur dans la démonstration, que vous voudrez bien corriger vous-même :

J'ai écrit :

(x + b/2a)² - b²/4a² + c/a = 0, puis tout au même dénominateur :
(x + b/2a)² - (b² + 4ac)/4a² 0. Posons D le discriminant, défini par D b² - 4ac. On a donc :

Ce n'est pas b² + 4ac, mais b² - 4ac !

A bientôt
Ratio Messages postés 2 Date d'inscription vendredi 26 décembre 2003 Statut Membre Dernière intervention 26 décembre 2003
26 déc. 2003 à 09:19
Démonstration : Deux racines dans C pour ax² + bx + c

Soit le trinôme ax² + bx + c = 0
Factorisons par a : a(x² + bx/a + c/a) = 0 (a différent de 0, il ne nous intéresse pas)

donc x² + bx/a + c/a = 0.
Utilisons la forme canonique (a + b)² = a² + 2ab + b².
Ici, x² + bx/a ressemble fort à a² + 2ab, et (x + b/2a)² x² + 2bx/2a + b²/(2a)² x² + bx/a + b²/4a²
Le début de l'expression correspond, sauf le dernier terme. Ecrivons donc :

(x + b/2a)² - b²/4a² + c/a = 0, puis tout au même dénominateur :
(x + b/2a)² - (b² + 4ac)/4a² 0. Posons D le discriminant, défini par D b² - 4ac. On a donc :

(x + b/2a)² - D/4a² = 0

Avec ce résultat important, on a trois cas :

--------------------------------------------------------------------
1. D > 0. On peut alors écrire (j'appelle Sqr la racine carrée) :

(x + b/2a)² - D/4a² = (x + b/2a)² - (Sqr(D)/2a)²
C'est une identité remarquable du type a² - b² = (a + b)(a - b), d'où la factorisation :

[(x + b/2a) + Sqr(D)/2a][(x + b/2a) - Sqr(D)/2a] = 0
[ a + b ][ a - b ] = 0
On met tout au même dénominateur :
[x+ (b + Sqr(D))/2a][x + (b - Sqr(D))/2a] = 0

Les racines :

x' = (- b - Sqr(D))/2a
x'' = (- b + Sqr(D))/2a

--------------------------------------------------------------------
2. D = 0 On a donc :

(x + b/2a)² - D/4a² = (x + b/2a)²

La racine double est évidente, c'est -b/2a

--------------------------------------------------------------------
3. D < 0. Dans ce cas, et c'est le seul qui nous intéresse vraiment, D est négatif, donc - D est positif.

Dans C l'ensemble des complexes, on désigne i le nombre imaginaire tel que i² -1 (les homomorphismes, je n'en parle pas, c'est trop compliqué) et x se remplace par z (qui s'appelle l'affixe, défini par z x + iy).

(z + b/2a)² - D/4a² = (z + b/2a)² - (Sqr(-D)i)/2a)²

car (Sqr(-D)i)² Sqr(-D)² i² -(-D) = D

On réutilise les identités remarquables comme tout à l'heure, et :


(z + b/2a)² - (Sqr(-D)i)/2a)²
= [(z + b/2a) + (Sqr(-D)i)/2a][(z + b/2a) - (Sqr(-D)i)/2a]
= [z + (b + Sqr(-D)i)/2a][z + (b - Sqr(-D)i)/2a]

Deux racines :

x' = (- b - Sqr(-D)i)/2a

x'' = (- b + Sqr(-D)i)/2a

où, je le rappelle, -D > 0 car D < 0. Pour ceux qui préfèrent, écrivez en valeur absolue : Sqr( |D| )

Voilà tout. En fait, il y a deux racines dont les formules sont sensiblement les mêmes que pour D > 0. Dans le programme, il suffit de calculer, lorsque D < 0, les résultats pour |D|, et faire afficher dans ce résultat un i. Rien de bien compliqué en fait (et je crois même qu'on puisse directement calculer dans
C. N'y a-t-il pas une bibliothèque prévue à cet effet ?).
mackhai Messages postés 5 Date d'inscription dimanche 21 décembre 2003 Statut Membre Dernière intervention 25 juillet 2006
22 déc. 2003 à 17:22
il est bien ton programme
Rejoignez-nous