机械优化设计作业1
用二次插值法求函数微小值,精度 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;while(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);endfprintf(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
用黄金分割法求函数的微小值,精度 e=0
在 MATLAB 的 M 文件编辑器中编写的 M 文件,如下:f=inline('t^(2/3)-(