Algèbe linéaire

Soyez le premier à donner votre avis sur cette source.

Vue 5 084 fois - Téléchargée 309 fois

Description

Contrôle ActiveX qui apporte au programme des possibilités de calcul d'algèbre linéaire (matriciel). Le code fournit un exemple d'utilisation du contrôle sur une feuille.

Source / Exemple :


Dim A(1, 1) As Double
Dim B(1, 1) As Double
Dim C(1, 1) As Double

Private Sub Command1_Click()
LinAlg1.AddMatrix A, B, C
End Sub

Private Sub Command2_Click()
Me.Caption = LinAlg1.Trace(C)
End Sub

Private Sub Command3_Click()
LinAlg1.Transpose A, C
End Sub

Private Sub Command4_Click()
txtA(0).Text = A(0, 0)
txtA(1).Text = A(1, 0)
txtA(2).Text = A(0, 1)
txtA(3).Text = A(1, 1)

txtB(0).Text = B(0, 0)
txtB(1).Text = B(1, 0)
txtB(2).Text = B(0, 1)
txtB(3).Text = B(1, 1)

txtC(0).Text = C(0, 0)
txtC(1).Text = C(1, 0)
txtC(2).Text = C(0, 1)
txtC(3).Text = C(1, 1)

End Sub

Private Sub Command5_Click()
LinAlg1.MatrixMultiply A, B, C
End Sub

Private Sub Form_Load()
LinAlg1.About
End Sub

Private Sub GetA_Click()
A(0, 0) = txtA(0).Text
A(1, 0) = txtA(1).Text
A(0, 1) = txtA(2).Text
A(1, 1) = txtA(3).Text
End Sub

Private Sub GetB_Click()
B(0, 0) = txtB(0).Text
B(1, 0) = txtB(1).Text
B(0, 1) = txtB(2).Text
B(1, 1) = txtB(3).Text
End Sub

Private Sub GetC_Click()
C(0, 0) = txtC(0).Text
C(1, 0) = txtC(1).Text
C(0, 1) = txtC(2).Text
C(1, 1) = txtC(3).Text
End Sub

Conclusion :


ATTENTION : les arguments des fonctions, lorsque ce sont des Tableaux (=des matrices), sont passés PAR REFERENCE. Vous ne devez donc pas stocker le résultat dans l'une des matrices servant au calcul sous peine d'erreur de calcul !

Codes Sources

Ajouter un commentaire Commentaires
Messages postés
12
Date d'inscription
mercredi 9 mai 2001
Statut
Membre
Dernière intervention
1 juin 2002

oui mais le problème n'est pas là, je ne peux pas passer en argument un tableau si je ne connais pas sa taille. si l'on passe un tableau par valeur, on doit préciser quelle sera la taille du tableau dans la fonction.

et puis c'est moins lourd par référence.
Messages postés
3
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
16 juin 2002

ya un moyen de changer la longueur des tableaux .. tu en definis un sans longueur predefinie , par exemle a(,)
et avant de l'utiliser tu utilises 'Redim' : Redim a(2,2) par exemple ..et pu peux utiliser des variables ossi :) a(m,n)
Ben pour stocker une matrice à n lignes et p colonnes, je le fais avec des tableaux.
Le problème est que l'on ne peut pas renvoyer des taleaux de longeur variable par une fonction. On travaille donc par référence. Donc pour un produit matriciel, tu indiques à une procédure (non une fonction) quelles sont les matrices à multiplier dans l'ordre, donc deux tableaux, et AUSSI la matrice qui contiendra le résultat. Ce qui implique que tu aies initialisé la variable de résultat. NB : le prog se charge de redimensionner la matrice résultat comme il faut.
ça tombe bien, moi j'en veux de to explicat°!!! Surtt ke jé du mal à faire la transposit° Maths vers maths en langage VB, si tu vois c'ke j'veux dire?... ;-)

Allez bone prog'!!!

Gogogogogogogogogooooo
Si vous comprenez pas pourquoi on est obligé de travailler avec une matrice pour stocker le résultat, dites-le.
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.