资源描述:
《MATLB机械优化设计程序XXXX.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MATLB机械优化设计程序XXXX%例2-1梯度的运算symsx1x2f=x1^2+x2^2-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点的梯度
2、单位向量gfk2=subs(subs(gradf,Xzuobiao2(1)),Xzuobiao2(2))%运算Xzuobiao1点的梯度值gmk2=norm(gfk2)%运算Xzuobiao1点的梯度模igk2=gfk2/gmk2%运算Xzuobiao1点的梯度单位向量gradf=[2*x1-4,2*x2]gfk1=24gmk1=4.4721igk1=0.44720.8944gfk2=00gmk2=0Warning:Dividebyzero.igk2=NaNNaN例2-2把函数f(X)44.5x14x2x122x222x1x2x1
3、42x12x2在点X(k)[2.0,2.5]T展开泰勒二次近似式1131x12.012.0,x22.54010x12.0(x1,x2),62.5x1104x22.522x223272/2x14x220x122x2210x1x2%例2-2Taylor展开symsx1x2f=4+4.5*x1-4*x2+x1^2+2*x2^2-2*x1*x2+x1^4-2*x1^2*x2disp('函数f的表达式:')pretty(simplify(f));%运算函数的一阶偏导数dx1=diff(f,x1);dx2=diff(f,x2);disp('函
4、数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=[dx1x1dx1x2;dx2x1dx2x2];pretty(simplify(H));%运算xk点的值x1
5、=2.0;x2=2.5;disp('函数在xk点的函数值:')fk=subs(f)disp('函数在xk点的一节偏导数矩阵:')dk=subs([dx1dx2])disp('函数xk点的海色矩阵:')HK=subs([dx1x1dx1x2;dx2x1dx2x2])disp('函数在xk点的二阶Taylor展开式:')symsx1x2fkTL=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/2*x1-4
6、*x2+x1^2+2*x2^2-2*x1*x2+x1^4-2*x1^2*x2函数f的表达式:22424+9/2x1-4x2+x1+2x2-2x1x2+x1-2x1x2函数f的一阶偏导数表达式:39/2+2x1-2x2+4x1-4x1x22-4+4x2-2x1-2x1函数f的二阶偏导数表达式:39/2+2x1-2x2+4x1-4x1x2[2][2+12x1-4x2-2-4x1][][-2-4x14]函数在xk点的函数值:fk=5.5000函数在xk点的一节偏导数矩阵:dk=15.5000-6.0000函数xk点的海色矩阵:HK=40
7、-10-104函数在xk点的二阶Taylor展开式:2232-79/2x1+4x2+20x1-10x1x2+2x2例2-3求函数f(X)2x125x22x322x2x32x3x16x23的极值点和极值%例2-3求函数的极值symsx1x2x3f=2*x1^2+5*x2^2+x3^2+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);dsx3=diff(f,x3)
8、;disp('函数f的1阶偏导数:')pretty(simplify(dsx1));pretty(simplify(dsx2));pretty(simplify(dsx3));%运算函数的2阶偏导数dsx1x1=diff(f,x1,2);dsx1x