我想首先用微分方程隐式定义正式幂级数的几个系数。
示例
sp.series(sp.tan(z), n = 8)
L = z^2 + z^2 L + z^4 L'
sympy
问题。如何计算ODE的正式幂级数解,而不是在初等函数方面明确求解它?
旁注。一些微分方程(偶数线性)仅在发散幂级数中有解,例如方程{{1}}。有趣的是要知道{{1}}是否支持这些方程式以及通常的方程式。
目前的问题是一个更简单的问题的续集。
Sympy: how to solve algebraic equation in formal power series?
答案 0 :(得分:3)
更新:已发布类似问题的答案here。我使用第二个答案而不是下面给出的答案。使用sympy标准函数的解决方案非常缓慢。
sympy-1.1.1
似乎(部分)可能。请务必先更新到相应的版本。我参考关于常微分方程的官方文档部分
http://docs.sympy.org/latest/modules/solvers/ode.html
我们可以使用方法dsolve
以及其他提示,要求将解决方案表示为正式的幂级数。这仅适用于某些类型的方程式。对于上面的等式,我们要求提供可能的提示类型。
>>> sp.classify_ode(equation)
('separable',
'1st_exact',
'1st_power_series',
'lie_group',
'separable_Integral',
'1st_exact_Integral')
继续问题中的示例,我们指定提示'1st_power_series'
和初始条件F(0) = 0
:
solution = sp.dsolve(equation, hint='1st_power_series', ics={F.subs(z,0):0})
display(solution)
问题1。如果我们想要更多术语,甚至说
n = 10
,该功能可以工作很长时间(通常,我希望在几秒钟内有20个系数)。组合地,可以为线性ODE写出非常快的重复。我不知道它是否在sympy
中实现。问题2。这项技术似乎并不适用于原始问题
L = z^2 + z^2 L + z^4 L'
中提到的Ricatti方程式。
如果有人知道更好的解决方案,我们热烈欢迎他!