0
我用Matlab做以下数值积分:Matlab中的数值积分:矩阵的维数必须一致吗?
LB=0.3;
p_old=0.26;
C_TT_old=0.03;
r=0.63;
m=5.02;
[email protected](d)(((r*m).^(r+1)*(r+1))/((d+r*m).^(r+2)))*(m.^2*C_TT_old*(1+(2*d*(1+r))/(m))-p_old*d+r*m*(log(d/(r*m)+1))*(p_old/r+p_old-2*C_TT_old*m*(1+r)))/((d+m)*(d+m-1)/2);
C_old=integral(integrand,LB,Inf);
然而,MATLAB给我下面的错误
Error using/
Matrix dimensions must agree.
Error in
@(d)(((r*m).^(r+1)*(r+1))/((d+r*m).^(r+2)))*(m.^2*C_TT_old*(1+(2*d*(1+r))/(m))-p_old*d+r*m*(log(d/(r*m)+1))*(p_old/r+p_old-2*C_TT_old*m*(1+r)))/((d+m)*(d+m-1)/2)
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 132)
[q,errbnd] =
iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 83)
[q,errbnd] = vadapt(@AToInfInvTransform,interval);
Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
能不能帮我修复代码?我不明白错误的来源,因为在我的代码中,所有东西都是标量的。
您可能需要使用标量分割'。/'而不是矩阵分割'/'。乘法相同。当我在代码中进行更改时,我得到0.0539 –
请参见:[整型文档](https://www.mathworks.com/help/matlab/ref/integral.html#inputarg_fun):'对于标量问题,函数y = fun(x)必须接受向量参数x,并返回向量结果y。这通常意味着乐趣必须使用数组运算符而不是矩阵运算符 – excaza