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
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
A+
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