赞
踩
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 上传
2.jpg
(58.89 KB, 下载次数: 0)
2018-6-10 14:48 上传
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。