我可以使用SymPy(diff(x,2)
)求解二阶微分方程,但是使用4阶方程式(diff(x,4)
)却会出错。我究竟做错了什么?
我使用SymPy尝试了
from sympy import *
x = symbols('x', real=True)
ă = symbols('ă', real=True,positive=True)
w = symbols('w', cls=Function)
eq=w(x).diff(x,2) +ă**2*w(x)
print("w=",dsolve(eq).rhs)
eq=w(x).diff(x,4) +ă**2*w(x).diff(x,2)
print("w=",dsolve(eq).rhs)
得到
NotImplementedError: CRootOf is not supported over ZZ[ă]
{w[x] == (Cos[x ă] Subscript[c, 1])/ă^2 + (Sin[x ă] Subscript[c, 2])/ă^2 + Subscript[c, 3] + x Subscript[c, 4]}
答案 0 :(得分:0)
您没有做错任何事情。 NotImplementedError表示SymPy无法处理您要求解的方程式。在这种情况下,问题出在多项式模块中,该模块在某种程度上与具有符号系数t**4 + f**2*t**2 = 0
的方程f
挣扎。确实应该能够处理...作为此特定方程式的解决方法,将符号系数ƒÉ替换为数字(例如7)是可行的。
print(dsolve(eq.subs(ă, 7), w(x)).rhs.subs(7, ă))
打印C1 + C2*x + C3*sin(x*ƒÉ) + C4*cos(x*ƒÉ)
。
当然,如果将7与其他数字组合成14或其他值,这很容易出错。但这在这里有效。