用python的scipy中的odeint来解常微分方程中的一些细节问题(适用于小白)

用python的scipy中的odeint来解常微分方程中的一些细节问题(适用于小白)

写在前面

最近有些需要解决常微分方程的问题,网上查了很多教程都不是很明晰,便自己研究了一段时间,写一点小白初次接触这个方法应该如何理解,有哪些需要注意的点。
odeint在官网的参数很多,如下所示:

scipy.integrate.odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, ml=None, 
mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, 
mxhnil=0, mxordn=12, mxords=5, printmessg=0, tfirst=False)

我们这次简单点只使用前三个参数scipy.integrate.odeint(func, y0, t),如果想了解更多,其他教程应该有更详细的教学,这里只说一点最简单的原理和注意事项。

  • 第一个参数是我们自行定义的需要求解的微分方程的函数
  • 第二个参数代表求解的微分方程的初值,没有初值微分方程的解不能唯一确定
  • 第三个参数是求解的微分方程中的自变量,应该是一个连续的序列值

我们必须明确,求解微分方程最终我们得到的是一个关于自变量的函数,而不是一个值。

在此我们说一点基础的数学知识点,对于一个函数,比如
y = 4 x 3 + 100 y=4x^3+100 y=4x3+100
我们对它求导得到:
y ′ = 12 x 2 y'=12x^2 y=12x2
那么对应的,求解第二个微分方程就能得到第一个方程吗?
答案是否定的,因为对第二个导数式子积分,得到的是:
y = 4 x 3 + a ( 常 数 ) y = 4x^3 + a(常数) y=4x3+a()
只有求解出常数a,才能唯一确定一个微分方程的解;否则我们得到的是一系列相差常数的解

官网例子说明

odeint的官网里面有个具体的例子,我们拿出来讲一讲,
θ ′ ′ ( t ) + b ∗ θ ′ ( t ) + c ∗ s i n ( θ ( t ) ) = 0 \theta''(t) + b*\theta'(t) + c*sin(\theta(t)) = 0 θ(t)+bθ(t)+

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值