ch17. polynomial interpolation - chibum lee | personal blog · 2015-08-28 · polynomial...

29
수치해석 수치해석 Numerical Analysis Numerical Analysis 161009 161009 Ch17. Ch17. Polynomial Polynomial Interpolation Interpolation

Upload: trinhliem

Post on 25-Jul-2019

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

수치해석수치해석Numerical AnalysisNumerical Analysis

161009161009

Ch17. Ch17. Polynomial Polynomial Ch17. Ch17. Polynomial Polynomial

InterpolationInterpolation

Page 2: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

다항식다항식다항식다항식 보간법보간법보간법보간법

T (°C) ρ (kg/m3) µ (N⋅s/m2) v (m2/s)

-40

0

20

50

100

150

200

250

300

400

1.52

1.29

1.20

1.09

0.946

0.835

0.746

0.675

0.616

0.525

1.51 × 10-5

1.71 × 10-5

1.80 × 10-5

1.95 × 10-5

2.17 × 10-5

2.38 × 10-5

2.57 × 10-5

2.75 × 10-5

2.93 × 10-5

3.25 × 10-5

0.99 × 10-5

1.33 × 10-5

1.50 × 10-5

1.79 × 10-5

2.30 × 10-5

2.85 × 10-5

3.45 × 10-5

4.08 × 10-5

4.75× 10-5

6.20 × 10-5

Numerical AnalysisNumerical Analysis

400

500

0.525

0.457

3.25 × 10

3.55 × 10-5

6.20 × 10

7.77 × 10-5

표에 포함되지 않은 온도에서의 밀도, 점성계수, 그리고 동점성계수는?

→가장 간단한 방법은 인접한 두 점을 잇는 직선을 구한 후, 그 직선 식을 이

용 - "선형보간법“

→데이터가 상당히 큰 곡률을 가지면 오차가 발생

→적절한 추정값을 얻을 수 있는 여러 방법을 검토

Page 3: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.1 17.1 17.1 17.1 보간법의보간법의보간법의보간법의 소개소개소개소개 (1/3)(1/3)(1/3)(1/3)

� 다항식 보간법

• 정확한 데이터 점들 사이에 위치한 값을 추정

• n 개의 데이터 점을 지나는 유일한 (n – 1)차 다항식으로 값을 추정

← 두 점을 지나는 유일한 직선 (1차 다항식)

12

321)( −++++= n

nxaxaxaaxf L

Numerical AnalysisNumerical Analysis

← 세 점을 지나는 유일한 포물선 (2차 다항식)

(a) 두 점을 잇는 1차식, (b)세 점을 잇는 포물선, (c) 네 점을 잇는 3차식`

Page 4: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.1 17.1 17.1 17.1 보간법의보간법의보간법의보간법의 소개소개소개소개 (2/3)(2/3)(2/3)(2/3)

유의사항: MATLAB은 다항식을 내림차순으로 표현

� 다항식 계수의 결정

nn

nn pxpxpxpxf ++++= −−−

1

2

2

1

1)( L

Numerical AnalysisNumerical Analysis

� 다항식 계수의 결정

• n 개의 대수 방정식으로 n 개의 계수를 동시에 결정

→ 명료한 방법

Page 5: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

예제 17.1 (1/2)

� Q. 표 17.1의 아래쪽에 기재된 세 개의 밀도값을 지나는

포물선 의 계수를 구하라.32

2

1)( pxpxpxf ++=

T (°C) ρ (kg/m3) µ (N⋅s/m2) v (m2/s)

-40

0

20

50

100

150

200

1.52

1.29

1.20

1.09

0.946

0.835

0.746

1.51 × 10-5

1.71 × 10-5

1.80 × 10-5

1.95 × 10-5

2.17 × 10-5

2.38 × 10-5

2.57 × 10-5

0.99 × 10-5

1.33 × 10-5

1.50 × 10-5

1.79 × 10-5

2.30 × 10-5

2.85 × 10-5

3.45 × 10-5

Numerical AnalysisNumerical Analysis

Sol)

4570)( 500

5250)( 400

6160)( 300

33

22

11

.xfx

.xfx

.xfx

==

==

==

32

2

1

32

2

1

32

2

1

)500()500(4570

)400()400(5250

)300()300(6160

ppp.

ppp.

ppp.

++=

++=

++=

=

457.0

525.0

616.0

1500000,250

1400000,160

1300000,90

3

2

1

p

p

p

200

250

300

400

500

0.746

0.675

0.616

0.525

0.457

2.57 × 10

2.75 × 10-5

2.93 × 10-5

3.25 × 10-5

3.55 × 10-5

3.45 × 10

4.08 × 10-5

4.75× 10-5

6.20 × 10-5

7.77 × 10-5

Page 6: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

예제 17.1 (2/2)

>> >> >> >> format longformat longformat longformat long

>> >> >> >> A = [90000 300 1; 160000 400 1; 250000 500 1];A = [90000 300 1; 160000 400 1; 250000 500 1];A = [90000 300 1; 160000 400 1; 250000 500 1];A = [90000 300 1; 160000 400 1; 250000 500 1];

>> >> >> >> b = [0.616 0.525 0.457]';b = [0.616 0.525 0.457]';b = [0.616 0.525 0.457]';b = [0.616 0.525 0.457]';

>> >> >> >> p = Ap = Ap = Ap = A\\\\bbbb

p = p = p = p = 0.000001150000000.000001150000000.000001150000000.00000115000000

----0.001715000000000.001715000000000.001715000000000.00171500000000

Numerical AnalysisNumerical Analysis

----0.001715000000000.001715000000000.001715000000000.00171500000000

1.027000000000001.027000000000001.027000000000001.02700000000000

다항식은

350°C에서의 밀도를 계산하면

027.1001715.000000115.0)( 2 +−= xxxf

567625.0027.1)350(001715.0)350(00000115.0)350( 2 =+−=f

Page 7: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.1 17.1 17.1 17.1 보간법의보간법의보간법의보간법의 소개소개소개소개 (3/3)(3/3)(3/3)(3/3)

예제에 나타나는 계수행렬은 특정한 형태의 구조를 가진다.

→ Vandermonde matrix

매우 불량한 조건의 행렬

(반올림오차에 매우 민감)

x1

n−1 x1

n−2L x1 1

x2

n−1 x2

n−2L x2 1

M M O M M

xn−1

n−1 xn−1

n−2L xn−1 1

xnn−1 xn

n−2L xn 1

p1

p2

Mpn−1

pn

=

f x1( )f x2( )M

f xn−1( )f xn( )

Numerical AnalysisNumerical Analysis

다른 방법으로 컴퓨터 실행에 적합한 Newton과 Lagrange 다항식을다룬다.

MATLAB 함수: polyfit과 polyval

• 데이터 점의 수 > 계수의 수 → 다항식 회귀분석• 데이터 점의 수 = 계수의 수 → 다항식 보간

Page 8: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.2 17.2 17.2 17.2 Newton Newton Newton Newton 보간다항식보간다항식보간다항식보간다항식 (1/6)(1/6)(1/6)(1/6)

� 선형보간법

닮은꼴 삼각형에서

12

12

1

11 )()()()(

xx

xfxf

xx

xfxf

−=

))(()()()(2

)()()(1

NewtonSimpleOrder

2131212

2

3212

1211211

xxxxbxxbbxfxaxaaxfnd

xxbbxfxaaxfst

−−+−+=++=

−+=+=

Numerical AnalysisNumerical Analysis

Newton 선형보간공식

여기서 f1(x) = 1차 보간다항식

• 간격이 작을수록 → 보다 나은 근사값

121 xxxx −−

)()()(

)()( 1

12

1211 xx

xx

xfxfxfxf −

−−

+=

1111차차차차 도함수의도함수의도함수의도함수의유한제차분근사값유한제차분근사값유한제차분근사값유한제차분근사값

선형보간법의 도식적 표현

Page 9: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

예제 17.2 (선형보간법)

� Q. 선형보간법을 이용하여 자연로그 ln2를 계산하라.

먼저 보간법으로 과 사이에서 추정

하고, 그 다음에 더 작은 간격인 과 사

이에서 추정하라. (참고로 )

풀이) x1 = 1과 x2 = 6에 대하여

01ln = 791759.16ln =1ln )386294.1(4ln =

6931472.02ln =

Numerical AnalysisNumerical Analysis

풀이) x1 = 1과 x2 = 6에 대하여

x1 = 1과 x2 = 4에 대하여

백분율 상대오차는 각각 48.3%와 33.3%이다.

3583519.0)12(16

0791759.10)2(1 =−

−+=f

4620981.0)12(14

0386294.10)2(1 =−

−+=f

Page 10: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.2 17.2 17.2 17.2 Newton Newton Newton Newton 보간다항식보간다항식보간다항식보간다항식 (2/6)(2/6)(2/6)(2/6)

� 2차 보간법

• 세 개의 데이터 점

• 2차 다항식 = 포물선

→ Taylor 급수전개와 유사함))(()()( 2131212 xxxxbxxbbxf −−+−+=

)(xfb =

Numerical AnalysisNumerical Analysis

→ 두 점 x1 과 x2를 잇는 직선의 기울기

→ 2차 곡률

→ 2차 도함수의 유한제차분근사와

매우 유사 (식 (4.27) 참조)

)( 11 xfb =

12

122

)()(

xx

xfxfb

−=

13

12

12

23

23

3

)()()()(

xx

xx

xfxf

xx

xfxf

b−

−−

−−−

=

Page 11: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

예제 17.3 (2차 보간법)

� Q. 세 점 , , 과 2차

Newton 다항식을 이용하여 ln2의 값을 추정하라.

풀이)

1.791759)( 6

1.386294)( 4

0)( 1

33

22

11

==

==

==

xfx

xfx

xfx

01ln = 791759.16ln =386294.14ln =

Numerical AnalysisNumerical Analysis

추정 값이 갖는 백분율 상대오차는 18.4%이다.

01 =b 4620981.014

0386294.12 =

−=b

0518731.016

4620981.046

386294.1791759.1

3 −=−

−−−

=b

)4)(1(0518731.0)1(4620981.00)(2 −−−−+= xxxxf

5658444.0)2(2 =f

Page 12: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.2 17.2 17.2 17.2 Newton Newton Newton Newton 보간다항식보간다항식보간다항식보간다항식 (3/6)(3/6)(3/6)(3/6)

� Newton 보간다항식의 일반적인 형태

n 개의 데이터 점에 (n – 1)차 다항식을

접합시키는 것으로 일반화할 수 있다.

n 개의 데이터 점 을 이용하여

계수 을 계산한다.

)())(()()( 1211211 −− −−−++−+= nnn xxxxxxbxxbbxf LL

)](,[,)],(,[)],(,[ 2211 nn xfxxfxxfx L

bbb ,,, L

Numerical AnalysisNumerical Analysis

계수 을 계산한다.nbbb ,,, 21 L

],,,,[

],,[

],[

)(

121

1233

122

11

xxxxfb

xxxfb

xxfb

xfb

nnn K

M

−=

=

=

=

Page 13: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

여기서 괄호로 표시된 함수는 유한제차분을 나타낸다.

– 1차 유한제차분

– 2차 유한제차분

– (n-1)차 유한제차분

17.2 17.2 17.2 17.2 Newton Newton Newton Newton 보간다항식보간다항식보간다항식보간다항식 (4/6)(4/6)(4/6)(4/6)

ji

ji

jixx

xfxfxxf

−=

)()(],[

ki

kjji

kjixx

xxfxxfxxxf

−=

],[],[],,[

],,,[],,,[ xxxfxxxf −

Numerical AnalysisNumerical Analysis

– (n-1)차 유한제차분

일반적인 Newton 보간다항식

],,,,[)())((

],,[))((],[)()()(

121121

1232112111

xxxxfxxxxxx

xxxfxxxxxxfxxxfxf

nnn

n

KLL −−

−−−++

−−+−+=

1

12121121

],,,[],,,[],,,,[

xx

xxxfxxxfxxxxf

n

nnnnnn −

−= −−−

KKK

Page 14: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.2 17.2 17.2 17.2 Newton Newton Newton Newton 보간다항식보간다항식보간다항식보간다항식 (5/6)(5/6)(5/6)(5/6)

• 데이터 점들이 등간격일 필요가 없고, 수평축의 좌표값이

올림차순일 필요도 없다.

• 고차 차분이 저차 차분의 차이에 의해 계산되어지는

순환적인(recursive) 시스템이다.

Numerical AnalysisNumerical Analysis

Page 15: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

예제 17.4 (Newton 보간다항식) (1/2)

� Q. 3차 Newton 보간다항식으로 ln2의 값을 추정하라.

사용되는 네 개의 데이터 점은 [x1 = 1; f(x1) =0],

[x2 = 4 f(x2) = 1.386294], [x3 = 6; f(x3) = 1.791759,]

그리고 [x4 = 5; f(x4) = 1.609438]이다.

Sol) ))()(())(()()( xxxxxxbxxxxbxxbbxf −−−+−−+−+=

Numerical AnalysisNumerical Analysis

Sol)

1차 제차분을 계산하면

))()(())(()()( 32142131213 xxxxxxbxxxxbxxbbxf −−−+−−+−+=

4620981.014

0386294.1],[ 12 =

−−

=xxf

2027326.046

386294.1791759.1],[ 23 =

−=xxf

1823216.065

791759.1609438.1],[ 34 =

−=xxf

Page 16: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

예제 17.4 (Newton 보간다항식) (2/2)

2차 제차분:

3차 제차분:

05187311.016

4620981.02027326.0],,[ 123 −=

−−

=xxxf

02041100.045

2027326.01823216.0],,[ 234 −=

−=xxxf

007865529.015

)05187311.0(02041100.0],,,[ 1234 =

−−−−

=xxxxf

Numerical AnalysisNumerical Analysis

xi f(xi) First Second Third

1

4

6

5

0

1.386294

1.791759

1.609438

0.4620981

0.2027326

0.1823216

-0.05187311

-0.02041100

0.007865529

)6)(4)(1(007865529.0

)4)(1(05187311.0)1(4620981.00)(3

−−−+

−−−−+=

xxx

xxxxf

6287686.0)2(3 =f

Page 17: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.2 17.2 17.2 17.2 Newton Newton Newton Newton 보간다항식보간다항식보간다항식보간다항식 (6/6)(6/6)(6/6)(6/6)function yint = Newint(x,y,xx)% Newint(x,y,xx)% Newton interpolation uses an (n-1)-order Newton

interpolating% polynomial based on n data points (x,y) to determine yint at

xx.% input% x = independent variable% y = dependent variable% xx = value of independent variable for interpolation% output% yint = interpolated value of dependent variable% compute a difference tablen = length(x);

>> format long>> x =[1 4 6 5]';>> y = log(x);>> Newint(x,y,2) % ln 2ans =

0.62876857890841>> xx=[1 2 3 4 5 6]'; % 6>> format short>> Newint(x,y,xx)

Numerical AnalysisNumerical Analysis

n = length(x);if length(y) ~=n, error ('x and y must be same length'); endb = zeros(n,n);% assign dependent variables to the first column of bb(:,1) = y(:); % (:) ensures that y is a column vectorfor j = 2:n

for i=1:n-j+1b(i,j) = (b(i+1,j-1)-b(i,j-1))/(x(i+j-1)-x(i));

endEnd% use the finite divided differences to interpolatext = 1;yint = b(1,1);for j = 1:n-1

xt = xt.*(xx-x(j));yint = yint + b(1,j+1)*xt;

end

>> Newint(x,y,xx)ans =

00.62881.07511.38631.60941.7918

>> Newint(x,y,2) % ln 2ans =

0.6288

Page 18: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.3 17.3 17.3 17.3 Lagrange Lagrange Lagrange Lagrange 보간다항식보간다항식보간다항식보간다항식 (1/3)(1/3)(1/3)(1/3)

� 직선으로 연결하고자 하는 두 값의 가중평균으로

선형 보간다항식을 만들면,

• 여기서 L: 직선에 대한 가중계수

)()()( 2211 xfLxfLxf +=

Order Simple Lagrange

1st f1(x) = a1 + a2x f1(x) = L1 f x1( )+ L2 f x2( )2nd f2 (x) = a1 + a2x+ a3x

2 f2 (x) = L1 f x1( )+ L2 f x2( )+ L3 f x3( )

Numerical AnalysisNumerical Analysis

• 여기서 L: 직선에 대한 가중계수

� L1(x1)=1, L1(x2)=0

� L2(x1)=0, L2(x2)=1

� :선형 Lagrange 보간다항식

21

21

xx

xxL

−=

12

12

xx

xxL

−=

)()()( 2

12

11

21

21 xf

xx

xxxf

xx

xxxf

−+

−=

Page 19: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.3 17.3 17.3 17.3 Lagrange Lagrange Lagrange Lagrange 보간다항식보간다항식보간다항식보간다항식 (2/3)(2/3)(2/3)(2/3)

� 세 점에 대해 확장� 2차 Lagrange 보간다항식

• 각 포물선은 세 점 중 한 점을 지나고 나머지 점에서는 0이다.

• 세 포물선의 합은 세 점을 지나는 유일한 포물선이다.

)())((

))(()(

))((

))(()(

))((

))(()( 3

2313

212

3212

311

3121

322 xf

xxxx

xxxxxf

xxxx

xxxxxf

xxxx

xxxxxf

−−

−−+

−−

−−+

−−

−−=

Numerical AnalysisNumerical Analysis

� 고차 Lagrange 다항식으로 일반화하면

여기서

∑=

− =n

i

iin xfxLxf1

1 )()()(

∏≠= −

−=

n

ijj ji

j

ixx

xxxL

1

)(

Page 20: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

예제 17.5 (Lagrange 보간다항식)

� Q. 다음에 주어지는 데이터를 사용하여 1차와 2차

Lagrange 보간다항식으로 T = 15 °C 에서의 모터오일의

밀도를 계산하라.

212.0)( 40

800.0)( 20

85.3)( 0

33

22

11

==

==

==

xfx

xfx

xfx

Numerical AnalysisNumerical Analysis

Sol) 1차 Lagrange 다항식:

2차 Lagrange 다항식:

5625.1800.0020

01585.3

200

2015)(1 =

−+

−=xf

3316875.1212.0)2040)(040(

)2015)(015(

800.0)4020)(020(

)4015)(015(85.3

)400)(200(

)4015)(2015()(2

=−−

−−+

−−

−−+

−−

−−=xf

Page 21: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.3 17.3 17.3 17.3 Lagrange Lagrange Lagrange Lagrange 보간다항식보간다항식보간다항식보간다항식 (3/3)(3/3)(3/3)(3/3)

function yint = Lagrange(x,y,xx)% Lagrange(x,y,xx)% Lagrange interpolation uses an (n-1)-order Lagrange interpolating% polynomial based on n data points (x,y) to determine yintat xx.% input% x = independent variable% y = dependent variable% xx = value of independent variable for interpolation% output% yint = interpolated value of dependent variablen = length(x);

>> format long; T = [-40 0 20 50]';d = [1.52 1.29 1.2 1.09]'; density = Lagrange(T,d,15)

density =1.22112847222222

Numerical AnalysisNumerical Analysis

n = length(x);if length(y) ~=n, error ('x and y must be same length'); ends = 0;for i = 1:n

product = y(i);for j = 1:n

if i ~= jproduct = product * (xx-x(j))/(x(i)-x(j));

endends = s + product;

endyint = s;

Page 22: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.4 17.4 17.4 17.4 역보간법역보간법역보간법역보간법 (1/2)(1/2)(1/2)(1/2)

x 1 2 3 4 5 6 7

f(x) 1 0.5 0.3333 0.25 0.2 0.1667 0.1429

주어진 자료를 이용하여 f(x) = 0.3에 해당되는 x값은 어떻게 구하는가?

→ f(x) = 1/x ∴ x = 1/0.3 = 3.333

→ 역보간법: 주어진 f(x)의 값에 해당하는 x값을 구하는 문제

Numerical AnalysisNumerical Analysis

→ 수평축이 부등간격이 됨(많은 점들이 촘촘히 위치하고 몇 개가 동떨어짐)

→ 진동현상을 초래할 위험이 큼!(다항식 접합에 불량 조건을 갖는 경우)

f(x) →새로운 x 0.1429 0.1667 0.2 0.25 0.3333 0.5 1

x →새로운 f(x) 7 6 5 4 3 2 1

Page 23: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.4 17.4 17.4 17.4 역보간법역보간법역보간법역보간법 (2/2)(2/2)(2/2)(2/2)

� 극복하는 다른 방법

• x(일반적으로 등간격)에 대해 구해진 다항식 fn(x)을 원래데이터에

접합 � 근을 구하는 문제 “f(x)-fdesired=0 for x”

Eg) 세 점 (2, 0.5), (3, 0.3333), 그리고 (4, 0.25)에 대해

2차 보간다항식은 다음과 같으므로

Numerical AnalysisNumerical Analysis

(참고로 정해는 3.333)

08333.1375.0041667.0)(2

2 +−= xxxf

08333.1375.0041667.03.0 2 +−= xx

295842.3or 704158.5)041667.0(2

78333.0)041667.0(4)375.0(375.0 2

=−−±

=x

Page 24: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.5 17.5 17.5 17.5 외삽법과외삽법과외삽법과외삽법과 진동진동진동진동 (1/2)(1/2)(1/2)(1/2)

� 외삽법(extrapolation)

• 주어진 기본 점들의 밖에 위치한 x에 대해 f(x)의 값을 추정

• 실제 곡선은 예측값으로부터 쉽게 벗어날 수 있으므로,

외삽을 수행할 경우 매우 주의하여야 한다.

Numerical AnalysisNumerical Analysis

Page 25: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

• Q. 표는 1920년부터 2000년까지의 미국의 인구를 백만

명 단위로 나타낸 것이다.

예제 17.6 (외삽법의 위험성) (1/2)

년도 1920 1930 1940 1950 1960 1970 1980 1990 2000

인구 106.46 123.08 132.12 152.27 180.67 205.05 227.23 249.46 281.42

Numerical AnalysisNumerical Analysis

처음 8개의 점(1920년에서 1990년까지)에 대하여 7차

다항식을 접합시켜라. 이 다항식과 외삽법을 이용하여

2000년의 인구를 예측하고 실제 값과 비교하라.

Page 26: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

예제 17.6 (외삽법의 위험성) (2/2)

>> t = [1920:10:1990];>> pop = [106.46 123.08 132.12 152.27 180.67 205.05 227.23 249.46];>> p = polyfit(t, pop, 7);

Warning: Polynomial is badly conditioned. Remove repeated data pointsor try centering and scaling as described

in HELP POLYFIT.

>> ts = (t-1955)/35;

Numerical AnalysisNumerical Analysis

>> ts = (t-1955)/35;>> p = polyfit(ts, pop, 7)p =Columns 1 through 8 -61.9393 -32.9356 147.0977 38.1565 -115.3518 6.4156 101.6934

166.3235>> p2000 = polyval(p, (2000-1955)/35)p2000 =175.0800

>> tt=linspace(1920,2000);>> pp = polyval(p, (tt-1955)/35);>> plot(t,pop,'o',tt,pp)

Page 27: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

17.5 17.5 17.5 17.5 외삽법과외삽법과외삽법과외삽법과 진동진동진동진동 (2/2)(2/2)(2/2)(2/2)

� 진동

• “(차수가) 더 많으면 더 좋은가"?

→ 다항식 보간법에서는 절대로 그렇지 않다.

→ 고차 다항식은 반올림오차에 민감하여 불량한 조건이 되기 쉽다.

Numerical AnalysisNumerical Analysis

Page 28: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

예제 17.7 (고차 다항식보간법의 위험성) (1/2)

� Q. 1901년에 Carl Runge는 간단한 함수로 고차 다항식

보간법의 위험성을 보였다.

이 함수는 Runge 함수라고 불린다. 구간 [-1, 1]에서 등

2251

1)(

xxf

+=

Numerical AnalysisNumerical Analysis

이 함수는 Runge 함수라고 불린다. 구간 [-1, 1]에서 등

간격으로 5개와 11개로 데이터가 주어질 때 polyfit 함수

와 polyval 함수를 사용하여 4차와 10차 다항식으로 접합

시켜 예측한 값을 실제 값과 그림으로 비교하라.

Page 29: Ch17. Polynomial Interpolation - Chibum Lee | personal blog · 2015-08-28 · Polynomial Interpolation ... MATLAB 은다항식을 ... 다른방법으로컴퓨터실행에적합한Newton과Lagrange다항식을

예제 17.7 (고차 다항식보간법의 위험성) (2/2)>> x = linspace(-1,1,5); y = 1./(1+25*x.^2);

xx = linspace(-1,1);

>> p = polyfit(x,y,4); y4 = polyval(p,xx);

yr = 1./(1+25*xx.^2);

plot(x,y,'o',xx,y4,xx,yr,'--') % 4차 보간다항식 결과 그래프

>> x = linspace(-1,1,11); y = 1./(1+25*x.^2);

p = polyfit(x,y,10); y10 = polyval(p,xx);

plot(x,y,'o',xx,y10,xx,yr,'--') % 10차 보간다항식 결과 그래프

Numerical AnalysisNumerical Analysis

• 보통의 경우에는 고차 다항식의 사용을 피해야 한다