我正在尝试使用两个for循环填充矩阵。内循环应该计算一行(空间中的点),外循环应该计算空间中每个点的下一个时间点。我不知道如何用每个新计算的行填充我最初制作的空白矩阵。这是我的代码:
L=100 #[m]
S=0.01
n=0.0036 #[s/m^1/3]
train=720 #[s]
qrain=0.0000027 #[m/s]
t=3600 #[s]
dx=10 #[m]
dt=0.01 #[s]
N=1/dt
h=matrix(,nrow=N*t,ncol=10)
h[1,]=0
for (j in 1:nrow(h)) {
if(j<(train/dt)) q=qrain
else q=0
for (i in 1:ncol(h)) {
h[i,j+1]=h[i,j]-(dt*S/n)*((h[(i+1),j]^(5/3)-h[i,j]^(5/3))/dx)+q
}
v=matrix(((S^0.5)/n)*(h^(2/3)),nrow=nrow(h),ncol=ncol(h))
}
q=matrix(v*h,nrow=nrow(h),ncol=ncol(h))
以这种方式写我的等式是否有效?我还希望整个第一行h [1,]为零,并且它只想使h [1,1]为0.不确定我是否遗漏了明显的东西。在此先感谢您的帮助! (这是我在这里的第一篇文章)。