随机游走问题的神奇应用(二)

变概率椭圆型方程的第一边值问题的随机游走求解

一.问题的提出

a ( P ) ∂ 2 u ∂ x 2 + b ( P ) ∂ 2 u ∂ y 2 + c ( P ) ∂ u ∂ x + d ( P ) ∂ u ∂ y + e ( P ) u ( P ) = q ( P ) , p ∈ D u ( Q ) = f ( Q ) , Q ∈ Γ = ∂ D a(P)\frac{\partial ^2u}{\partial x^2}+b(P)\frac{\partial ^2u}{\partial y^2}+c(P)\frac{\partial u}{\partial x}+d(P)\frac{\partial u}{\partial y}+e(P)u(P) = q(P),p\in D\\ u(Q) = f(Q),Q\in\Gamma = \partial D a(P)x22u+b(P)y22u+c(P)xu+d(P)yu+e(P)u(P)=q(P),pDu(Q)=f(Q),QΓ=D

a ( P ) , b ( P ) > 0 , e ( P ) ≤ 0 a(P),b(P)>0,e(P)\leq 0 a(P),b(P)>0,e(P)0 u ( P ) , p ∈ D u(P),p\in D u(P),pD的数值解。

二.问题的分析

将上面的式子差分化之后得到的结果如下:
u = − h 2 2 W Z + W 4 ( a + b ) [ ( 2 a + h c ) u 11 + ( 2 a − h c ) u 12 + ( 2 b + h d ) u 13 + ( 2 b − h d ) u 14 ] , P ∈ D u ( Q ) = f ( Q ) u = -\frac{h^2}{2}WZ+\frac{W}{4(a+b)}[(2a+hc)u_{11}+(2a-hc)u_{12}+(2b+hd)u_{13}+(2b-hd)u_{14}],P\in D\\ u(Q) = f(Q) u=2h2WZ+4(a+b)W[(2a+hc)u11+(2ahc)u12+(2b+hd)u13+(2bhd)u14],PDu(Q)=f(Q)
其中 u = u ( P ) , a = a ( P ) , b = b ( P ) , c = c ( P ) , d = d ( P ) , e = e ( P ) , q = q ( P ) , u 1 j = u ( P 1 j ) , Z = Z ( P ) = q a + b , W = W ( P ) = [ 1 − h 2 e 2 ( a + b ) ] − 1 u = u(P),a= a(P),b = b(P),c = c(P),d = d(P),e = e(P),q = q(P),u_{1j} = u(P_{1j}),Z = Z(P) = \frac{q}{a+b},W = W(P) = [1-\frac{h^2e}{2(a+b)}]^{-1} u=u(P),a=a(P),b=b(P),c=c(P),d=d(P),e=e(P),q=q(P),u1j=u(P1j),Z=Z(P)=a+bq,W=W(P)=[12(a+b)h2e]1

且步长要满足如下条件:
h ≤ 2 m i n P ∈ D a ( P ) m a x P ∈ D ∣ c ( P ) ∣ , h ≤ 2 m i n P ∈ D b ( P ) m a x P ∈ D ∣ d ( P ) ∣ h\leq\frac{2min_{P\in D }a(P)}{max_{P \in D}|c(P)|},h\leq\frac{2min_{P\in D }b(P)}{max_{P \in D}|d(P)|} hmaxPDc(P)2minPDa(P),hmaxPDd(P)2minPDb(P)
那么需要构造的随机游动模型如下:
P ( u → u 11 ) = 2 a 1 j + h c 1 j 4 ( a 1 j + b 1 j ) P ( u → u 12 ) = 2 a 1 j − h c 1 j 4 ( a 1 j + b 1 j ) P ( u → u 13 ) = 2 b 1 j + h d 1 j 4 ( a 1 j + b 1 j ) P ( u → u 14 ) = 2 b 1 j − h d 1 j 4 ( a 1 j + b 1 j ) P(u \rightarrow u_{11}) = \frac{2a_{1j}+hc_{1j}}{4(a_{1j}+b_{1j})}\\ P(u \rightarrow u_{12}) = \frac{2a_{1j}-hc_{1j}}{4(a_{1j}+b_{1j})}\\ P(u \rightarrow u_{13}) = \frac{2b_{1j}+hd_{1j}}{4(a_{1j}+b_{1j})}\\ P(u \rightarrow u_{14}) = \frac{2b_{1j}-hd_{1j}}{4(a_{1j}+b_{1j})}\\ P(uu11)=4(a1j+b1j)2a1j+hc1jP(uu12)=4(a1j+b1j)2a1jhc1jP(uu13)=4(a1j+b1j)2b1j+hd1jP(uu14)=4(a1j+b1j)2b1jhd1j
一条随机游走的路线为:
ρ P : P → P 1 → P 2 . . . → P k − 1 → Q \rho_P :P\rightarrow P_1 \rightarrow P_2...\rightarrow P_{k - 1}\rightarrow Q ρP:PP1P2...Pk1Q
这条路线映射的随机变量 ζ \zeta ζ为:
ζ = − h 2 2 ∑ m = 0 k − 1 ( ∏ i = 0 m W i ) Z m + ( ∏ i = 0 k − 1 W i ) f ( Q ) \zeta = -\frac{h^2}{2}\sum_{m = 0}^{k- 1}(\prod_{i = 0}^mW_i)Z_m + (\prod_{i = 0}^{k - 1}W_i)f(Q) ζ=2h2m=0k1(i=0mWi)Zm+(i=0k1Wi)f(Q)
由于 E ζ = u ( P ) E\zeta = u(P) Eζ=u(P)在此处不证明,由大数定理:
u ( P ) ∼ 1 N ∑ j = 1 N ζ j u(P) \sim \frac{1}{N}\sum_{j = 1}^N\zeta_j u(P)N1j=1Nζj

三.模型的推广

若上面的模型能化成如下的推广形式:
u = A u 11 + B u 12 + C u 13 + D u 14 + F , P ∈ D u ( Q ) = f ( Q ) , Q ∈ ∂ D u = Au_{11}+Bu_{12}+Cu_{13}+Du_{14}+F,P \in D\\ u(Q) = f(Q),Q \in \partial D u=Au11+Bu12+Cu13+Du14+F,PDu(Q)=f(Q),QD
其中:
A = A ( P ) = k ( a h 2 + c 2 h ) B = B ( P ) = k ( a h 2 − c 2 h ) C = C ( P ) = k ( b h 2 + d 2 h ) D = D ( P ) = k ( b h 2 − d 2 h ) F = F ( P ) = − k q k = ( 2 a + 2 b h 2 − e ) − 1 A = A(P) = k(\frac{a}{h^2} +\frac{c}{2h})\\ B = B(P) = k(\frac{a}{h^2} - \frac{c}{2h})\\ C = C(P) = k(\frac{b}{h^2} + \frac{d}{2h})\\ D = D(P) = k(\frac{b}{h^2} - \frac{d}{2h})\\ F = F(P) = -kq\\ k = (\frac{2a+2b}{h^2}-e)^{-1} A=A(P)=k(h2a+2hc)B=B(P)=k(h2a2hc)C=C(P)=k(h2b+2hd)D=D(P)=k(h2b2hd)F=F(P)=kqk=(h22a+2be)1
如果我们要求 a , b ≥ 0 , e ≤ 0 a,b \geq 0,e\leq0 a,b0,e0,且 A , B , C , D ∈ [ 0 , 1 ] , ∀ P ∈ D , A + B + C + D ≤ 1 A,B,C,D\in [0,1],\forall P \in D,A+B+C+D\leq1 A,B,C,D[0,1],PD,A+B+C+D1。我们就可以构造以下的随机游动模型:
P ( u → u 11 ) = A P ( u → u 12 ) = B P ( u → u 13 ) = C P ( u → u 14 ) = D P ( u → u ) = 1 − ( A + B + C + D ) P(u \rightarrow u_{11}) = A\\ P(u \rightarrow u_{12}) = B\\ P(u \rightarrow u_{13}) = C\\ P(u \rightarrow u_{14}) = D\\ P(u \rightarrow u) = 1-(A+B+C+D) P(uu11)=AP(uu12)=BP(uu13)=CP(uu14)=DP(uu)=1(A+B+C+D)
产生如下的游走路线:
ρ P : P = P 0 → P 1 → P 2 . . . → P k − 1 → Q \rho_P :P = P_0\rightarrow P_1 \rightarrow P_2...\rightarrow P_{k - 1}\rightarrow Q ρP:P=P0P1P2...Pk1Q
取的随机变量如下:
ζ = ∑ i = 0 k − 1 F ( P i ) + f ( Q ) \zeta = \sum_{i = 0}^{k-1}F(P_i)+f(Q) ζ=i=0k1F(Pi)+f(Q)
由大数定律:
u ( P ) ∼ 1 N ∑ j = 1 N ζ j u(P) \sim \frac{1}{N}\sum_{j = 1}^N\zeta_j u(P)N1j=1Nζj

四.问题的求解

假设我们要求得方程为以下形式:
1 4 ∂ 2 u ∂ x 2 + 1 8 ∂ 2 u ∂ y 2 + 1 2 ∂ u ∂ x + 1 2 ∂ u ∂ y = x + 2 y + 1 , P ∈ D : x 2 + 2 y 2 ≤ 2 \frac{1}{4}\frac{\partial^2u}{\partial x^2} +\frac{1}{8}\frac{\partial^2u}{\partial y^2}+\frac{1}{2}\frac{\partial u}{\partial x} +\frac{1}{2}\frac{\partial u}{\partial y} = x+2y+1,P \in D :x^2+2y^2 \leq2 41x22u+81y22u+21xu+21yu=x+2y+1,PD:x2+2y22
且边界条件为:
u ( Γ ) = 2 , Γ = ∂ D u(\Gamma) = 2,\Gamma = \partial D u(Γ)=2,Γ=D
这个方程的解析解是:
u = x 2 + 2 y 2 u = x^2+2y^2 u=x2+2y2
现求该方程在 u ( 0.1 , 0.1 ) u(0.1,0.1) u(0.1,0.1)处的数值计算的代码及值和第一次的随机游走过程。

现在我们求步长的要求值: h ≤ 0.5 h\leq 0.5 h0.5,取 h = 0.05 h = 0.05 h=0.05

function [uFinal,zeta] = possionRandomChange(xPoint,yPoint,h,N)
%UNTITLED 求a = 1/4;b = 1/8;c = 1/2;d = 1/2;e = 0;q = x+2y+1 在u(L) = 2边界条件
%   [xPoint,yPoint]表示该点坐标,h仿真步长,N仿真次数
a = @(x,y)1/4;  % 函数
b = @(x,y)(1/8);
c = @(x,y)1/2;
d = @(x,y)1/2;
e = @(x,y)0;
q = @(x,y)(x+2*y+1);
f = @(x,y)2;
u = zeros(1,N);
W = @(x,y)(1-h^2*e(x,y)/(2*(a(x,y)+b(x,y))))^(-1);
Z = @(x,y)(q(x,y)/(a(x,y)+b(x,y)));
for i = 1:N
    sumV = 0;
    xValue = xPoint;
    yValue = yPoint;
    P = [xValue ,yValue];
    Ws = 1;
    %以下是游走过程
    while(1)
        if (xValue)^2+2*(yValue)^2>=2
            P = [P;xValue,yValue];
            break;
        end
        A = (2*a(xValue,yValue)+h*c(xValue,yValue))/(4*(a(xValue,yValue)+b(xValue,yValue)));
        B = (2*a(xValue,yValue)-h*c(xValue,yValue))/(4*(a(xValue,yValue)+b(xValue,yValue)));
        C = (2*b(xValue,yValue)+h*d(xValue,yValue))/(4*(a(xValue,yValue)+b(xValue,yValue)));
        D = (2*b(xValue,yValue)-h*d(xValue,yValue))/(4*(a(xValue,yValue)+b(xValue,yValue)));
        randNumber = randsrc(1,1,[[0 1 2 3];[A C B D]]);
        switch (randNumber)
            case 0
                xValue = xValue + h;
                yValue = yValue;
            case 1
                xValue = xValue ;
                yValue = yValue + h;
            case 2
                xValue = xValue - h ;
                yValue = yValue ;    
            case 3
                xValue = xValue;
                yValue = yValue - h;
        end
        P = [P;xValue,yValue];
    end
    %以下是画图过程
    if i == 1
        subplot(121);
        grid on;
        plot(P(:,1),P(:,2),'b.-');
        title('第一次轨迹');
    end
    %以下是计算过程
    [m,n] = size(P);
    for j = 1:m-1
        Ws = Ws*W(P(j,1),P(j,2));
        sumV = sumV + Ws*Z(P(j,1),P(j,2));
    end
    zeta(i) = -h^2/2*sumV + Ws*f(P(m,1),P(m,2));
    u(i) = sum(zeta(1:i))/i;
end
subplot(122);
grid on ;
uFinal = u(N);
plot(1:N,u,'r');
xlabel('次数');
ylabel('进化曲线');
title('收敛过程');
end

输入命令行指令:

[uFinal,zeta] = possionRandomChange(0.5,0.5,0.01,1000);

最后的理论结果是:

0.709698130666665;

画出来的结果是:
在这里插入图片描述

我只能说这个随机游走求解问题的手段效率有点太低了,收敛的时间过长了,而且和理论值的偏差也有点大,实际值为 0.71 0.71 0.71,理论值为 0.75 0.75 0.75

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值