机械优化设计 黄金分割法.docx

上传人:b****4 文档编号:4696198 上传时间:2023-05-07 格式:DOCX 页数:10 大小:166.26KB
下载 相关 举报
机械优化设计 黄金分割法.docx_第1页
第1页 / 共10页
机械优化设计 黄金分割法.docx_第2页
第2页 / 共10页
机械优化设计 黄金分割法.docx_第3页
第3页 / 共10页
机械优化设计 黄金分割法.docx_第4页
第4页 / 共10页
机械优化设计 黄金分割法.docx_第5页
第5页 / 共10页
机械优化设计 黄金分割法.docx_第6页
第6页 / 共10页
机械优化设计 黄金分割法.docx_第7页
第7页 / 共10页
机械优化设计 黄金分割法.docx_第8页
第8页 / 共10页
机械优化设计 黄金分割法.docx_第9页
第9页 / 共10页
机械优化设计 黄金分割法.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

机械优化设计 黄金分割法.docx

《机械优化设计 黄金分割法.docx》由会员分享,可在线阅读,更多相关《机械优化设计 黄金分割法.docx(10页珍藏版)》请在冰点文库上搜索。

机械优化设计 黄金分割法.docx

机械优化设计黄金分割法

 

实验报告

 

实验课程名称机械优化设计

实验项目名称黄金分割法

年级

专业矿山机械

学生姓名

学号

 

实验时间:

2012年10月4日

 

学生所在学院:

材料学院专业:

矿山机械班级:

机自101403

姓名

学号

实验组

实验时间

2012/10/4

指导教师

成绩

实验项目名称

黄金分割法求函数极小值

实验目的及要求:

掌握机械优化设计方法并能够理论联系实际地加以应用,任务是将课程所学的知识应用于实践,通过实际编写调试及运行程序加深理论知识的掌握并提高解决优化问题的能力。

实验(或算法)原理:

搜索区间的确定:

利用单峰函数值高-低-高的特征;已知搜索起点和初始步长然后从起点开始以初始步长向前试探,如果函数值变大,则改变步长方向。

如果函数值下降,则维持原来的试探方向,并将步长加倍。

黄金分割法:

黄金分割法适用于确定区间上的任何单谷函数求极小值的问题。

对函数除要求“单谷”之外没有任何其他要求。

1.给出初始搜索区间,及收敛精度将其赋以0.618。

2.计算a1和a2,并计算起对应的函数值y1,y2。

3.根据期间消去法原理缩短搜索区间,为了能用原来的坐标点计算公式,需进行区间名称的代换,并在保留区间中计算一个新的试验点及其函数值

4.检查区间是否缩短到足够小和函数值收敛到足够近,如果条件不满足则返回到步骤2。

5.如果条件满足,则取最后两试验点的平均值作为极小点的数值近似解。

 

实验硬件及软件平台:

vs2010

实验步骤:

1.确定所需求解的函数y=3*x2+2*x+1

2.确定搜索区间

3.画出程序框图

4.用c语言在vs2010上写出源代码

5.运行程序

6.检验试验结果

7.分析实验结果

实验内容(包括实验具体内容、算法分析、源代码等等):

本实验解决;函数y=3*x2+2x+1的极小值的求法;

用一维搜索(搜索区间的确定),和黄金分割法求解。

程序额框图为:

一维搜索

黄金分割

源程序为:

#include

#include

#include

doublef(doublex)

{doubley;

doublex2;

x2=x*x;

y=3*x2+2*x+1;

returny;

}

voidmain()

{doubleh=0.02,y1=1,a1=0,a2=h,y2=f(a2),a3,y3,x1,x2,a,b,x;inti,j,n=0;

if(y2>y1)

{h=-h;a3=a1;y3=y1;gotoLab2;

}

else

gotoLab3;

Lab2:

a1=a2;y1=y2;a2=a3;y2=y3;

Lab3:

a3=a2+h;y3=f(a3);

if(y3

{h=2*h;

gotoLab2;}

else

{printf("a1=%3lf,a2=%3lf,a3=%3lf,y1=%3lf,y2=%3lf,y3=%3lf,\n",a1,a2,a3,y1,y2,y3);

a=a1;b=a3;

system("pause");

}

Lab4:

x2=a+0.618*(b-a);

y2=f(x2);

Lab5:

x1=a+0.382*(b-a);

y1=f(x1);

Lab6:

if(fabs(b-a)<0.0000000004)

{x=(a+b)/2.0;

printf("x=%lfymin=%lf\n",x,f(x));

system("pause");

exit(0);}

else

{if(y1

{b=x2;

x2=x1;

y2=y1;

n++;

printf("n=%d,x1=%3lf,y1=%3lf,x2=%3lf,y2=%3lf,a=%3lf,b=%3lf\n",n,x1,y1,x2,y2,a,b);

system("pause");

gotoLab5;}

if(y1==y2)

{a=x1;

b=x2;

n++;

printf("n=%d,x1=%3lf,y1=%3lf,x2=%3lf,y2=%3lf,a=%3lf,b=%3lf\n",n,x1,y1,x2,y2,a,b);

system("pause");

gotoLab4;

}

if(y1>y2)

{a=x1;

x1=x2;

y1=y2;

x2=a+0.618*(b-a);

y2=f(x2);

n++;

printf("n=%d,x1=%3lf,y1=%3lf,x2=%3lf,y2=%3lf,a=%3lf,b=%3lf\n",n,x1,y1,x2,y2,a,b);

system("pause");

gotoLab6;

system("pause");

}

}

}

实验结果与讨论:

运行截图

通过运行得到:

当x=0.333331时,y取得极小值ymin=0.66667

经验证是正确解

指导教师意见:

签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2