345]) · 2013. 9. 2. · 예제5.4 (2/3) 반 복 구간 추정근 오차(%) xl xu xr 1 50 200 2 125...
TRANSCRIPT
수치해석수치해석Numerical AnalysisNumerical Analysis
161009161009
Ch5. Roots: Bracketing Ch5. Roots: Bracketing Ch5. Roots: Bracketing Ch5. Roots: Bracketing MethodsMethods
1
� 앞의 낙하속도 문제에서
Q. 의학연구에 의하면 4초 후에 낙하속도가 36 m/s를 초
과하면 척추손상을 입을 가능성이 높다. 항력계수가 0.25
kg/m로 주어질 때 이러한 판정기준이 초과하는 질량을
= t
m
gc
c
gmtv d
d
tanh)(
Numerical AnalysisNumerical Analysis
kg/m로 주어질 때 이러한 판정기준이 초과하는 질량을
구하시오.
� t=4, v=36 m/s
� f(m) = 0을 만족하는 m을 구하기
)(tanh)( tvtm
gc
c
gmmf d
d
−
=
5.1 공학과 과학에서의 근근근근
� 외재적(Explicit) 표현과 내재적(Implicit) 표현
• 는 파라미터가 주어지고 독립변수 t가 주어
지면 종속변수 v(t)를 구할 수 있다.
�외재적 표현 y=f(x)
= t
m
gc
c
gmtv d
d
tanh)(
Numerical AnalysisNumerical Analysis
( ) tanh ( ) 0d
d
gcgmf m t v t
c m
= − =
• 는 t와 v(t)가 주어져도,
독립변수 m을 바로 구할 수 없다.
�내재적 표현 f(x,y)=0
5.2 그래프를 사용하는 방법 (1/2)
� 방정식 f(x)=0에 대한 근의 근사값을 구하는 방법
• f(x)를 그려 x축과 만나는 점을 찾는다.
(a) 같은 부호, 근 없음
(b) 다른 부호, 근 1개
(c) 같은 부호, 근 2개
Numerical AnalysisNumerical Analysis
(d) 다른 부호, 근3개
� 같은 부호: 짝수근
다른 부호: 홀수근
그림 5.1 하한값 xl 과 상한값 xu 사이의 구간에서 근이 존재할 수 있는 몇 가지 경우
5.2 그래프를 사용하는 방법 (2/2)
(a) 중근을 갖는 경우
� 일반적이지 않은 경우
Numerical AnalysisNumerical Analysis
(b) 불연속인 경우
예제 5.1 (1/2)
� Q. 자유낙하 4초 후의 속도를 36 m/s로 되게 하는 번지
점프하는 사람의 질량을 그래프적인 접근법으로 구하라.
(항력계수는 0.25 kg/m이고, 중력가속도는 9.81 m/s2
이다.)
Numerical AnalysisNumerical Analysis
예제 5.1 (2/2)
>> cd = 0.25; g = 9.81; v = 36; t = 4;>> mp = linspace (50, 200);>> fp = sqrt(g*mp/cd).*tanh(sqrt(g*cd./mp)*t) - v;>> plot(mp,fp), grid
Numerical AnalysisNumerical Analysis
m=145를 확인하면,>> sqrt(g*145/cd)*tanh(sqrt(g*cd/145)*t)ans =
36.0456
근
m=145
� 초기 가정값의 유형에 따른 분류
•구간법
- 근을 포함하고 있는 구간의 양끝을 나타내는 초기 가정
값에서부터 시작.
- 항상 근을 찾지만 수렴이 느리다.
<수치해석의 근 찾는 방법>
Numerical AnalysisNumerical Analysis
•개방법
- 한 개 또는 그 이상의 초기 가정값에서 출발.
- 근을 포함한 구간의 양끝값은 아님,
- 발산하는 경우도 있지만, 수렴이 빠르다
5.3 구간법과 초기 가정 (1/2)
� 증분탐색법(incremental search method)
• 이면 적어도 xl과 xu 사이에 실근이하나 이상 존재
• 증분 구간이 너무 작으면: 계산시간이 많이 소요
너무 크면: 근을 놓치게 됨
• 증분 구간의 크기에 관계없이 중근은 놓칠 위험이 많음
0)()( <ul xfxf
Numerical AnalysisNumerical Analysis
5.3 구간법과 초기 가정 (2/2)function xb = incsearch(func, xmin, xmax, ns) % finds brackets of x that contain sign changes of a function on an interval % input: % func= name of function % xmin, xmax = endpoints of interval % ns = (optional) number of subintervals along x % output: % xb(k,1) is the lower bound of the kth sign changes % xb(k,2) is the upper bound of the kth sign changes % If no brackets found, kb =[]. if nargin <4, ns =50; end % if ns blank set to 50 % Incremental search x = linspace(xmin, xmax, ns); f = feval(func,x);
Numerical AnalysisNumerical Analysis
f = feval(func,x); nb = 0, xb =[]; % xb is null unless sign change detected for k = 1:length(x)-1
if sign(f(k)) ~= sign(f(k+1)) % check for sign change nb = nb + 1; xb(nb,1) = x(k); xb(nb,2) = x(k+1);
end end if isempty(xb) % display that no brackets were found
disp('no brackets found')disp('check interval or increase ns')
elsedisp('number of brackets:') %display number of bracketsdisp(nb)
end
� Q. incsearch를 사용하여 구간 [3,6] 사이에서 다음 함수
의 부호가 바뀌는 구간을 찾아라.
Sol)
예제 5.2 (1/2)
)3cos()10sin()( xxxf +=
>> incsearch(@(x) sin(10*x)+cos(3*x), 3, 6)number of brackets:
Numerical AnalysisNumerical Analysis
number of brackets:5
ans =3.2449 3.30613.3061 3.36733.7347 3.79594.6531 4.71435.6327 5.6939
소구간이 너무 넓어서 x=4.25와5.2 사이의 근을 놓쳤다.
예제 5.2 (2/2)
>> incsearch (@(x) sin(10*x)+cos(3*x), 3,6, 100)number of brackets:
9ans =
3.2424 3.27273.3636 3.39393.7273 3.75764.2121 4.24244.2424 4.2727
Numerical AnalysisNumerical Analysis
4.2121 4.24244.2424 4.27274.6970 4.72735.1515 5.18185.1818 5.21215.6667 5.6970
5.4 5.4 5.4 5.4 이분법이분법이분법이분법(bisection method)(bisection method)(bisection method)(bisection method) (1/4)(1/4)(1/4)(1/4)
� 증분탐색법의 변형으로 구간 폭을 항상 반으로 나누는 방법
이다.
� 함수의 부호가 구간
내에서 바뀌면 구간의
중간점에서 함수 값을
계산한다.
Numerical AnalysisNumerical Analysis
계산한다.
� 나뉜 소구간 중에서
부호가 바뀌는 소구간
에 위치한 근을 구한다.
� 절대오차는 매 반복마다 반으로 감소
2
ulr
xxx
+=
� 이분법을 마치기 위한 객관적인 판단기준은?
• 근의 참값을 모르므로 를 이용할 수 없다.
• 근사 상대오차,
5.4 5.4 5.4 5.4 이분법이분법이분법이분법 (2/4)(2/4)(2/4)(2/4)
tε
oldnew xx −
Numerical AnalysisNumerical Analysis
snew
r
old
r
new
ra
x
xxεε <×
−= %100
예제 5.4 (1/3)
� Q. 이분법을 이용하여 자유낙하 4초 후의 속도를 36 m/s
로 되게 하는 번지 점프하는 사람의 질량을 구하라. 근사
오차가 s = 0.5%의 종료 판정기준 이하가 될 때까지 계산
을 반복하라.
(단, 항력계수는 0.25 kg/m이고, 중력가속도는 9.81
m/s2이다. )
Numerical AnalysisNumerical Analysis
m/s 이다. )
예제 5.4 (2/3)
반
복
구간 추정 근 오차(%)
xl xu xr
1 50 200
2 125 200 23.08 13.85
3 125 162.5 13.04 0.71
aε tε
1252
20050=
+ %43.127376.142
1257376.142=
− 871.1)409.0(579.4)125()50( =−−=ff
5.1622
200125=
+ 147.0)359.0(409.0)5.162()125( −=−=ff
5.162125=
+
Numerical AnalysisNumerical Analysis
3 125 162.5 13.04 0.71
4 125 143.75 134.375 6.98 5.86
5 134.375 143.75 139.0625 3.37 2.58
6 139.0625 143.75 141.4063 1.66 0.93
7 141.4063 143.75 142.5781 0.82 0.11
8 142.5781 143.75 143.1641 0.41 0.30
75.1432
5.162125=
+
예제 5.4 (3/3)
Numerical AnalysisNumerical Analysis
� 왜 참오차는 들쭉날쭉한 형태를 갖는가?
�구간 내의 어느 점이나 참근이 될 수 있기 때문.
• 참근이 구간의 중앙에 위치할 때는 와 의 차이가 크다
• 참근이 구간의 끝 쪽에 위치할 때는 와 의 차이가 작다.
tε aε
tε aε
5.4 5.4 5.4 5.4 이분법이분법이분법이분법 (3/4)(3/4)(3/4)(3/4)
� 는 와 같이 줄어드는 경향을 보인다.
� 는 참오차의 상한이므로 보다 항상 크다.
� 절대오차: 반복을 시작하기 전
1번 반복 후
tε
aε
aε
tε
0000
lua xxxE −=∆=
2
01 xEa
∆=
Numerical AnalysisNumerical Analysis
n 차례 반복 후
� 만약 Ea,d가 원하는 오차라면,
n
n
a
xE
2
0∆=
∆=
∆=
da
da
E
xExn
,
0
2
,
0
log2log
)/log(
5.4 5.4 5.4 5.4 이분법이분법이분법이분법 (4/4)(4/4)(4/4)(4/4)
>>func1=@(x) sin(10*x)+cos(3*x)
>> bisection('func1', 50, 200, 0.001, 50)
1 125
2 162.5000
3 143.7500
4 134.3750
5 139.0625
Numerical AnalysisNumerical Analysis
5 139.0625
6 141.4063
7 142.5781
�
16 142.7361
17 142.7372
ans =
142.7372
5.5 가위치법(false position method) (1/3)
� 선형보간법이라고도 하는 구간법이다.
• 이분법과 매우 유사하다.
• f(xl)과 f(xu)를 연결하는
직선과 x축의 교점을 찾아
개선된 추정값으로 이용.
• 가위치법 공식
Numerical AnalysisNumerical Analysis
• 가위치법 공식
)()(
))((
ul
uluur
xfxf
xxxfxx
−
−−=