《机械优化设计》大作业
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、研究报告要求
1、报告命名规则:学号-姓名-《机械优化设计》课程实践报告.doc
2、报告提交邮址:weirongw@hfut.edu.cn(收到回复,可视为提交成功)。
追 求:问题的工程性,格式的完美性,报告的完整性。
不 追 求:问题的复杂性,方法的惟一性。
评判准则:独一是好,先交为好;切勿拷贝。
运行如图所示
我们可以看出,大约在x=2处取到极值。与理论相符。
运行如图所示
黄金分割法还要求在保留下来的区间内再插一点所形成的区间新三段,与原来的区间三段有相同的比例分布。
设原区间 的长度为1,如图一所示,保留下来的区间 长度为 ,区间缩短率为 。为了保持相同的分别比例。插入新点 应在 位置上, 在原区间的 1位置应相当于在保留区间的 位置。
故有:
解得
编写0.618的程序,并计算下列问题
a=a1;
else
b=a2;
}
printf(“所求极小值点为:x=%lf\t极小值f(x)=%f\n”,a,f(b));
}
doublef(doublex)/*****函数值计算函数*****/
{
doublef;
f=(x-2)*(x-2)+3;
return(f);
}
对于y=cosx,须在程序中加一个#include(math.h)头程序,以示我要调用函数语句。再将倒数第三行函数改为y=cos(x),再次编译运算即可。
《机械优化设计》课程实践
研究报告
一、研究报告内容:
1、λ=0.618的证明、一维搜索程序作业;
2、单位矩阵程序作业;
3、连杆机构问题+ 自行选择小型机械设计问题或其他工程优化问题;
(1)分析优化对象,根据设计问题的要求,选择设计变量,确立约束条件,建立目标函数,建立优化设计的数学模型并编制问题程序;
printf(“区间为(%lf,%lf),精度为%lf\n”,a,b,size);
printf(“序号\t a1\t\t a2\t\t f(a1)\t\t f(a2)\n”);
for(i=0;i<64;i++)
printf(“-“);
printf(“\n”);
i=0;
while((b-a)>size)/*****用精度控制循环次数*****/
(1)采用MATLAB进行编程
%%
%fun.m:黄金分割法求极值点
%输入数据
% a –搜索区间下限
% b –搜索区间上限
% e –精度
%输出数据:
% x –极小值点
%其他常量:
% c1,c2,c3 –区间
% r –黄金分割比例0.618
%%
%定义函数
function x=fun(a,b,e)
r=0.618;
进步,努力,建议………………………………………………………………25
一、λ=0.618的证明、一维搜索程序作业
①关于 的证明
黄金分割法要求插入点 , 的位置相对于区间 两端具有对称性,即
其中 为待定常数。
此外,黄金分割法还要求在保留下来百度文库区间内再插入一点所形成的区间新三段,与原来的区间三段具有相同的比例分布。
{
i++;
a1=b-K*(b-a);/*****按0.618法插入两点*****/
a2=a+K*(b-a);
printf(“%2d:\t%f\ta%f\t%f\t%f\n”,I,a1,a2,f(a1),f(a2));
/*****输出每次计算后a1,a2,f(a1),f(a2)的值*****/
if(f(a1)>=f(a2))
voidmain(void)
{
doublea,b,size;
doublea1,a2;
intI;
printf(“请输入区间两端点(端点值应大于0):”);
scanf(“%lf,%lf”,&a,&b);/*****输入端点值*****/
printf(“请输入精度:”);
scanf(“%lf”,&size);/*****输入精度*****/
c1=b-r*(b-a);y1=f(c1);
end
end
x=0.5*(a+b);
end
对f函数的确立
10function y=f(x)
y=(x-2)^2+3;
end
11function y=f(x)
y=cosx
end
如果要计算y=(x-2)^2+3;的黄金分割法,则需要将图所示的f脚本中的函数写成如①所示
(2)选择适当的优化方法,简述方法原理,进行优化计算;
(3)进行结果分析,并加以说明。
4、写出课程实践心得体会,附列程序文本。
5、为响应学校2014年度教学工作会议的改革要求,探索新的课程考核评价方法,特探索性设立一开放式考核项目,占总成绩的5%。
试用您自己认为合适的方式(书面)表达您在本门课程学习方面的努力、进步与收获。(考评将重点关注您的独创性、简洁性与可验证性)。
如果要计算y=cosx;黄金分割法,则需要将图所示的f脚本中的函数写成如②所示
fun函数表示对matlab的主程序语言。
函数NO.2运算结果:
函数NO.1运算结果:
(2)采用C语言进行编程
#include<stdio.h>
#defineK 0.618
doublef(double);/*****函数值计算函数声明*****/
c1=b-r*(b-a);c2=a+r*(b-a);
y1=f(c1);y2=f(c2);
while (abs((b-a)/b)>e)&&(abs((y2-y1)/y2)>e)
if y1>=y2
a=c1;c1=c2;y1=y2;
c2=a+r*(b-a);y2=f(c2);
else
b=c2;c2=c1;y2=y1;
2采用c语言进行编程………………………………………………… 9
机械优化工程实例
1连杆机构…………………………………………………………………11
2自选机构…………………………………………………………………16
课程实践心得…………………………………………………………………… 20
附列程序文本…………………………………………………………………… 21
目录:
λ=0.618的证明、一维搜索程序作业
1关于 的证明……………………………………………………4
2一维搜索的作业
采用matlab进行编程…………………………………………… 5
采用C语言进行编程……………………………………………… 7
单位矩阵程序作业
1采用matlab的编程………………………………………………… 9
1、报告命名规则:学号-姓名-《机械优化设计》课程实践报告.doc
2、报告提交邮址:weirongw@hfut.edu.cn(收到回复,可视为提交成功)。
追 求:问题的工程性,格式的完美性,报告的完整性。
不 追 求:问题的复杂性,方法的惟一性。
评判准则:独一是好,先交为好;切勿拷贝。
运行如图所示
我们可以看出,大约在x=2处取到极值。与理论相符。
运行如图所示
黄金分割法还要求在保留下来的区间内再插一点所形成的区间新三段,与原来的区间三段有相同的比例分布。
设原区间 的长度为1,如图一所示,保留下来的区间 长度为 ,区间缩短率为 。为了保持相同的分别比例。插入新点 应在 位置上, 在原区间的 1位置应相当于在保留区间的 位置。
故有:
解得
编写0.618的程序,并计算下列问题
a=a1;
else
b=a2;
}
printf(“所求极小值点为:x=%lf\t极小值f(x)=%f\n”,a,f(b));
}
doublef(doublex)/*****函数值计算函数*****/
{
doublef;
f=(x-2)*(x-2)+3;
return(f);
}
对于y=cosx,须在程序中加一个#include(math.h)头程序,以示我要调用函数语句。再将倒数第三行函数改为y=cos(x),再次编译运算即可。
《机械优化设计》课程实践
研究报告
一、研究报告内容:
1、λ=0.618的证明、一维搜索程序作业;
2、单位矩阵程序作业;
3、连杆机构问题+ 自行选择小型机械设计问题或其他工程优化问题;
(1)分析优化对象,根据设计问题的要求,选择设计变量,确立约束条件,建立目标函数,建立优化设计的数学模型并编制问题程序;
printf(“区间为(%lf,%lf),精度为%lf\n”,a,b,size);
printf(“序号\t a1\t\t a2\t\t f(a1)\t\t f(a2)\n”);
for(i=0;i<64;i++)
printf(“-“);
printf(“\n”);
i=0;
while((b-a)>size)/*****用精度控制循环次数*****/
(1)采用MATLAB进行编程
%%
%fun.m:黄金分割法求极值点
%输入数据
% a –搜索区间下限
% b –搜索区间上限
% e –精度
%输出数据:
% x –极小值点
%其他常量:
% c1,c2,c3 –区间
% r –黄金分割比例0.618
%%
%定义函数
function x=fun(a,b,e)
r=0.618;
进步,努力,建议………………………………………………………………25
一、λ=0.618的证明、一维搜索程序作业
①关于 的证明
黄金分割法要求插入点 , 的位置相对于区间 两端具有对称性,即
其中 为待定常数。
此外,黄金分割法还要求在保留下来百度文库区间内再插入一点所形成的区间新三段,与原来的区间三段具有相同的比例分布。
{
i++;
a1=b-K*(b-a);/*****按0.618法插入两点*****/
a2=a+K*(b-a);
printf(“%2d:\t%f\ta%f\t%f\t%f\n”,I,a1,a2,f(a1),f(a2));
/*****输出每次计算后a1,a2,f(a1),f(a2)的值*****/
if(f(a1)>=f(a2))
voidmain(void)
{
doublea,b,size;
doublea1,a2;
intI;
printf(“请输入区间两端点(端点值应大于0):”);
scanf(“%lf,%lf”,&a,&b);/*****输入端点值*****/
printf(“请输入精度:”);
scanf(“%lf”,&size);/*****输入精度*****/
c1=b-r*(b-a);y1=f(c1);
end
end
x=0.5*(a+b);
end
对f函数的确立
10function y=f(x)
y=(x-2)^2+3;
end
11function y=f(x)
y=cosx
end
如果要计算y=(x-2)^2+3;的黄金分割法,则需要将图所示的f脚本中的函数写成如①所示
(2)选择适当的优化方法,简述方法原理,进行优化计算;
(3)进行结果分析,并加以说明。
4、写出课程实践心得体会,附列程序文本。
5、为响应学校2014年度教学工作会议的改革要求,探索新的课程考核评价方法,特探索性设立一开放式考核项目,占总成绩的5%。
试用您自己认为合适的方式(书面)表达您在本门课程学习方面的努力、进步与收获。(考评将重点关注您的独创性、简洁性与可验证性)。
如果要计算y=cosx;黄金分割法,则需要将图所示的f脚本中的函数写成如②所示
fun函数表示对matlab的主程序语言。
函数NO.2运算结果:
函数NO.1运算结果:
(2)采用C语言进行编程
#include<stdio.h>
#defineK 0.618
doublef(double);/*****函数值计算函数声明*****/
c1=b-r*(b-a);c2=a+r*(b-a);
y1=f(c1);y2=f(c2);
while (abs((b-a)/b)>e)&&(abs((y2-y1)/y2)>e)
if y1>=y2
a=c1;c1=c2;y1=y2;
c2=a+r*(b-a);y2=f(c2);
else
b=c2;c2=c1;y2=y1;
2采用c语言进行编程………………………………………………… 9
机械优化工程实例
1连杆机构…………………………………………………………………11
2自选机构…………………………………………………………………16
课程实践心得…………………………………………………………………… 20
附列程序文本…………………………………………………………………… 21
目录:
λ=0.618的证明、一维搜索程序作业
1关于 的证明……………………………………………………4
2一维搜索的作业
采用matlab进行编程…………………………………………… 5
采用C语言进行编程……………………………………………… 7
单位矩阵程序作业
1采用matlab的编程………………………………………………… 9