Algorithme

Accueil

Applications

Racines réelles et complexes d'un polynôme

2 Programme

1 Algorithme

2 Programme

3 Applications

4 Code allégé VB5


  Le programme ci-dessous, écrit en VisualBasic5, détermine les racines réelles et complexes des polynômes jusqu'au100eme degré. la précision atteint 12 chiffres significatifs, sauf pour les racines multiples, pour lesquelles la précision diminue quand la multiplicité augmente.


1 Présentation

  Parmi les exemples du menu, 16 racines centièmes de 1 ( la barre de défilement verticale afficherait les 84 autres).


2 Téléchargement

  Le programme téléchargeable comporte, en plus des sous programmes assurant la recherche des racines, quelques autres, facultatifs, tels que les démonstrations, le classement des racines ... La version figurant en 4ème page contient seulement la partie essentielle qu'il sera plus facile d'incorporer  dans un autre logiciel VB5 ( ou tout autre langage après conversion ).

Télécharger Racines

  Si ce télé-chargement vous posait quelques problème, consultez d'abord le mode opératoire détaillé.

 Le fichier téléchargé est auto extractible, après chargement dans le dossier de votre choix son exécution ouvrira cette fenêtre.

  En cliquant  "Décompresser"  vous l'installerez dans votre dossier "Program Files" (ou dans celui dont vous indiquerez l'adresse).

  Le dossier Racines contiendra :
- l'exécutable Racinesl.exe 
- un raccourci (orientant vers C:\Program Files )
- 3 fichiers indispensables si Visual Basic 5 n'est pas installé sur votre disque dur.


3 Introduction des données

  Le programme offre deux méthodes d'introduction du degré du polynôme à traiter et de ses coefficients

3.1 Manuellement

  Dans le menu, "Exécution" ouvre une boite de dialogue permettant d'introduire le degré du polynôme à traiter puis une autre destinée aux coefficients successifs par ordre décroissant de puissances.

3.2 A partir d'un fichier

  Le programme accepte 5 fichiers de données : Fich_1.txt  à Fich_5.txt

  Les données du fichier Fich_1.txt ci-contre, correspondent à la première démonstration  : 
- degré du polynôme sur la première ligne
- suivi des 5 coefficients selon les puissance décroissantes.

x4 - 2 x3 - 23 x2 + 50 x - 25 = 0

  Placé dans le même dossier que " Racines.exe ", il suffira de l'appeler par le menu Edition / Relire pour qu'il exécute automatiquement.

  Le calcul et l'affichages des racines s'enchaînent sitôt le dernier coefficient entré.

3.3 Limitation

  Pour éviter une fatale division par zéro il arrive que le programme s'arrête prématurément. Un message signale l'incident.
  C'est le cas pour  x4 - 1 = 0 , bien que ses 4 solutions soit évidentes : +1, -1, + i et - i .

  Effectivement, le remplacement des coefficients nul par 10-7 conduit à des approximations satisfaisantes.

Remarque :

  x^ 8 - 1 = 0   comporte, entre autres, les mêmes racines mais se résout sans problème !

Résoudre les équations les plus compliquées et dédaigner les cas triviaux, quel snobisme !


2.4 Cas des racines réelles multiples

 La précision avoisine 10-12 mais elle est fortement abaissée en présence de racines multiples
  Si, à l'aide de Analyse_Num, on trace une fonction ayant plusieurs zéros superposés tel que :

y = x6 - 3x4 + 3x2 - 1

  y s'annule en x = -1 et x = 1, qui constituent des racines triples.

  La courbe tangente l'abscisse au voisinage des deux zéro, situation particulièrement défavorable lors de l'application de l'algorithme Newton-Raphson.

  Analyse_Num utilise la méthode Savitzky-Golay pour calculer numériquement la première et la seconde dérivées des fonctions.

  Quand il existe une ou plusieurs racines triple, la dérivée ( courbe bleue ) s'annule entre-autre aux mêmes abscisses que la fonction, mais de façon permettant déjà une détermination plus précise de la position du zéro.

  Il en est de même avec la dérivées seconde ( courbe verte ), mais celle-ci coupe l'abscisse au lieu de l'aborder tangentiellement.

  Manifestement la troisième dérivée prend des valeurs différentes de zéro au niveau des racines.

  Ainsi, pour les racines triples, la dérivée seconde est la dernière dérivée ayant deux zéro identique à ceux de la fonction et permet une détermination précise des ces racines.

  Plus généralement, les degré de multiplicité et la valeur d'une racines seront déterminés avec la dernière dérivée s'annulant au voisinage de la détermination initiale.

  Ceci se démontre dans le cas général :

si l'équation

possède une racine xi de multiplicité k, la fonction

peut s’écrire

qui s’annule bien évidement pour x = xi mais aussi pour sa dérivée

laquelle admet donc la racine xi mais avec une multiplicité abaissée d’une unité.
  La dérivée d’ordre k-1 sera la dernière à admettre cette racine mais à titre de racine simple, elle seule assurera une détermination précise des racines réelles multiples.

  Ainsi le nombre de dérivées admettant une racine proche de la valeur initiale permet de déterminer la multiplicité de la racine.

  Cette technique d'affinement des racines multiples n'est pas exploitée dans le programme Racine.exe . Si besoin, elle pourrait s'intégrer dans une future version. Elle est cependant exploitable en prenant la peine de calculer les dérivées successives pour les analyser avec la version actuelle.

  Après avoir développé l'exemple précédent    y = (x2 - 1)3

y = x6 - 3 x4 + 3x2 - 1

afin d'en rechercher les zéros avec Racine.exe , on obtient effectivement des valeurs très approximatives des deux racines triples.

  Le programme en est amené à imaginer des racines complexes !


 

  En travaillant sur la première dérivée on constate déjà une très nette amélioration, puisque l'écart le plus important se limite à 10-7


 

  Seule la dérivée seconde conduit aux valeurs exactes des deux zéros : -1  et +1 .

  Les deux autres racines n'ont aucun intérêt.

  Le programme est conçu pour extraire d'abord les racines réelles avant de traiter les racines complexes s'il y a lieu.
  Un dernier test pour vérifier que ce traitement des racines réelles multiples fonctionne aussi en présence de racines complexes.

  L'équation  x2 - 2x + 2 = 0 possède deux racines complexes conjuguées :  1+ i  et 1- i .
  (x2 - 1)3(x2 - 2x + 2)2 = 0  aura donc deux racines triples réelles et deux racines complexe conjuguées doubles.

  La fonction  y = (x2 - 1)3(x2 - 2x + 2)2 (courbe rouge) présente encore deux paliers au voisinage des racines réelles mais la position des deux zéros est parfaitement définie par les zéros de la dérivée seconde (courbe verte).
  Pour plus de clarté, les ordonnées des deux courbes sont compressées.


Remarque : Les 3 équations suivantes sont traitées dans les démo 13, 14 et 15.

Racine.exe identifie les 10 racines, mais avec une médiocre précision :

les 6 racines réelles dans les 6 premières lignes, la racine complexe double dans les 4 dernières.

  En recherchant les zéros de la dérivée

 

les ligne 1, 2, 4 et 5 fournissent déjà de meilleures approximations des racines réelles et , bonne surprise, les valeurs des deux racines complexes conjuguées figurent sur les lignes 8 et 9 , suggérant que la méthode serait aussi applicable aux racines complexes .

  Enfin, les zéros de  la dérivées seconde, inscrits sur les lignes  1 et  4  , donnent très exactement les valeurs des deux racines réelles triples :


2.5 Cas des racines complexes multiples

  Le programme abordant la recherches des racines complexes après avoir extrait les racines réelles, le test portera sur une équation ne comportant que des racines complexes multiples.

  z2 - 2 z + 5 = 0 comporte 2 racines conjuguées : 1+2i  et 1-2i

  z2 - 4 z + 5 = 0 a pour racines : 2+i  et 2-i

  Dans  ( z2 - 2 z + 5 )3( z2 - 4 z + 5 )2  = 0  ces racines seront respectivement triples et doubles.

Remarque : Les 3 équations suivantes sont traitées dans les démo 16, 17 et 18.

  Après développement, Racines.exe retrouve ces 10 racines avec des valeurs approximatives.

  Il est facile de calculer la dérivée et de rentrer manuellement ses coefficients.

  Subsistent sur les 4 premières lignes les valeurs de la racine triple avec de meilleures approximations et les valeurs précises de la racine double.
  Enfin, en introduisant la dérivée seconde, les valeurs exactes des racines conjuguées triples figurent en premières lignes.
  Comme toujours, les autre zéros de la dérivée ne jouent aucun rôle.

  La technique convient donc parfaitement à l'affinement des racines complexes.

Démonstration

  Après extraction des racines réelles seules subsistent les racines complexes et l'équation définie en premières page se réduit donc à :

  Lorsque la première racine multiple est détectée, la fonction peut s'exprimer sous la forme :

ou plus simplement :

  En dérivant par rapport à z :

ou pour simplifier

  Ainsi, comme pour les racines multiples réelles, chaque nouvelle dérivation abaissera le niveau de multiplicité.


Extraire la page pour l'enregistrer ou l'imprimer