机械优化设计作业 1
用二次插值法求函数 221 ttt极小值,精度e=0
在 MATLAB 的 M 文件编辑器中编写的 M 文件,如下: f=inline('(t+1)*(t-2)^2','t') a=0;b=3;epsilon=0
01; t1=a;f1=f(t1); t3=b;f3=f(t3); t2=0
5*(t1+t3);f2=f(t2); c1=(f3-f1)/(t3-t1); c2=((f2-f1)/(t2-t1)-c1)/(t2-t3); t4=0
5*(t1+t3-c1/c2);f4=f(t4); k=0; w hile(abs(t4-t2)>=epsilon) if t2f4 f1=f2;t1=t2; t2=t4;f2=f4; else f3=f4;t3=t4; end else if f2>f4 f3=f2;t3=t2; t2=t4;f2=f4; else f1=f4;t2=t4; end end c1=(f3-f1)/(t3-t1); c2=((f2-f1)/(t2-t1)-c1)/(t2-t3); t4=0
5*(t1+t3-c1/c2);f4=f(t4); k=k+1; end %输出最优解 if f2>f4 t=t4;f=f(t4); else t=t2;f=f(t2); end fprintf(1,'迭代计算 k=%3
0f\n',k) fprintf(1,'极小点坐标 t=%3
0f\n',t) fprintf(1,'函数值f=%3
4f\n',f) 运行结果如下: 迭代计算k= 7 极小点坐标t= 2 函数值f=0
0001 2
用黄金分割法求函数 32321ttt的极小值,精度e=0