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