📚旁征博引

气候模型

🎯要点

  1. 根据温室模型,计算不同情景下辐射通量和评估能量平衡,构建复杂温室模型计算
  2. 计算和绘图大气、海洋、陆地表面和海冰复合模型数据
  3. 建立简单能量平衡情景模型,并根据模型计算释放温度和时滞,计算并绘制地面辐射和吸收光谱
  4. 计算和模拟非散射辐射传输,求解史瓦西微分方程

🍪语言内容分比

pie title 语言分比
 "Python":90
 "C/C++":30
pie title 内容分比
 "算法模型":90
 "气候学":80
 "数学,微分方程":50
 "物理学":40
 "环境学,温室效应":40
 "热传递和辐射":30

✂️梗概

🍇Python微分方程

如果因变量具有恒定的变化率:

$$ \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)