Python解微分方程组
近期在解决一组微分方程的问题,所以需要使用Python
编程。首先介绍一下编程的相同原理:
任何程序都有一些已经编译好的,完成通用功能的部分,也就是说当你解决问题时要实现某些功能,这些功能已经内置于现有语言中,不需要作者再独立编写。比如在LaTeX
中在导言引入宏包
,
这些宏包定义了一些命令,不需要作者再自己定义了。Python
中引入一些库
,
这里的库和LaTeX
中的宏包本质上是同一个东西,就是一些已经实现了的功能模块,将其加入到所写的程序中即可。对于高级玩家,还可以添加自己定义的一些特殊需求的模块,几乎所有的语言都是这个模式。
对于Python
, 其常用的一些库,可以参考文章: 38个常用Python库:数值计算、可视化、机器学习等8大领域都有了,
直接上我写的一组代码:
1 |
|
这里需要解释的是关于高阶微分的定义,代码如下
1 | def fun_new(y, t, a, b): |
- 第2行,f是一个函数,df是函数的一次微分, g 是另一个函数, dg 是函数的另一个微分
- 第4行,使用一个数组存存数据,第1列为, df 表示函数 f 的微分,第2列是 df 的微分(也就是 f 的二阶导数), 第3列是 g 的微分, 第4列是 dg 的微分(也就是 g 的二阶导数)
- 第5行,一个 1X 4 数组,为
plt
绘图提供数据。
1 | y0=[0,-0.36012, 1, 0] |
- 第1行,定义初值,当然这里的初值应当根据物理情景提出。
- 第2行,使用
arange
命令,生成自变量,步长取为-0,001
, 这个会向前取值,同理步长取为正,则会向后生成自变量离散值。 - 第3行, 使用
odeint
代入自变量及参数后生成由fun_new
构成的数组,这个数组和自变量的离散数一样多,然后再使用plt
据这些数据绘图。