MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   资料存档 (https://www.labfans.com/bbs/forumdisplay.php?f=72)
-   -   MATLAB中的矩阵索引错误 (https://www.labfans.com/bbs/showthread.php?t=23235)

poster 2019-12-10 20:30

MATLAB中的矩阵索引错误
 
我不断在Matlab中收到此错误:
[INDENT]尝试访问r(0,0);索引必须为正整数或逻辑。

15 = Romberg时出错

[/INDENT]我用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

[B]回答:[/B]

在两行中,您使用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

[url=https://stackoverflow.com/questions/2497241]更多&回答...[/url]


所有时间均为北京时间。现在的时间是 04:56

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.