Application en multi précision : Pi

Accueil

Calculs numériques en multi précision

5 Inversion de matrice en multiprécision

1 Principe

2 Les 4 opérations en multi précision

3 Quelques fonctions en multi précision

4 Application : Pi en multi précision

5 Application : Inversion de matrice en multi précision


  L'inversion d'une matrice de faibles dimensions exige déjà la double précision, mais quand sa taille augmente chacune des opérations conduisant à l'inversion devra s'effectuer en multiprécision..
  Un programme test, travaillant sur la matrice ci-contre ( N ajustable de 10 en 10 depuis N = 10 jusqu'à N=50 ), permet de vérifier l'efficacité du sous programme d'inversion en fonction du nombre de chiffres utilisés, 60 , 90, 120, 150 ou 180 avant et après la virgule.

  Ce programme affiche 3 tableaux 5x5 :
- la matrice à inverser, |A| présente 25 éléments de la matrice à inverser, deux barres de défilement permettent d'explorer l'ensemble de la matrice en double précision. En cliquant un des éléments visibles, celui-ci s'inscrira en multiprécision sur la ligne située sous le tableau.
- la matrice inversée, 1/|A| présentée de façon identique
- à titre de contrôle, la matrice 1/1/|A| , calculée en inversant la matrice  1/|A| , restituant ainsi la matrice initiale aux erreurs de calcul près.
  Un autre test consisterait à multiplier la matrice initiale par son inverse, mais il serait plus difficile de relier les erreurs observées sur la matrice unité ainsi obtenue aux erreurs sur la matrice inverse.

  Dans un premier exemple, portant sur l'inversion d'une matrice 10x10, l'option 60 chiffres suffit puisque l'erreur relative sur l'élément 8,6  se limite à  4 10-50 . Quant à l'élément  10,10 de la 3ème matrice, 1010 est approché à 5 10-45 près  malgré le cumule les erreurs de deux inversions successives,

  Le second exemple portant sur une matrice 50x50 est traité avec 180 chiffres avant et après la virgule. Le temps de calcul s'en trouve considérablement allongé, en effet la durée croît approximativement avec le carré de la taille de la matrice, mais aussi avec le carré du nombre de chiffres utilisés.

  Quelque soit la taille de la matrice ainsi constituée, les éléments de la première ligne de la matrice inversée  sont des coefficients du binôme et donc des nombres entiers. Sur le 25eme , le plus grand d'entre eux, ( 126 410606 437752 ) , il manque seulement  6 10-96 à la valeur calculée.

  L'élément le plus grand de la matrice initiale atteint ici 1.776...1083, après la double inversion il est restitué à cent millième d'unité près, écart qui justifie les 360 chiffres de chaque élément pour son inversion.

  Un dernier test consiste à prendre comme référence la matrice inversée avec 2x180 chiffres pour la comparer aux résultats obtenus en abaissant ce nombre à 2x150 , 2x120 ... Pour ce type de matrice, le tableau ci-dessous indique le nombre de chiffres exacts obtenu sur l'élément centrale de la matrice inversée, en fonction de la taille et de la précision adoptée pour l'inversion :

  2x60 2x90 2x120 2x150
10x10 50 79 109 139
20x20 35 66 96 127
30x30 23 53 83 113
40x40 Aucun 36 66 96
50x50 Aucun 19 49 79

  Ainsi, avec une matrice étendue à 50x50 , l'élément 25,25,de son inverse sera défini avec 19 chiffres exacts en travaillant avec seulement 2x90 chiffres .

  La précision des résultats croît comme le degré de multi précision : environ 30 chiffres exacts supplémentaires sur les résultats en ajoutant 30 chiffres de part et d'autre de la virgule. Cette progression se vérifie aussi sur les autres éléments de la matrice inversée.

  L'exécutable de ce programme de tests est téléchargeable, Il s'agit d'un fichier zip auto-extractible, qui s'incorporera dans votre répertoire " Programme Files " ou tout autre répertoire de votre choix

  Le répertoire MAT_INV_MP contient :
- l'exécutable et son raccourcis
- 2 dll .

Charger Inv_Mat_MP_Demo


  Quelques essais sur Inv_Mat_MP_Demo et si dans un programme la double précision ne suffit pas à inverser une matrice avec la précision nécessaire, l'annexe 2 présente les sous programmes VB5 permettant d'opérer en multi précision. Les instructions Visual Basic utilisées sont suffisamment explicites pour être facilement traduisibles dans un autre langage 

  Pour toutes remarques ou informations complémentaires, un courriel à :

Extraire la page pour l'enregistrer ou l'imprimer