numpy 使用symony解决二阶DE,试图解决常数,有麻烦让symony认识到一个符号ahs已解决

erhoui1w  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(119)
def A1_A2slvr():
    if(ωSquared > αSquared):
        print("Underdamped")
        ωD = math.sqrt(ωSquared - αSquared)
        α = math.sqrt(αSquared)
        e = math.e
        t = sp.symbols('t')
        A1 = sp.symbols('A1')
        A2 = sp.symbols('A2')

        #solving for constants A1 and A2
        VofT = (e**(-α*t)*(A1*sp.cos(ωD*t) + A2*sp.sin(ωD*t)) + vFinal)
        simpVofT = VofT.subs(t, 0).simplify()
        print(simpVofT)

        DVofT = sp.diff(VofT, t)
        simpDVofT = DVofT.subs(t, 0).simplify()
        print(simpDVofT)

        A1 = sp.solve(simpVofT, A1)
        A2 = sp.solve(simpDVofT, A2)
        print(A1[0])
        print(A2[0])

字符串
这是我的函数。A1[0]返回-0.1,但A2[0]返回1.33*A1。我如何让python识别A1已经求解,以便A2[0]返回数字/浮点数。
我试过使用Aidify来使它成为一个numpy表达式,它会因为A1不是一个符号表达式而生气。我试过使用subs,但它会因为我试图替换一个float而生气。任何帮助都会非常感激。

1szpjjfi

1szpjjfi1#

我无法执行您的代码,但我怀疑您需要将A1解决方案插入simpDVofT,然后求解A2,如下所示:

A1_sols = sp.solve(simpVofT, A1)
A2_sols = sp.solve(simpDVofT.subs(A1, A1_sols[0]), A2)
print(A1_sols[0])
print(A2_sols[0])

字符串

相关问题