我知道此类问题之前已被问过很多次,但我无法理解代码的问题。我也是Octave的绝对初学者。
function Z=nat_spline(n, T, Y)
for i=0:n-1
H(i) = T(i+1) - T(i);
B(i) = 6*(Y(i+1) - Y(i))/H(i);
end
U(1) = 2*(H(0)+H(1));
V(1) = B(1) - B(0);
for i=2:n-1
U(i) = 2 * (H(i) + H(i-1)) - ( (H(i-1))^2 / U(i-1) );
V(i) = B(i) - B(i-1) - H(i-1)*V(i-1)/U(i-1);
end
Z(n) = 0
for i=n-1:1
Z(i) = (V(i)-H(i)*Z(i+1))/U(i);
end
Z(0) = 0;
end
它是一个简短的代码,所以我想很容易发现任何错误。非常感谢任何帮助。
答案 0 :(得分:3)
在matlab中以1开始的数组索引:)
你的H(i)和B(i)在循环的第一次迭代中将是H(0)B(0),这会给你一个错误
所以for i=1:n
答案 1 :(得分:0)
嗯,标题告诉它:如果不合逻辑。下标必须是严格正整数值。 H(0)
或Z(0)
之类的内容无效,因为严格正整数值以1开头。