Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:30   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 MATLAB中的矩阵索引错误

我不断在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

更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:22


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