fibonacci for print

21
FIBONACCI SEARCH METHOD ระเบียบวิธีการคนหาของฟโบนาซซี Presented by Miss. Julaluk Laokhunkar Mr. Chaiwat Luejai วันอาทิตย์ที่ 24 มิถุนายน 12

Upload: chaiwat-luejai

Post on 20-Jul-2015

239 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Fibonacci for print

FIBONACCISEARCH METHODระเบียบวิธีการคนหาของฟโบนาซซี

PresentedbyMiss. Julaluk LaokhunkarMr. Chaiwat Luejai

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 2: Fibonacci for print

history

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 3: Fibonacci for print

history

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 4: Fibonacci for print

historyเลโอนารโด ปซาโน (Leonardo Pisano) ประมาณ ค.ศ. 1170 - 1250 เปนนักคณิตศาสตรชาวอิตาล ี มีชื่อเสียงโดงดังที่สุดจากการคนพบจำนวนฟโบนาซซ ีและบทบาทในการเผยแพรการเขียนและวิธีการคำนวณระบบจำนวนฐานสิบที่ใหคาตามหลักแบบอาราบิก (Arabic positional decimal system) ที่ใชกันในปจจุบัน หลายคนยกยองวาเขาเปนนักคณิตศาสตรที่เกงที่สุดในยุคกลาง โดยการคนพบจำนวนฟโบนาซซีจากการสำรวจปญหาจำนวนประชากรของกระตาย ตัวอยางของลำดับนี้ 16 อันดับแรก

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987

ในป 1953 เคียเฟอร (Kiefer) ไดพิสูจนความสัมพันธลำดับตัวเลขฟโบนาซซีที่นิยามโดย

F0 = F1 = 1; FN = FN-1 + FN-2 สำหรับ N ≥ 2

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 5: Fibonacci for print

equation

FN = 55(2N+1)

( 5 +1)N+1 + (−1)N ( 5 −1)N+1⎡⎣ ⎤⎦ โดยที่ N = 0, 1, ...

หรืออยูในรูปลิมิต

สามารถกำหนดชวงของการคนหาไดดังนี้

limN→∞

FNFN+1

= 5 −12

FN ×δ =b -a นั่นคือ δ = b -aFN

≤ ε

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 6: Fibonacci for print

Search Method

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 7: Fibonacci for print

Search Method

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 8: Fibonacci for print

algorithm

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 9: Fibonacci for print

step 1 : กำหนดชวง [a,b]

algorithm

δ = b -aFN

≤ εstep 2 :

กำหนดให i = 2 และคำนวณ L2 =FN−2

FN× (b − a)

step 3 : คำนวณ L1 = b - a ถา L2 < 0.5xL1 ใหคำนวณ x1 = a + L2, x2 = b - L2

ถา L2 > 0.5xL1 ใหคำนวณ x1 = b - L2, x2 = a + L2

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 10: Fibonacci for print

algorithm

step 5 : เพิ่มตัวนับ i = i+1 ถา i < n ทำซ้ำ step 3

step 6 : จุดคำตอบมีคาเปน xopt =a+b2

step 4 : ตรวจสอบคาฟงกชันของจุด x1 และ x2 ถา f(x1) < f(x2) ให [a,b] = [a,x2] ถา f(x1) > f(x2) ให [a,b] = [x2,b] ถา f(x1) = f(x2) ให [a,b] = [x1, x2] และ i = i+1 คำนวณ L2 =

FN−i

FN−i+2

L1

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 11: Fibonacci for print

example

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 12: Fibonacci for print

กำหนดฟงกชันวัตถุประสงคเปน ในชวงการคนหา [0,1]

โดยใชระเบียบวิธีการคนหาของฟโบนาซซีดวยความคลาดเคลื่อนที่ยอมรับไดเทากับ

0.0001

example 3.2

f (x) = x2 − 3x i e− x

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 13: Fibonacci for print

ทำการคำนวณรอบสูงสุดที่ตองใช

จากการแปรคา N จาก 1 ใหเพิ่มขึ้นเรื่อยๆ จะพบวาที่คา FN=21 = 10946

กำหนดให i = 2 และ

example 3.2solution

δ = b − aFN

= 1− 010946

= 9.14 ×10−5 ≤ ε(1×10−4 )

L2 =FN−2

FN× (b − a) = F19

F22× (1− 0) = 0.382

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 14: Fibonacci for print

รอบการคำนวณที่ 1: L1 = 1 - 0 = 1.0 และ L2 = 0.382 < 0.5 x 1.0

ดังนั้น x1 = a + L2 = 0 + 0.382 = 0.382 ⇒ f(x1) = -0.6362

x2 = b - L2 = 1 - 0.382 = 0.618 ⇒ f(x2) = -0.6174

พบวา f(x1) < f(x2) ดังนั้น [a,b] = [a,x2] = [0,0.618]

ในรอบการคำนวณที่ 1 นี้ ประมาณจุดคำตอบไดเปน

example 3.2solution

L2 =FN−i

FN−i+2

× L1 =F19F21

×1.0 = 418110946

×1.0 = 0.382

i = i +1= 3

x = a + b

2= 0 + 0.618

2= 0.309

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 15: Fibonacci for print

รอบการคำนวณที่ 2: L1 = 0.618 - 0 = 0.618 และ L2 = 0.382 > 0.5 x L1 = 0.309

ดังนั้น x1 = b - L2 = 0.618 - 0.382 = 0.236 ⇒ f(x1) = -0.5035

x2 = a + L2 = 0 + 0.382 = 0.382 ⇒ f(x2) = -0.6326

พบวา f(x1) > f(x2) ดังนั้น [a,b] = [x2,b] = [0.236,0.618]

ในรอบการคำนวณที่ 1 นี้ ประมาณจุดคำตอบไดเปน

example 3.2solution

L2 =FN−i

FN−i+2

× L1 =F18F20

× 0.382 = 25846765

× 0.618 = 0.2361

i = i +1= 4

x = a + b

2= 0.236 + 0.618

2= 0.4275

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 16: Fibonacci for print

example 3.2solution

รอบที่ b  -­‐  a

1 0.30902 1.00000 -­‐0.58512

2 0.42705 0.61803 -­‐0.65349

3 0.50000 0.38197 -­‐0.6598

4 0.45492 0.23607 -­‐0.65899

5 0.48278 0.14590 -­‐0.66064.. .. .. ..

17 0.48113 0.00045679 -­‐0.66065

18 0.48109 0.00027407 -­‐0.66065

19 0.48109 0.00018272 -­‐0.66065

ดำเนินการคำนวณวนรอบตอไปรวมทั้งสิ้น 19 รอบการคำนวณจะไดผลดังนี้

x = a+b

2 f ( x)

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 17: Fibonacci for print

MATLAB source program

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 18: Fibonacci for print

DEMOสาธิตการคำนวณโดยโปรแกรม MATLAB

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 19: Fibonacci for print

Gridsearch VS Fibonacci

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 20: Fibonacci for print

funcc='f_univar01';[xmin,fmin] = fibonacci(funcc,[0 1],1e-4,1e-4);Iter Xmin Fmin XU-XL Ferr 21.0000 0.3090 0.6180 -0.5851 Inf

20.0000 0.4271 0.3820 -0.6535 0.0684

19.0000 0.5000 0.2361 -0.6598 0.0063

18.0000 0.4549 0.1459 -0.6590 0.0008

17.0000 0.4828 0.0902 -0.6606 0.0017

16.0000 0.4656 0.0557 -0.6601 0.0006

15.0000 0.4762 0.0344 -0.6606 0.0005...

3.0000 0.4811 0 -0.6607 0

funcc='f_univar01';[xmin,fmin] = gridsearch(funcc,[0 1],9,1e-4,100);Iter XL XU Xmin Fmin Err 0 0 1.0000 0.5000 -0.6598 1.0000

1.0000 0.3750 0.6250 0.5000 -0.6598 0.2500

2.0000 0.4375 0.5000 0.4688 -0.6603 0.0625

3.0000 0.4766 0.4922 0.4844 -0.6606 0.0156

4.0000 0.4785 0.4824 0.4805 -0.6607 0.0039

5.0000 0.4805 0.4814 0.4810 -0.6607 0.0010

6.0000 0.4810 0.4812 0.4811 -0.6607 0.0002

7.0000 0.4811 0.4811 0.4811 -0.6607 0.0001

Gridsearch VS Fibonacci

จำนวนการแทนคาฟงกชัน 7 x 9 = 63 ครั้ง จำนวนการแทนคาฟงกชัน 19 x 2 = 38 ครั้ง

วันอาทิตย์ที่ 24 มิถุนายน 12

Page 21: Fibonacci for print

EndPresentationจบการนำเสนอ

วันอาทิตย์ที่ 24 มิถุนายน 12