Fibonacci for print1. FIBONACCI
SEARCH METHOD
ระเบียบวิธีการคนหาของฟโบนาซซี
Presented Miss. Julaluk Laokhunkar
by
Mr. Chaiwat Luejai
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
4. 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
ิ ุ
5. equation
5
FN = ⎡( 5 + 1)N +1 + (−1)N ( 5 − 1)N +1 ⎤
N +1 ⎣ โดยที่ N = 0, 1, ...
5(2 ) ⎦
หรืออยูในรูปลิมิต
FN 5 −1
lim =
N→∞ F 2
N +1
สามารถกำหนดชวงของการคนหาไดดังนี้
b-a
FN × δ = b - a นั่นคือ δ= ≤ε
FN
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
9. algorithm
step 1 : กำหนดชวง [a,b]
b-a
step 2 : δ=
FN
≤ε
FN −2
กำหนดให i = 2 และคำนวณ L2 = × (b − a)
FN
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
ิ ุ
10. algorithm
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
คำนวณ L = FN −i
2 L 1
FN −i+2
step 5 : เพิ่มตัวนับ i = i+1 ถา i < n ทำซ้ำ step 3
a +b
step 6 : จุดคำตอบมีคาเปน xopt =
2
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
12. example 3.2
กำหนดฟงกชันวัตถุประสงคเปน f (x) = x − 3x i e
2 −x
ในชวงการคนหา [0,1]
โดยใชระเบียบวิธีการคนหาของฟโบนาซซีดวยความคลาดเคลื่อนที่ยอมรับไดเทากับ
0.0001
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
13. solution
example 3.2
ทำการคำนวณรอบสูงสุดที่ตองใช
จากการแปรคา N จาก 1 ใหเพิ่มขึ้นเรื่อยๆ จะพบวาที่คา FN=21 = 10946
b − a 1− 0
δ= = = 9.14 × 10 −5 ≤ ε (1× 10 −4 )
FN 10946
กำหนดให i = 2 และ
FN −2 F19
L2 = × (b − a) = × (1− 0) = 0.382
FN F22
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
14. solution
example 3.2
รอบการคำนวณที่ 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]
FN −i F19 4181
L2 = × L1 = × 1.0 = × 1.0 = 0.382
FN −i+2 F21 10946
i = i +1 = 3
ในรอบการคำนวณที่ 1 นี้ ประมาณจุดคำตอบไดเปน
a + b 0 + 0.618
x=
= = 0.309
2 2
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
15. solution
example 3.2
รอบการคำนวณที่ 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]
FN −i F18 2584
L2 = × L1 = × 0.382 = × 0.618 = 0.2361
FN −i+2 F20 6765
i = i +1 = 4
ในรอบการคำนวณที่ 1 นี้ ประมาณจุดคำตอบไดเปน
a + b 0.236 + 0.618
x=
= = 0.4275
2 2
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
16. solution
example 3.2
ดำเนินการคำนวณวนรอบตอไปรวมทั้งสิ้น 19 รอบการคำนวณจะไดผลดังนี้
a +b
รอบที่
x= b
-‐
a
f (x)
2
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
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
18. DEMO
สาธิตการคำนวณโดยโปรแกรม MATLAB
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
19. Gridsearch VS Fibonacci
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
20. Gridsearch VS Fibonacci
funcc='f_univar01'; funcc='f_univar01';
[xmin,fmin] = gridsearch(funcc,[0 1],9,1e-4,100); [xmin,fmin] = fibonacci(funcc,[0 1],1e-4,1e-4);
Iter XL XU Xmin Fmin Err Iter Xmin Fmin XU-XL Ferr
0 0 1.0000 0.5000 -0.6598 1.0000 21.0000 0.3090 0.6180 -0.5851 Inf
1.0000 0.3750 0.6250 0.5000 -0.6598 0.2500 20.0000 0.4271 0.3820 -0.6535 0.0684
2.0000 0.4375 0.5000 0.4688 -0.6603 0.0625 19.0000 0.5000 0.2361 -0.6598 0.0063
3.0000 0.4766 0.4922 0.4844 -0.6606 0.0156 18.0000 0.4549 0.1459 -0.6590 0.0008
4.0000 0.4785 0.4824 0.4805 -0.6607 0.0039 17.0000 0.4828 0.0902 -0.6606 0.0017
5.0000 0.4805 0.4814 0.4810 -0.6607 0.0010 16.0000 0.4656 0.0557 -0.6601 0.0006
6.0000 0.4810 0.4812 0.4811 -0.6607 0.0002 15.0000 0.4762 0.0344 -0.6606 0.0005
.
7.0000 0.4811 0.4811 0.4811 -0.6607 0.0001 .
.
3.0000 0.4811 0 -0.6607 0
จำนวนการแทนคาฟงกชัน 7 x 9 = 63 ครั้ง จำนวนการแทนคาฟงกชัน 19 x 2 = 38 ครั้ง
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ
21. End
Presentation
จบการนำเสนอ
วันอาทิตย์ที่ 24 มถนายน 12
ิ ุ