好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

【2017年整理】机械优化设计C语言程序.doc

16页
  • 卖家[上传人]:鲁**
  • 文档编号:984242
  • 上传时间:2017-05-24
  • 文档格式:DOC
  • 文档大小:82.50KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 目 录一、 黄金分割法二、 二次插值法三、 最速下降法(阶梯法)四、 变尺度法五、 鲍威尔法一、黄金分割法#include#include#define r 0.618#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 %d a=%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"stdio.h"#include"math.h"#include"conio.h"void main(){float*area(float a1,float p,float a[3]);float f(float x);float ar,fr;float a1=10,p=0.01,e=0.000001;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(frf2){ a1=ar; f1=fr; }else if(fr=f1){ if(fabs(f2-f1)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),1.5)+pow(fabs(x-1),2.7);return y;}三、最速下降法#include #include float fun1(float x1,float x2) {float a;a=2*x1;return a;}float fun2(float x1,float x2) {float b;b=50*x2;return b;}float fun3(float x1,float x2) {float y;y=x1*x1+25*x2*x2; return y;}main(){ float t, e=0.01, x1=0, x2=1, a, b, y, m; a=fun1(x1,x2); b=fun2(x1,x2); m=sqrt(a*a+b*b); while(m>e) { t=(a*a+b*b)/(2*a*a+50*b*b); x1=x1-a*t; x2=x2-b*t;a=fun1(x1,x2); b=fun2(x1,x2); m=sqrt(a*a+b*b); }y=fun3(x1,x2); printf("The min is %f",y); }四、DFP 变尺度法#include#include#include#include#define tt 0.01#define ff 1.0e-6#define ac 1.0e-6#define ad 1.0e-6#define n 2double ia;double fny(double *x){ double x1=x[0],x2=x[1];double f;f=x1*x1+2*x2*x2-4*x1-2*x1*x2;return f;}double * iterate(double *x,double a,double *s){double *x1;int i;x1=(double *)malloc(n*sizeof(double));for(i=0;i=ad){t=-t;a[0]=a[1];f[0]=f[1];}else{if(ia==1) return; //breakt=t/2;ia=1;}}for(i=0;;i++){a[2]=a[1]+t;f[2]=func(xk,a[2],s);if(f[2]>f[1]) break;t=2*t;a[0]=a[1];f[0]=f[1];a[1]=a[2];f[1]=f[2];}if(a[0]>a[2]){a1=a[0];f1=f[0];a[0]=a[2];f[0]=f[2];a[2]=a1;f[2]=f1;}return;}double lagrange(double *xk,double *ft,double *s){ int i;double a[3],f[3];double b,c,d,aa;finding(a,f,xk,s);for(i=0;;i++){if(ia==1) { aa=a[1]; *ft=f[1]; break; }d=(pow(a[0],2)-pow(a[2],2))*(a[0]-a[1])-(pow(a[0],2)-pow(a[1],2))*(a[0]-a[2]);if(fabs(d)==0) break;c=((f[0]-f[2])*(a[0]-a[1])-(f[0]-f[1])*(a[0]-a[2]))/d;if(fabs(c)==0) break;b=((f[0]-f[1])-c*(pow(a[0],2)-pow(a[1],2)))/(a[0]-a[1]);aa=-b/(2*c);*ft=func(xk,aa,s);if(fabs(aa-a[1])f[1]) aa=a[1];break;}if(aa>a[1]){if(*ft>f[1]) {a[2]=aa;f[2]=*ft;}else if(*ftf[1]) {a[0]=aa;f[0]=*ft;}else if(*ftf[1]) {*ft=f[1];aa=a[1];}return aa;}double *gradient(double *xk){double *g,f1,f2,q;int i;g=(double*)malloc(n*sizeof(double));f1=fny(xk);for(i=0;i=ac)&&(fabs(g2[i]-g1[i])>=ac)){ib=ib+1;}if(ib==0) { xx=xk1; break; }fi=*ft;if(k==n-1){ int j;xk=xk1;for(i=0;ifi) { *ft=fi; xx=xk;}xk=x0;return xx;}void main (){ int k;double *xx,f;double xk[n]={1,1};xx=bfgs(xk);f=fny(xx);printf("\n\nThe Optimal Design Result Is:\n");for(k=0;k=f1){h= -h0;for (i=0;if2){for(i=0;ieps);for(i=0;idlt){dlt=df;m=j;}}sdx=0.;for (i=0;i

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.