Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

calcul sur des matrices de nombres complexes: Pb de type

4 réponses
Avatar
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. :-)

A++,
Matt.

4 réponses

Avatar
Sylfanie
Bonjour,

tu peux déclarer un tableau de type cplx

dim A(2,2) as cplx
...

Cdt.
Stéphane.
Avatar
matt59
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 ???

Merci encore,
Matt.


Bonjour,

tu peux déclarer un tableau de type cplx

dim A(2,2) as cplx
....

Cdt.
Stéphane.


Avatar
Sylfanie
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.

Avatar
matt59
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


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.