9
votes

Utilisez le modèle pour collecter des termes en mathématica

avec Mathematica, je voudrais collecter des termes à partir de (1 + a + x + y) ^ 4 en fonction des exposants de x et y , donc xxx

le Mathematica aide a un bel exemple que j'ai essayé d'imiter: xxx

ceci collecte les termes dérivés du même ordre (et le même argument de F)

Quelqu'un peut-il expliquer pourquoi l'imitation suivante ne fonctionne pas? xxx

donne xxx

Toute suggestion pour un solution?


0 commentaires

5 Réponses :


4
votes

collecter code> est une opération structurelle, vous devez donc développer d'abord.

Collect[(1 + a + x + y)^4 // Expand, x^_ y^_]


0 commentaires

12
votes

Selon Sasha , vous devez Développer le polynôme Pour utiliser Collect . Cependant, même ce n'est pas si simple de problème. Utilisation de Collecter Vous pouvez grouper par deux variables, mais cela dépend de la façon dont vous les commandez: xxx

qui tire tout facteur commun de x résultant de coefficients qui sont des polynômes dans y . Si vous avez utilisé {y, x} à la place, collecte sortirait les facteurs communs de y et que vous auriez des polynômes dans x .

Alternativement, vous pouvez fournir un motif, x ^ _ y ^ _ au lieu de {x, y} , mais au moins en v.7 , cela ne collecte rien. Le problème est que le modèle x ^ _ y ^ _ nécessite un exposant à présent, mais dans des termes tels que xy ^ 2 et x ^ 2 y L'exposant est implicite dans au moins une des variables. Au lieu de cela, nous devons spécifier qu'un valeur par défaut est acceptable, c'est-à-dire utiliser x ^ _. y ^ _. qui donne xxx

mais, ceci ne collecte que des termes où les deux variables sont présentes. Honnêtement, je ne peux pas sembler trouver un modèle qui ferait une fonction collecter comme vous le souhaitez, mais j'ai trouvé une alternative.

J'utiliserais coefficientrules à la place, bien que ce ne soit nécessite un peu de post-traitement pour remettre le résultat dans une forme polynomiale. En utilisant votre polynôme, vous obtenez xxx

maintenant, si vous êtes uniquement intéressé par les coefficients eux-mêmes, vous avez terminé. Mais, pour transformer cette ramasse dans un polynôme, j'utiliserais xxx

modifier : après y penser, il y a une simplification de plus qui peut être terminé. Étant donné que les coefficients sont des polynômes dans A , ils peuvent être facomptables. Ainsi, au lieu d'utiliser ce que coefficientrules donne directement, nous utilisons facteur pour simplifier: xxx

comme on peut le voir, Les coefficients sont considérablement simplifiés en utilisant facteur , et ce résultat aurait pu être anticipé en pensant à (1 + a + x + y) ^ 4 comme un simple trinôme avec des variables (1 + a) , x et y . Avec cela à l'esprit et en remplaçant 1 + a avec z , coefficientrules donne: xxx < p> ou, sous forme polynomiale xxx

lequel lorsque vous remplacez z avec (1 + a) donne la pièce identique Résultat indiqué dans out [5] .


0 commentaires

4
votes

Ceci fonctionne: xxx

Vous pouvez également utiliser par défaut comme suggéré par rcollyer : xxx


0 commentaires

1
votes

Cela peut être ce que vous recherchez

In[1]:= TraditionalForm[Collect[(1 + a + x + y)^4 // Expand, {x, y}], 
         ParameterVariables :> {a}]

Out[1]:= x^4+x^3 (4 y+4 a+4)+x^2 (6 y^2+(12 a+12) y+6 a^2+12 a+6)+
         x (4 y^3+(12 a+12) y^2+ (12 a^2+24 a+12) y+4 a^3+12 a^2+12 a+4)+
         y^4+(4 a+4) y^3+(6 a^2+12 a+6) y^2+(4 a^3+12 a^2+12 a+4) y+
         a^4+4 a^3+6 a^2+4 a+1


0 commentaires

2
votes

plus @@ monomialliste [((1 + a + x + y) ^ 4, {x, y}]


0 commentaires