うちのカレーにはこれが入ってる!って食材ありますか?

下記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;

A 回答 (1件)

http://www12.plala.or.jp/ksp/computPhys/lag-hoka …

を参考に考えてみたのですが、ttu34 さんは上記の Web ページで示されて
いる式とは違ったものを使っていますよね?

なので、ttu34 さんの使っているラグランジェ補間の式がないとなんとも
言えないのですが。。。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/14 22:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報