• 締切済み

MATLABによるラグランジェ補間

下記1~2行目の8点が与えられていて、ラグランジェ補間を行う問題です。 下記のプログラムを自分で組んだものの、おかしな値が返ってきます。 どこが間違っているのか全く検討がつかないのでわかる方がいらっしゃったらどうかご教授お願いします。 x=[0,1.2,2.1,3.5,4.8,6.7,8.5,9.7]; y=[0.4,1.3,2.0,3.1,4.0,5.2,6.0,6.1]; x0=(0:0.001:15); h=0.0001; a=0; j=1; while a<=15 f(j)=0; for i=1:8 b=(lag(x(i)+h)-lag(x(i)))/h; f(j)=f(j)+lag(a)*y(i)/(b*(a-x(i))); end a=a+0.001; j=j+1; end plot(x0,f) [lag.m] function f=lag(x) g=1; z=[0,1.2,2.1,3.5,4.8,6.7,8.5,9.7]; for i=1:1:8 if x ~= z(i) g = g*(x-z(i)); end end f=g;

みんなの回答

回答No.1

http://www12.plala.or.jp/ksp/computPhys/lag-hokan/index.html を参考に考えてみたのですが、ttu34 さんは上記の Web ページで示されて いる式とは違ったものを使っていますよね? なので、ttu34 さんの使っているラグランジェ補間の式がないとなんとも 言えないのですが。。。

ttu34
質問者

お礼

回答有難うございます! 補間関数の定義を勘違いしてプログラムを組んでいたようです↓ 定義を見直したら無事解決することができました。

関連するQ&A

専門家に質問してみよう