open methodselearning.kocw.net/kocw/document/2016/chonnam/...•recognizing the difference between...

Post on 27-Jan-2020

5 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Open methods

6.1 simple fixed-point lteration6.2 newton- Raphson6.3 Secant Methods6.4 Brent’s Method6.5 MATLAB Function: Fzero6.6 Polynomials

목차

• Recognizing the difference between bracketing and open methods for root location.

• Understanding the fixed-point iteration method and how you can evaluate its convergence characteristics. • Knowing how to solve a roots problem with the NewtonRaphson method and appreciating the concept of quadratic convergence. • Knowing how to implement both the secant and the modified secant methods. • Knowing how to use MATLAB’s fzero function to estimate roots. • Learning how to manipulate and determine the roots of polynomials with MATLAB.

학습 목표

6.1 simple fixed-point lteration단일 고정점 반복법

)(xgx 0)( xf )(1 ii xgx

%1001

1

i

iia

x

xx근산

오차

Ex) 6.1

고정점 반복법을 통해 의 근을 구하라.xexf x )(

xexf x )( xex ix

i ex

1

초기값x=0 설정

i xi (%) (%)

0

1

2

3

4

5

6

7

8

9

10

0.0000

1.0000

0.3679

0.6922

0.5005

0.6062

0.5454

0.5796

0.5601

0.5711

0.5649

100.000

171.828

46.854

38.309

17.447

11.157

5.903

3.481

1.931

1.109

100.000

76.322

35.135

22.050

11.755

6.894

3.835

2.199

1.239

0.705

0.399

0.763

0.460

0.628

0.533

0.586

0.556

0.573

0.564

0.569

0.566

at1

/itit

근의 참값: 0.56714329

)(xgx 0)( xf )(1 ii xgx

Convergence possibility(수렴가능성)

1)( xg

1)( xg

0)( xg

오차 감소

오차 증가

0)( xg

오차 단조로움

오차가진동

)(

)(

2

1

xgy

xy

xexf x

6.2 Newton-Raphson 법

1. 근에 대한 초기값 𝑥𝑖 설정2. (𝑥𝑖,𝑓(𝑥𝑖))에 접하는 접선 구하기

3. 접선과 x축이 만나는 점 찾기

개선된 추정값

공식으로 나타내기

1

0)()(

ii

ii

xx

xfxf

)(

)(1

i

iii

xf

xfxx

Newton-

Raphson공식

Ex) 6.2

xexf x )(Newton-Raphson 법을 사용하여 의 근을 추정하라. 초기 가정은 x0 = 0

1)( xexf1

1

i

i

x

i

x

iie

xexx

i xi (%)

0

1

2

3

4

0

0.500000000

0.566311003

0.567143165

0.567143290

100

11.8

0.147

0.0000220

< 10-8

t

1

0)()(

ii

ii

xx

xfxf )(

)(1

i

iii

xf

xfxx

Ex) 6.3

Newton-Raphson 법을 사용하여 의 양근을 추정하라. 초기 가정은 x0 = 0.5

1)( 10 xxf

9

10

110

1

i

iix

xxx

i xi (%)

0

1

2

3

4

40

41

42

0.5

51.65

46.485

41.8365

37.65285

1.002316

1.000024

1

99.032

11.111

11.111

11.111

2.130

0.229

0.002

a

수렴 속도가 매우 느리다.

Newton-Raphson법이 수렴되지 않는 경우

Newton-Raphson법을 위한 일반적인 수렴판정 기준 없다.

그니까 초기값을 최대한 정확히 잡아야함근데 초기값 잘 잡아도 소용없는 경우도 있음

그러니까 수렴이 늦거나 발산을 인식할 수 있는 좋은 프로그램이 작성되어야 한다!

Ex) 6.4

항력계수가 0.25kg/m 일때 자유낙한 4초 후의 속도가 36m/s가 되는번지점프하는 사람의 질량을 구하기 위해, M 파일 함수를 사용하라(중력가속도 9.81m/ss)

𝑓 𝑚 =𝑔𝑚

𝑐𝑑tanh

𝑔𝑐𝑑𝑚

𝑡 − 𝑣(𝑡)

Newton raphson 법을 적용하기 위해 도함수를 미지수 m에 대하여 구해야 한다.

𝑑𝑓(𝑚)

𝑑𝑚=

1

2

𝑔

𝑚𝑐𝑑tanh

𝑔𝑐𝑑𝑚

𝑡 −𝑔

2𝑚𝑡𝑠𝑒𝑐ℎ2

𝑔𝑐𝑑𝑚

𝑡

Newtraph 함수 .M파일로 저장

근 구하기

6.3 SECANT METHODS할선법

도함수 계산을 줄이기 위해

ii

iii

xx

xfxfxf

1

1 )()()(

)(

)(1

i

iii

xf

xfxx

할선법을위한 공식

)()(

))((

1

11

ii

iiiii

xfxf

xxxfxx

)()(

))((

1

11

ii

iiiii

xfxf

xxxfxx

두 초기값 사용

한 초기값 사용

i

iiii

x

xfxxfxf

)()()(

)(

)(1

i

iii

xf

xfxx

)()(

)(1

iii

iiii

xfxxf

xfxxx

)()(

)(1

iii

iiii

xfxxf

xfxxx

수정된

할선법 공식

Ex) 6.5

수정된 할선법으로 항력계수가 0.25 kg/m일 때 자유낙하 4초 후의 속도가 36 m/s가 되도록 번지점프 하는 사람의 질량을 구하라.

중력가속도 9.81 m/s2 질량의 초기가정 50 kg 변동량 10-6

%)4.43%;1.38(39931.88

)57938708.4(579381118.4

)57938708.4)(50(1050

579381118.4)( 00005.50

57938708.4)( 50

6

1

0000

00

at

x

xxfxx

xfx

)()(

)(1

iii

iiii

xfxxf

xfxxx

%)76.28%;1.13(08970.124

)69220771.1(692203516.1

)69220771.1)( 39931.88(10 39931.88

692203516.1)( 39940.88

69220771.1)( 39931.88

6

2

1111

11

at

x

xxfxx

xfx

i xi (%) (%)

0

1

2

3

4

5

6

50.0000

88.3993

124.0897

140.5417

142.7072

142.7376

142.7376

64.971

38.069

13.064

1.538

0.021

4.1 10-6

3.4 10-12

43.438

28.762

11.706

1.517

0.021

4.1 10-6

a t

6.4 Brent’s Method

• 구간법 + 개방법 => 혼합법 Brent !!

• 구간법– 이분법

• 개방법– 할선법

– 역2차 보간법

• 역 2차 보간법

x x

F(x) F(x)

근의 추정값! 근의 추정값!

• 할선법

• 세 점 (𝑥𝑖−2,𝑦𝑖−2),(𝑥𝑖−1,𝑦𝑖−1),(𝑥𝑖,𝑦𝑖)이 존재

• 𝑔 𝑦 =(𝑦−𝑦𝑖−1)(𝑦−𝑦𝑖)

(𝑦𝑖−2−𝑦𝑖−1)(𝑦𝑖−2−𝑦𝑖)𝑥𝑖−2 +

(𝑦−𝑦𝑖−2)(𝑦−𝑦𝑖)

(𝑦𝑖−1−𝑦𝑖−2)(𝑦𝑖−1−𝑦𝑖)𝑥𝑖−1 +

(𝑦−𝑦𝑖−2)(𝑦−𝑦𝑖−1)

(𝑦𝑖−𝑦𝑖−2)(𝑦𝑖−𝑦𝑖−1)𝑥𝑖

• 𝑥𝑖+1 =𝑦𝑖−1𝑦𝑖

(𝑦𝑖−2−𝑦𝑖−1)(𝑦𝑖−2−𝑦𝑖)𝑥𝑖−2 +

𝑦𝑖−2𝑦𝑖

(𝑦𝑖−1−𝑦𝑖−2)(𝑦𝑖−1−𝑦𝑖)𝑥𝑖−1 +

𝑦𝑖−2𝑦𝑖−1

(𝑦𝑖−𝑦𝑖−2)(𝑦𝑖−𝑦𝑖−1)𝑥𝑖

x

y

y=f(x)

X=f(y)

X축과 교차하지 않아!!

• 예제6.6• 점들[(1,2), (2,1), (4,5)]에 대해 먼저 y=f(x) 에 대한 2차 공식을 사용

하여 근이 복소수임을 보이고 x= g(y)에 대해 역 2차 보간법을 사용하여 근의 추정값을 구하여라.

• f 𝑥 =(𝑥−2)(𝑥−4)

(1−2)(1−4)2 +

(𝑥−1)(𝑥−4)

(2−1)(2−4)1 +

(𝑥−1)(𝑥−2)

(4−1)(4−2)5

• f x = 𝑥2 − 4𝑥 + 5

• x=2±𝑖

• g y =(𝑦−1)(𝑦−5)

(2−1)(2−5)1 +

(𝑦−2)(𝑦−5)

(1−2)(1−5)2 +

(𝑦−2)(𝑦−1)

(5−2)(5−1)4

• 𝑥𝑖+1 =(−1)(−5)

(2−1)(2−5)1 +

(−2)(−5)

(1−2)(1−5)2 +

(−2)(−1)

(5−2)(5−1)4 = 4

– 단, 세개의 y값이 서로 다르지 않을 때 역 2차 함수는 존재하지 않음.

Bre

nt

법의

알고리즘

6.5 MATLAB Function: Fzero

• Fzero 함수는 단일 방정식에서 실근을 구하도록 설계

– fzero (function, x0)

– 근을 포함하는 두 개의 가정값

• fzero (function, [x0 x1])– (이때 x0,x1은 함수값의 부호를 서로 다르게 하는 가정값)

>> x= fzero( @(x) x^2-9, -4)

x=

-3

>> x= fzero( @(x) x^2-9, 4)

x=

3

>> x= fzero( @(x) x^2-9, 0)

x=

-3

>> x= fzero( @(x) x^2-9, [0 4])

x=

3

>> x= fzero( @(x) x^2-9, [-4 4])

• Fzero 함수에 한 개의 초기 가정값이 전달– 초기 가정값에서 부호 변화가 감지될 때까지 양과 음의 방향으로 점점 넓은 간격

을 취한다.

fzero 구문의 완전한 표현

[x, fx] = fzero (function, xo, options, p1, p2 , …)

optimset 함수의 구문

Options = optimset (‘par1’, val1, ‘par2’, val2, …)

display : ‘iter’로 지정되면, 모든 반복에 대한 자세한 기록 표시tolx : x에 대한 종료 허용값을 지정하는 양수의 스칼라 값

• 예제 6.7• 근을 구하는 문제를 optimset과 fzero로 풀어라.

– (양의 근을 초기값 0.5를 이용하여)

1)( 10 xxf

6.6 Polynomials• 이분법과 Newton-Raphson법은 고차 다항식의 근을 못 구함.

• 내장함수 roots– roots 함수의 구문

• x = roots(c) x = 근을 나타내는 열벡터c = 다항식의 계수를 나타내는 행벡터

roots의 역함수는 poly이며 근의 값이 들어가면 다항식의 계수 출력

– poly 함수의 구문

• c = poly (r) r = 근을 나타내는 열벡터c = 다항식의 계수를 나타내는 행벡터

• 예제6.8다항식은 세 개의 실근 0.5, -1.0, 2 ,한 쌍의 복소수 근 1±0.5i 를 가짐

>> a = [1 -3.5 2.75 2.125 -3.875 1.25];

>>polyval (a, 1)

ans =

-0.2500

(x-0.5)(x+1) = x^2+0.5x-0.5

>>b = [1 .5 -.5]

b =

1.0000 0.5000 -0.5000

>>b = poly([0.5 -1])

b =

1.0000 0.5000 -0.5000

25.1875.3125.275.25.3)( 2345 xxxxxxf

• >> [q,r] = deconv(a,b)

• q =

• 1.0000 -4.0000 5.2500 -2.5000

• r =

• 0 0 0 0 0 0

• >> x=roots(q)

• x =

• 2.0000

• 1.0000 + 0.5000i

• 1.0000 - 0.5000i

• >> a=conv(q,b)

• a =

• 1.0000 -3.5000 2.7500 2.1250 -3.8750 1.2500

25.1875.3125.275.25.3)( 2345 xxxxxxf

사용된 근 : 0.5, -1사용x 근 : 2, 1±0.5i

• >> x=roots(a) • x =• 2.0000 • -1.0000 • 1.0000 + 0.5000i• 1.0000 - 0.5000i• 0.5000 • >> c=poly(x) • c =• 1.0000 -3.5000 2.7500 2.1250 -3.8750

1.2500

top related