RECHERCHE :
Bienvenue sur le site de Michel VOLLE
Powered by picosearch  


Vous êtes libre de copier, distribuer et/ou modifier les documents de ce site, à la seule condition de citer la source.
 GNU Free Documentation License.

Calcul matriciel


19 août 2004

Liens utiles

- La programmation comme hobby
- Télécharger DrScheme
- Programme source

Afin de pouvoir construire un programme d’analyse des données, j’ai écrit un programme de calcul matriciel en Scheme qui fournit les outils de base nécessaires.

(NB : il suffit d’y introduire la forme quadratique fondamentale de l’espace euclidien pour en faire un programme de calcul tensoriel).

Une matrice est notée comme une liste de listes de nombres de longueur égale, du type :
'((12 222 34) (45 45 36))

Un vecteur est noté comme '(41 23 53), une forme linéaire comme '((5) (67) (2)). On peut préférer la convention inverse.

On dispose des fonctions suivantes

Calcul vectoriel :

(sommev v1 v2) donne la somme de deux vecteurs

(multv v num)donne le produit d’un vecteur par un scalaire

(prodscalcan v1 v2)donne le produit scalaire canonique de deux vecteurs

(normcan v) donne la norme canonique d’un vecteur

Calcul matriciel :

(m? m) dit si une liste est une matrice

(transp m) donne la matrice transposée de m

(prodm m n) donne le produit des deux matrices m et n

(sommem m n) donne la somme des deux matrices m et n

(multm m num) donne le produit d’une matrice par un scalaire

(det m) donne le déterminant de la matrice carrée m

(inverse m) donne l’inverse de la matrice carrée n

(vectprop m) donne le premier vecteur propre de la matrice carrée m

(valprop m) donne la première valeur propre de la matrice carrée m

(vectprop2 m) donne les deux premiers vecteurs propres et valeurs propres de la matrice carrée m.

Pour appliquer ces fonctions, il faut taper des instructions selon le format suivant :

(inverse '((31 22) (24 6)))

(det '((31 22) (24 6)))

(prodm '((12 42 63) (54 95 16)) '((31 22) (53 44) (25 6))), etc.

NB : le signe ' doit précéder les matrices et vecteurs.

Améliorations prévues

Le calcul d'un déterminant d'ordre n suppose n! opérations, ce qui exige un temps de calcul élevé dès que n atteint la dizaine. Il faudra utiliser un algorithme mieux conçu. Par contre - bonne surprise - la recherche des vecteurs propres converge vite. Cela donne bon espoir pour l'analyse factorielle.

Il faudra introduire le type "vecteur" de Scheme, puis créer un type "matrice".