我正在研究 Villadsen & Michelsen (1978) 的书中第 3 种半隐式 Runge Kutta 方法 (siRK3) 的实现,通过多项式近似求解微分方程模型,Prentice-Hall。
该代码需要一个分析评估的雅可比矩阵。在计算新函数值时,矩阵通过覆盖雅可比矩阵 (array ) 使用的存储来组装:df
do i = 1, n
do j = 1, n
df(i,j) = -h * a * df(i,j)
if (abs(df(i,j)) < DF_TOL) df(i,j) = 0.0_dp
end do
df(i,i) = df(i,i) + 1.0_dp
end do
在原始代码中,DF_TOL = 1.0d-12. 然后执行矩阵的 LU 分解,df并通过反向代入计算新的函数值。
截断雅可比矩阵值的目的是什么,为什么选择这个特定的截止值?是否需要这种类型的截断?