在MatLab中实现Neville的算法

时间:2015-09-25 16:50:25

标签: algorithm matlab interpolation

我试图在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);

至于我遇到的问题,我一直得到这个输出: 下标索引必须是实数正整数或逻辑。

我一直试图调整循环迭代,但无济于事。我知道问题是内循环中的主逻辑线。一些操作导致最初等于零的数组索引。

我就是这样,任何帮助都会受到赞赏!

1 个答案:

答案 0 :(得分:1)

第一次i-j0的循环中,因为您设置了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