pie title 语言分比
"Python":90
"C/C++":30
pie title 内容分比
"算法模型":90
"气候学":80
"数学,微分方程":50
"物理学":40
"环境学,温室效应":40
"热传递和辐射":30
如果因变量具有恒定的变化率:
$$ \frac{d y}{d t}=C $$
其中 C 是某个常数,您可以在 f 函数中提供微分方程,然后使用以下代码使用此模型计算答案。该代码假设 0 和 10 之间有 100 个均匀间隔的时间, y 的初始值为 6 ,变化率为 1.2 :
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
from ode_helpers import state_plotter
def f(t, y, c):
dydt = [c[0]]
return dydt
tspan = np.linspace(0, 10, 100)
yinit = [6]
c = [1.2]
sol = solve_ivp(lambda t, y: f(t, y, c),
[tspan[0], tspan[-1]], yinit, t_eval=tspan, rtol = 1e-5)
state_plotter(sol.t, sol.y, 1)
如果因变量的变化率是时间的函数,则可以轻松编码。例如,如果微分方程是某个二次函数,如下所示:
$$ \frac{d y}{d t}=\alpha t^2+\beta t+\gamma $$
您可以使用此模型通过以下代码计算答案,假设 y 的初始值 0 到 4 之间有 20 个均匀间隔的时间 𝑦 是 6,多项式由向量 [2, -6, 3] 定义:
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
from ode_helpers import state_plotter
def f(t, y, c):
dydt = np.polyval(c, t)
return dydt
tspan = np.linspace(0, 4, 20)
yinit = [6]
c = [2, -6, 3]
sol = solve_ivp(lambda t, y: f(t, y, c),
[tspan[0], tspan[-1]], yinit, t_eval=tspan, rtol = 1e-5)
state_plotter(sol.t, sol.y, 1)