在 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-j
是 0
因为你设置了 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
在这种情况下,我试图用四个给定点在 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-j
是 0
因为你设置了 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