久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 3891|回復: 1

黃金分割法

[復制鏈接]
1#
發表于 2010-12-21 12:12:21 | 只看該作者 |倒序瀏覽 |閱讀模式
一維搜索法程序的編制、調試和結果分析(0.618法)
題目:f(a)=2a2+5a / g) J# k7 Y4 Y; @8 `" x: j& |
-2≦a≦4
1.實驗目的
1、加深機械設計方法的基本理和算法步的理解。
2、培養學制、調試計算機程序的能力。
3、掌握常用化方法程序的使用方法。
4、培養學設計方法解工程實際問題的能力。
2.基本原理簡述
黃金分割法是通過不斷縮短搜索區間的長度來尋求一維函數的極小點,這種方法的基本原理是:在搜索區間[a,b]內按如下規則對稱地取兩點
=a+0.382(b-a)! E& a+ ?5 p+ x$ c. ?! A
=a+0.618(b-a)
黃金分割法的搜索過程是:
1)給出初始搜索區間 [ab]
! A( _5 p$ S2 O% ?* B# ?) O+ J
及收斂精度 ε,將λ賦以0.618
2)計算
1 A/ e% f/ K5 @9 [; K: K% t
,并計算起對應的函數值 f( )f( )
3)根據期間消去法原理縮短搜索區間,為了能用原來的坐標點計算公式,需進行區間名稱的代換,并在保留區間中計算一個新的試驗點及其函數值。
4)檢查區間是否縮短到足夠小和函數值收斂到足夠近,如果條件不滿足則返回到步驟2
5)如果條件滿足,則取最后兩試驗點的平均值作為極小點的數值近似解。
黃金分割法的程序框圖如下:
3.自編優化方法程序 #include "math.h" #include "stdio.h" #define f(x) 2*x*x+5*x2 G4 }8 r0 D9 ]0 `3 D. @
/*
一元函數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 {
4 {" w9 |% `1 O  S( x" ]! Jx1=*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);  W3 l( t% T0 ]; f( G2 m( K* G
/*
輸入區間[a,b]和精度e的值*/
s=hj(&a,&b,e,&n);' _8 R. o& M% G9 D, N% F% @9 [
/*
調用hj函數,其中n代表迭代次數*/
printf("a=%lf,b=%lf,s=%lf,n=%d\n",a,b,s,n); } 4.考核計算結果及其分析。
輸入:-3 8 0.35
結果輸出:a=-1.395324 b=-1.161278 s=-3.123398 n=8
回復

使用道具 舉報

2#
發表于 2010-12-21 12:31:53 | 只看該作者
樓主“遞歸”用的好啊……
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

Archiver|手機版|小黑屋|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-8-30 15:42 , Processed in 0.064520 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表