fibonacci for print
Post on 20-Jul-2015
239 Views
Preview:
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