我想通过使用符号表示来评估Matlab中的三重积分。以下是我的代码:错误地计算三重积分象征
fun = @(x,y,z) (((2*pi)^length(data))*sqrt(det(COVAR)))^-1*exp(-0.5*([x y z]-OMEGA)'*inv(COVAR)*([x y z]-OMEGA));
q = integral3(fun,-Inf,Inf,-Inf,Inf,-Inf,Inf)
上述功能是一个多变量高斯用3×3的协方差矩阵(COVAR)和10000x3样品,(数据)应理想地导致1.0作为其应答。
但它会导致错误信息... 矩阵尺寸必须一致。
错误@(X,Y,Z)EXP(-0.5 *([X,Y,Z] -OMEGA)” INV(COVAR)([X,Y,Z] -OMEGA))
(y,z)FUN(x(1)*(y,z)FUN(x(1)* ones(size(z)),y,z)(行138)中的误差那些(大小(Z)),Y,Z),...
错误integral2Calc> @(Y)的乐趣(十一的人(大小(Y)),Y)(第18行) @(Y )fun(xi ones(size(y)),y),y1i,y2i,opstruct.integralOptions),...
integralCalc中的错误/ it erateScalarValued(line 314) fx = FUN(t);
integralCalc/vadapt(line 132)中的错误 [q,errbnd] = iterateScalarValued(u,tinterval,pathlen); (行103) [q,errbnd] = vadapt(@ minusInfToInfInvTransform,interval);在integral2Calc> @(XI,y1i,y2i)integralCalc
误差(@(y)的乐趣(XI *酮(大小(Y)),y)的,y1i,y2i,opstruct.integralOptions)
错误(@)(y),y1i,y2i,opstruct.integralOptions),x,ymin (x)中,YMAX(X)) (第17行) innerintegral = @(X)arrayfun(@(XI,y1i,y2i)integralCalc(...
错误integralCalc/iterateScalarValued(线314) fx = FUN(t);
在integralCalc/vadapt(line 132) [q,errbnd] = iterateScalarValued(u,tinterval,pathlen); (行103) [q,errbnd] = vadapt(@ minusInfToInfInvTransform,interval);积分2积分(积分20)中的误差 [q,errbnd] =积分积分(积分积分,xmin,xmax,opstruct.integralOptions);
integral2Calc中的错误(第7行) [q,errbnd] = integral2i(fun,xmin,xmax,ymin,ymax,optiontruct);
Integral3 /内积分(线137)中的错误 Q1 = integral2Calc(...
integralCalc/iterateScalarValued中的错误(第314行) fx = FUN(t);
integralCalc/vadapt(line 132)中的错误 [q,errbnd] = iterateScalarValued(u,tinterval,pathlen); (行103) [q,errbnd] = vadapt(@ minusInfToInfInvTransform,interval);
积分3(第121行)中的错误 Q = integralCalc(@ innerintegral,xmin,xmax,integralOptions);
我不太明白错误信息,任何帮助将不胜感激。先谢谢你。
其实,我想在计算仅第一象限的函数值....
q = integral3(fun,0,Inf,0,Inf,0,Inf) %%something like this.
这项工作背后的想法是计算,如果我们上述多元分布的标准化常数碰巧只限于正面参数/估计值。
谢谢。
亲爱的Mike C.我很感谢你的回答。感谢您指出这个微不足道的错误。但我没有解决原来的问题。你可以看看错误信息吗?在我看来,integral3无法处理'数组选项'。 –
您尝试了积分3(fun,-Inf,Inf,-Inf,Inf,-Inf,Inf,'ArrayValued','true')吗? –
我尝试了integral3,但它似乎没有针对阵列输入的规定。在为多元高斯试图嵌套int 3次并限制[-Inf,Inf]为所有变量后,我能够恢复所需的结果,即。 1.0。但是,当所有3个变量的限制都是[0,Inf]时,代码需要很长时间... –