ラグランジュの補間公式

大学・一般数学関数・グラフ大学・一般数学

\(~n+1~\) 点を通る \(~n~\) 次関数を機械的に求めることができるラグランジュの補間公式についてです。 \(~n=2~\) のときの事例を中心に紹介します。
Ⅰ ラグランジュの補間公式
Ⅱ 例
Ⅲ 証明


目次
  • 1. Ⅰ ラグランジュの補間公式
  • 2. Ⅱ 例
  • 3. Ⅲ 証明

Ⅰ ラグランジュの補間公式

まずは一般的な形として、どのような公式かを見てみましょう。

ラグランジュの補間公式

\(~x~\) 座標が互いに異なる \(~n+1~\) 個の点 \(~(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n),(x_{n+1},y_{n+1})~\) を通る \(~n~\) 次以下の関数 \(~y=f(x)~\) は次のように定まる。
\begin{equation}
\displaystyle f(x)=\sum_{i=1}^{n+1} \frac{f_i(x)}{f_i(x_i)} y_{i}
\end{equation}
ただし、 \(~\displaystyle f_{i}(x)=\prod_{j \neq i ,1 \le j \le n+1 }(x-x_{j})~\)

添え字、 \(~\sum~\) に \(~\prod~\) とややこしさのオンパレードですね。ということで、 \(~n=2~\) に限定して、見てみたいと思います。

ラグランジュの補間公式 \(~(n=2)~\)

\(~x~\) 座標が互いに異なる \(~3~\) 個の点 \(~(x_1,y_1),(x_2,y_2),(x_3,y_3)~\) を通る \(~2~\) 次以下の関数 \(~y=f(x)~\) は次のように定まる。

\begin{equation}
\displaystyle f(x)=\frac{(x-x_2)(x-x_3)}{(x_1-x_2)(x_1-x_3)}y_1+\frac{(x-x_1)(x-x_3)}{(x_2-x_1)(x_2-x_3)}y_2+\frac{(x-x_1)(x-x_2)}{(x_3-x_1)(x_3-x_2)}y_3
\end{equation}


\begin{align}
\displaystyle f(x)&=\frac{(x-x_2)(x-x_3)}{(x_1-x_2)(x_1-x_3)}y_1 \\
&+\frac{(x-x_1)(x-x_3)}{(x_2-x_1)(x_2-x_3)}y_2 \\
&+\frac{(x-x_1)(x-x_2)}{(x_3-x_1)(x_3-x_2)}y_3
\end{align}

よく見ると、複雑な式の中にも規則性がありますね。 \(~n=2~\) でもここまで長い式となってしまうこの補間公式ですが、3点の座標を代入するだけで、関数の式が求めることができます。


Ⅱ 例

実際に求めてみましょう。

例1

3点 \(~(-2,3),(-1,2),(1,6)~\) を通る2次以下の関数 \(~f(x)~\) を求める。

\begin{align}
\displaystyle f(x)&=\frac{(x+1)(x-1)}{(-2+1)(-2-1)}\cdot 3+\frac{(x+2)(x-1)}{(-1+2)(-1-1)}\cdot 2+\frac{(x+2)(x+1)}{(1+2)(1+1)}\cdot 6 \\
\\
&=\frac{x^2-1}{3}\cdot 3+\frac{x^2+x-2}{-2}\cdot 2+\frac{x^2+3x+2}{6}\cdot 6 \\
\\
&=x^2-1-x^2-x+2+x^3+3x+2 \\
\\
&=x^2+2x+3
\end{align}


\begin{align}
\displaystyle &f(x) \\
\\
&=\frac{(x+1)(x-1)}{(-2+1)(-2-1)}\cdot 3 \\
&+\frac{(x+2)(x-1)}{(-1+2)(-1-1)}\cdot 2 \\
&+\frac{(x+2)(x+1)}{(1+2)(1+1)}\cdot 6 \\
\\
&=\frac{x^2-1}{3}\cdot 3+\frac{x^2+x-2}{-2}\cdot 2 \\
&+\frac{x^2+3x+2}{6}\cdot 6 \\
\\
&=x^2-1-x^2-x+2+x^3+3x+2 \\
\\
&=x^2+2x+3
\end{align}

実際、 \(~y=ax^2+bx+c~\) に3点を代入して、連立方程式を解いても \(~a=1,b=2,c=3~\) で、 \(~y=x^2+2x+3~\) が確かめられます。
 

例2

3点 \(~(0,1),(1,3),(4,9)~\) を通る2次以下の関数 \(~f(x)~\) を求める。

\begin{align}
\displaystyle f(x)&=\frac{(x-1)(x-4)}{(0-1)(0-4)}\cdot 1+\frac{(x-0)(x-4)}{(1-0)(1-4)}\cdot 3+\frac{(x-0)(x-1)}{(4-0)(4-1)}\cdot 9 \\
\\
&=\frac{x^2-5x+4}{4}\cdot 1+\frac{x^2-4x}{-3}\cdot 3+\frac{x^2-x}{12}\cdot 9 \\
\\
&=\frac{x^2-5x+4}{4}-(x^2-4x)+\frac{3(x^2-x)}{4} \\
\\
&=\frac{x^2-5x+4-4x^2+16x+3x^2-3x}{4} \\
\\
&=\frac{8x+4}{4} \\
\\
&=2x+1
\end{align}


\begin{align}
\displaystyle &f(x) \\
\\
&=\frac{(x-1)(x-4)}{(0-1)(0-4)}\cdot 1 \\
&+\frac{(x-0)(x-4)}{(1-0)(1-4)}\cdot 3 \\
&+\frac{(x-0)(x-1)}{(4-0)(4-1)}\cdot 9 \\
\\
&=\frac{x^2-5x+4}{4}\cdot 1+\frac{x^2-4x}{-3}\cdot 3 \\
&+\frac{x^2-x}{12}\cdot 9 \\
\\
&=\frac{x^2-5x+4}{4}-(x^2-4x)+\frac{3(x^2-x)}{4} \\
\\
&=\frac{x^2-5x+4-4x^2+16x+3x^2-3x}{4} \\
\\
&=\frac{8x+4}{4} \\
\\
&=2x+1
\end{align}

実は一次関数でした。それでもきちんと求められていますね。
 

例3

3点 \(~(-2,5),(1,5),(3,5)~\) を通る2次以下の関数 \(~f(x)~\) を求める。

\begin{align}
\displaystyle f(x)&=\frac{(x-1)(x-3)}{(-2-1)(-2-3)}\cdot 5+\frac{(x+2)(x-3)}{(1+2)(1-3)}\cdot 5+\frac{(x+2)(x-1)}{(3+2)(3-1)}\cdot 5 \\
\\
&=\frac{x^2-4x+3}{15}\cdot 5+\frac{x^2-x-6}{-6}\cdot 5+\frac{x^2+x-2}{10}\cdot 5 \\
\\
&=\frac{x^2-4x+3}{3} -\frac{5(x^2-x-6)}{6}+\frac{x^2+x-2}{2} \\
\\
&=\frac{2x^2-8x+6-5x^2+5x+30+3x^2+3x-6}{6} \\
\\
&=\frac{30}{6} \\
\\
&=5
\end{align}


\begin{align}
\displaystyle &f(x) \\
\\
&=\frac{(x-1)(x-3)}{(-2-1)(-2-3)}\cdot 5 \\
&+\frac{(x+2)(x-3)}{(1+2)(1-3)}\cdot 5 \\
&+\frac{(x+2)(x-1)}{(3+2)(3-1)}\cdot 5 \\
\\
&=\frac{x^2-4x+3}{15}\cdot 5+\frac{x^2-x-6}{-6}\cdot 5 \\
&+\frac{x^2+x-2}{10}\cdot 5 \\
\\
&=\frac{x^2-4x+3}{3} -\frac{5(x^2-x-6)}{6} \\
&+\frac{x^2+x-2}{2} \\
\\
&=\frac{2x^2-8x+6}{6}+\frac{-5x^2+5x+30}{6} \\
&+\frac{3x^2+3x-6}{6} \\
\\
&=\frac{30}{6} \\
\\
&=5
\end{align}

ということで、0次関数もOKです。


Ⅲ 証明

 証明についても、 \(~n=2~\) の場合についてのみ紹介しますが、同様の方法で一般の形を示すこともできます。

証明

\(~f(x)=g_1(x)y_1+g_2(x)y_2+g_3(x)y_3~\) とおく。・・・(*)
 
\(~f(x_{1})=y_{1},f(x_{2})=y_{2},f(x_{3})=y_{3}~\) を満たすように式を作りたいので、 \(~g_1(x),g_2(x),g_3(x)~\) は次の条件を満たす必要がある。
\begin{align}
& g_1(x_{1})=1,g_2(x_{1})=0,g_3(x_{1})=0 \\
& g_1(x_{2})=0,g_2(x_{2})=1,g_3(x_{2})=0 \\
& g_1(x_{3})=0,g_2(x_{2})=0,g_3(x_{3})=1 \\
\end{align}
 
まず、 \(~g_{1}(x)~\) について考える。 \(~g_1(x_{2})=g_1(x_{3})=0~\) より、因数定理から
\begin{equation}
g_{1}(x)=a_{1} (x-x_{2})(x-x_{3})
\end{equation}
と表せる。(ただし、 \(~a_{1}~\) は定数)
 
\(~g_1(x_{1})=1~\) より、上式から
\begin{align}
\displaystyle 1&=a_{1} (x_{1}-x_{2})(x_{1}-x_{3}) \\
\\
a_{1}&=\frac{1}{ (x_{1}-x_{2})(x_{1}-x_{3})}
\end{align}
が求まる。よって、
\begin{equation}
g_{1}(x)=\frac{(x-x_{2})(x-x_{3})}{(x_{1}-x_{2})(x_{1}-x_{3})}
\end{equation}
がわかった。同様の方法で、

\begin{align}
g_{2}(x)&=\frac{(x-x_{1})(x-x_{3})}{(x_{2}-x_{1})(x_{2}-x_{3})},g_{3}(x)=\frac{(x-x_{1})(x-x_{2})}{(x_{3}-x_{1})(x_{3}-x_{2})}
\end{align}


\begin{align}
g_{2}(x)&=\frac{(x-x_{1})(x-x_{3})}{(x_{2}-x_{1})(x_{2}-x_{3})}  \\
\\
g_{3}(x)&=\frac{(x-x_{1})(x-x_{2})}{(x_{3}-x_{1})(x_{3}-x_{2})}
\end{align}

が求まるため、(*)に代入して、

\begin{equation}
\displaystyle f(x)=\frac{(x-x_2)(x-x_3)}{(x_1-x_2)(x_1-x_3)}y_1+\frac{(x-x_1)(x-x_3)}{(x_2-x_1)(x_2-x_3)}y_2+\frac{(x-x_1)(x-x_2)}{(x_3-x_1)(x_3-x_2)}y_3
\end{equation}


\begin{align}
\displaystyle f(x)&=\frac{(x-x_2)(x-x_3)}{(x_1-x_2)(x_1-x_3)}y_1 \\
&+\frac{(x-x_1)(x-x_3)}{(x_2-x_1)(x_2-x_3)}y_2 \\
&+\frac{(x-x_1)(x-x_2)}{(x_3-x_1)(x_3-x_2)}y_3
\end{align}

が導かれた。また、それぞれの項は \(~x~\) の2次式なので、 \(~f(x)~\) も2次式である。 \(~\blacksquare~\)


シンプソンの公式について、まとめているときに補題として出てきたのがこの公式です。代入するだけなので、プログラミングでも使えそうですね。

   
 
 


◇参考文献等
・「Simpsonの公式による数値積分1」,<http://www012.upp.so-net.ne.jp/doi/sas/numerical/Simpson/Simpson1.pdf > 2018年8月14日アクセス
・「サボタージュ禁止のおさぼり日記」,<http://aaaazzzz036.hatenablog.com/entry/2013/05/06/121233 > 2018年8月15日アクセス