MATLAB中的矩阵索引错误

Ben*_*sen 3 matlab matrix

我在Matlab中不断收到此错误:

试图访问r(0,0); index必须是正整数或逻辑.

错误==> 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
Run Code Online (Sandbox Code Playgroud)

Jon*_*nas 6

有两行你使用0来索引,你不能在Matlab中:

r(i,0) = (1/2)*r(i-1,0) + (sum1)*h;
Run Code Online (Sandbox Code Playgroud)

r(i,j) = r(i,j-1) + (r(i,j-1) - r(i-1,j-1))/((4^j) - 1);
Run Code Online (Sandbox Code Playgroud)

当j == 1或i == 1时.

我建议你运行你的循环,从2日开始,并与(i-1)和(j-1)更换指数i和j分别.

暂且不说:你可以编写循环

for k = 1:2:2^(i)

   sum1 = sum1 + f(a + k*h);

end
Run Code Online (Sandbox Code Playgroud)

k = 1:2:2^i;
tmp = f(a + k*h);
sum1 = sum(tmp);
Run Code Online (Sandbox Code Playgroud)

如果你写f_of_x为

sin(x)./x
Run Code Online (Sandbox Code Playgroud)