机械优化—黄金分割.docVIP

  • 5
  • 0
  • 约小于1千字
  • 约 4页
  • 2018-03-08 发布于河南
  • 举报
机械优化—黄金分割

程序: #include stdio.h #include math.h #define e 0.35//定义精度// #define bc 1//定义步长// float f(double x)//函数表达式// { float y=x*x-7*x+10; return(y); } finding(float *p1,float*p2) { float x1=0,x2,x3,t,f1,f2,f3,h=bc; int n=0;x2=x1+h;f1=f(x1);f2=f(x2); if(f2f1) { h=-h;t=x2;x2=x1;x1=t; } do { x3=x2+h;h=2*h;f3=f(x3);n=n+1; } while(f3f2); if(x1x3) { t=x1;x1=x3;x3=t; } *p1=x1;*p2=x3; return(n); } gold(float *p)//黄金分割法求极小值// { float a,b,x1,x2,f1,f2; int n=0; finding(a,b); do { x1=b-0.618*(b-a); x2=a+0.618*(b-a); f1=f(x1); f2=f(x2); n=n+1; if(f1f2) a=x1; else b=x2; } while((b-a)e); *p=(x1+x2)/2; return(n); } main()//主函数入口// { float a,b,x,min; int n1,n2; n1=finding(a,b); n2=gold(x); min=f(x); printf(\n 单谷区间: %f 到 %f.,a,b); printf(\n 最优解: x取值为%f 最优解函数值为 %f.,x,min);//极小值点以及极小值// printf(\n 搜素次数:%d\n,n2);//黄金分割法搜索次数// } 最后输出结果为:

文档评论(0)

1亿VIP精品文档

相关文档