Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Produit matriciel avec une matrice inverse

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Alex98

XLDnaute Nouveau
Bonjour, j'aimerais faire le produit matriciel entre l'inverse d'une matrice et une matrice colonne. J'ai pour erreur "l'indice n'appartient pas à la séléction" pour
MatriceX2(i - 1, 0) = P(i - 1, 0) * X(i - 1, 0) + _
P(i - 1, 1) * X(i - 1, 0) + _
P(i - 1, 2) * X(i - 1, 0)
Pouvez-vous m'aider s'il vous plait ?



Function Pinv(Angle As Double) As Variant
Dim Matinverse() As Variant

'Calcule de la matrice iverse

Matinverse = Application.MInverse(Range("B27😀29"))
Pinv = Matinverse


End Function


Function Mat_X(Angle As Double) As Variant
Dim MatIntX(3, 1) As Double

'Détermination de la matrice X

MatIntX(0, 0) = Cells(5, 8)
MatIntX(1, 0) = Cells(6, 8)
MatIntX(2, 0) = Cells(7, 8)

Mat_X = MatIntX

End Function


Function Mat_ProdPX(Angle As Double) As Variant
'M1M2 = P
'X2 = X'

'Initialisation
Dim MatriceX2(3, 1) As Double
Dim P As Variant
Dim X As Variant
Dim i, j As Integer


'Calcule de X'=Pinv*X

P = Pinv(Angle)
X = Mat_X(Angle)


For i = 1 To 3

MatriceX2(i - 1, 0) = P(i - 1, 0) * X(i - 1, 0) + _
P(i - 1, 1) * X(i - 1, 0) + _
P(i - 1, 2) * X(i - 1, 0)


Cells(13 + i, 8) = MatriceX2(i - 1, 0)

Next i



End Function
 
Bonjour Alex,
Votre indice min de P est 1 et non 0.
Donc quand il y a P((i-1,0) avec i=1 il y a erreur.
En faisant :
VB:
MatriceX2(i - 1, 0) = P(i, 1) * X(i - 1, 0) + _
                      P(i, 2) * X(i - 1, 0) + _
                      P(i, 3) * X(i - 1, 0)
Il n'y a plus d'erreur.
Ce qu'on voit bien sur un point d'arrêt :
 
Comment peut-on afficher la matrice inverse ? J'ai encore une erreur d'indice
J'ai besoin de l'afficher car le produit matriciel entre l'inverse de P et X n'est pas bon

Function Pinv(Angle As Double) As Variant
Dim Matinverse() As Variant

'Calcule de la matrice iverse

Matinverse = Application.MInverse(Range("B27😀29"))

For i = 1 To 3
For j = 1 To 3

Cells(56 + i, 1 + j) = Matinverse(i - 1, j - 1)

Next j
Next i


Pinv = Matinverse


End Function
 
Re,
Donnez un fichier test. Je n'ai pas envie de me retaper encore un fichier utilisable.
Et utiliser les balises </> pour le code c'est plus lisible. ( à droite de l'icone GIF )
 
VB:
   Function Pinv(Angle As Double) As Variant
        Dim Matinverse() As Variant
        
        'Calcul de la matrice inverse
        
        Matinverse = Application.MInverse(Range("B27:D29"))
        
        For i = 1 To 3
            For j = 1 To 3
                                        
                 Cells(46 + i, 1 + j) = Matinverse(i - 1, j - 1)
                
            Next j
        Next i
        
        
        Pinv = Matinverse
    
    
    End Function

    
    Function Mat_X(Angle As Double) As Variant
        Dim MatIntX(3, 1) As Double
        
        'Détermination de la matrice X
        
        MatIntX(0, 0) = Cells(5, 8)
        MatIntX(1, 0) = Cells(6, 8)
        MatIntX(2, 0) = Cells(7, 8)
        
        Mat_X = MatIntX
    
    End Function
    
    
    Function Mat_ProdPX(Angle As Double) As Variant
    'M1M2 = P
    'X2 = X'
    
    'Initialisation
        Dim MatriceX2(3, 1) As Double
        Dim P As Variant
        Dim X As Variant
        Dim i, j As Integer
      
        
     'Calcule de X'=Pinv*X
    
        P = Pinv(Angle)
        X = Mat_X(Angle)
      
        
        For i = 1 To 3
        
                MatriceX2(i - 1, 0) = P(i, 1) * X(i - 1, 0) + _
                      P(i, 2) * X(i - 1, 0) + _
                      P(i, 3) * X(i - 1, 0)
            
                    
                Cells(13 + i, 8) = MatriceX2(i - 1, 0)
                
        Next i

    

    End Function

Comme cela ?
 

Pièces jointes

J'ai réussi à l'afficher mais je ne comprends pas pourquoi mon produit matriciel entre Pinv et Mat_X
VB:
MatriceX2(i - 1, 0) = P(i, 1) * X(i - 1, 0) + _
                      P(i, 2) * X(i - 1, 0) + _
                      P(i, 3) * X(i - 1, 0)
Le problème vient surement d'ici mais je ne vois pas comment
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
11
Affichages
756
Réponses
0
Affichages
459
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…