全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
2221 0
2012-04-21
我用二分查找法解一个带有变限二重积分的二元方程组,(未知数x1,x2),蓝色字体的计算式是正确的,但是我不知道怎么把他们放在循环语句里,所以导致运行不出来,哪位大神帮忙看一下哪里有错误,或者怎样做可能不易出现错误?
方程1:Phi1=-40*normcdf(x1,mu1,sigma1)+20*( normcdf(x1+a,mu1,sigma1)-normcdf(x1,mu1,sigma1))+45*(1-normcdf(x1+a,mu1,sigma1))+20*P1=0
方程2:Phi2=30*normcdf(x2,mu2,sigma2)+90*P2+90*P1+70*P4+90*P3+70*P5-55=0



ZERO=10^-4;
ZERO1=10^-8;
a=150;
mu1=400;sigma1=112;
mu2=300;sigma2=105;
x2_min=0;x2_max=800;
Error=1;
     while(Error&&(x2_max-x2_min)>ZERO)
     x2=(x2_min+x2_max)/2;
     x1_min=0;x1_max=800;
     Error1=1;
        while(Error1&&(x1_max-x1_min)>ZERO1)
        x1=(x1_min+x1_max)/2;
        syms x y
        P1=vpa(int(int(mvnpdf([x y],[mu1 mu2],[sigma1^2 0;0 sigma2^2]),y,x1+x2+a-x,+inf),x,x1,x1+a));
        Phi1=-40*normcdf(x1,mu1,sigma1)+20*( normcdf(x1+a,mu1,sigma1)-normcdf(x1,mu1,sigma1))+45*(1-normcdf(x1+a,mu1,sigma1))+20*P1;  
            if Phi1<-ZERO1
                 x1_max=x1;
                 elseif Phi1>ZERO1
                 x1_min=x1;
                 else
                 Error1=0;
            end
        end
        x1
        syms x y
        P2=vpa(int(int(mvnpdf([x y],[mu1 mu2],[sigma1^2 0;0 sigma2^2]),y,x2,+inf),x,x1+a,+inf));
        P3=vpa(int(int(mvnpdf([x y],[mu1 mu2],[sigma1^2 0;0 sigma2^2]),y,x2+a,+inf),x,0,x1));
        P4=vpa(int(int(mvnpdf([x y],[mu1 mu2],[sigma1^2 0;0 sigma2^2]),y,x2,x1+x2+a-x),x,x1,x1+a));
        P5=vpa(int(int(mvnpdf([x y],[mu1 mu2],[sigma1^2 0;0 sigma2^2]),y,x2,x2+a),x,0,x1));
        Phi2=30*normcdf(x2,mu2,sigma2)+90*P2+90*P1+70*P4+90*P3+70*P5-55;
        if Phi2<-ZERO
        x2_max=x2;
        elseif Phi2>ZERO
        x2_min=x2;
        else
        Error=0;
        end
     end
x1
x2

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群