Mon objectif principal est d'identifier les coefficients devant exponentielles de la formesympy - comment combiner additivement les exposants lors de l'expansion?
exp(1j*k*r)
dans des expressions telles que:
(z1*exp(1j*k1*r1) + z2*exp(1j*k2*r2) + c.c.)**2
par la première expansion, puis en utilisant l'outil coeff dans sympy. Le problème est que je ne sais pas comment développer de telle manière que nous pouvons rassembler les exposants de façon additive. Je voudrais voir ce terme:
exp(1j*(k1*r1+k2*r2))
mais seulement ce genre de terme apparaît:
exp(1j*k1*r1)*exp(1j*k2*r2)
Voici mon code:
from sympy import *
u = Symbol('u')
r1,r2 = symbols('r1 r2', real = True)
k1,k2 = symbols('k1 k2', real = True)
z1,z2 = symbols('z1 z2')
uu = z1*exp(1j*k1*r1)+ z2*exp(1j*k1*r2)
u = uu + uu.conjugate()
v = expand(u**2)
print(v)
Je ne peux pas comprendre comment faire il. J'ai essayé d'utiliser simplifier, ou considérer la chose comme un polynôme avec des coefficients symboliques, mais cela n'a pas fonctionné.
Plus généralement, est l'expansion, puis en utilisant la méthode coeff la meilleure façon d'extraire des coefficients en face des exponentielles? Y a-t-il un outil automatisé qui le fait déjà?
Nous vous remercions de votre aide!
EDIT:
J'ai aussi essayé d'utiliser powsimp avec cette partie de code:
w = powsimp(expand(u**2))
print(w.coeff(exp(1j*(k1*r1 + k2*r2))))
retourne 0 parce que nous obtenons seulement
exp(1j*k1*r1 + 1j*k2*r2)
, mais il ne suffit pas lors de l'application coeff méthode pour extraire l'exposant 1j * (k1 * r1 + k2 * r2).