fibonacci for print

Post on 20-Jul-2015

239 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

PresentedbyMiss. Julaluk LaokhunkarMr. Chaiwat Luejai

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

history

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

history

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

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

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

Search Method

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

Search Method

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

algorithm

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

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

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

example

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

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

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

0.0001

example 3.2

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

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

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

จากการแปรคา 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

รอบการคำนวณที่ 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

รอบการคำนวณที่ 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

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

MATLAB source program

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

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

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

Gridsearch VS Fibonacci

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

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

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

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

top related