MATLB机械优化设计程序XXXX.docx
《MATLB机械优化设计程序XXXX.docx》由会员分享,可在线阅读,更多相关《MATLB机械优化设计程序XXXX.docx(32页珍藏版)》请在三一办公上搜索。
1、例2-1求 在点和点的梯度。%例2-1梯度的计算syms x1 x2 %定义符号变量f=x12+x22-4*x1+4; %定义二维目标函数gradf=jacobian(f) %计算函数梯度Xzuobiao1=3,2;Xzuobiao2=2,0; %定义Xzuobiao点坐标gfk1=subs(subs(gradf,Xzuobiao1(1),Xzuobiao1(2) %计算Xzuobiao1点的梯度值gmk1=norm(gfk1) %计算Xzuobiao1点的梯度模igk1=gfk1/gmk1 %计算Xzuobiao1点的梯度单位向量gfk2=subs(subs(gradf,Xzuobiao2(
2、1),Xzuobiao2(2) %计算Xzuobiao1点的梯度值gmk2=norm(gfk2) %计算Xzuobiao1点的梯度模igk2=gfk2/gmk2 %计算Xzuobiao1点的梯度单位向量gradf = 2*x1-4, 2*x2gfk1 = 2 4gmk1 = 4.4721igk1 = 0.4472 0.8944gfk2 = 0 0gmk2 = 0Warning: Divide by zero.igk2 = NaN NaN例2-2把函数在点展开泰勒二次近似式%例2-2 Taylor展开 syms x1 x2f=4+4.5*x1-4*x2+x12+2*x22-2*x1*x2+x14
3、-2*x12*x2disp(函数f的表达式:)pretty(simplify(f);%计算函数的一阶偏导数dx1=diff(f,x1);dx2=diff(f,x2);disp(函数f的一阶偏导数表达式:)pretty(simplify(dx1);pretty(simplify(dx2);%计算函数的二阶偏导数dx1x1=diff(f,x1,2);dx1x2=diff(dx1,x2);dx2x1=diff(dx2,x1);dx2x2=diff(f,x2,2);%根据函数f的二阶偏导数,构成Hessian矩阵disp(函数f的二阶偏导数表达式:)pretty(simplify(dx1);H=dx1
4、x1 dx1x2;dx2x1 dx2x2;pretty(simplify(H);%计算xk点的值x1=2.0; x2=2.5;disp(函数在xk点的函数值:)fk=subs(f)disp(函数在xk点的一节偏导数矩阵:)dk=subs(dx1 dx2)disp(函数xk点的海色矩阵:)HK=subs(dx1x1 dx1x2;dx2x1 dx2x2)disp(函数在xk点的二阶Taylor展开式:)syms x1 x2fkTL=fk+dk*x1-2.0;x2-2.5+0.5*x1-2.0,x2-2.5*HK*x1-2.0;x2-2.5;pretty(simplify(fkTL);f =4+9/
5、2*x1-4*x2+x12+2*x22-2*x1*x2+x14-2*x12*x2 函数f的表达式: 2 2 4 2 4 + 9/2 x1 - 4 x2 + x1 + 2 x2 - 2 x1 x2 + x1 - 2 x1 x2函数f的一阶偏导数表达式: 3 9/2 + 2 x1 - 2 x2 + 4 x1 - 4 x1 x2 2 -4 + 4 x2 - 2 x1 - 2 x1函数f的二阶偏导数表达式: 3 9/2 + 2 x1 - 2 x2 + 4 x1 - 4 x1 x2 2 2 + 12 x1 - 4 x2 -2 - 4 x1 -2 - 4 x1 4 函数在xk点的函数值:fk = 5.50
6、00函数在xk点的一节偏导数矩阵:dk = 15.5000 -6.0000函数xk点的海色矩阵:HK = 40 -10 -10 4函数在xk点的二阶Taylor展开式: 2 2 32 - 79/2 x1 + 4 x2 + 20 x1 - 10 x1 x2 + 2 x2例2-3求函数的极值点和极值%例2-3 求函数的极值syms x1 x2 x3f=2*x12+5*x22+x32+2*x2*x3+2*x1*x3-6*x2+3;disp(函数f的表达式:)pretty(simplify(f);latex(f);%计算函数的1阶偏导数dsx1=diff(f,x1);dsx2=diff(f,x2);d
7、sx3=diff(f,x3);disp(函数f的1阶偏导数:)pretty(simplify(dsx1);pretty(simplify(dsx2);pretty(simplify(dsx3);%计算函数的2阶偏导数dsx1x1=diff(f,x1,2);dsx1x2=diff(dsx1,x2);dsx1x3=diff(dsx1,x3);dsx2x1=diff(dsx2,x1);dsx2x2=diff(f,x2,2);dsx2x3=diff(dsx2,x3);dsx3x1=diff(dsx3,x1);dsx3x2=diff(dsx3,x2);dsx3x3=diff(f,x3,2);%根据函数f
8、的2阶偏导数,构成海色矩阵disp(函数f的2阶偏导数矩阵)H=dsx1x1 dsx1x2 dsx1x3;dsx2x1 dsx2x2 dsx2x3;dsx3x1 dsx3x2 dsx3x3%计算海色矩阵的正定性D,p=chol(subs(H);if p=0;disp(海色矩阵为正定,函数f有极小点:);end%计算极值存在的必要条件,求极值点坐标x1,x2,x3=solve(dsx1,dsx2,dsx3,x1,x2,x3);disp(极值点坐标:)fprintf(1,x1=%3.4fn,subs(x1);fprintf(1,x2=%3.4fn,subs(x2);fprintf(1,x3=%3.
9、4fn,subs(x3);disp(在极值点,函数f数值:)fmb=subs(f)M文件的运行结果如下函数f的表达式: 2 2 2 2 x1 + 5 x2 + x3 + 2 x2 x3 + 2 x1 x3 - 6 x2 + 3函数f的1阶偏导数: 4 x1 + 2 x3 10 x2 + 2 x3 - 6 2 x3 + 2 x2 + 2 x1函数f的2阶偏导数矩阵 H = 4, 0, 2 0, 10, 2 2, 2, 2海色矩阵为正定,函数f有极小点:极值点坐标:x1=1.0000x2=1.0000x3=-2.0000在极值点,函数f数值: fmb = 0例2-5 已知二维约束问题受约束为 例2
10、-5 MATLAB实现,用M文件判别函数的凸性:%例2-5判别函数的凸性syms x1 x2f=60-10*x1-4*x2+x12+x22-x1*x2;disp(函数f的表达式:)pretty(simplify(f);dsx1=diff(f,x1);dsx2=diff(f,x2);disp(函数f的1阶偏导数:)pretty(simplify(dsx1);pretty(simplify(dsx2);%计算函数的2阶偏导数dsx1x1=diff(f,x1,2);dsx1x2=diff(dsx1,x2);dsx2x1=diff(dsx2,x1);dsx2x2=diff(f,x2,2);%根据函数f
11、的2阶偏导数,构成海色矩阵disp(函数f的2阶偏导数矩阵)H=dsx1x1 dsx1x2;dsx2x1 dsx2x2%计算函数矩阵的正定性d,p=chol(subs(H);if p=0;disp(海色矩阵为正定,函数f为凸函数);endM文件的运行结果如下函数f的表达式: 2 2 60 - 10 x1 - 4 x2 + x1 + x2 - x1 x2函数f的1阶偏导数: -10 + 2 x1 - x2 -4 + 2 x2 - x1函数f的2阶偏导数矩阵H = 2, -1 -1, 2海色矩阵为正定,函数f为凸函数%例2-6K-T条件syms x1 x2 v %定义目标函数和约束函数的符号变量%
12、目标函数和约束函数f=(x1-3)2+x22; %目标函数f的表达式g1=x12+x2-4;g2=-x2;g3=-x1;v=x1,x2;%计算xk点的约束函数值x1=2;x2=0; %xk点的坐标值disp(xk点约束函数数值:)g=subs(g1 g2 g3)disp(根据g1=0和g2=0,判断g1和g2为起作用约束:)%计算xk的梯度%目标函数的梯度gradf=jacobian(f); %计算目标函数的梯度disp(目标函数的梯度)disp(gradf) %显示目标函数的梯度gradfk=subs(subs(gradf,x1),x2)%显示目标函数xk点的梯度值%约束函数g1gradg1
13、=jacobian(g1);disp(约束函数g1的梯度:)disp(gradg1)gradg1k=subs(subs(gradg1,x1),x2)%约束函数g2gradg2=jacobian(g2,v)disp(约束函数g2的梯度:)disp(gradg2)gradg2k=subs(subs(gradg2,x1),x2)%根据kt条件建立线性方程组A=gradg1k(1),gradg2k(1);gradg1k(2),gradg2k(2)%建立k-T条件线性方程组的系数矩阵b=-gradfk(1);-gradfk(2) %建立K-T条件线性方程组的常数向量lamda=Ab; %解线性方程组,求
14、拉格朗日乘子disp(拉格朗日乘子:)disp(lamda)if lamda=0 disp(xk点是约束极小点)else disp(xk点不是约束极小点)enddisp(目标函数最小值minf(xk)minf=subs(f) %显示目标函数的最小值M文件的运行结果如下xk点约束函数数值:g = 0 0 -2根据g1=0和g2=0,判断g1和g2为起作用约束:目标函数的梯度 2*x1-6, 2*x2 gradfk = -2 0 约束函数g1的梯度 2*x1, 1gradg1k = 4 1gradg2 = 0, -1 约束函数g2的梯度 0, -1gradg2k = 0 -1A = 4 0 1 -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLB 机械 优化 设计 程序 XXXX
链接地址:https://www.31ppt.com/p-2036911.html