fibonacci for print
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