📗
Learning Advanced Mathematics with Python
  • 前言
  • 第一章:初步
    • 1.1 数据科学
    • 1.2 安装Python
    • 1.3 Python类库
    • 1.4 Anaconda
    • 1.5 Jupyter
    • 1.6 集成开发环境
  • 第二章:SymPy初步
    • 2.1 初识SymPy
    • 2.2 安装SymPy
    • 2.3 SymPy语法
  • 第三章:SymPy基础
    • 3.1 基本操作
    • 3.2 打印
    • 3.3 绘图
    • 3.4 基础数学
  • 第四章:微积分
    • 4.1 极限与连续
    • 4.2 微分
    • 4.3 积分
    • 4.4 常微分方程
    • 4.5 级数
    • 4.6 空间解析几何
    • 4.7 偏导数
    • 4.8 重积分
  • 第五章:线性代数
    • 5.1 矩阵与多项式
    • 5.2 线性方程与二次型
  • 第六章:概率论与统计学
    • 6.1 概率论与统计学基本表达式
    • 6.2 随机变量
    • 6.3 方差分析与回归分析
  • 第七章:偏微分方程
    • 7.1 辅助函数
    • 7.2 解偏微分方程
    • 7.3 偏微分方程分类
  • 总结
  • 拓展阅读
  • 习题
Powered by GitBook
On this page
  • 4.4.1 常微分方程的通解
  • 4.4.2 常微分方程的特解

Was this helpful?

Edit on GitHub
  1. 第四章:微积分

4.4 常微分方程

sympy提供了sympy.ode.dsolve()函数用来求解常微分方程。

dsolve()函数的用法如下:

sympy.solvers.ode.**dsolve**(*eq*, *func=None*, *hint='default'*,
*simplify=True*, *ics=None*, *xi=None*, *eta=None*, *x0=0*, *n=6*,
*kwargs*)

其中, eq可以使任意支持的常微分方程,它可也是一个等式,也可以是一个表达式。当eq是一个表达式时,假设它等于0。

func为一个变量的函数,其在该变量中的导数构成常微分方程eq。它将被自动检测(如果无法检测,则会引发一个错误)。

hint是您希望dsolve使用的求解方法。使用classify_ode(eq, f(x))获取ODE的所有可能提示。默认提示default将使用classify_ode()首先返回的任何提示。

simplify通过odesimp()实现简化。有关更多信息,请参见它的文档字符串。例如,关闭此选项可禁用对func的求解或任意常数的简化。它仍然会与这个提示相结合。注意,如果启用此选项,解决方案可能包含比ODE的顺序更多的任意常数。

xi和eta是常微分方程的无穷小函数。它们是微分方程不变的点变换李群的无穷小。用户可以为无穷小指定值。如果没有指定任何值,则使用infinitesimals()在各种启发式的帮助下计算xi和eta。

ics是微分方程的一组初始/边界条件。它应该以{f(x0): x1, f(x).diff(x)的形式给出。subs(x, x2): x3}等等。对于幂级数溶液,如果没有指定初始条件,则假定f(0)为C0,幂级数解的计算值为0左右。

x0是求微分方程幂级数解的点。

n给出因变量的指数,在此之前,微分方程的幂级数解将被求值。

下面让我们通过两个例子来对常微分方程的求解方法进行讲解.

4.4.1 常微分方程的通解

例:求y′+xy=0y' + xy = 0y′+xy=0的通解。

在本例中,直接在dsolve()函数中传入待求常微分方程以及希望求解的函数,即可求得该常微分方程的通解。

[]:y=Function('y')

dsolve(Eq(diff(y(x),x)+x\*y(x)), y(x))

4.4.2 常微分方程的特解

例:求方程y′′+2y′+3y=0y'' + 2y' + 3y = 0y′′+2y′+3y=0满足初始条件y(0)=0,y′(0)=1y(0)=0, y'(0) = 1y(0)=0,y′(0)=1的全部解。

在本例中,我们使用前面所述的方法求得该常微分方程的通解:

[]:dsolve(Eq(y(x).diff(x,x)+2\*y(x).diff(x)+3\*y(x)), func=y(x))

为了求得该方程在初始条件下y(0)=0,y′(0)=1y(0)=0, y'(0)=1y(0)=0,y′(0)=1的特解,需要额外指定两个超参数:ics,以及n。其中ics以集合的形式接收常微分方程的初始条件,n为因变量的指数。在本例中,ics={y(0): 0, y(x).diff(x).subs(x, 0): 1}, n=2。

[]:dsolve(Eq(y(x).diff(x,x)+2\*y(x).diff(x)+3\*y(x)), func=y(x),

ics={y(0): 0, y(x).diff(x).subs(x, 0): 1}, n=2)
Previous4.3 积分Next4.5 级数

Last updated 2 years ago

Was this helpful?

[]:

[]:

[]: