fast sweeping method

来源:互联网 发布:软件增值税率 编辑:程序博客网 时间:2024/06/11 08:43

对于一类H-J方程,可运用FSM进行求解

扫描顺序:

 for(sx=-1;sx<=1:s1+=2)

     for(sy=-1;sy<=1;sy+=2)

        for(i=(sx<0?nx:0);(sx<0?i>=0:i<=nx);i+=sx)

            for(j=(sy<0?ny:0);sy<0?j>=0:j<=ny;j+=sy)

对所有网格节点上的函数值φ,进行a,b,c三个步骤的搜索,在搜索过程中,当si>0时,每个节点函数值的搜索顺序是从小到大;si<0则从反向搜索(i=x,y)。

 

算法具体思路:

%所有节点的φ(i,j)同时进行

while (fai(n).-fai(n-1).<derta);

% n=1时

% 先将每个节点处的φ(i,j)赋予一个极大值A

phi=A*zeros[nx,ny];

for n=1:1:max

   for sx=-1:1:2

       for sy=-1:1:2

           A=[sx,sy];

           H(p(sx,sy),q(sx,sy))=r(i,j)

% a 二维条件下先进行(sx,sy)=(-1,1),(-1,-1),(1,-1),(1,1)的运算,

% 利用控制条件for(i=(sx<0?nx:0);(sx<0?i>=0:i<=nx);i+=sx)

%            for(j=(sy<0?ny:0);sy<0?j>=0:j<=ny;j+=sy)

% 按顺序将φ(i,j)依次带入到H中解得φtmp,并且令M=φtmp-min(φ(i-sx,j),φ(i,j+sy))

% 建立逻辑等式TG1,TG2

% TG1=1&&TG2=1&&M>=0,φtmp=φ

% 将计算得到的φ存入列表phi_candidate中

% b 进行(sx,sy)=(1,0),(-1,0)即在x方向上进行搜索

% for sx=-1:0:1,sy=0

% 进行与a类似的运算

% 将计算得到的φ存入列表phi_candidate中

% c 进行(sx,sy)=(0,1),(0,-1)即在y方向上进行搜索

% for sx=0,sy=-1:0:1

% 进行与a类似的运算

% 将计算得到的fai存入列表phi_candidate中

A=[];

A=[;phi]

% phi为a,b,c中每次迭代算出的φ值

% 取列表phi_candidate中φ的最小值,使得φmin=φ(n),然后清空列表。

0 0