我用枫木上的有限差分方法用neumman边界条件求解1d热方程但是我的代码没有用,请你们中的任何人建议我在枫树上用这个方程更好的代码..
重新启动; 与(LinearAlgebra); FX:= 1; FT:= 0.5e-1; M:= 5; N:= 5; M1:= M-1; H:= FX / M; K:= FT / N; c:= 1; r:= c ^ 2 * K / H ^ 2;
循环初始条件;
for i to M1 do V [i,0]:= cos(Pi * i * H)end do;
边界条件的循环;
对于j到N做V [-1,j]:= V [1,j] end do; 对于j到N做V [M + 1,j]:= V [M-1,j]结束做;
离散方程的循环;
对于从0到N-1的j对于i到M-1做v [i,j + 1]:=(1-2 * r)* V [i,j] + r * V [i- 1,j] + r * V [i + 1,j] end do end do;
请朋友们告诉我为什么我的最后一个循环没有执行。
答案 0 :(得分:1)
枫树非常微妙。循环正在执行 - 它只是不打印结果。每个级别的语句嵌套都会在语句的“printlevel”中添加一个。输入过程会将5添加到包含过程的printlevel。交互式会话为0级。只有当printlevel小于或等于默认为1的全局变量printlevel时,才会打印语句结果。要查看循环执行,请尝试
printlevel := 4;
最多可打印4个嵌套级别,但不打印任何过程调用。有关详细信息,请参阅?printlevel。
另外,您可能希望evalf cos调用以确保获得浮点值。