gpt4 book ai didi

algorithm - 求解 ODE 算法的有限差分法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:59 40 4
gpt4 key购买 nike

我正在尝试为有限差分法设计一种算法,但我有点困惑。所讨论的 ODE 是 y''-5y'+10y = 10x,其中 y(0)=0 且 y(1)=100。所以我需要一种方法来以某种方式获得将从关系中乘以“y_i”的系数:

enter image description here

然后将结果系数存储到一个矩阵中,这将是我将通过高斯-约当求解的系统的矩阵。问题归结为如何获得这些系数并将它们移动到矩阵中。我考虑过手动计算系数,然后只输入矩阵,但我需要对大小为 0.1、0.001 和 0.001 的步长执行此操作,因此这在此处确实不是一个可行的选择。

最佳答案

让我们假设 ODE 的更一般情况

c1 * y''(x) + c2 * y'(x) + c3 * y(x) + c4 * x = 0

有边界条件

y(0) = lo
y(1) = hi

你想为 x ∈ [0, 1] 求解此问题,步长为 h = 1/n(其中 n + 1 是样本数)。我们想要求解 yi = y(h * i)yi 的范围从 i ∈ [0, n]。为此,我们要求解一个线性系统

A y = b

每个内部 yi 都会施加一个线性约束。因此,A 中有 n - 1 行,n - 1 列对应于未知的 yi

要设置 Ab,我们只需在未知的 yi 上滑动一个窗口(我假设是从零开始的索引)。

A = 0  //the zero matrix
b = 0 //the zero vector
for i from 1 to n - 1
//we are going to create the constraint for yi and store it in row i-1

//coefficient for yi+1
coeff = c1 / h^2 + c2 / h
if i + 1 < n
A(i - 1, i) = coeff
else
b(i - 1) -= coeff * hi //we already know yi+1

//coefficient for yi
coeff = -2 * c1 / h^2 - c2 / h + c3
A(i - 1, i - 1) = coeff

//coefficient for yi-1
coeff = c1 / h^2
if i - 1 > 0
A(i - 1, i - 2) = coeff
else
b(i - 1) -= coeff * lo //we already know yi-1

//coefficient for x
b(i - 1) -= c4 * i * h
next

关于algorithm - 求解 ODE 算法的有限差分法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55553393/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com