Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我不断在Matlab中收到此错误:
尝试访问r(0,0);索引必须为正整数或逻辑。我用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 更多&回答... |
![]() |
![]() |