我不断在Matlab中收到此错误:
尝试访问r(0,0);索引必须为正整数或逻辑。
15 = Romberg时出错
我用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
更多&回答...