logo

폴리노미얼 인터폴레이션 📂수치해석

폴리노미얼 인터폴레이션

정의 1

서로 다른 x0,,xnx_{0} , \cdots , x_{n} 의 데이터 (x0,y0),,(xn,yn)(x_{0}, y_{0}) , \cdots , (x_{n} , y_{n}) 에 대해 p(xi)=yip (x_{i} ) = y_{i}degpn\deg p \le n 을 만족하는 인터폴레이션다항 함수 pp폴리노미얼 인터폴레이션polynomial Interpolation이라 한다.

정리

존재성과 유일성

  • [1]: 주어진 데이터에 대해서 pp 는 유일하게 존재한다.

라그랑주 공식

  • [2]: pn(x)=i=0nyili(X)p_{n} (x) = \sum_{i=0}^{n} y_{i} l_{i} (X)

뉴턴 계차상 공식

  • [3]: pn(x)=f(x0)+i=1nf[x0,,xi]j=0i1(xxj)p_{n} (x) = f(x_{0}) + \sum_{i=1}^{n} f [ x_{0} , \cdots , x_{i} ] \prod_{j=0}^{i-1} (x - x_{j} )

오차 분석

  • [4]: (n+1)(n+1)번 미분가능한 f:RRf : \mathbb{R} \to \mathbb{R} 와 어떤 ξH{x0,,xn}\xi \in \mathscr{H} \left\{ x_{0} , \cdots , x_{n} \right\} 에 대해 ff 의 폴리노미얼 인터폴레이션 pnp_{n} 은 어떤 tRt \in \mathbb{R} 에 대해 다음을 만족한다. f(t)pn(t)=(tx0)(txn)(n+1)!f(n+1)(ξ)\displaystyle f(t) - p_{n} (t) = {{ (t - x_{0}) \cdots (t - x_{n}) } \over { (n+1)! }} f^{(n+1)} ( \xi )

  • H{a,b,c,}\mathscr{H} \left\{ a,b,c, \cdots \right\}a,b,c,a,b,c, \cdots 를 포함하는 가장 작은 구간을 나타낸다.

설명

폴리노미얼 인터폴레이션은 한국어로 다항식 보간법이라 순화된다.

조건 degpn\deg p \le n

20190403\_105653.png

degpn\deg p \le n 라는 조건은 다른 게 아니라 꼭 degp=n\deg p = n 을 만족하는 pp 가 항상 존재한다는 보장이 없기 때문이다. 간단한 예로써 n=2n=2 일 때 위와 같이 세 점이 일직선 상에 놓여있다면, (n+1)=3(n+1)=3개의 점을 지나는 p2(x)=a2x2+a1x+a0p_{2} (x) = a_{2} x^{2} + a_{1} x + a_{0} 는 존재하지 않지만 그보다 차수가 낮은 p1(x)=a1x+a0p_{1} (x) = a_{1} x + a_{0} 는 존재한다. 이것은 사실 p2(x)=a2x2+a1x+a0p_{2} (x) = a_{2} x^{2} + a_{1} x + a_{0} 을 찾긴 했지만 a2=0a_{2} = 0 인 경우를 의미한다.

라그랑주 공식과 뉴턴 계차상 공식은 같다

공식 [2]와 [3]은 생긴 모양은 달라도 사실 [1]에 의해서 서로 같음을 알 수 있다. 본질적으로 두 공식은 정말 말 그대로 pnp_{n} 을 어떻게 나타내느냐의 차이밖에 없으며, 용도 상 다른 점은 뉴턴 계차상 공식은 새로운 데이터가 추가되었을 때 업데이트가 편하다는 이점이 있다는 정도 뿐이다.

실제 함수와의 오차

정리 [4]는 어떤 함수 ff 를 인터폴레이션하는 pnp_{n}ff 와 얼마나 차이가 나느냐를 보여준다. 보통의 경우에 (n+1)!(n+1)! 의 발산 속도는 아주 빠르기 때문에 데이터가 많이 주어질수록 인터폴레이션 pnp_{n} 의 정확성은 올라간다. 다만 이 공식은 딱히 수렴성을 논하는 것은 아니라는 것에 주의해야한다. 쉬운 예로써 ttH{x0,,xn}\mathscr{H} \left\{ x_{0} , \cdots , x_{n} \right\} 에서 정말, 정말 먼 곳에 있는 경우를 생각해볼 수 있다. 또한 ff 가 별로 좋지 못해서 미분할때마다 값이 커지고 그것이 심지어 (n+1)!(n+1)! 의 발산속도보다 빠르다면 얼마든지 이상해질 수 있다.

증명

[1]

전략: (n+1)(n+1)개의 연립방정식을 행렬로 나타낸 후 역행렬의 존재성과 유일성을 동시에 가져온다.


모든 i=0,,ni = 0, \cdots , n 에 대해 yi=pn(xi)=a0+a1xi++anxiny_{i} = p_{n} (x_{i}) = a_{0} + a_{1} x_{i} + \cdots + a_{n} x_{i}^{n} 을 만족하는 pnp_{n} 의 계수 a0,a1,,ana_{0} , a_{1} , \cdots , a_{n} 가 유일함을 보이면 된다. y:=[y0y1yn],X:=[1x0x0n1x1x1n1xnxnn],a:=[a0a1an] \mathbf{y} := \begin{bmatrix} y_{0} \\ y_{1} \\ \vdots \\ y_{n} \end{bmatrix}, X := \begin{bmatrix} 1 & x_{0} & \cdots & x_{0}^{n} \\ 1 & x_{1} & \cdots & x_{1}^{n} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{n} & \cdots & x_{n}^{n} \end{bmatrix} , \mathbf{a} := \begin{bmatrix} a_{0} \\ a_{1} \\ \vdots \\ a_{n} \end{bmatrix} 을 정의하고 연립방정식을 행렬로 나타내면 [y0y1yn]=[1x0x0n1x1x1n1xnxnn][a0a1an] \begin{bmatrix} y_{0} \\ y_{1} \\ \vdots \\ y_{n} \end{bmatrix} = \begin{bmatrix} 1 & x_{0} & \cdots & x_{0}^{n} \\ 1 & x_{1} & \cdots & x_{1}^{n} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{n} & \cdots & x_{n}^{n} \end{bmatrix} \begin{bmatrix} a_{0} \\ a_{1} \\ \vdots \\ a_{n} \end{bmatrix} 이제 y=Xa\mathbf{y} = X \mathbf{a} 를 만족하는 해 a\mathbf{a} 를 찾는 문제로 바뀌었다.

방데르몽드 행렬의 행렬식: XX 의 행렬식은 detX=1i<jn(xjxi)\displaystyle \det X = \prod_{1 \le i < j \le n } (x_{j} - x_{i})

가정에서 x0,,xnx_{0} , \cdots , x_{n} 는 서로 다르므로 detX0\det X \ne 0 이고, X1X^{-1} 이 존재한다. 따라서 a=X1y\mathbf{a} = X^{-1} \mathbf{y} 역시 존재한다. 한편 주어진 행렬에 대한 역행렬은 유일하므로, a\mathbf{a} 역시 유일하다.

[2]

크로네커델타 함수로 보인다.

[3]

계차상을 그대로 써서 정직하게 계산한다.

[4]

전략: 더미 함수들을 새로이 정의하고 그들의 미분가능성을 이용해 직접적인 계산을 회피한다. 세팅이 복잡하기 때문에 사실상 뒤에서부터 거꾸로 이해하는 게 편하다.


Claim: E(x):=f(x)pn(X)E (x) := f(x) - p_{n} (X) 에 대해서 다음이 성립한다. E(t)=(tx0)(txn)(n+1)!f(n+1)(ξ) E(t) = {{ (t - x_{0}) \cdots (t - x_{n}) } \over { (n+1)! }} f^{(n+1)} ( \xi )


Part 1.

우선 tt 가 노드포인트 x0,,xnx_{0} , \cdots , x_{n} 와 같다면 자명하게 성립하므로 tt 는 이들 노드포인트와는 다르다고 가정하자. Ψ(x):=(xx0)(xx1)(xxn)G(x):=E(x)Ψ(x)Ψ(t)E(t) \begin{align*} \Psi (x) :=& (x - x_{0} ) (x - x_{1}) \cdots (x - x_{n}) \\ G (x) :=& E(x) - {{ \Psi (x) } \over { \Psi (t) }} E(t) \end{align*} 위와 같이 새로운 함수들을 정의하면 ff, pnp_{n}, Ψ\Psi(n+1)(n+1) 번 미분가능하므로 GG 역시 (n+1)(n+1) 번 미분가능하다.


Part 2.

GGx=xix = x_{i} 을 대입하면 E(xi)=f(xi)pn(xi)=0E(x_{i}) = f(x_{i}) - p_{n} (x_{i}) = 0 이고 Ψ(xi)=0\Psi (x_{i} ) = 0 이므로 G(xi)=E(xi)Ψ(xi)Ψ(t)E(t)=0 G(x_{i}) = E(x_{i} ) - {{ \Psi (x_{i}) } \over { \Psi (t) }} E(t) = 0 GGx=tx = t 를 대입하면 Ψ(t)Ψ(t)=1\displaystyle {{ \Psi (t) } \over { \Psi (t) }} = 1 이므로 G(t)=E(t)E(t)=0 G(t) = E(t) - E(t) =0 따라서 GG(n+2)(n+2) 개의 서로 다른 영 x0,,xn,tx_{0} , \cdots , x_{n} , t 을 가진다.


Part 3.

편의상 xn+1:=tx_{n+1} :=t 이라 하자.

롤의 정리: 함수 f(x)f(x)[a,b][a,b] 에서 연속이고 (a,b)(a,b) 에서 미분가능하며 f(a)=f(b)f(a)=f(b)f(c)=0f ' (c)=0 를 만족하는 cc(a,b)(a,b) 에 적어도 하나 존재한다.

모든 i=0,,ni=0, \cdots , n 에 대해 G(xi)=0=G(xi+1) G(x_{i}) = 0 = G(x_{i+1}) 이므로 롤의 정리에 의해 g(xi)=0g ' ( x’_{i}) = 0 을 만족하는 xiH{xi,xi+1}x'_{i} \in \mathscr{H} \left\{ x_{i} , x_{i+1} \right\} 가 존재하고, 마찬가지로 모든 i=0,,(n1)i=0, \cdots , (n-1) 에 대해
g(xi)=0=g(xi+1) g ' (x’_{i}) = 0 = g ' (x’_{i+1}) 이므로 롤의 정리에 의해 G(xi)=0G''( x’’_{i}) = 0 을 만족하는 xiH{xi,xi+1}x''_{i} \in \mathscr{H} \left\{ x’_{i} , x’_{i+1} \right\} 가 존재한다. 이와 같이 귀납적으로 롤의 정리를 (n+1)(n+1) 번 반복해서 사용하면 G(n+1)(ξ)=0 G^{(n+1)} ( \xi ) = 0 를 만족하는 ξH{x0,,xn+1}\xi \in \mathscr{H} \left\{ x_{0} , \cdots , x_{n+1} \right\} 가 존재함을 보장할 수 있다.

한편 pnp_{n}nn차 다항함수이므로 E(n+1)(x)=f(n+1)(x) E^{(n+1)} (x) = f^{(n+1)} ( x) Ψ\Psi 의 최고차항은 xn+1x^{n+1} 이므로 Ψ(n+1)(x)=(n+1)! \Psi^{(n+1)} (x) = (n+1)! G(x)=E(x)Ψ(x)Ψ(t)E(t)\displaystyle G (x) = E(x) - {{ \Psi (x) } \over { \Psi (t) }} E(t) 의 양변을 xx 에 대해 (n+1)(n+1)번 미분하면 G(n+1)(x)=f(n+1)(x)(n+1)!Ψ(t)E(t) G^{(n+1)} (x) = f^{(n+1)} ( x) - {{ (n+1)! } \over { \Psi (t) }} E(t) G(n+1)G^{(n+1)}f(n+1)f^{(n+1)}x=ξx=\xi 을 대입하면 0=f(n+1)(ξ)(n+1)!Ψ(t)E(t) 0 = f^{(n+1)} ( \xi ) - {{ (n+1)! } \over { \Psi (t) }} E(t) E(t)=f(t)pn(t)E (t) = f(t) - p_{n} (t) 이므로 다음을 얻는다. f(t)j=0nf(xj)lj(t)=(tx0)(txn)(n+1)!f(n+1)(ξ) f(t) - \sum_{j=0}^{n} f( x_{j} ) l_{j} (t) = {{ (t - x_{0}) \cdots (t - x_{n}) } \over { (n+1)! }} f^{(n+1)} ( \xi )


  1. Atkinson. (1989). An Introduction to Numerical Analysis(2nd Edition): p131. ↩︎