常微分方程
常微分方程(ODE)可用于描述动态系统。 从某种程度上来说,我们生活在一个动态系统中,窗外的天气从黎明到黄昏都在变化,我们体内发生的新陈代谢也是一个动态系统,因为随着时间的推移,成千上万的反应和分子被合成和降解。
更正式地说,如果我们定义一组变量,比如一天的温度,或者某个时间点X分子的数量,并且它随着自变量的变化而变化(在动态系统中,通常是时间t) 。 ODE 为我们提供了一种以数学方式描述定义变量动态变化的方法。 与之相反的系统称为静态系统,想象一下拍一张外面的照片,这张快照不包含任何动态,换句话说,它是静态的。
求解常微分方程意味着确定变量如何随着时间的推移而变化,解有时称为解曲线(如下图所示),为任何动态系统的默认行为提供信息预测。
方程式
这里我首先介绍一些术语,读者可以从中受益。常微分方程 (ODE) 看起来像这样:
d
R
d
t
=
k
0
+
k
1
S
−
k
2
R
\frac{d R}{d t}=k_0+k_1 S-k_2 R
dtdR=k0+k1S−k2R
这是一个涉及导数的方程,但方程本身没有偏导数。 换句话说,我们只考虑一个自变量,即时间 t。 当我们有多个自变量进来时,它就变成偏微分方程(PDE),这不属于本文的讨论范围。
∂
2
μ
∂
x
2
+
∂
2
μ
∂
y
2
=
0
\frac{\partial^2 \mu}{\partial x^2}+\frac{\partial^2 \mu}{\partial y^2}=0
∂x2∂2μ+∂y2∂2μ=0
在 ODE 中,如果包含因变量的项(在上述情况下为变量 R,包含 R 的项包括 dR/dt 和 k2R)的系数与 R 无关,则该 ODE 被视为线性 ODE。 为了说明这一点,让我向您展示一个非线性 ODE 作为比较:
R
d
R
d
t
=
k
0
+
k
1
S
−
k
2
R
R \frac{d R}{d t}=k_0+k_1 S-k_2 R
RdtdR=k0+k1S−k2R
可以看到,现在dR/dt的系数为R,这违反了线性ODE的定义,因此变成了非线性ODE。
最后一对术语,如果变量的导数与自变量(这里是时间t)无关,我们称它们为自治ODE,否则,它成为非自治ODE。同样,非自治 ODE 如下所示:
d
R
d
t
=
k
0
t
+
k
1
S
×
t
−
k
2
R
\frac{d R}{d t}=k_0 t+k_1 S \times t-k_2 R
dtdR=k0t+k1S×t−k2R
现在你可以看到时间 t 位于右侧,因此它是一个非自治 ODE。
求解 S 形信号响应曲线
d R p d t = k 1 S ( R T − R P ) k m 1 + R T − R P − k 2 R P k m 2 + R P \frac{d R_p}{d t}=\frac{k_1 S\left(R_T-R_P\right)}{k_{m 1}+R_T-R_P}-\frac{k_2 R_P}{k_{m 2}+R_P} dtdRp=km1+RT−RPk1S(RT−RP)−km2+RPk2RP文章来源:https://www.toymoban.com/news/detail-789368.html
from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
def model(Rp,t,S):
k1 = 1
k2 = 1
Rt = 1
km1 = 0.05
km2 = 0.05
dRpdt = (k1*S*(Rt-Rp)/(km1+Rt-Rp)) - k2*Rp/(km2+Rp)
return dRpdt
d R p d t = 0 k 1 S ( R T − R P ) k m 1 + R T − R P − k 2 R P k m 2 + R P = 0 \begin{gathered} \frac{d R_p}{d t}=0 \\ \frac{k_1 S\left(R_T-R_P\right)}{k_{m 1}+R_T-R_P}-\frac{k_2 R_P}{k_{m 2}+R_P}=0 \end{gathered} dtdRp=0km1+RT−RPk1S(RT−RP)−km2+RPk2RP=0文章来源地址https://www.toymoban.com/news/detail-789368.html
S_all = np.linspace(0,3,100)
def equation(Rp,S):
k1 = 1
k2 = 1
Rt = 1
km1 = 0.05
km2 = 0.05
return k1*S*(Rt-Rp)/(km1+Rt-Rp) - k2*Rp/(km2+Rp)
from scipy.optimize import fsolve
store = []
for S in S_all:
Rp_ss = fsolve(equation,[1],args=(S,))[0]
store.append(Rp_ss)
Python常微分方程求解器
Python符号计算求解常微分方程
Julia常微分方程求解器
TensorFlow神经常微分方程
时滞微分方程
求解时滞微分方程及其系统的两种数值方法
使用 Lambert W 函数求解一阶时滞微分方程方法
项目:
- 平面常系数线性齐次动力系统分析仪
- 利用 Hartman-Grobman 定理分析平面上非线性自主动力系统
参阅一:亚图跨际
参阅二:亚图跨际
到了这里,关于Python和Julia TensorFlow科学计算常微分方程求解器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!