如何求解正规幂级数中的微分方程?

时间:2017-09-26 13:14:31

标签: sympy

我想首先用微分方程隐式定义正式幂级数的几个系数。

  

示例

sp.series(sp.tan(z), n = 8)

enter image description here

L = z^2 + z^2 L + z^4 L'

enter image description here

sympy

enter image description here

  

问题。如何计算ODE的正式幂级数解,而不是在初等函数方面明确求解它?

     

旁注。一些微分方程(偶数线性)仅在发散幂级数中有解,例如方程{{1}}。有趣的是要知道{{1}}是否支持这些方程式以及通常的方程式。

相关。

目前的问题是一个更简单的问题的续集。

Sympy: how to solve algebraic equation in formal power series?

1 个答案:

答案 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)

enter image description here

  

问题1。如果我们想要更多术语,甚至说n = 10,该功能可以工作很长时间(通常,我希望在几秒钟内有20个系数)。组合地,可以为线性ODE写出非常快的重复。我不知道它是否在sympy中实现。

     

问题2。这项技术似乎并不适用于原始问题L = z^2 + z^2 L + z^4 L'中提到的Ricatti方程式。

如果有人知道更好的解决方案,我们热烈欢迎他!