资源描述:
《MATLB机械优化设计程序XXXX.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、例2-1求在点和点的梯度。%例2-1梯度的计算symsx1x2%定义符号变量f=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点的梯度单位向量gfk2=subs
2、(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把函数在点展开泰勒二次近似式%例2-2Taylor展开symsx1x2f=4+4.5*x1-4*x2+
3、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('函数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的二阶偏导数,
4、构成Hessian矩阵disp('函数f的二阶偏导数表达式:')pretty(simplify(dx1));H=[dx1x1dx1x2;dx2x1dx2x2];pretty(simplify(H));%计算xk点的值x1=2.0;x2=2.5;disp('函数在xk点的函数值:')fk=subs(f)disp('函数在xk点的一节偏导数矩阵:')dk=subs([dx1dx2])disp('函数xk点的海色矩阵:')HK=subs([dx1x1dx1x2;dx2x1dx2x2])disp('函数在xk点的二阶Taylor展开式:')symsx1x
5、2fkTL=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*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+
6、12x1-4x2-2-4x1][][-2-4x14]函数在xk点的函数值:fk=5.5000函数在xk点的一节偏导数矩阵:dk=15.5000-6.0000函数xk点的海色矩阵:HK=40-10-104函数在xk点的二阶Taylor展开式:2232-79/2x1+4x2+20x1-10x1x2+2x2例2-3求函数的极值点和极值%例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);%
7、计算函数的1阶偏导数dsx1=diff(f,x1);dsx2=diff(f,x2);dsx3=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,
8、x3);dsx3x1=diff(dsx3,x1);dsx3x2=diff(dsx3,x2);dsx3x3=diff(f,x3,2);%根