最终我是想求解得到一个满足方程F(x)=1/2的x值,可是代码在求F的时候出了错。下面是代码:
* e=1;a=1;
* z=1;
* f=@(t,x) sqrt(a+e)*normpdf(sqrt(e+a)*(t-x*e/(e+a)-z*a/(e+a)));
* g=@(th,t) sqrt(e)*normpdf(sqrt(e)*(th-t));
* h=@(th,x) integral(@(t) f(t,x).*g(th,t),-Inf, Inf);%the convolution of two pdfs gives a new pdf.
* F=@(x) integral(@(th)h(th,x),x,Inf);
* xt=fzero(@(p) F(p)-1/2,-1000)
报错内容是:错误使用 integralCalc/finalInputChecks (line 515)
函数的输出与输入必须具有相同的大小。如果 FUN 为数组值被积函数,请将 'ArrayValued' 选项设置为 true。
出错 integralCalc/iterateScalarValued (line 315)
finalInputChecks(x,fx);
出错 integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
出错 integralCalc (line 83)
[q,errbnd] = vadapt(@AToInfInvTransform,interval);
出错 integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
出错 @(x)integral(@(th)h(th,x),x,Inf)
我不太明白,为什么计算h的时候好好的,到了计算F的时候就会报错呢?又该怎么改正?
请大家指教!谢谢!