我在 Matlab 中不断收到此错误:
Attempted to access r(0,0); index must be a positive integer or logical.
Error in ==> Romberg at 15
我用Romberg(1.3, 2.19,8)
运行它
我认为问题是这个陈述不合逻辑,因为我把它定为肯定的,但仍然得到同样的错误。有人知道我能做什么吗?
function Romberg(a, b, n)
h = b - a;
r = zeros(n,n);
for i = 1:n
h = h/2;
sum1 = 0;
for k = 1:2:2^(i)
sum1 = sum1 + f(a + k*h);
end
r(i,0) = (1/2)*r(i-1,0) + (sum1)*h;
for j = 1:i
r(i,j) = r(i,j-1) + (r(i,j-1) - r(i-1,j-1))/((4^j) - 1);
end
end
disp(r);
end
function f_of_x = f(x)
f_of_x = sin(x)/x;
end
最佳答案
有两行您使用 0 进行索引,这在 Matlab 中不能:
r(i,0) = (1/2)*r(i-1,0) + (sum1)*h;
和
r(i,j) = r(i,j-1) + (r(i,j-1) - r(i-1,j-1))/((4^j) - 1);
当 j==1 或 i==1 时。
我建议您从 2 开始运行循环,并分别用 (i-1) 和 (j-1) 替换指数 i 和 j。
顺便说一句:你可以编写循环
for k = 1:2:2^(i)
sum1 = sum1 + f(a + k*h);
end
作为
k = 1:2:2^i;
tmp = f(a + k*h);
sum1 = sum(tmp);
如果你把 f_of_x 写成
sin(x)./x
关于matlab - MATLAB 中的矩阵索引错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2497241/