calcul sur des matrices de nombres complexes: Pb de type
4 réponses
matt59
Bonjour à tous,
je cherche à éffectuer des calcul sur des matrices (2x2 dans un premier
temps) dont les éléments sont des nombres complexes.
Le but étant d'écrire les fonctions sur ces matrices, j'aimerai définir un
type qui soit un tableau (2x2) de complexes, mais je ne vois pas comment
faire.
Alors pour l'instant je me suis rabattu sur une autre notation (mais
beaucoup plus lourde à mettre en oeuvre, surtout si la taille des matrices
vient à augmenter):
Type cplx
x as double
y as double
End Type
Type mtrxcplx
m11 as cplx
m12 as cplx
m21 as cplx
m22 ass cplx
End Type
Function MtrxAdd(A as mtrxcplx, B as mtrxcplx) as mtrxcplx
MtrxAdd.m11.x = A.m11.x + B.m11.x
MtrxAdd.m11.y = A.m11.y + B.m11.y
MtrxAdd.m12.x = A.m12.x + B.m12.x
MtrxAdd.m12.y = A.m12.y + B.m12.y
...
End Function
Ce que j'aurai préféré c'est:
Function MtrxAdd(A as mtrxcplx, B as mtrxcplx) as mtrxcplx
For i=1 to 2
For j=1 to 2
MtrxAdd(i,j).x = A(i,j).x + B(i,j).x
MtrxAdd(i,j).y = A(i,j).y + B(i,j).y
Next j
Next i
End Function
Si quelqu'un peut m'aiguiller, ou m'expliquer une meilleure façon de
procéder, ça serait sympa. :-)
J'avais déjà pensé faire cela mais j'étais confronté à un autre problème: comment définir le type d'argument retourné par les fonctions (étant donné qu'il n'existe pas de type mtrxcplx)? Function CplxAdd(A() as cplx, B() as cplx) as ???
Merci encore, Matt.
Bonjour,
tu peux déclarer un tableau de type cplx
dim A(2,2) as cplx ....
Cdt. Stéphane.
Merci Sylfanie pour cet élément de réponse.
J'avais déjà pensé faire cela mais j'étais confronté à un autre problème:
comment définir le type d'argument retourné par les fonctions (étant donné
qu'il n'existe pas de type mtrxcplx)?
Function CplxAdd(A() as cplx, B() as cplx) as ???
J'avais déjà pensé faire cela mais j'étais confronté à un autre problème: comment définir le type d'argument retourné par les fonctions (étant donné qu'il n'existe pas de type mtrxcplx)? Function CplxAdd(A() as cplx, B() as cplx) as ???
Merci beaucoup, j'ai essayé et ça marche Nickel... Je vais enfin pouvoir réécrire mon jeu de fonction d'une manière évolutive.
Ce que j'ai essayé: Type cplx x As Double y As Double End Type
Type mtrxcplx m(1 To 2, 1 To 2) As cplx End Type
Function MtrxAdd(A As mtrxcplx, B As mtrxcplx) As mtrxcplx For i = 1 To 2 For j = 1 To 2 MtrxAdd.m(i, j).x = A.m(i, j).x + B.m(i, j).x MtrxAdd.m(i, j).y = A.m(i, j).y + B.m(i, j).y Next j Next i End Function
A++, Matt.
"Sylfanie" wrote:
Function CplxAdd(A() as cplx, B() as cplx) as ???
as variant
Ou alors
..... Type Mtx Data() As cplx End Type
Function CplxAdd(A as Mtx, B as Mtx) as Mtx
Stéphane.
Voilà l'info qu'il me manquait!
Merci beaucoup, j'ai essayé et ça marche Nickel... Je vais enfin pouvoir
réécrire mon jeu de fonction d'une manière évolutive.
Ce que j'ai essayé:
Type cplx
x As Double
y As Double
End Type
Type mtrxcplx
m(1 To 2, 1 To 2) As cplx
End Type
Function MtrxAdd(A As mtrxcplx, B As mtrxcplx) As mtrxcplx
For i = 1 To 2
For j = 1 To 2
MtrxAdd.m(i, j).x = A.m(i, j).x + B.m(i, j).x
MtrxAdd.m(i, j).y = A.m(i, j).y + B.m(i, j).y
Next j
Next i
End Function
Merci beaucoup, j'ai essayé et ça marche Nickel... Je vais enfin pouvoir réécrire mon jeu de fonction d'une manière évolutive.
Ce que j'ai essayé: Type cplx x As Double y As Double End Type
Type mtrxcplx m(1 To 2, 1 To 2) As cplx End Type
Function MtrxAdd(A As mtrxcplx, B As mtrxcplx) As mtrxcplx For i = 1 To 2 For j = 1 To 2 MtrxAdd.m(i, j).x = A.m(i, j).x + B.m(i, j).x MtrxAdd.m(i, j).y = A.m(i, j).y + B.m(i, j).y Next j Next i End Function