您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 用Matlab软件求多元函数的偏导数和极值
数学实验五用Matlab软件求多元函数的偏导数和极值一、多元函数的偏导数1.调用格式一:diff('多元函数','自变量',n)其中,n为所求偏导数的阶数.例1已知yxz2cos2=,求xz∂∂、xyz∂∂∂2和22yz∂∂.解打开M文件编辑窗口,在其中输入下面命令集:pzpx=diff('x^2*cos(2*y)','x')p2zpypx=diff(pzpx,'y')p2zpy2=diff('x^2*cos(2*y)','y',2)取名为exa9保存,再在命令窗口中输入命令exa9,程序运行结果如下:pzpx=2*x*cos(2*y)p2zpypx=-4*x*sin(2*y)p2zpy2=-4*x^2*cos(2*y)即yxxz2cos2=∂∂,yxxyz2sin42-=∂∂∂,yxyz2cos4222-=∂∂.2.调用格式二:symsxyz…diff(f,自变量,n)例2已知)5sin(32zyxu+-=,求xu∂∂、xyzu∂∂∂∂3和33zu∂∂.解在命令行中依次输入:symsxyzu=sin(x^2-y^3+5*z);ux=diff(u,x);uxy=diff(ux,y);uxyz=diff(uxy,z);uz3=diff(u,z,3);ux,uxyz,uz3运行结果如下:ux=2*cos(x^2-y^3+5*z)*xuxyz=30*cos(x^2-y^3+5*z)*y^2*xuz3=-125*cos(x^2-y^3+5*z)即)5cos(232zyxxxu+-=∂∂,)5cos(303223zyxxyxyzu+-=∂∂∂∂,)5cos(1253233zyxzu+--=∂∂.二、隐函数的导数在Matlab中没有直接求隐函数导数的命令,但可调用Maple中求隐函数导数的命令,调用格式如下:maple('implicitdiff(f(u,x,y,z,…,)=0,u,x)')例3求由多元方程xyzzyx=++222所确定的隐函数dxz∂.解在命令行中输入:pzpx=maple('implicitdiff(x^2+y^2+z^2-x*y*z=0,z,x)')运行结果是:pzpx=(2*x-y*z)/(-2*z+x*y)即zxyyzxxz22--=∂∂.三、多元函数的极(或最)值在Matlab中同样有求多元函数的极(或最)小值的函数,但由于多元函数的形式比较复杂,不同情况用到不同的Matlab函数.若要求多元函数u在某一区域的极(或最)大值,可转化为求u-在该区域内的极(或最)小值.1.非线性无约束情形求极(或最)小值点或极(或最)小值的调用格式是:[x,fval]=fminsearch(‘f’,x0)f是被最小化的目标函数名,x0是求解的初始值向量.例4求二元函数2331042),(yxyxyxyxf+-+=的最值点和最值.解打开M文件编辑窗口,在其中输入下面命令集:%必须对自变量进行转化x=x(1),y=x(2)[Xmin,fmin]=fminsearch('2*x(1)^3+4*x(1)*x(2)^3-10*x(1)*x(2)+x(2)^2',[0,0]);[Xmax,Fmin]=fminsearch('-2*x(1)^3-4*x(1)*x(2)^3+10*x(1)*x(2)-x(2)^2',[0,0]);fmax=-Fmin;Xmin,fminXmax,fmax取名为exa10保存,再在命令窗口中输入命令exa10,程序运行结果如下:Xmin=1.00160.8335fmin=-3.3241Xmax=-1.00001.0000fmax=5.00002.非线性有约束情形非线性有约束优化问题的数学模型如下:式中,x,b,beq,lb和ub是向量,A和Aeq是矩阵,c(x)和ceq(x)为函数,返回标量.f(x),c(x)和ceq(x)可以是非线性函数.求极(或最)小值点或极(或最)小值的调用格式如下:[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,lb,ub,nonlcon)nonlcon参数计算非线性不等式约束c(x)=0和非线性等式约束ceq(x)=0.例5求表面积为6m2的体积最大的长方体体积.解设长方体的长、宽、高分别为x1、x2、x3,则f(x)=-x(1)*x(2)*x(3),S.tx(1)*x(2)+x(2)*x(3)+x(3)*x(1)-3=0,x(i)0,i=1,2,3.⑴建立函数文件fun1打开M文件编辑窗口,在其中输入下面命令集:functionF=fun1(x)%函数文件必须是function开头F=-x(1)*x(2)*x(3);单击“保存”按钮,自动取名为fun1,再击保存.⑵建立非线性约束函数文件yceqfunction[c,ceq]=yceq(x)c=x(1)*x(2)+x(2)*x(3)+x(3)*x(1)-3;ceq=[];保存方法同上,自动取名为yceq,再击保存.⑶编制主程序:打开M文件编辑窗口,在其中输入下面命令集:x0=[3;3;3];%给长宽高一个初值A=[];b=[];Aeq=[];beq=[];lb=[0,0,0];ub=[];[xmax,fmin]=fmincon('fun1',x0,A,b,Aeq,beq,lb,ub,'yceq');%函数要加单引号Vmax=-fmin;xmax,Vmax取名为exa11保存,再在命令窗口中输入命令exa11,程序运行结果如下:xmax=1.00001.00001.0000Vmax=ubxlbbeqxAeqbxAxceqxcxfMin≤≤≤⋅≤⋅=≤0)(0)()(1.0000四、上机实验1.用help命令查看函数diff,fminsearch和fmincon等的用法.2.上机验证上面各例.3.作相关小节练习中多元函数的偏导数,极(或最)值.
本文标题:用Matlab软件求多元函数的偏导数和极值
链接地址:https://www.777doc.com/doc-2272106 .html