我正在关注http://www.paykin.info/irina/project_2.jsp 有限差分法上的文章。
这个怎么解读?如何将其转换为伪代码?
假设 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 时的结果是什么。
我正在关注http://www.paykin.info/irina/project_2.jsp 有限差分法上的文章。
这个怎么解读?如何将其转换为伪代码?
假设 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 时的结果是什么。
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]
}
}
希望这可以帮助。如果仍有疑问,请随时提问。