机械优化设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
课程名称:机械优化设计班级:机械<3>班实验日期:2016.5.25 姓名:学号:指导教师:实验名称:进退法实验序号: 1 实验成绩:
(1)实验目的:
通过实验教学加深学生对优化设计方法的理解,培养学生程序调试和出错处理的能力,提高学生应用优化设计方法和程序设计的能力。
本实验课程的基本要求:
1)熟悉Visual C++的使用,掌握设计程序和调试程序的基本方法。
2)掌握一些重要优化算法,并具有较强的编程能力和解决实际优化问题的能力。
3)具有设计简单综合应用型程序的能力。
(2)实验内容:
1.调试用例题题目及正确结果:
(1)调试题目为教材P53 习题3.1
X0=0时:A=0.3 B=1.5
X0=1.8时:A= -1.5 B= -0.3
(2)调试题目为教材P42 例3.1
A=1 B=7
2.调试过程:
(1)#include
#define N 1
void main()
{
float gs(float x[N]);
float x[N],s[N],f[2],z[N],t,a,b;
int i;
for(i=0;i { printf("\n请输入初始点x[%d]=",i); scanf("%f",&x[i]); } printf("\n请输入步长:"); scanf("%f",&t); for(i=0;i { printf("\n请输入搜索方向s[%d]=",i); scanf("%f",&s[i]); } a=0;b=t; f[0]=gs(x); for(i=0;i z[i]=x[i]+b*s[i]; f[1]=gs(z); if(f[1] { do {t=2*t;b=b+t;f[0]=f[1]; for(i=0;i if(f[0]>f[1]) a=b-t; else break;} while(f[0]>f[1]); printf("\nA=%f,B=%f\n",a,b); } else { t=0-t; do {a=a+t;f[1]=f[0]; for(i=0;i z[i]=x[i]+a*s[i]; f[0]=gs(z); if(f[1]>f[0]) { b=a-t;t=2*t; } else break;} while(f[1]>f[0]); printf("\nA=%f,B=%f\n",a,b); } } float gs(float z[N]) { float f; f=3*z[0]*z[0]*z[0]-8*z[0]+9; return(f); } (2)#include #define N 1 void main() { float gs(float x[N]); float x[N],s[N],f[2],z[N],t,a,b; int i; for(i=0;i { printf("\n请输入初始点x[%d]=",i); scanf("%f",&x[i]); } printf("\n请输入步长:"); scanf("%f",&t); for(i=0;i { printf("\n请输入搜索方向s[%d]=",i); scanf("%f",&s[i]); } a=0;b=t; f[0]=gs(x); for(i=0;i z[i]=x[i]+b*s[i]; f[1]=gs(z); if(f[1] { do {t=2*t;b=b+t;f[0]=f[1]; for(i=0;i if(f[0]>f[1]) a=b-t; else break;} while(f[0]>f[1]); printf("\nA=%f,B=%f\n",a,b); } else { t=0-t; do {a=a+t;f[1]=f[0]; for(i=0;i z[i]=x[i]+a*s[i]; f[0]=gs(z); if(f[1]>f[0]) { b=a-t;t=2*t; } else break;} while(f[1]>f[0]); printf("\nA=%f,B=%f\n",a,b); } } float gs(float z[N]) { float f; f=3*z[0]*z[0]*z[0]-8*z[0]+9; return(f); } 3.调试结果: (1) (2)