这是我的代码:
C=@(k) [k,k,2.*k;3,2.*k,5;1,k,k];
AV=@(k,t) [3*t, 6, 9]*C(k)*[3*t ;6 ;9];
avaint=@(k,a,b) quadgk(@(k) AV(k,t),a,b);
AVAR=@(t) avaint(t,0,87600);
是节目:
Error using vertcat
Dimensions of matrices being concatenated are not consistent.
当我想要打印AVAR(3)
答案 0 :(得分:0)
quadgk
函数将积分点向量传递给给定的函数句柄。
来自documentation:
函数y = fun(x)应接受向量参数x并返回向量结果y,其中y是在x的每个元素处计算的被积函数。
这会导致尺寸不匹配,从而导致错误。
要解决此实现问题,您可以使用integral
函数和('ArrayValued'
,true
)选项对执行数值积分:
avaint = @(t,a,b) integral(@(k) AV(k,t),a,b,'ArrayValued',true);
或者,您可以在AV
中使用arrayfun
来遵守quadgk
的要求:
AV = @(k,t) arrayfun(@(k_el) [3*t, 6, 9]*(C(k_el)*[3*t ;6 ;9]),k);