#概要
#####ラグランジュの補間多項式
ラグランジュの補間多項式は、点(x, y)
が与えられたとき、その点を通るn次関数の式を求められます。
#####プログラムについて
今回作成したプログラムは、与えられた点(x, y)
について、それぞれが対応するリストを作成し、それらを基に関数f(x)
を導くプログラムになります。
f(x)
を求める際、x
を不定元として認識させる必要や、式を簡易化する必要があるため、sympy
というパッケージを利用します。
#プログラム
Lagrange.py
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
import sympy
X = [-2, -1, 3]
Y = [4, 1, 9]
def ragrange (lx, ly):
x=sympy.symbols('x')
f = 0
for i in range(len(lx)):
z = 1
for j in range(len(lx)):
if j != i:
z = z * ((x - lx[j]) / (lx[i] - lx[j]))
f += z * ly[i]
return sympy.simplify(f)
print("f(x) =",(ragrange(X,Y)))
#実行結果
はじめに、上のプログラムで示したデータX, Y
で実行します。
このデータはf(x)=x**2
の内の3つの点を抜粋したため、f(x)=x**2
が正しい答えとなります。
X = [-2, -1, 3]
Y = [4, 1, 9]
#結果
f(x) = x**2
次に適当な4つのデータを与え3次関数を求めてみます。
X = [-3,-2, -0, 1]
Y = [-6,-1, -3, 2]
#結果
f(x) = x**3 + 3*x**2 + x - 3
#まとめ
(n+1)個のデータを与えることでn次関数が求めることができました。
#おわりに
今回の記事はここまでになります。
質問・アドバイス等あればコメント欄にてお願いいたします。
最後までお付き合い頂きありがとうございました。