wvogel日記

自分用の技術備忘録が多めです.

Lagrange多項式補間(2次)

数値解析の講義で扱った内容。
今まで、3点から二次多項式を求める場合、
Gauss-Jordan法を用いて係数を決定して、
導かれた多項式に対して
値を適用することで値を出していましたが、
そんな面倒なことはしなくてもいいようです。

とりあえず、簡単のため、決め打ちでこのことを試してみます。
y = x^2についてやってみました

--y = x^2
--(1,1),(-3,9),(10,100)

b0 x = (x-negate 3)*(x-10)/((1-negate 3)*(1-10))
b1 x = (x-1)*(x-10)       /((negate 3 -1)*(negate 3 -10))
b2 x = (x-negate 3)*(x-1) /((10-1)*(10 - negate 3))

f x = x^2

p x = f 1*b0 x + f 3*b1 x + f 10* b2 x

main = print $ map p [negate 10,negate 9.5 .. 10]

結果は予想通りです