V-cycle Multigrid Poisson Matlab实现伪代码

问题描述

问题:

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 (将#修改为@)