问题描述
问题:
function vnew=mgVcycle(vold,f,alpha1,alpha2,omega,Nmin,N,smoother)
这是 V-cycle 实现,代码的核心部分。您的实现应该基于递归实现。
在这个例程中,你会先在当前层做松弛,它有NxN个内部点,然后递归调用 下一层,有 (N-1)/2 x (N-1)/2 个内部点,然后是粗网格校正和另一个松弛。
vold 是 V-cycle 之前当前级别的近似值,vnew 是 V-cycle 之后的新近似值。 f 是当前层的右侧(记住,在所有层上,除了最细的层,这是残差向量)。
alpha1 和 alpha2 是松弛前和松弛后的数量。 Omega 是加权雅可比松弛的权重。
如果 N
伪代码
以下是我对伪代码的解释:
if smoother == 1
Do weighted jacobi alpha1 times on A,vold,omega to get vnew
if length(vnew) == (N-1)/2 %coarse grid
Do weighted jacobi alpha 2 times on A,omega to get vnew
else
create restriction matrix
f2h = restriction matrix * error
find V2h = by running mgVcycle with error
elseif smoother == 2
Do gauss alpha 1 times on A,f to get vnew
if length(vnew) == (N-1)/2 %coarse grid
Do gauss alpha 2 times on A,f to get vnew
else
create restriction matrix
f2h = restriction matrix * error
find V2h = by running mgVcycle with error
end
end
任何帮助将不胜感激!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)