1 / 16
文档名称:

机械优化设计C语言程序.docx

格式:docx   大小:24KB   页数:16页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

机械优化设计C语言程序.docx

上传人:cengwaifai1314 2019/10/14 文件大小:24 KB

下载得到文件列表

机械优化设计C语言程序.docx

文档介绍

文档介绍:目 录一、 黄金分割法二、 二次插值法三、 最速下降法(阶梯法)四、 变尺度法五、 鲍威尔法一、黄金分割法#include<>#include<>#define r #define f(x) x*x+2*xgolden(float,float,float);main(){float a,b,e;printf("\n 请输入区间和收敛精度:a,b,e\n");scanf("%f,%f,%f",&a,&b,&e);golden(a,b,e);}golden(float a,float b,float e){float y1,y2,a1,a2,A,Y;int n=0;a1=b-r*(b-a);a2=a+r*(b-a);y1=f(a1);y2=f(a2);printf("黄金分割法的搜索过程:");do{ printf("\n %da=%f,b=%f,a1=%f,a2=%f,y1=%f,y2=%f",n,a,b,a1,a2,y1,y2);if(y1>=y2){a=a1;a1=a2;y1=y2;a2=a+r*(b-a);y2=f(a2);}else{b=a2;a2=a1;y2=y1;a1=b-r*(b-a);y1=f(a1);}n++;}while(fabs((b-a)/b)>=e||fabs((y2-y1)/y2)>=e);A=(a+b)/2;Y=f(A);printf("\n %d a=%f,b=%f,a1=%f,a2=%f",n,a,b,a1,a2);printf("\n 结果:\n 极值点及其函数值:A=%f,Y=%f\n", A,Y);}二、二次插值法#include""#include""#include""void main(){float*area(float a1,float p,float a[3]);float f(float x);float ar,fr;float a1=10,p=,e=;float pa[3];area(a1,p,pa);a1=pa[0];float a2=pa[1];float a3=pa[2];float f1=f(a1);float f2=f(a2);float f3=f(a3);do{ar=((a3*a3-a2*a2)*f1+(a1*a1-a3*a3)*f2+(a2*a2-a1*a1)*f3);ar=ar/2/((a3-a2)*f1+(a1-a3)*f2+(a2-a1)*f3);fr=f(ar);if(ar>a2){ if(fr>f2){ a3=ar; f3=fr; }else if(fr<f2){ a1=a2; f1=f2;a2=ar; f2=fr; }else{ a3=ar; a1=a2; a2=(a1+a3)/2;f1=f2; f3=fr; f2=f(a2); }}else if(ar<a2){ if(fr>f2){ a1=ar; f1=fr; }else if(fr<f2){ a3=a2; f3=f2;a2=ar; f2=fr; }else{ a1=ar; a3=a2; a2=(a1+a3)/2;f1=fr; f3=f2; f2=f(a2); }}if (fabs(a1-a3)<=e) break;} while(1);if(f2<fr){ ar=a2; fr=f2; }printf("\nx=%f\nf(x*)=%f",ar,fr);}float*area(float a1,float p,float a[3]){float f(float x);float a2,f2,a3,f3,temp;float acc=;float f1=f(a1);float storep=p;while(1){ a2=a1+p; f2=f(a2);if(f2>=f1){ if(fabs(f2-f1)<acc)p=p/2;elsep=-p;}else break;}while(1){ a3=a2+p; f3=f(a3);if(f2<=f3) break;p=2*p;a1=a2; f1=f2;a2=a3; f2=f3;}if(a1>a3){ temp=a1; a1=a3; a3=temp; }a[0]=a1;a[1]=a2;a[2]=a3;return a;}float f(float x){float y=pow(fabs(x-1),)+pow(fabs(x-1),);return y;}三、最速下降法#include <>#include <>float fun1(float x1,float x2){float a;a=2*x1;return