机械与工程优化设计Word格式文档下载.docx
《机械与工程优化设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《机械与工程优化设计Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。
#include"
stdio.h"
floatfun(floatx)
{
return3*x*x-8*x+9;
}
voidmain()
floatx0,h,a,b,x1,x2,f1,f2;
printf("
输入初始点,按回车键结束\n"
);
scanf("
%f"
&
x0);
输入初始步长,按回车键结束\n"
h);
x1=x0;
x2=x1+h;
f1=fun(x1);
f2=fun(x2);
if(f2<
f1)
{
while(f2!
=f1)
{
h=2*h;
x2=x2+h;
f1=f2;
x1=x2-h;
else
{
a=x1;
b=x2;
break;
}
}
}
else
if(f2!
h=-h/4;
while(f2!
h=2*h;
x1=x1+h;
f2=f1;
if(f2>
x2=x1-h;
else
a=x1;
\n输出初始单峰区间\n"
a=%f,b=%f\n"
a,b);
2、试用黄金分割法求一元函数的最优解。
已知初始单峰区间为[1,7],取迭代精度。
x=2.998185;
f=0.000003。
doublefun(doublex)
returnx*x-6*x+9;
inti=0;
doublea,b,a1,a2,x,f,f1,f2,jingdu;
输入初始单峰区间的左端边界值,按回车键结束\n"
%lf"
a);
输入初始单峰区间的右端边界值,按回车键结束\n"
b);
输入迭代精度,按回车键结束\n"
jingdu);
\n迭代次数aba1a2f1f2b-a\n"
while((b-a)>
jingdu)
a1=a+0.382*(b-a);
f1=fun(a1);
a2=a+0.618*(b-a);
f2=fun(a2);
if(f1<
f2)
b=a2;
a2=a1;
a1=a+0.382*(b-a);
f1=fun(a1);
a=a1;
a1=a2;
a2=a+0.618*(b-a);
f2=fun(a2);
i=i+1;
printf("
\n%d%lf%lf%lf%lf%lf%lf%lf\n"
i,a,b,a1,a2,f1,f2,(b-a));
x=(b+a)/2;
f=fun(x);
\n输出函数的最优解\n"
x=%lf,f=%lf\n"
x,f);
3、现已知某汽车行驶速度x与每公里耗油量的函数关系为:
。
试用二次插值法确定当速度在0.2-1km/s时的最经济速度,取迭代精度为。
math.h"
return(x-3)*(x-3);
voidoptimal(doublex1,doublex2)
doublea,fa;
a=x1;
fa=x2;
doublea1,a2,a3,a4,c1,c2,f1,f2,f3,f4,a,A,fa,jingdu,l;
a1);
a3);
a2=(a1+a3)/2;
f1=fun(a1);
f3=fun(a3);
c1=(f3-f1)/(a3-a1);
c2=((f2-f1)*(a2-a1)-c1)/(a2-a3);
if(c2!
=0)
a4=0.5*(a1+a3-(c1/c2));
if((a4-a1)*(a3-a4)>
0)
f4=fun(a4);
if(f2<
=jingdu*(a3-a1))
A=1;
A=f2;
optimal(a2,f2);
a=%lf,fa=%lf\n"
a,fa);
while
(1);
while(fabs((f2-f4)/A)>
if((a4-a2)*(a4-a1)>
f4)
a1=a2;
a2=a4;
f2=f4;
l=(a3-a2);
a3=a4;
f3=f4;
l=(a4-a1);
a3=a2;
f3=f2;
l=(a2-a1);
a1=a4;
f1=f4;
l=(a3-a4);
a2=(a1+a3)/2;
f1=fun(a1);
c1=(f3-f1)/(a3-a1);
c2=((f2-f1)*(a2-a1)-c1)/(a2-a3);
if(c2!
a4=0.5*(a1+a3-(c1/c2));
if((a4-a1)*(a3-a4)>
f4=fun(a4);
if(f2<
=(jingdu*l))
A=1;
else
A=f2;
optimal(a2,f2);
else
optimal(a2,f2);
i=i+1;
if(f4<
optimal(a4,f4);
else