在 MatLab 中实现 Neville 算法

Implementing Neville's Algorithm in MatLab

在这种情况下,我试图用四个给定点在 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);

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

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

这就是我所在的位置,如有任何帮助,我们将不胜感激!

在你的循环中第一次 i-j0 因为你设置了 i = j。在 MATLAB 中,索引从 1 开始。获取 运行 代码的一个简单修复方法是更改​​

for i = j:n

for i = j+1:n

这解决了

Subscript indices must either be real positive integers or logicals.

但是,这可能并不理想,您可能需要重新考虑您的逻辑。我得到的输出是

>> 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