为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

黄金分割法

2017-09-27 11页 doc 33KB 61阅读

用户头像

is_637320

暂无简介

举报
黄金分割法黄金分割法 太原理工大学机械学院机测系课程上机实验报告 课 程 名 称: 机械优化设计 班日 期 成绩评定 xxx 2012/6/6 级 姓实验室 机械馆图强机房 老师签名 xxx 名 实 验用黄金分割法程序解题 名 称 所DEV-C++ 5 用 软 件 实 验 目 实验目的: 的 及 1.掌握并能够建立最优化基本类型问题的数学模型。 内 2.掌握最优化方法的基本概念、基本理论和基本方法,奠定最优化的理论基础。 容 3.能够熟练编制和调试最优化方法的程序,奠定解决实际中的优化问题的基础 实验内容: ...
黄金分割法
黄金分割法 太原理工大学机械学院机测系课程上机实验报告 课 程 名 称: 机械优化 班日 期 成绩评定 xxx 2012/6/6 级 姓实验室 机械馆图强机房 老师签名 xxx 名 实 验用黄金分割法程序解题 名 称 所DEV-C++ 5 用 软 件 实 验 目 实验目的: 的 及 1.掌握并能够建立最优化基本类型问题的数学模型。 内 2.掌握最优化方法的基本概念、基本理论和基本方法,奠定最优化的理论基础。 容 3.能够熟练编制和调试最优化方法的程序,奠定解决实际中的优化问题的基础 实验内容: 理解黄金分割法并编写相关程序求其最优解。 黄金分割法程序考核题: 实 2minF(x),x,10x,36 1) 验 432minF(x),x,5x,4x,6x,60 2) 原 2minF(x),(x,1)(x,2)3) (x>0) 理 实验原理: 步 一维搜索是解函数极小值的方法之一,其解法思想为沿某一已知方向求目标函数的极小 值点。一维搜索的解法很多,这里主要采用黄金分割法(0.618法)。该方法用不变的区间骤 缩短率0.618代替斐波那契法每次不同的缩短率,从而可以看成是斐波那契法的近似,实、 现起来比较容易,也易于人们所接受。 黄金分割法是用于一元函数f(x)在给定初始区间[a,b]内搜索极小点α*的一种方法。 它是优化计算中的经典算法,以算法简单、收敛速度均匀、效果较好而著称,是许多优化 [6]算法的基础,但它只适用于一维区间上的凸函数,即只在单峰区间内才能进行一维寻优,实 其收敛效率较低。其基本原理是:依照“去劣存优”原则、对称原则、以及等比收缩原则 [7] 来逐步缩小搜索区间。具体步骤是:在区间[a,b]内取点:a1 ,a2 把[a,b]分为三段。如验 果f(a1)>f(a2),令a=a1,a1=a2,a2=a+r*(b-a);如果f(a1)0) 次数 a b a(1) a(2) f1 f2 b-a … … … … … 28, 1.99999614, 2.00000325, 1.99999886, 1.99999904, 0.00000000, 0.00000000, 0.00000711 29, 1.99999886, 2.00000325, 1.99999904, 2.00000157, 0.00000000, 0.00000000, 0.00000439 30, 1.99999886, 2.00000157, 1.99999989, 1.99999904, 0.00000000, 0.00000000, 0.00000271 31, 1.99999886, 1.99999904, 1.99999893, 1.99999989, 0.00000000, 0.00000000, 0.00000018 ********************* 黄金分割法最优点及目标函数值为: x( *)=[ 1.9999989], f( *)= 0.0000000 迭代精度: 0.000000180 算法程序实现 /*csssqj.cpp */ #include #include #include #include #include #define N 1 /*优化设计维数*/ #define EPSIN 0.000001 /*迭代精度*/ #define H_QJ 1.0 /*初始区间搜索步长*/ FILE *fp; char outname[50]="黄金分割法计算结果.txt"; /*计算结果输出文件*/ /*给出初始点坐标*/ void csd_x(double x0[]) { int i; for(i=0;if2) { a2=a3; a3=0.0; f1=f2; f2=f3; f3=f1; h=-h; } do { a1=a2; a2=a3; f1=f2; f2=f3; a3=a2+h; f3=xkadd(x,d,a3); h=2*h; }while(f30.0) { ab[0]=a1; ab[1]=a3; } else { ab[0]=a3; ab[1]=a1; } return; } /*黄金分割法*/ void goldcut(double x[],double d[],double h,double ebsin) { double a1,a2,f1,f2,a,b,ab[2]; int i,k=0; fprintf(fp,"**********黄金分割法计算结果**********\n\n"); fprintf(fp,"缩短次数 a b a(1) a(2)"); fprintf(fp," f1 f2 b-a\n"); csssqj(x,d,h,ab); a=ab[0]; b=ab[1]; a1=b-0.618*(b-a); f1=xkadd(x,d,a1); a2=a+0.618*(b-a); f2=xkadd(x,d,a2); fprintf(fp,"%3d,%15.8lf,%15.8lf,%15.8lf,%15.8lf,%15.8lf,%15.8lf,%15.8lf\n", k,a,b,a1,a2,f1,f2,b-a); do { if(f1>f2) { a=a1; a1=a2; f1=f2; a2=a+0.618*(b-a); f2=xkadd(x,d,a2); } else { b=a2; a2=a1; f2=f1; a1=b-0.618*(b-a); f1=xkadd(x,d,a1); } k++; fprintf(fp,"%3d,%15.8lf,%15.8lf,%15.8lf,%15.8lf,%15.8lf,%15.8lf,%15.8lf\n", k,a,b,a1,a2,f1,f2,b-a); }while(b-a>ebsin); for(i=0;i
/
本文档为【黄金分割法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索