Algèbe linéaire

Soyez le premier à donner votre avis sur cette source.

Vue 5 269 fois - Téléchargée 322 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

A voir également

Ajouter un commentaire Commentaires
ceyquem Messages postés 12 Date d'inscription mercredi 9 mai 2001 Statut Membre Dernière intervention 1 juin 2002
16 juin 2002 à 16:12
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.
cs_FidoDido Messages postés 3 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 16 juin 2002
16 juin 2002 à 16:03
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.

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.