the error in taylor’s polynomial, polynomial evaluation

2023. 10. 18. 00:44수치해석학

f(x) 에 대한 테일러 근사를 효율적으로 사용하려면 정확도 계산하는 과정이 필요하다.

 

1. taylor's remainder thm

f(x)가 A<= x <=B 인 구간에서 연속인 n+1개의 도함수를 가진다고 가정.

구간 사이에 있는 점을 a라고 하자.

 

 f(x) - pn(x) 를 Rn로 정의하자.  (Pn은 a를 기준으로 근사됨.)

f(x)에 n개의 도함수들로 근사한 pn(x)를 빼면 n+1 번째 도함수가 남고 이는 f^(n+1)(a)/(n+1)! (x-a)^(n+1) 이다.

그러면 Rn(x)는  f^(n+1)(a)/(n+1)! (x-a)^(n+1) < Rn(x) <  f^(n+1)(x)/(n+1)! (x-a)^(n+1) 을 만족한다.

a와 x 사이의 임의의 값 cx를 둬서 Rn(x)를 정의하면 밑의 식을 얻을 수 있다.

이를 활용해 보자.

f(x) = e^x 이고 a= 0 , x = 1 일때, Rn(1) 어느 범위의 값인지 알아보자

e^x - pn(x) = e^c/(n+1)! x^n+1 , n>= 0 ,  0(a) < c < x 

x = 1

0 < c < 1

e^x - pn(1) = e^c/(n+1)!

c가 0일때와 1일때의 값 사이에 Rn(1) 이 존재한다.

1/(n+1)! < Rn(1) < e/(n+1)!

 

Rn(1) 이 10^-9 보다 작은 오차를 가지기 위해 n이 몇 이상이 되어야하는가?

 

e/(n+1)! 는 계산하기 불편하니 e보다 큰 자연수를 찾자.

e<3 이고  e/(n+1)! < 3/(n+1)! 임을 알 수 있다.

 

1/(n+1)! < Rn(1) < e/(n+1)! < 3/(n+1)!

 

여기서 우리는 가정을 통해 Rn(1) 이  10^-9 보다 작은 값이라고 생각하자.

Rn(1) <= 10^-9

 

Rn(1)를 모르지만 상한을 아니 상한울 10^-9 보다 작다고 가정하자.

3/(n+1)!  <= 10^-9 

n >=12 일때 해당 부등식을 만족한다.

따라서  R12(1) < 3/(12+1)! <= 10^-9 임을 알 수 있다.

p12(1) 은 0<c<1 일때 10^-9보다 작은 오차를 가지는 근사임을 알 수 있다.

n 무한에 가까워질수록 오차는 0 가까워짐을 있다.

 

*f(x) 고계도 함수가 연속임을 가정해야함

 

용어 정리

테일러 다항식 -> 도함수 n까지

테일러 급수 ->  도함수 무한까지

 

ex)

e^x 0에서 근사시켰을 테일러 급수

 

 

polynomial evaluation

프로그래머 관점으로 다항식을 평가하자.

 

p(x) = a0 +a1x + a2x^2 + …. + anx^n

a0 , .. , an 과 x가 주어질때 몇번의 곱셈으로 다항식을 계산할 수 있을까?

 

p(x) = 3 - 4x -5x^2 -6x^3 +7x^4 - 8x^5

각 항을 c*x^k  으로 계산한다면

p(x) 를 평가하기 위해 1 + 2 + 3 +4 +5 (5*6 /2)의 곱셈이 필요하다.

4*x(1) + 5*x*x(2) + …

O(n^2)

 

어떻게 더 효율적으로 다항식을  평가할 수 있을까?

 

x^k = x * x^(k-1) 로 보자

x부터 순차적으로 보면서

x 

x*x 

x*x^2 // 여기서 x^2은 이전에 계산

그러면 1+2+2+2+2 의 곱셈이 필요하다.

O(2n-1)

 

 

또 다른방법 nexted multiplication

3+x(-4 +x(-5 +x(-6 +x(-7 +8x) )))

이러면 O(n) 가능

 

고속 푸리에 변환, 점화식을 이용한 방법 등을 이용해 더 효율적으로 다항식을 평가할 수 있다.

'수치해석학' 카테고리의 다른 글

체비쇼프 다항식  (1) 2023.10.26
taylor polynomials  (2) 2023.10.17