【发布时间】:2021-02-26 09:52:04
【问题描述】:
这是我遇到问题的代码部分:
function coeff(p, I) %linear coefficients for the adam-moulton method
beta = [];
syms u;
B = 1;
for j = 0 : (p-1)
for i = 0 : (p-1)
if ~(i == j)
B = B * (u + i);
end
end
beta = [beta, ((-1).^j)./( factorial(j) * factorial(p - j - 1) ) * integral(@(u) B(u), I(1), I(2))];
end
end
MATLAB 在这里告诉我:
beta = [beta, ((-1).^j)./( factorial(j) * factorial(p - j - 1) ) * integral(@(u) B(u), I(1), I(2))];
我的数组索引必须是正整数或逻辑值,但我不明白为什么这应该是一个问题,因为我只是想附加到预先存在的数组 beta。我怎样才能做到这一点?
【问题讨论】:
-
在 Matlab 中索引从 1 开始而不是 0。由于您的循环变量从零开始,Matlab 会抛出此异常。您的循环应该从 1 开始,然后转到
p而不是p-1。 -
@Till,我不认为这是问题所在,因为从来没有人打电话给
array(i)或array(j);如果你不这样做,你可以用 0、负整数或任何你想要的整数开始你的循环。问题可能在于u是一个符号变量,因此您不能拥有B(u),但我无法确定从未使用过符号工具箱。 -
@MatteoV 你有什么办法可以修复我的代码,这样就不需要符号变量了吗?
-
@SardarUsama $p$ 与 $p$-step 方法中的一样。 $I$ 是我的时间参数 $t$ 范围的时间间隔。为了视觉方便,我将 $I$ 作为数组
[a, b],然后从中提取I(1)和I(2)。