수치해석수치해석Numerical AnalysisNumerical Analysis
161009161009
Ch17. Ch17. Polynomial Polynomial Ch17. Ch17. Polynomial Polynomial
InterpolationInterpolation
다항식다항식다항식다항식 보간법보간법보간법보간법
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
표에 포함되지 않은 온도에서의 밀도, 점성계수, 그리고 동점성계수는?
→가장 간단한 방법은 인접한 두 점을 잇는 직선을 구한 후, 그 직선 식을 이
용 - "선형보간법“
→데이터가 상당히 큰 곡률을 가지면 오차가 발생
→적절한 추정값을 얻을 수 있는 여러 방법을 검토
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차식`
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 개의 계수를 동시에 결정
→ 명료한 방법
예제 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
예제 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
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
• 데이터 점의 수 > 계수의 수 → 다항식 회귀분석• 데이터 점의 수 = 계수의 수 → 다항식 보간
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차차차차 도함수의도함수의도함수의도함수의유한제차분근사값유한제차분근사값유한제차분근사값유한제차분근사값
선형보간법의 도식적 표현
예제 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
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−
−−
−−−
=
예제 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
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
−=
=
=
=
여기서 괄호로 표시된 함수는 유한제차분을 나타낸다.
– 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
17.2 17.2 17.2 17.2 Newton Newton Newton Newton 보간다항식보간다항식보간다항식보간다항식 (5/6)(5/6)(5/6)(5/6)
• 데이터 점들이 등간격일 필요가 없고, 수평축의 좌표값이
올림차순일 필요도 없다.
• 고차 차분이 저차 차분의 차이에 의해 계산되어지는
순환적인(recursive) 시스템이다.
Numerical AnalysisNumerical Analysis
예제 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
예제 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
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
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
−
−+
−
−=
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
)(
예제 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
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;
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
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
17.5 17.5 17.5 17.5 외삽법과외삽법과외삽법과외삽법과 진동진동진동진동 (1/2)(1/2)(1/2)(1/2)
� 외삽법(extrapolation)
• 주어진 기본 점들의 밖에 위치한 x에 대해 f(x)의 값을 추정
• 실제 곡선은 예측값으로부터 쉽게 벗어날 수 있으므로,
외삽을 수행할 경우 매우 주의하여야 한다.
Numerical AnalysisNumerical Analysis
• 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년의 인구를 예측하고 실제 값과 비교하라.
예제 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)
17.5 17.5 17.5 17.5 외삽법과외삽법과외삽법과외삽법과 진동진동진동진동 (2/2)(2/2)(2/2)(2/2)
� 진동
• “(차수가) 더 많으면 더 좋은가"?
→ 다항식 보간법에서는 절대로 그렇지 않다.
→ 고차 다항식은 반올림오차에 민감하여 불량한 조건이 되기 쉽다.
Numerical AnalysisNumerical Analysis
예제 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차 다항식으로 접합
시켜 예측한 값을 실제 값과 그림으로 비교하라.
예제 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
• 보통의 경우에는 고차 다항식의 사용을 피해야 한다
Top Related