机械优化设计王荣老师Word格式文档下载.docx
- 文档编号:16704985
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:37
- 大小:405.84KB
机械优化设计王荣老师Word格式文档下载.docx
《机械优化设计王荣老师Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《机械优化设计王荣老师Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
C=A+0.312*(B-A);
D=A+0.618*(B-A);
ifC<
D
ifF(C)<
F(D)
B=D;
else
A=C;
end
else
F(D)
else
end
end
n=n+1;
t=A;
minF=F(A);
FGOLDEN.m具体程序如下:
function[x1,x2]=JINTUI(a0,h)
a=a0;
b=a0+h;
while1
ifF(a)<
F(b)
h=-h;
a=a+h;
b=a-h;
ifF(b)<
F(b-h)&
F(b)<
F(a)
break;
a=b;
b=a+h;
F(b)&
F(a)<
F(a-h)
x1=a;
x2=b;
1.6输出结果:
2.1题目:
2.2最优解:
2.3采用的算法及其算法的基本思想:
2.4程序框图:
2.5具体程序如下:
F12.m;
JINTUI12.m;
FGOLDEN12.m
F12.m具体程序:
%定义f(x)函数的表达式f(x)=t^4-5*t^3+4*t^2-6*t+60
functiony12=F12(t)
y12=t^4-5*(t^3)+4*(t^2)-6*t+60;
JINTUI12.m具体程序如下:
%用进退法找到合适的初始区间
function[x1,x2]=JINTUI12(a0,h)
ifF12(a)<
F12(b)
ifF12(b)<
F12(b-h)&
F12(b)<
F12(a)
F12(b)&
F12(a)<
F12(a-h)
FGOLDEN12具体程序如下:
%定义黄金分割法函数模块
function[t,minF12]=FGOLDEN12(precision,a0,h)
%初始区间[a,b],精度precision,为区间的多少分之一
%a0为初始区间,h为步长
[a,b]=JINTUI12(a0,h);
%以上黄金分割法赋值
ifF12(C)<
F12(D)
%判断1,取区间AD,将D点值赋给B或是取区间CB
F12(D)
%判断2
%循环加1
minF12=F12(A);
2.6计算运行结果如下:
3.1题目:
3.2最优解:
3.3采用的算法及其算法的基本思想:
3.4程序框图:
进退法和黄金分割法流程图如下:
图3.1进退法流程图
图3.2黄金分割法程序框图
3.5具体程序如下:
F13.m;
JINTUI13.m;
FGOLDEN13.m
F13.m:
%定义f(x)函数的表达式f(x)=(t+1)(t-2)^2
functiony13=F13(t)
y13=t^3-3*t^2+4;
JINTUI13.m:
function[x1,x2]=JINTUI13(a0,h)
ifF13(a)<
F13(b)
ifF13(b)<
F13(b-h)&
F13(b)<
F13(a)
F13(b)&
F13(a)<
F13(a-h)
function[t,minF13]=FGOLDEN13(precision,a0,h)
[a,b]=JINTUI13(a0,h);
%以上黄金分割法赋值
ifC<
ifF13(C)<
F13(D)
%判断1,取区间AD,将D点值赋给B或是取区间CB
F13(D)
minF13=F13
(2);
3.6计算运行结果如下:
二无约束优化问题
将f(x)在x(k)点作泰勒展开,取二次函数式Φ(x)作为近似函数,以Φ(x)的极小值点作为f(x)的近似极小值点。
求二次函数的极值
1.4程序框图:
牛顿法程图如下:
1.6程序:
共一个main21.m文件:
main21.m具体程序如下:
clc;
clearall;
symsx1x2tpmaxnprecision;
%定义变量
f21=4*x1^2+x2^2-40*x1-12*x2+136;
%定义函数
fx1=diff(f21,x1);
%对f求x1偏导求的一阶导数;
diff(函数,n),求的n阶导数(n是具体整数);
%diff(函数,变量名),求对的偏导数;
diff(函数,变量名,n)
fx2=diff(f21,x2);
%对f求x2偏导
p=0;
g=1;
disp('
用梯度法求二元二次目标函数f(X)=4*x1^2+x2^2-40*x1-12*x2+136的最优解'
);
fori=1:
5%fori=1:
5
if(p==0)%if(p==0)
x1=input('
Pleaseentertheinitialstartingpointx1:
'
x2=input('
Pleaseentertheinitialstartingpointx2:
maxn=input('
Pleaseenterthemaxmumnumberofinterationsmaxn:
precision=input('
Pleaseentertheminimumofthesearchingdirectionprecision:
g=input('
Outputtheresultofeachinteration,ifyouwantEnter1,ornot:
fora=1:
maxn%fora=1:
2:
8,则每次取值为1,3,5,7.其中2是步长
%但步长为1时可省略即原式为forn=1:
1:
100
f0=subs(f21);
%subs(函数名)将函数里的变量用已知量代换对f中的变量带入已知量
f1=subs(fx1);
%subs(函数名)将函数里的变量用已知量代换对fx1中的变量带入已知量
f2=subs(fx2);
%subs(函数名)将函数里的变量用已知量代换对fx2中的变量带入已知量
if(double(sqrt(f1^2+f2^2))<
=precision)%计算梯度模值进行比较
%以下为输出函数
*************************************************************************'
Theresult:
Thetotalnumberofinterationsa:
Thevalueofextremumx1:
vpa(x1,5)%vpa函数来实现数值精确到小数点后某一位vpa会根据精度要求去掉末尾的数位%或者补0vpa(x1,7)
%vpa的结果是符号数值,可以用于初等运算,不可用于关系运算以小数形式表示
Thevalueofextremumx2:
vpa(x2,5)
Thefunctionofextremumvalue:
vpa(f0)
p=1;
break;
else
FF=F21(x1-t*f1,x2-t*f2);
%最优解为t
FFt=diff(FF,t);
tt=solve(FFt,'
t'
%solve命令主要是用来求解代数方程(即多项式)的解即求解满足此中默认FFt=0;
x1=x1-tt*f1;
x2=x2-tt*f2;
if(g==1)
Thenumberofinterationsa:
Thevalueofx1:
x1=vpa(x1,5)%vpa函数来实现数值精确到小数点后某一位vpa会根据精度要求去掉末尾的数位或者补0vpa(x1,5)
%vpa的结果是符号数值,可以用于初等运算,不可用于关系运算以小数形式表示
Thevalueofx2:
x2=vpa(x2,5);
Thevalueoffunctionf0:
f0=vpa(f0,5)
end
end%对if进行结束
end%对for进行结束
if(p==0)
PLEASETRYAGAIN'
end%if(p==0)
end%if(p==0)头一个
end%fori=1:
1.7计算输出结果:
(牛顿法程图如下)
2.5具体程序:
Main22具体程序如下:
%用牛顿法求目标函数f(x)=(x1^2+x2-11)^2+(x1+x2^2-7)^2的最优解
symsx1x2precision;
f=(x1^2+x2-11)^2+(x1+x2^2-7)^2;
v=[x1x2];
df=jacobian(f,v);
df=df.'
;
H=jacobian(df,v);
**********************************************************'
用牛顿法求目标函数f(x)=(x1^2+x2-11)^2+(x1+x2^2-7)^2的最优解'
请输入初始位置点以及精度要求'
fprintf('
\n'
选取的初始点坐标点x1:
选取的初始点坐标点x2:
计算所要求迭代精度为:
x0=[x1,x2]'
g0=subs(df,v,x0);
H0=subs(H,v,x0);
H0=inv(H0);
k=0;
s=-H0*g0;
while(subs(sqrt(s(1,1)^2+s(2,1)^2))>
precision)
s=-H0*g0;
x0=x0+s;
g0=subs(df,v,x0);
H0=subs(H,v,x0);
H0=inv(H0);
k=k+1;
----------------------------------'
计算结果如下:
迭代的总次数:
\nk=%d\n'
k);
最优点坐标:
\nx1=%3.4f\n'
x0
(1));
\nx2=%3.4f\n'
x0
(2))
f=subs(f,v,x0);
函数的极值:
\nf=%3.4f\n'
f);
*************************************************'
2.6计算和输出结果:
3.5程序:
共一个M文件:
main23.m:
%用牛顿法求目标函数f(x)=(x1^2+10*x2)^2+5*(x3-x4^2)^2+(x2-2*x3)^2+10*(x1-x4)^4最优解
symsx1x2x3x4precision;
f=(x1^2+10*x2)^2+5*(x3-x4^2)^2+(x2-2*x3)^2+10*(x1-x4)^4;
%目标函数
v=[x1x2x3x4];
%变量向量
%梯度
%非共轭转置
%海森矩阵
************************************************************************'
用牛顿法求目标函数f(x)=(x1^2+10*x2)^2+5*(x3-x4^2)^2+(x2-2*x3)^2+10*(x1-x4)^4的最优解'
***********************************************************************'
x3=input('
选取的初始点坐标点x3:
x4=input('
选取的初始点坐标点x4:
计算所要求迭代精度要求:
x0=[x1,x2,x3,x4]'
%海森矩阵的逆
while(subs(sqrt(s(1,1)^2+s(2,1)^2)+s(3,1)^2+s(4,1)^2)>
%求梯度的值
%求海森矩阵的值
x0
(2));
\nx3=%3.4f\n'
x0(3));
\nx4=%3.4f\n'
x0(4));
3.6计算结果如下:
三约束优化问题
采用的为外点法来进行计算。
其基本思想:
外点法是从可行域的外部构造一个点序列去逼近原约束问题的最优解。
构造函数进行计算。
1.5程序:
共2个M文件,分别为:
main31.m和fdd31.m.
main31.m具体如下:
%用外点法求多维有约束目标函数f(x)=(x1-2)^2+(x2-1)^2极值
M=1;
c=10;
symsx1x2precision1precision2a1a2;
f=(x1-2)^2+(x2-1)^2;
g1=-x1^2-x2;
g2=x1+x2-2;
****************************************************'
用外点法求多维有约束目标函数f(x)=(x1-2)^2+(x2-1)^2极值'
a1=input('
选取的初始点坐标点a1:
a2=input('
选取的初始点坐标点a2:
precision1=input('
计算所要求迭代精度要求precision1:
precision2=input('
计算所要求迭代精度要求precision2:
X0=[a1,a2]'
while(k<
100)
q=f+M*((g1)^2+(g2)^2);
X1=fdd31(q,x1,x2,X0);
norm=subs(sqrt((X1
(1)-X0
(1))^2+(X1
(2)-X0
(2))^2));
ff0=subs(subs(q,v,X0));
ff1=subs(subs(q,v,X1));
if(norm<
=precision1)&
(abs((ff0-ff1)/ff0)<
=precision2)
X0=X1;
M=c*M;
------------------------------------------'
X0
(1));
X0
(2));
f=subs(f,v,X0);
********************************************************************'
fdd31.m具体如下:
functionsc=fdd31(f,x1,x2,X0)
symsv;
v=[x1,x2];
G=jacobian(df,v);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机械 优化 设计 老师