我试图在MatLab中实现Neville算法,在这种情况下有四个给定点。但是,我现在有点卡住了。 到目前为止,这是我的脚本:
% Neville's Method
% Function parameters
x = [7,14,21,28];
fx = [58,50,54,53];
t = 10;
n = length(x);
Q = zeros(n,n);
for i = 1:n
Q(i,1) = fx(i);
end
for j = 2:n
for i = j:n
Q(i,j) = ((t-x(i-j)) * Q(i,j-1)/(x(i)-x(i-j))) + ((x(i)-t) * Q(i-1,j-1)/(x(i)-x(i-j)));
end
end
print(Q);
至于我遇到的问题,我一直得到这个输出: 下标索引必须是实数正整数或逻辑。
我一直试图调整循环迭代,但无济于事。我知道问题是内循环中的主逻辑线。一些操作导致最初等于零的数组索引。
我就是这样,任何帮助都会受到赞赏!
答案 0 :(得分:1)
第一次i-j
为0
的循环中,因为您设置了i = j
。在MATLAB中,索引从1
开始。获取运行代码的简单修复方法是更改
for i = j:n
到
for i = j+1:n
这解决了
下标索引必须是实数正整数或逻辑。
但是,这可能不太理想,您可能需要重新考虑您的逻辑。我得到的输出是
>> neville
Q =
58.0000 0 0 0
50.0000 0 0 0
54.0000 50.8571 0 0
53.0000 54.2857 51.3469 0