当前位置:   article > 正文

matlab 带参数二重积分,matlab 关于积分限带参数的二重积分没有数值解的问题

matlab计算上下限含参积分

syms x y;

n=8;

for i=1:n

for j=1:n

if i

f2(i,j)=x*y*(1/(2*pi))*(factorial(n))/(factorial(i-1)*factorial(j-i-1)*factorial(n-j))*normcdf(y)^(i-1)*(normcdf(x)-normcdf(y))^(j-i-1)*(1-normcdf(x))^(n-j)*exp(-(y^2+x^2)/2);

end

end

end

f2的部分运算结果如图所示,是一个8*8的矩阵,矩阵里每一个不为0的表达式,我都需要对其进行二重积分,x的积分下限是y,上限是+inf,y的积分下限是-inf,上限是+inf。

比如拿出其中的f2(1,2)=(40139127974558613*x*y*exp(- x^2/2 - y^2/2)*erfc((2^(1/2)*x)/2)^6)/288230376151711744,

试过int(int),可以得出符号积分,E2=int(int((40139127974558613*x*y*exp(- x^2/2 - y^2/2)*erfc((2^(1/2)*x)/2)^6)/288230376151711744, x, y, Inf), y, -Inf, Inf),但是用double转换数值积分时,显示

错误使用 symengine

DOUBLE cannot convert the input expression into a double array.

出错 sym/double (line 643)

Xstr = mupadmex('symobj::double', S.s, 0);

用eval仍然是符号积分

>> eval(E2)

ans =

int(int((5017390996819827*x*y*exp(- x^2/2 - y^2/2)*erfc((2^(1/2)*x)/2)^6)/36028797018963968, x, y, Inf), y, -Inf, Inf)

如果用integral2直接解数值积分,则又报错:

错误使用 integral2 (line 71)

XMIN 必须为浮点标量。

求大神赐教有什么解决办法可以把这个二重积分求出数值解来。

1.jpg

(37.33 KB, 下载次数: 1)

2018-6-10 14:48 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

2fa702e9f448a11e6b1fe5ee2dbfe3de.png

2.jpg

(58.89 KB, 下载次数: 0)

2018-6-10 14:48 上传

442a53943febe9465fc072b4fbe10813.gif

b2a5a3e0dcc7d508e00275fe42fce1b5.gif

00d53adca520f1588dddcf4612ba52ee.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/608804
推荐阅读
相关标签
  

闽ICP备14008679号