機(jī)械社區(qū)
標(biāo)題: 黃金分割法 [打印本頁(yè)]
作者: zhang457354043 時(shí)間: 2010-12-21 12:12
標(biāo)題: 黃金分割法
一維搜索法程序的編制、調(diào)試和結(jié)果分析(0.618法)
題目:f(a)=2a2+5a 0 |' G2 \" Z6 N" k9 q5 H% w. g
-2≦a≦4
1.實(shí)驗(yàn)?zāi)康?/font>
1、加深對(duì)機(jī)械優(yōu)化設(shè)計(jì)方法的基本理論和算法步驟的理解。
2、培養(yǎng)學(xué)生獨(dú)立編制、調(diào)試計(jì)算機(jī)程序的能力。
3、掌握常用優(yōu)化方法程序的使用方法。
4、培養(yǎng)學(xué)生靈活運(yùn)用優(yōu)化設(shè)計(jì)方法解決工程實(shí)際問(wèn)題的能力。
2.基本原理簡(jiǎn)述
黃金分割法是通過(guò)不斷縮短搜索區(qū)間的長(zhǎng)度來(lái)尋求一維函數(shù)的極小點(diǎn),這種方法的基本原理是:在搜索區(qū)間[a,b]內(nèi)按如下規(guī)則對(duì)稱地取兩點(diǎn) 和
=a+0.382(b-a); V: ? }2 h$ N h
=a+0.618(b-a);
黃金分割法的搜索過(guò)程是:
1)給出初始搜索區(qū)間 [a,b] 5 e8 H. F1 Q M h% P7 h8 B
及收斂精度 ε,將λ賦以0.618
2)計(jì)算
4 Z( u9 I' `' i. b0 G' w4 n6 g6 a和 ,并計(jì)算起對(duì)應(yīng)的函數(shù)值 f( ),f( )
3)根據(jù)期間消去法原理縮短搜索區(qū)間,為了能用原來(lái)的坐標(biāo)點(diǎn)計(jì)算公式,需進(jìn)行區(qū)間名稱的代換,并在保留區(qū)間中計(jì)算一個(gè)新的試驗(yàn)點(diǎn)及其函數(shù)值。
4)檢查區(qū)間是否縮短到足夠小和函數(shù)值收斂到足夠近,如果條件不滿足則返回到步驟2。
5)如果條件滿足,則取最后兩試驗(yàn)點(diǎn)的平均值作為極小點(diǎn)的數(shù)值近似解。
黃金分割法的程序框圖如下:
3.自編優(yōu)化方法程序 #include "math.h" #include "stdio.h" #define f(x) 2*x*x+5*x% j; d6 o8 x' L- K
/*一元函數(shù)f(x)=2x2+5x */double hj(double *a,double *b,double e,int *n) { double x1,x2,s; if(fabs(*b-*a)<=e) s=f((*b+*a)/2); else {$ B7 j; C& Y/ H0 x E
x1=*a+0.382*(*b-*a); x2=*a+0.618*(*b-*a); if(f(x1)>f(x2)) *a=x1; else *b=x2; *n=*n+1; s=hj(a,b,e,n); } return s; } main() { double s,a,b,e; int n=0; scanf("%lf %lf %lf",&a,&b,&e);- s, a9 L4 t. y: P1 {
/* 輸入?yún)^(qū)間[a,b]和精度e的值*/s=hj(&a,&b,e,&n);' ~) K1 F+ f) F' M9 N
/*調(diào)用hj函數(shù),其中n代表迭代次數(shù)*/printf("a=%lf,b=%lf,s=%lf,n=%d\n",a,b,s,n); } 4.考核計(jì)算結(jié)果及其分析。 輸入:-3 8 0.35
結(jié)果輸出:a=-1.395324 b=-1.161278 s=-3.123398 n=8。
作者: 無(wú)能 時(shí)間: 2010-12-21 12:31
樓主“遞歸”用的好啊……
歡迎光臨 機(jī)械社區(qū) (http://www.ytsybjq.com/) |
Powered by Discuz! X3.5 |