0

この種の質問が以前に何度も出されたことは知っていますが、コードの問題を理解できません。また、私は 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

短いコードなので、間違いを見つけやすいと思います。助けてくれてありがとう。

4

2 に答える 2

3

配列のインデックスはmatlabの1で始まります:)ループの最初の反復でH(i)とB(i)はH(0)B(0)になり、エラーが発生しますfor i=1:n

于 2013-04-14T15:08:40.833 に答える
0

まあ、タイトルはそれを示しています:論理的でない場合。添え字は厳密に正の整数値でなければなりません。厳密に正の整数値は 1 で始まるため、H(0)orのようなものは機能しません。Z(0)

于 2013-04-14T15:10:16.833 に答える