有限差分法

计算科学 有限差分
2021-12-02 09:12:34

我正在关注http://www.paykin.info/irina/project_2.jsp 有限差分法上的文章。

这个怎么解读?如何将其转换为伪代码?

u(i,j+1)=2u(i,j)+(kh)2[u(i+1,j)2u(i,j)+u(i1,j)]u(i,j1)

假设 ff 给定值(我不确定值是否可能)。

Initial Condition:
u(i,0)=sin(i)
du(i,0)/dt=0

Boundary Condition:
u(0,j)=0
u(95,j)=0

dt=1
dx=5

t=5 时的结果是什么。

1个回答

LHS 上的项是变量在下一个时间步的值,即 (j+1),它取决于变量 u 在前一个时间步 j 和 (j-1) 的值。

伪代码可能是这样的:

初始化 u(i,j) 并使其等于 u(i,j-1)。

对于(除边界上的所有网格点),使用离散方程及时推进。

对于边界节点,使用边界条件。

如果我必须用 C 语言编写 i 从 0 到 N 不等,我可以这样写:

for (i = 0; i <= N; i++)
{
     if (i > 0 && i < N)
     {
          unew[i] = 2*u[i] + (dt/dx)*(dt/dx)*(u[i+1] - 2*u[i] + u[i-1]) - uold[i]
     }
     else
     {
         unew[i] = u[i]
     }
}

希望这可以帮助。如果仍有疑问,请随时提问。