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