sympy collect返回dict,无法使用key访问

2024-10-02 00:36:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Collect函数来分离一些术语。 它返回一个Dict,我无法使用给定的键访问它。举个例子:

import sympy as sp
t = sp.Symbol('t')
K1,K2,K3,K4 = sp.symbols("K1 K2 K3 K4")
W,R,L,C = sp.symbols("omega R L C")
Vi_t = 10*sp.cos(W*t)
Vi_yp_t = (1/L)*sp.diff(Vi_t,t)
Yp = K3*sp.cos(W*t)+K4*sp.sin(W*t)
dYp = sp.diff(Yp,t)
d2Yp = sp.diff(dYp,t)
malha = d2Yp +(R/L)*dYp + (1/L*C)*Yp
malha_separada = sp.collect(malha,(sp.sin(W*t),sp.cos(W*t)),evaluate=False)

打印此项可提供: Copy/Paste here won't work well

我可以用malha_separada[1]访问密钥“1”,但是我用sin(omega*t)进行的任何尝试都会导致密钥错误。 符号,W,/ω。。。 有什么想法吗?你知道吗


Tags: diffk2k1sincosspvisymbols
1条回答
网友
1楼 · 发布于 2024-10-02 00:36:11

必须使用sp.cos(W*t)sp.sin(W*t)

import sympy as sp
t = sp.Symbol('t')
K1,K2,K3,K4 = sp.symbols("K1 K2 K3 K4")
W,R,L,C = sp.symbols("omega R L C")
Vi_t = 10*sp.cos(W*t)
Vi_yp_t = (1/L)*sp.diff(Vi_t,t)
Yp = K3*sp.cos(W*t)+K4*sp.sin(W*t)
dYp = sp.diff(Yp,t)
d2Yp = sp.diff(dYp,t)
malha = d2Yp +(R/L)*dYp + (1/L*C)*Yp
malha_separada = sp.collect(malha, (sp.sin(W*t), sp.cos(W*t)), evaluate=False)
print(malha_separada[1])
print(malha_separada[sp.cos(W*t)])
print(malha_separada[sp.sin(W*t)])

输出:

C*(K3*cos(omega*t) + K4*sin(omega*t))/L + R*(-K3*omega*sin(omega*t) + K4*omega*cos(omega*t))/L
-K3*omega**2
-K4*omega**2

相关问题 更多 >

    热门问题