Transcript

2017-11-30

1

16장 스플라인과 소구간별보간법

16.1 스플라인 보간법의 소개16.2 선형 스플라인16.3 2차 스플라인16.4 3차 스플라인16.5 MATLAB에서의

소구간별 보간법16.6 다차원 보간법

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.1 스플라인 보간법의 소개 (1/3)

고차 다항식 보간법

® 반올림오차와 진동현상으로 인해 틀린 결과를 초래한다.

해결하기 위한 방법: 데이터 점들의 부분집합에서 저차의

다항식을 소구간별로 적용하는 것

Þ 이런 방법으로 연결되는 다항식을 "스플라인 함수"라고 부른다.

- 3차 스플라인: 두 개의 데이터 점을 연결하는 곡선이 3차인 경우

- 시각적으로 매끄럽게 처리

- 부분적으로 급격한 변화가 있는 구간에서 우수한 근사를 제공

2017-11-30

2

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.1 스플라인 보간법의 소개 (2/3)

스플라인 보간법이 고차 보간다항식보다 우수한 경우를 나타내는 시각적 비교:그림 (a)~ (c)의 보간다항식에서는 x=0에서 급격한 변화가 진동을 발생하나,그림 (d)의 선형 스플라인에서는 직선으로 연결되는 우수성을 보임

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.1 스플라인 보간법의 소개 (3/3)

제도에서 일련의 점들을 통과하는 완만한 곡선을 그리기 위해 스플라인을 사용

2017-11-30

3

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.2 선형 스플라인 (1/6)

각 구간 i는 고유한 스플라인 함수 si(x)를 가진다.

선형 스플라인에서의 각 함수는 구간의 양 끝점인

두 점을 연결하는 직선으로 다음과 같다.

여기서 는 절편이고,

는 기울기이다.

Þ

Newton의 1차 다항식과 동일한 결과를 얻음

)()( iiii xxbaxs -+=

ii fa =

ii

iii xx

ffb--

=+

+

1

1

)()(1

1i

ii

iiii xx

xxfffxs -

--

+=+

+

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.2 선형 스플라인 (2/6)

스플라인을 유도하는데 n – 1 개의 구간에서 n개의 데이터 점들이 사용됨

2017-11-30

4

Applied Numerical Methods 16장 스플라인과 소구간 보간법

예제 16.1 (1차 스플라인)

Q. 1차 스플라인으로 주어진 자료를 접합하고, x = 5에서의 함수 값을 추정하라.

풀이)

i xi fi1234

3.04.57.09.0

2.51.02.50.5

3.1)5.4(5.40.70.15.20.1)(

52 =-

--

+==x

xxs

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.2 선형 스플라인 (3/6)

네 점에 대한 스플라인 접합: (a) 선형 스플라인, (b) 2차 스플라인(c) 3차 스플라인 + 3차 보간다항식

2017-11-30

5

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.2 선형 스플라인 (4/6)

1차 스플라인의 단점은 완만한 곡선이 아니며,

절점에서 기울기가 급격히 변한다.

¬ 1차 도함수가 불연속

절점에서 매끄럽게 하기 위해 고차 스플라인이

요구된다.

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.3 2차 스플라인 (1/4)

n차 도함수가 절점에서 연속이 되기 위해서 적어도

n + 1 차 스플라인이 사용되어야 한다.

3차 다항식 (또는 3차 스플라인):

실제로 가장 보편적으로 사용됨

- 1차와 2차 도함수가 연속

- 3차 이상의 고차 도함수는 불연속: 식별이 거의 불가능

2017-11-30

6

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.3 2차 스플라인 (2/4)

2차 다항식의 유도 (또는 2차 스플라인)

2차 다항식

- 실제적으로 크게 중요하지 않음

- 고차 스플라인을 전개하는 일반적인 방법을 제시하는데 적합

n 개의 데이터 점에 대한 n – 1 개의 구간

® 3(n – 1) 개의 미지 상수

2)()()( iiiiii xxcxxbaxs -+-+=

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.3 2차 스플라인 (3/4)

� 연속조건: 함수는 모든 점을 지나야 한다.

® (구간의 시작점)

\ ® (n – 1) 개의 조건

미지수의 개수가 2(n – 1)로 줄었음

‚ 인접하는 다항식의 함수 값은 절점에서 같아야 한다.

절점 (i + 1)에서

라고 정의하면

® (n – 1) 개의 조건

더 필요한 조건의 수는 2(n – 1) – (n – 1) = n – 1

2)()()( iiiiiiii xxcxxbaxf -+-+= ii fa =2)()()( iiiiii xxcxxbfxs -+-+=

21111111

211 )()()()( +++++++++ -+-+=-+-+ iiiiiiiiiiiiii xxcxxbfxxcxxbf

iii xxh -= +1

12

+=++ iiiiii fhchbf

2017-11-30

7

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.3 2차 스플라인 (4/4)

ƒ 내부 절점에서 1차 도함수는 같아야 한다.

내부 절점 (i + 1)에서

® (n – 2) 개의 조건

나머지 필요한 조건은 (n – 1) – (n – 2) = 1 개.

„ 첫 번째 점에서 2차 도함수를 0이라고 가정한다.

® 이 조건은 최초의 두 점을 직선으로 연결한다는것을 의미한다.

)(2)( iiii xxcbxs -+=¢

12 +=+ iiii bhcb

01 =c

Applied Numerical Methods 16장 스플라인과 소구간 보간법

예제 16.2 (2차 스플라인) (1/4)

Q. 주어진 자료를 2차 스플라인으로 접합하고,

x = 5에서의 함수값을 추정하라.

i xi fi1234

3.04.57.09.0

2.51.02.50.5

2017-11-30

8

Applied Numerical Methods 16장 스플라인과 소구간 보간법

예제 16.2 (2차 스플라인) (2/4)

풀이) 4 개의 데이터 점과 3 개의 구간을 갖는다.

® 3(4 – 1) = 9 조건이 있어야 함.

조건 � (연속방정식)과 „ (c1 = 0)를 적용하면

® (4 – 1) + 1 = 4 개의 조건이 만족함.

i = 1에서 3에 대해 조건 ‚(절점에서의 함수값)를

적용하면 4 – 1 = 3 개의 조건이 만족함.

2111 fhbf =+

3222222 fhchbf =++

4233333 fhchbf =++

Applied Numerical Methods 16장 스플라인과 소구간 보간법

예제 16.2 (2차 스플라인) (3/4)

조건 ƒ(내부 절점에서의 도함수값)® 3 – 1 = 2 개의 조건이 만족함.

필요한 함수와 구간 폭의 값은 다음과 같다.

21 bb =

3222 2 bhcb =+

5.00.20.70.9 5.25.25.40.7 0.15.10.35.4 5.2

4

33

22

11

==-===-===-==

fhfhfhf

2017-11-30

9

Applied Numerical Methods 16장 스플라인과 소구간 보간법

예제 16.2 (2차 스플라인) (4/4)

행렬로 표시하면

®

그러므로

® 그림 16.4 (b) 참조

ïïï

þ

ïïï

ý

ü

ïïï

î

ïïï

í

ì

-

-

=

ïïï

þ

ïïï

ý

ü

ïïï

î

ïïï

í

ì

úúúúúú

û

ù

êêêêêê

ë

é

--

0025.15.1

0151000011420000025.65.2000005.1

3

3

2

2

1

cbcbb

6.1 2.264.0 1

1

33

22

1

-===-=

-=

cbcb

b

23

22

1

)0.7(6.1)0.7(2.25.2)(

)5.4(64.0)5.4(0.1)(

)3(5.2)(

---+=

-+--=

--=

xxxs

xxxs

xxs

66.0)5.45(64.0)5.45(0.1)( 22 =-+--=xs

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.4 3차 스플라인 (1/9)

가장 많이 사용되는 방법이다.

4차 이상의 고차 스플라인은 내재된 불안정성으로

사용되지 않는다.

3차 다항식의 유도 (또는 3차 스플라인)

(*)

n 개의 데이터 점에 대한 n – 1 개의 구간

® 4(n – 1) 개의 미지 계수

32 )()()()( iiiiiiii xxdxxcxxbaxs -+-+-+=

2017-11-30

10

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.4 3차 스플라인 (2/9)

� 연속조건: 함수는 모든 점을 지나야 한다.

®

\ (16.12)

‚ 인접하는 다항식의 함수 값은 절점에서 같아야 한다.

절점 (i + 1)에 대해

(16.13)

여기서

32 )()()()( iiiiiiii xxdxxcxxbaxf -+-+-+= ii fa =

32 )()()()( iiiiiiii xxdxxcxxbfxs -+-+-+=

132

+=+++ iiiiiiii fhdhchbf

iii xxh -= +1

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.4 3차 스플라인 (3/9)

ƒ 내부 절점에서 1차 도함수는 같아야 한다.

(16.14)

내부 절점 (i + 1)에 대해

(16.15)

„ 내부 절점에서 2차 도함수도 같아야 한다.

(16.16)

내부 절점 (i + 1)에 대해

® (16.18)

2)(3)(2)( iiiiii xxdxxcbxs -+-+=¢

1232 +=++ iiiiii bhdhcb

)(62)( iiii xxdcxs -+=¢¢

13 +=+ iiii chdc

i

iii h

ccd31 -= +

2017-11-30

11

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.4 3차 스플라인 (4/9)

식 (16.18)을 식 (16.13)에 대입하면

(16.19)

® (16.21)

식 (16.21)의 지수에서 1을 빼면

(16.22)

식 (16.18)을 식(16.15)에 대입하면

이 식의 지수에서 1을 빼면(16.23)

식 (16.21)과 (16.22)를 식 (16.23)에 대입하면

(16.24)

11

2

)2(3 ++ =+++ iiii

iii fcchhbf

)2(3 1

1+

+ +--

= iii

i

iii cc

hhff

b

)2(3 1

1

1

11 ii

i

i

iii cc

hhff

b +--

= --

-

--

)( 11 ++ ++= iiiii cchbb

)( 111 iiiii cchbb ++= ---

1

111111 33)(2

-

-++---

--

-=+++

i

ii

i

iiiiiiiii h

ffhffchchhch

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.4 3차 스플라인 (5/9)

유한제차분 을 정의하면, 식 (16.24)은

(16.25)

내부 절점 i = 2, 3, ..., n – 1에 대하여 사용한다.

® n – 1 개의 미지 계수(c1, c2, ..., cn-1)를 갖는

n – 2 개의 삼중대각방정식을 구성한다.

® 추가의 조건이 필요하다.

a) 자연 스플라인은 두 끝단에서 2차 도함수값을 0으로 놓는다.

첫 번째 절점: Þ c1 = 0

마지막 절점:

® Þ cn = 0(관계없는 변수)

ji

jiji xx

ffxxf

-

-=],[

]),[],[(3)(2 111111 -++--- -=+++ iiiiiiiiiii xxfxxfchchhch

)(620)( 111111 xxdcxs -+==¢¢

1111 620)( ---- +==¢¢ nnnnn hdcxs03 111 ==+ --- nnnn chdc

2017-11-30

12

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.4 3차 스플라인 (6/9)

최종적으로 얻는 식은 다음과 같다.

ïïïï

þ

ïïïï

ý

ü

ïïïï

î

ïïïï

í

ì

-

-

=

ïïïï

þ

ïïïï

ý

ü

ïïïï

î

ïïïï

í

ì

úúúúúúúú

û

ù

êêêêêêêê

ë

é

+

+

--------

0]),[],[(3

]),[],[(30

1)(2

)(21

211

1223

1

2

1

1122

2211

nnnn

n

nnnnn xxfxxf

xxfxxf

cc

cc

hhhh

hhhh

M

M

M

M

OOO

OOO

Applied Numerical Methods 16장 스플라인과 소구간 보간법

예제 16.3 (자연 3차 스플라인) (1/2)

Q. 예제 15.2에서 다룬 자료를 3차 스플라인으로

접합하고, x = 5에서의 함수값을 추정하라.풀이)

®

Þ

ïïþ

ïïý

ü

ïïî

ïïí

ì

--

=

ïïþ

ïïý

ü

ïïî

ïïí

ì

úúúú

û

ù

êêêê

ë

é

++

0]),[],[(3]),[],[(3

0

1)(2

)(21

2334

1223

4

3

2

1

3322

2211

xxfxxfxxfxxf

cccc

hhhhhhhh

5.00.20.70.9 5.25.25.40.7 0.15.10.35.4 5.2

4

33

22

11

==-===-===-==

fhfhfhf

ïïþ

ïïý

ü

ïïî

ïïí

ì

-=

ïïþ

ïïý

ü

ïïî

ïïí

ì

úúúú

û

ù

êêêê

ë

é

08.4

8.40

1295.2

5.285.11

4

3

2

1

cccc

0 766539924.0839543726.0 0

43

21

=-===

cccc

2017-11-30

13

Applied Numerical Methods 16장 스플라인과 소구간 보간법

예제 16.3 (자연 3차 스플라인) (2/2)

식 (16.21)과 (16.18)에 의해,

Þ

Þ

그림 16.4 (c) 참조

127756654.0 022053232.0214144487.0 160456274.0

839543726.0 419771863.1

33

22

11

==-=-=

=-=

dbdbdb

3

23

3

22

31

)0.7(127756654.0

)0.7(766539924.0)0.7(022053232.05.2)()5.4(214144487.0

)5.4(839543726.0)5.4(160456274.00.1)(

)3(839543726.0)3(419771863.15.2)(

-+

---+=

--

-+--=

-+--=

xxxxs

xxxxs

xxxs

102889734.1)5.45(214144487.0)5.45(839543726.0)5.45(160456274.00.1)( 32

2

=---+--=xs

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.4 3차 스플라인 (7/9)

끝단 조건

고정 끝단 조건

첫 번째와 마지막 절점에서의 1차 도함수 값을 지정하는 경우

1차 도함수를 0으로 지정하면 스플라인의 끝점에서 거의 수평을 이룸

"비절점" 끝단 조건

두 번째와 끝에서 두 번째 절점에서 3차 도함수가 연속되도록

지정하는 경우

처음과 마지막 구간에서 같은 3차 함수를 적용하는 것을 의미

2017-11-30

14

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.4 3차 스플라인 (8/9)

<3차 스플라인에 일반적으로 사용되는 끝단 조건을 지정하는 방정식>

01 =c

0=nc

1122111 3],[32 fxxfchch ¢-=+

],[332 11111 ---- -¢=+ nnnnnn xxffchch

0)( 3122112 =++- chchhch

0)( 211221 =++- ------ nnnnnnn chchhch

, 조건 첫번째와마지막방정식

자 연

고정 (첫번째와마지막절점에서의1차도함수값이 f1'와 fn'로지정됨)

비 절 점

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.4 3차 스플라인 (9/9)

끝단 조건에 따른 스플라인 접합의 비교: 고정(1차 도함수가 0), 비절점 그리고 자연 스플라인

2017-11-30

15

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.5 MATLAB에서의 소구간별 보간법 (1/2)

spline: 3차 스플라인 보간을 수행

pchip: 소구간별 3차 Hermite 보간을 수행

interp1: 스플라인, Hermite, 여러 가지 소구간별 보간을 수행

MATLAB 함수: spline

yy = spline(x, y, xx)

x 와 y = 보간하고자 하는 값을 포함하는 벡터

yy = xx 벡터로 주어지는 점에서 계산되는 스플라인 결과를 포함하는 벡터

Applied Numerical Methods 16장 스플라인과 소구간 보간법

예제 16.4 (MATLAB 에서의 스플라인) (1/3)

Q. Runge 함수는 다항식으로 잘 접합이 안 되는

함수로 알려져 있다.

MATLAB을 사용하여 구간 [-1, 1]에서 이 함수로부터

구한 9개의 등간격 데이터 점을 접합시켜라.(a) 비절점 스플라인과

(b) 끝점의 기울기가 1과 -4인 고정 스플라인을 사용하라.

22511)(x

xf+

=

2017-11-30

16

Applied Numerical Methods 16장 스플라인과 소구간 보간법

예제 16.4 (MATLAB 에서의 스플라인) (2/3)

(a)

>> x = linspace(-1,1,9);

>> y = 1./(1+25*x.^2);

>> xx = linspace(-1,1);

>> yy = spline(x,y,xx);

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

>> plot(x,y,'o',xx,yy,xx,yr,'--')

Runge 함수(점선)와 MATLAB 으로 생성한비절점 스플라인 접합(실선)의 비교

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.6 다차원 보간(1/3)

1차원 문제에 대한 보간법은 다차원으로 확장할 수 있다.

이중선형보간법2차원 보간법은 두 변수의 함수인 z=f(xi,yi)의 중간값을 결정하는

방법을 다룬다.

2017-11-30

17

Applied Numerical Methods 16장 스플라인과 소구간 보간법

16.6 다차원 보간(2/3)

먼저 y 값을 고정시키고 1차원 선형보간을 x 방향으로 적용한다.

(xi, y1)에서의 결과는 Lagrange 형태를 사용하면 다음과 같다.

(xi, y2)에서,

이들 점을 y 방향으로 선형 보간하면,

식 (16.29)와 (16.30)을 식 (16.31)에 대입하면 다음과 같은 단일 방정식을 구할 수 있다

2 12 1 2 2 2

1 2 2 1

( , ) ( , ) ( , )i ii

x x x xf x y f x y f x yx x x x- -

= +- -

2 11 1 1 2 1

1 2 2 1

( , ) ( , ) ( , )i ii

x x x xf x y f x y f x yx x x x- -

= +- -

2 11 2

1 2 2 1

( , ) ( , ) ( , )i ii i i i

y y y yf x y f x y f x yy y y y- -

= +- -

식 16.29

식 16.30

식 16.31

2 2 1 21 1 2 1

1 2 1 2 2 1 1 2

2 1 1 11 2 2 2

1 2 2 1 2 1 2 1

( , ) ( , ) ( , )

( , ) ( , )

i i i ii i

i i i i

x x y y x x y yf x y f x y f x yx x y y x x y yx x y y x x y yf x y f x yx x y y x x y y

- - - -= +

- - - -- - - -

+ +- - - -

식 16.32

Applied Numerical Methods 16장 스플라인과 소구간 보간법

예제 16.6 이중선형보간

Q. 직사각형 모양의 가열된 평판의 표면 위의 온도 측정. T(2,1)=60 T(9,1)=57.5

T(2,6)=55 T(9,6)=70

이중선형 보간법을 이용하여 xi=5.25, yi=4.8에서의

온도를 예측하라.

풀이) 위 값을 식 (16.32)에 대입하면 다음과 같다.

5.25 9 4.8 6 5.25 2 4.8 6(5.25,4.8) 60 57.52 9 1 6 9 2 1 6

5.25 9 4.8 1 5.25 2 4.8 1 55 70 61.21432 9 6 1 9 2 6 1

f - - - -= +

- - - -- - - -

+ + =- - - -


Top Related