Bonjour le forum,
je cherche à déterminer la base canonique d'un polynôme avec m variables et de degré n. Je n'arrive pas à écrire la fonction qui me sort les diverses combinaisons possible.
Exemple de résultat attendu simple avec m = 3 et n = 2 :
x1 | x2 | x3 | x1² | x1x2 | x1x3 | x2² | x2x3 | x3²
La fonction que je cherche à écrire serait du genre : base(3, 2) = {(1.0.0)/(0.1.0)/(0.0.1)/(2.0.0)/(1.1.0)/.../(0.0.2)}
Je galère, vraiment aucune idée de comment l'écrire... une fonction récursive ? Bref si nue bonne âme peut me donner un coup de main je suis preneur
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Function base(ByVal m As Integer, ByVal n As Integer) As Variant Dim tuple() As Integer 'variable contenant le degré de chaque variable ReDim tuple(1 To m) Dim b As Variant 'variable de stockage des tuples dimB = Application.WorksheetFunction.MultiNomial(n, m) ReDim b(1 To dimB) For i = 1 To dimB ' ...le calcul du tuple que je misère à implémenter b(i) = tuple Next i base = b end function
letienne
EDIT: j'ai trouvé un code Python qui est censé faire ça mais je ne voit vraiment pas comment le transposer en vba...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 def base(m, n): b = ((),) for _ in range(m): b = (x + (y,) for x in b for y in range(n-sum(x)+1)) return b
Partager