6 장 비선형방정식 풀이(2) – 개방법(Open methods) 그냥 1 점식, 1 점법이라 말하는 것이 더 편하다. 구간법(2 점법)에선 근을 포함하는 구간(2 점)을 입력해야 하지만(추정해야 하지만, 알아야 하지만) 여기선 근이 존재하는 곳에 가까운 곳 핚 지점 을 지정하면(입력하면, 추정하면) 된다. 달리 말하면 근의 초기 가정치를 정해야 하며 이 초기값에 따라 서로 다른 근이 구해진다(질 수 있다). 구간법과는 달리 함수과 초기값에 따라 근을 구하지 못핛 수도 있고 다른 근이 구해 질 수도 있다(초기 근 추정값 가까운 곳의 근을 찾지 못하고 더 먼 곳에 있는 근을 찾게 됨). 구간법에선 이분법이 핵심이고 개방법에선 뉴턴(랩슨)법이 핵심이다. 뉴턴의 편법(?)으로는 핛선법 과 수정핛선법이 있고 이는 미분값을 수치해석적 방법으로 구하는 것이 다르다. 6.1 단순 고정점 반복법(Fixed-point iteration) x = g(x) x i+1 =gx i ε a = x i+1 − x i x i+1 예제 6.1 fx=e −x − x=0 의 근을 구하라 (풀이) x i+1 =e −x i , x 0 =0 에서 시작 (1) 먼저 쉬운 엑셀을 써보자 i xi rea ret ret(i)/ret(i-1) 0 0 1 1 1 1 0.763222836 0.763222836 2 0.36787944 1.718281828 0.351346569 0.460345986 3 0.69220063 0.468536395 0.220503953 0.627596718 4 0.5004735 0.383091466 0.117553695 0.533113776 5 0.60624354 0.174467897 0.068942445 0.586476205 6 0.54539579 0.111566225 0.038345696 0.556198663 7 0.57961234 0.059033508 0.021985706 0.573355245 8 0.56011546 0.03480867 0.012391628 0.563622022
13
Embed
6 장 비선형방정식 풀이(2) 개방법(Open methods) · 2014. 10. 14. · 다음 사용 중 오류가 발생함: fzero (line 274) 구간 끝점의 함수 값은 부호가 달라
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
6 장 비선형방정식 풀이(2) – 개방법(Open methods)
그냥 1 점식, 1 점법이라 말하는 것이 더 편하다. 구간법(2 점법)에선 근을 포함하는 구간(2 점)을
입력해야 하지만(추정해야 하지만, 알아야 하지만) 여기선 근이 존재하는 곳에 가까운 곳 핚 지점
을 지정하면(입력하면, 추정하면) 된다. 달리 말하면 근의 초기 가정치를 정해야 하며 이 초기값에
따라 서로 다른 근이 구해진다(질 수 있다). 구간법과는 달리 함수과 초기값에 따라 근을 구하지
못핛 수도 있고 다른 근이 구해 질 수도 있다(초기 근 추정값 가까운 곳의 근을 찾지 못하고 더
먼 곳에 있는 근을 찾게 됨).
구간법에선 이분법이 핵심이고 개방법에선 뉴턴(랩슨)법이 핵심이다. 뉴턴의 편법(?)으로는 핛선법
과 수정핛선법이 있고 이는 미분값을 수치해석적 방법으로 구하는 것이 다르다.
6.1 단순 고정점 반복법(Fixed-point iteration)
x = g(x)
xi+1 = g xi
εa = xi+1 − xi
xi+1
예제 6.1
f x = e−x − x = 0 의 근을 구하라
(풀이)
xi+1 = e−xi , x0 = 0 에서 시작
(1) 먼저 쉬운 엑셀을 써보자
i xi rea ret ret(i)/ret(i-1)
0 0
1
1 1 1 0.763222836 0.763222836
2 0.36787944 1.718281828 0.351346569 0.460345986
3 0.69220063 0.468536395 0.220503953 0.627596718
4 0.5004735 0.383091466 0.117553695 0.533113776
5 0.60624354 0.174467897 0.068942445 0.586476205
6 0.54539579 0.111566225 0.038345696 0.556198663
7 0.57961234 0.059033508 0.021985706 0.573355245
8 0.56011546 0.03480867 0.012391628 0.563622022
9 0.57114312 0.019308039 0.007052583 0.569140952
10 0.56487935 0.011088682 0.003991835 0.566010404
=EXP(-B11)
=ABS((B12-
B11)/B12)
=ABS((D$14-
B12))/D$14 =D12/D11
0.56714329
(2) 수렴 조건 : |g’| < 1
6.2 Newton-Raphson 법
𝑓′(𝑥) =𝑓 𝑥
𝑥𝑖 − 𝑥𝑖+1
𝑥𝑖+1 = 𝑥𝑖 −𝑓 𝑥𝑖
𝑓 ′ 𝑥𝑖
휀𝑡 ,𝑖+1 =−𝑓 ′′ 𝑥𝑟
2𝑓 ′(𝑥𝑟)𝐸𝑡 ,𝑖
2
예제 6.2
𝑓 𝑥 = 𝑒−𝑥 − 𝑥
𝑓′ 𝑥 = −𝑒−𝑥 − 1
(풀이)
𝑥𝑖+1 = 𝑥𝑖 −𝑒𝑖−𝑥𝑖 − 𝑥𝑖
−𝑒𝑖
−𝑥𝑖 − 1, 𝑥0 = 0
(a) 엑셀
i xi |ret|
0 0 1
1 0.5 0.118388582
2 0.566311 0.001467507
3 0.56714317 2.20341E-07
4 0.56714329 7.22535E-10
=B20-(EXP(-B20)-B20)/(-EXP(-B20)-1)
(b) Matlab
function [y dy]=f(x)
y=exp(-x)-x;
dy=-exp(-x)-1;
end
function x=N_R(f,x0,es,it)
if nargin<3, es=10^-8; end
if nargin<4, it=50; end
x(1)=x0;
for k=1:it
[y dy]=f(x(k));
x(k+1)=x(k)-y/dy;
if abs(x(k+1)-x(k))/x(k+1)<es, break, end
end
end
>> xr=N_R(@f,0)
xr =
0 0.5000 0.5663 0.5671 0.5671 0.5671
>> xr=N_R(@f,1)
xr =
1.0000 0.5379 0.5670 0.5671 0.5671
교재에 풀이나 엑셀 풀이처럼 반복 계산을 보여주려면 조금 손 봐야 핚다.
function xr=N_R(f,x0,es,it)
if nargin<3, es=10^-8; end
if nargin<4, it=50; end
x(1)=x0;
for k=1:it
[y dy]=f(x(k));
x(k+1)=x(k)-y/dy; % x(k+1)=x(k)-f(x(k))/fp(x(k));
rea(k+1)=abs(x(k+1)-x(k))/x(k+1); kk(k+1)=k;
if rea(k+1)<es, break, end
end
kk(1)=0; rea(1)=NaN;
disp(' i xi Log(|rea|)')
disp([kk; x; log10(rea)]')
end
>> N_R(@f,1)
i xi Log(|rea|)
0 1.0000 NaN
1.0000 0.5379 -0.0659
2.0000 0.5670 -1.2896
3.0000 0.5671 -3.5597
4.0000 0.5671 -8.1082
뉴턴-랩슨 법이 수렴되지 않는 경우
6.3 할선법(Secant Method)
이론적으로는 뉴턴 법의 변형이나 약 3000 년 젂부터 사용된 방법이란 주장도 있듯이 독립적으
로 발젂된 방법이다. 문제는 구간법의 가위치법(선형 보간법)과 같아 보이기에 이 둘의 차이(2 점