工程优化作业共11页姓名:龚尚映学号:1103121816第1页1.最速下降法计算:f=(x1-1)2+5(x2-5)2(1)程序代码如下:#includestdio.h#includemath.hdoublef1(doublex,doubley){doubler;r=(pow(x-1,2)+5*pow((y-5),2));returnr;}//最速下降法求最优解voidmain(){doubleh=3,x0=3,x1,y0=6,y1,s,r0,r1;doublee0=0.000001,e1=0.000001;intk=0;s=sqrt(pow(2*x0-2,2)+pow(10*y0-50,2));printf(%dx1=%fx2=%fs=%f\n,k,x0,y0,s);while(se1){x1=x0;y1=y0;r0=f1(x0,y0);h=3;//一维搜索,成功失败法while(fabs(h)e0){r1=f1((x1-h*2*(x1-1)),(y1-h*10*(y1-5)));if(r1r0){x0=x1-h*2*(x1-1);y0=y1-h*10*(y1-5);r0=r1;h=h+h;}elseif(fabs(h)e0)h=(-1)*h/4;}s=sqrt(pow(2*x0-2,2)+pow(10*y0-50,2));k++;printf(%dx1=%fx2=%fs=%f\n,k,x0,y0,s);}工程优化作业共11页姓名:龚尚映学号:1103121816第2页printf(x1=%fx2=%f,x0,y0);}(2)初始值设为x1=3,x2=6时,运行结果如下图1-1:图1-1(3)初始值设为x1=30000,x2=60000时,运行结果如下图1-2:工程优化作业共11页姓名:龚尚映学号:1103121816第3页图1-22.牛顿法计算:f=(x1-1)2+5(x2-5)2(1)程序代码如下:#includestdio.h#includemath.hdoublef1(doublex,doubley){return(pow(x-1,2)+5*pow(y-5,2));}//牛顿法求最优解voidmain(){doubleh=3,x0=3,x1,y0=6,y1,s,r0,r1;doublee0=0.000001,e1=0.000001;工程优化作业共11页姓名:龚尚映学号:1103121816第4页intk=0;s=sqrt(pow(2*x0-2,2)+pow(10*y0-50,2));printf(%dx=%fy=%fs=%f\n,k,x0,y0,s);while(se1){x1=x0;y1=y0;r0=f1(x0,y0);h=3;//一维搜索while(fabs(h)e0){r1=f1((x1-h*(x1-1)),(y1-h*(y1-5)));if(r1r0){x0=x1-h*(x1-1);y0=y1-h*(y1-5);r0=r1;h=h+h;}elseif(fabs(h)e0)h=(-1)*h/4;}s=sqrt(pow(2*x0-2,2)+pow(10*y0-50,2));k++;printf(%dx=%fy=%fs=%f\n,k,x0,y0,s);}printf(x=%fy=%f,x0,y0);}(2)初始值设为x1=3,x2=6时,运行结果如下图2-1:图2-1(3)初始值设为x1=30000,x2=60000时,运行结果如下图2-2:工程优化作业共11页姓名:龚尚映学号:1103121816第5页图2-23.最速下降法求:f=(x1-1)2+(x2-1)2+5(x3-5)2+5(x4-5)2(1)程序代码如下:#includestdio.h#includemath.hdoublef1(doublex,doublex1,doubley,doubley1){doubler;r=(pow(x-1,2)+pow(x1-1,2)+5*pow(y-5,2)+5*pow(y1-5,2));returnr;}//最速下降法求最优解voidmain(){//x1,x2,x3,x4分别为多项式函数中四个分量的初始值//x5,x6,x7,x8分别为对应的下一个值doubled=3,x1=3,x5,x2=4,x6,x3=8,x7,x4=6,x8,s,r0,r1;doublee0=0.000001,e1=0.000001;intk=0;s=sqrt(pow(2*x1-2,2)+pow(2*x2-2,2)+pow(10*x3-50,2)+pow(10*x4-50,2));printf(%dx1=%fx2=%fx3=%fx4=%fs=%f\n,k,x1,x2,x3,x4,s);while(se1){x5=x1;x6=x2;x7=x3;工程优化作业共11页姓名:龚尚映学号:1103121816第6页x8=x4;r0=f1(x1,x2,x3,x4);d=3;//一维搜索while(fabs(d)e0){r1=f1((x5-d*2*(x5-1)),(x6-d*2*(x6-1)),(x7-d*10*(x7-5)),(x8-d*10*(x8-5)));if(r1r0){x1=x5-d*2*(x5-1);x2=x6-d*2*(x6-1);x3=x7-d*10*(x7-5);x4=x8-d*10*(x8-5);r0=r1;d=d+d;}elseif(fabs(d)e0)d=(-1)*d/4;}s=sqrt(pow(2*x1-2,2)+pow(2*x2-2,2)+pow(10*x3-50,2)+pow(10*x4-50,2));k++;printf(%dx1=%fx2=%fx3=%fx4=%fs=%f\n,k,x1,x2,x3,x4,s);}printf(\nx1=%fx2=%fx3=%fx4=%fs=%f\n,x1,x2,x3,x4,s);}(2)初始值设为x1=3,x2=4,x3=8,x4=6时,运行结果如下图3-1:工程优化作业共11页姓名:龚尚映学号:1103121816第7页图3-1(3)初始值设为x1=30000,x2=40000,x3=80000,x4=60000时,运行结果如下图3-2:工程优化作业共11页姓名:龚尚映学号:1103121816第8页图3-24.牛顿法计算:f=(x1-1)2+(x2-1)2+5(x3-5)2+5(x4-5)2(1)程序代码如下:#includestdio.h#includemath.hdoublef1(doublex,doublex1,doubley,doubley1){doubler;r=(pow(x-1,2)+pow(x1-1,2)+5*pow(y-5,2)+5*pow(y1-5,2));returnr;}//最速下降法求最优解voidmain()工程优化作业共11页姓名:龚尚映学号:1103121816第9页{//x1,x2,x3,x4分别为多项式函数中四个分量的当前值//x5,x6,x7,x8分别为多项式函数中四个分量对应的下一个值doubled=3,x1=3,x5,x2=4,x6,x3=8,x7,x4=6,x8,s,r0,r1;doublee0=0.000001,e1=0.000001;intk=0;s=sqrt(pow(2*x1-2,2)+pow(2*x2-2,2)+pow(10*x3-50,2)+pow(10*x4-50,2));printf(%dx1=%fx2=%fx3=%fx4=%fs=%f\n,k,x1,x2,x3,x4,s);while(se1){x5=x1;x6=x2;x7=x3;x8=x4;r0=f1(x1,x2,x3,x4);d=3;//一维搜索while(fabs(d)e0){r1=f1((x5-d*(x5-1)),(x6-d*(x6-1)),(x7-d*(x7-5)),(x8-d*(x8-5)));if(r1r0){x1=x5-d*(x5-1);x2=x6-d*(x6-1);x3=x7-d*(x7-5);x4=x8-d*(x8-5);r0=r1;d=d+d;}elseif(fabs(d)e0)d=(-1)*d/4;}s=sqrt(pow(2*x1-2,2)+pow(2*x2-2,2)+pow(10*x3-50,2)+pow(10*x4-50,2));k++;printf(%dx1=%fx2=%fx3=%fx4=%fs=%f\n,k,x1,x2,x3,x4,s);}printf(\nx1=%fx2=%fx3=%fx4=%fs=%f\n,x1,x2,x3,x4,s);}(2)初始值设为x1=3,x2=4,x3=8,x4=6时,运行结果如下图4-1:工程优化作业共11页姓名:龚尚映学号:1103121816第10页图4-1(3)初始值设为x1=30000,x2=40000,x3=80000,x4=60000时,运行结果如下图4-2:图4-25.总结(1)每一种计算最优解的方法中,如果初始值不一样,那么得到最终结果所需的步骤数不一样;比较图1-1与图1-2,在图1-1中初始值为x1=3,x2=6,得到最终结果所需步骤数为23,而在图1-2中初始值为x1=30000,x2=60000,得到最终结果所需步骤数为39;同一算法中取值越偏离最优解,所需的计算步骤越多。标题2、3、4下的每前两个图都说明了这一点。(2)分别用最速下降法和牛顿法求同一多项式值,初始值都一样的情况下,牛顿法收敛速度较快;图1-2中用最速下降法计算,得到结果共计算了39步,经过一步迭代运算,x1从30000收敛到24375.187500,再经过一步收敛到15234.867188,图2-2中用牛顿法计算才用了20步,经过一步x1从30000收敛到了7500.750000,再经过一步收敛工程优化作业共11页姓名:龚尚映学号:1103121816第11页到了1875.937500。(3)从图3-2和图4-2中可以看出最速下降法和牛顿法计算最小值,前面步骤收敛较快,每经过一步,x值的变化都比较大,后面步骤收敛慢,每经过一步,x值的变化比较小。