16장스플라인과소구간별 보간법 - daeguneslab.daegu.ac.kr › lec › numanalysis-doc ›...

17
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차인 경우 - 시각적으로 매끄럽게 처리 - 부분적으로 급격한 변화가 있는 구간에서 우수한 근사를 제공

Upload: others

Post on 23-Jun-2020

2 views

Category:

Documents


0 download

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 - - - -= +

- - - -- - - -

+ + =- - - -