MATLAB多元函数极值
多元函数的极值
【实验目的】
1. 多元函数偏导数的求法。 2. 多元函数自由极值的求法 3. 多元函数条件极值的求法.
4. 学习掌握MATLAB 软件有关的命令。
【实验内容】
求函数3282
4
-+-=y xy x z 的极值点和极值
【实验准备】
1.计算多元函数的自由极值
对于多元函数的自由极值问题,根据多元函数极值的必要和充分条件,可分为以下几个步骤:
步骤1.定义多元函数),(y x f z =
步骤2.求解正规方程0),(,0),(==y x f y x f y x ,得到驻点
步骤3.对于每一个驻点),(00y x ,求出二阶偏导数,,,2222
2y
z
C y x z B x z A ??=???=??= 步骤4. 对于每一个驻点),(00y x ,计算判别式2
B A
C -,如果02
>-B AC ,则该驻点是极值点,当0>A 为极小值, 0 <-B AC ,则该驻点不是极值点. 2.计算二元函数在区域D 内的最大值和最小值 设函数),(y x f z =在有界区域D 上连续,则),(y x f 在D 上必定有最大值和最小值。求),(y x f 在D 上的最大值和最小值的一般步骤为: 步骤1. 计算),(y x f 在D 内所有驻点处的函数值; 步骤2. 计算),(y x f 在D 的各个边界线上的最大值和最小值; 步骤3. 将上述各函数值进行比较,最终确定出在D 内的最大值和最小值。 3.函数求偏导数的MATLAB 命令 MATLAB 中主要用diff 求函数的偏导数,用jacobian 求Jacobian 矩阵。 可以用help diff, help jacobian 查阅有关这些命令的详细信息 【实验方法与步骤】 练习1 求函数3282 4 -+-=y xy x z 的极值点和极值.首先用diff 命令求z 关于x,y 的偏导数 >>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 结果为 ans =4*x^3-8*y ans =-8*x+4*y 即 .48,843y x y z y x x z +-=??-=??再求解正规方程,求得各驻点的坐标。一般方程组的符号解用solve 命令,当方程组不存在符号解时,solve 将给出数值解。求解正规方程的MATLAB 代码为: >>clear; >>[x,y]=solve('4*x^3-8*y=0','-8*x+4*y=0','x','y') 结果有三个驻点,分别是P(-2,-4),Q(0,0),R(2,4).下面再求判别式中的二阶偏导数: >>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>A=diff(z,x,2) >>B=diff(diff(z,x),y) >>C=diff(z,y,2) 结果为 A=2*x^2 B =-8 C =4 由判别法可知)2,4(--P 和)2,4(Q 都是函数的极小值点,而点Q(0,0)不是极值点,实际上, )2,4(--P 和)2,4(Q 是函数的最小值点。当然,我们可以通过画函数图形来观测极值点与鞍 点。 >>clear; >>x=-5:0.2:5; y=-5:0.2:5; >>[X,Y]=meshgrid(x,y); >>Z=X.^4-8*X.*Y+2*Y.^2-3; >>mesh(X,Y,Z) >>xlabel('x'),ylabel('y'),zlabel('z') 结果如图6.1 图6.1 函数曲面图 可在图6.2种不容易观测极值点与鞍点,这是因为z的取值范围为[-500,100],是一幅远景图,局部信息丢失较多,观测不到图像细节.可以通过画等值线来观测极值. >>contour(X,Y,Z, 600) >>xlabel('x'),ylabel('y') 结果如图6.2 图6.2 等值线图 由图6.2可见,随着图形灰度的逐渐变浅,函数值逐渐减小,图形中有两个明显的极小值点- P和)2,4( Q.根据提梯度与等高线之间的关系,梯度的方向是等高线的法方向,且指(- ,4 )2 Q周围没有等高线环绕,不向函数增加的方向.由此可知,极值点应该有等高线环绕,而点)0,0( 是极值点,是鞍点. 练习2 求函数xy z =在条件1=+y x 下的极值..构造Lagrange 函数 )1(),(-++=y x xy y x L λ 求Lagrange 函数的自由极值.先求L 关于λ,,y x 的一阶偏导数 >>clear; syms x y k >>l=x*y+k*(x+y-1); >>diff(l,x) >>diff(l,y) >>diff(l,k) 得 ,1,,-+=??+=??+=??y x L x y L y x L λ λλ再解正规方程 >>clear; syms x y k >>[x,y,k]=solve('y+k=0','x+k=0','x+y-1=0','x','y','k') 得,2 1 ,21,21-=== λy x 进过判断,此点为函数的极大值点,此时函数达到最大值. 练习3 抛物面2 2 y x z +=被平面1=++z y x 截成一个椭圆,求这个椭圆到原点的最长与最短距离. 这个问题实际上就是求函数 222),,(z y x z y x f ++= 在条件2 2 y x z +=及1=++z y x 下的最大值和最小值问题.构造Lagrange 函数 )1()(),,(22222-+++-++++=z y x z y x z y x z y x L μλ 求Lagrange 函数的自由极值.先求L 关于μλ,,,,z y x 的一阶偏导数 >>clear; syms x y z u v >>l=x^2+y^2+z^2+u*(x^2+y^2-z)+v*(x+y+z-1); >>diff(l,x) >>diff(l,y) >>diff(l,z) >>diff(l,u) >>diff(l,v) 得 μλμλμλ+-=??++=??++=??z z L y y y L x x x L 2,22,22 1,22-++=??-+=??z y x L z y x L μ λ 再解正规方程 >>clear; >>[x,y,z,u,v]=solve('2*x+2*x*u+v=0','2*y+2*y*u+v=0','2*z-u+v=0', 'x^2+y^2-z=0','x+y+z-1=0','x','y','z','u','v') 得 .32,2 3 1,33117,3353 =±-==±-=± -=z y x μλ 上面就是Lagrange 函数的稳定点,求所求的条件极值点必在其中取到。由于所求问题存在最大值与最小值(因为函数f 在有界闭集}1,:),,{(2 2 =++=+z y x z y x z y x ,上连续,从而存在最大值与最小值),故由 359.)32,2 3 1,231( =±-±-f 求得的两个函数值,可得椭圆到原点的最长距离为359+,最短距离为359-。 练习4 求函数7242 2 +--+=y x y x z 在上半圆0,162 2 ≥≤+y y x 上的最大值和最小值。 首先画出等高线进行观测,相应的MATLAB 程序代码为: >>clear; >>x=-4:0.1:4; y=-4:0.1:4; >>[X,Y]=meshgrid(x,y); >>Z=X.^2+Y.^2-4*X-2*Y+7; >>contour(X,Y,Z,100) >>xlabel('x'),ylabel('y') 结果如图6.3 观测图6.3可看出,在区域D 内部有唯一的驻点,大约位于)1,2(在该点处汉书趣的最小值。在圆弧与直线的交点处取得最大值,大约位于)2,4(-。下面通过计算加以验证。 求函数在区域D 内的驻点,计算相应的函数值。求z 关于x,y 的偏导数 >>clear; syms x y; >>z=x^2+y^2-4*x-2*y+7; >>diff(z,x) >>diff(z,y) 结果得 ,22,42-=??-=??y y z x x z 解正规方程 >>clear; [x,y]=solve('2*x-4=0','2*y-2=0','x','y') 得驻点为(2,1),相应的函数值为2。 求函数在直线边界44,0≤≤-=x y 上的最大值和最小值。将0=y 代入原函数,则二元函数变为一元函数 .44,742≤≤-+-=x x x z 首先观测此函数图形,相应的MATLAB 程序代码为: >>x=-4:0.01:4; y=x.^2-4*x+7; >>plot(x,y); >>xlabel('x'),ylabel('z') 结果如图6.4所示 由图6.4可看出,当4-=x 时函数取得最大值,2=x 时函数取得最小值。下面用计算验证。对函数求导 >>clear; syms x ; >>z=x^2-4*x+7; diff(z,x) 得 42-=x dx dz ,可知驻点为2=x ,而边界点为4±=x ,计算着三个点上的函数值可得当4-=x 时函数取得最大值39,2=x 时函数取得最小值3。 求函数在圆弧边界线上0,162 2 ≥≤+y y x 的最大值和最小值。此边界线可用参数方程 π≤≤==t t y t x 0,sin 4,cos 4 表示。则二元函数变为一元函数 23sin 8cos 16+--=t t z 首先观测此函数图形,相应的MATLAB 程序代码为: >>t=0:0.01*pi:pi; z=-16*cos(t)-8*sin(t)+23; >>plot(t,z); >>xlabel('t'),ylabel('z') 结果如图6.5所示 由图6.5可看出,当5.0≈t 时函数取得最小值,π=x 时函数取得最大值。下面用计算验证。对函数求导 >>clear; syms t ; >>z=-16*cos(t)-8*sin(t)+23; diff(z,t) 得 t t dt dz cos 8sin 18-=,解正规方程 >>clear; >>t=solve('16*sin(t)-8*cos(t)=0','t') >>numeric(t) %求出t 的数值 得4636,02 1 arctan ≈=t ,边界点为π,0=t ,计算着三个点上的函数值可得当4636.0=t 时 函数取得最小值0.5111,)0,4(,=-==y x t π时函数取得最小值39。 综上所述,在点(2,1)处函数取得最小值2,在点(-4,0)处函数取得最大值39。 【练习与思考】 1. 求144 4 +-+=xy y x z 的极值,并对图形进行观测。 2. 求函数()2 2 2,y x y x f +=在圆周12 2=+y x 的最大值和最小值。 3. 在球面12 22=++z y x 求出与点(3,1,-1)距离最近和最远点。 4. 求函数z y x z y x f 32),,(++=在平面1=+-z y x 与柱面12 2 =+y x 的交线上 的最大值。 5. 求函数2 2 y x z +=在三条直线1,1,1=+==y x y x 所围区域上的最大值和最小 值。 实验五 用matlab 求二元函数的极值 1.计算二元函数的极值 对于二元函数的极值问题,根据二元函数极值的必要和充分条件,可分为以下几个步骤: 步骤1.定义二元函数),(y x f z =. 步骤2.求解方程组0),(,0),(==y x f y x f y x ,得到驻点. 步骤3.对于每一个驻点),(00y x ,求出二阶偏导数 22222,,.z z z A B C x x y y ???===???? 步骤4. 对于每一个驻点),(00y x ,计算判别式2B AC -,如果02>-B AC ,则该驻点是 极值点,当0>A 为极小值, 0>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 结果为 ans =4*x^3-8*y ans =-8*x+4*y 用MATLAB求极值 灵活的运用MATLAB的计算功能,可以很容易地求得函数的极值。 例3.6.1 求 2 2 344 1 x x y x x ++ = ++ 的极值 解首先建立函数关系: s yms s y=(3*x^2+4*x+4)/( x^2+x+1); ↙然后求函数的驻点: dy=diff(y); ↙ xz=solve(dy) ↙ xz= [0] [-2] 知道函数有两个驻点x 1=0和x 2 =-2,考察函数在驻点处二阶导数的正负情况: d2y=diff(y,2); ↙ z1=limit(d2y,x,0) ↙z1= -2 z2=limit(d2y,x,-2) ↙z2= 2/9 于是知在x 1=0处二阶导数的值为z 1 =-2,小于0,函数有极大值;在x 2 =-2处二阶导数的值 为z 2 =2/9,大于0,函数有极小值。如果需要,可顺便求出极值点处的函数值: y 1 =limit(y,x,0) ↙ y 1 = 4 y 2 =limit(y,x,-2) ↙ y 2 = 8/3 事实上,如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。而借助MA TLAB的作图功能,我们很容易做到这一点。 例3.6.2画出上例中函数的图形 解syms x ↙ y=(3*x^2+4*x+4)/( x^2+x+1); ↙得到如下图形 ezplot(y) ↙ 如何用MATLAB求函数的极值点和最大值 比如说y=x^3+x^2+1,怎样用matlab来算它的极值和最大值? 求极值: syms x y >> y=x^3+x^2+1 >> diff(y) %求导 ans = 3*x^2 + 2*x >> solve(ans)%求导函数为零的点 ans = -2/3 极值有两点。 求最大值,既求-y的最小值: >> f=@(x)(-x^3-x^2-1) 实验3 Matlab 符号运算及求函数极值一、实验目的和要求 掌握用Matlab软件进行符号运算以及求函数的极值。 二、实验环境 Windows系列操作系统,Matlab软件。 三、实验内容 1.用MATLAB进行符号运算; 2.编程求函数的极值。 四、实验步骤 3.开启软件平台——Matlab,开启Matlab编辑窗口; 4.根据求解步骤编写M文件; 5.保存文件并运行; 6.观察运行结果(数值或图形); 7.根据观察到的结果和体会写出实验报告。 五、示例 1.计算一元函数的极值 例1求 2 2 344 1 x x y x x ++ = ++ 的极值 解首先建立函数关系: s yms x y=(3*x^2+4*x+4)/( x^2+x+1); 然后求函数的驻点: dy=diff(y); xz=solve(dy) xz= [0] [-2] 知道函数有两个驻点x 1=0和x 2 =-2, 接下来我们通过考察函数的图形,则它的极值情况和许多其它特性是一目了然的。而借助MATLAB的作图功能,我们很容易做到这一点。 例2 画出上例中函数的图形 解 syms x y=(3*x^2+4*x+4)/( x^2+x+1); 得到如下图形 ezplot(y) 2.计算二元函数的极值 MATLAB 中主要用diff 求函数的偏导数,用jacobian 求Jacobian 矩阵。 例1 求函数42823z x xy y =-+-的极值点和极值. 首先用diff 命令求z 关于x,y 的偏导数 >>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 结果为 ans =4*x^3-8*y ans =-8*x+4*y 即348,84z z x y x y x y ??=-=-+??再求解方程,求得各驻点的坐标。一般方程组的符号解用solve 命令,当方程组不存在符号解时,solve 将给出数值解。求解方程的MA TLAB 代码为: 实验5 matlab 自定义函数与导数应用 实验目的 1.学习matlab 自定义函数. 2.加深理解罗必塔法则、极值、最值、单调性. 实验内容 1.学习matlab 自定义函数及求函数最小值命令. 函数关系是指变量之间的对应法则,这种对应法则需要我们告诉计算机,这样,当我们输入自变量时,计算机才会给出函数值,matlab 软件包含了大量的函数,比如常用的正弦、余弦函数等.matlab 允许用户自定义函数,即允许用户将自己的新函数加到已存在的matlab 函数库中,显然这为matlab 提供了扩展的功能,无庸置疑,这也正是matlab 的精髓所在.因为matlab 的强大功能就源于这种为解决用户特殊问题的需要而创建新函数的能力.matlab 自定义函数是一个指令集合,第一行必须以单词function 作为引导词,存为具有扩展名“.m ”的文件,故称之为函数M -文件. 函数M -文件的定义格式为: function 输出参数=函数名(输入参数) 函数体 …… 函数体 一旦函数被定义,就必须将其存为M -文件,以便今后可随时调用.比如我们希望建立函数12)(2++=x x x f ,在matlab 工作区中输入命令: syms x ;y=x^2+2*x+1; 不能建立函数关系,只建立了一个变量名为y 的符号表达式,当我们调用y 时,将返回这一表达式. y ? y=x^2+2*x+1 当给出x 的值时,matlab 不能给出相应的函数值来. x=3;y ? y=x^2+2*x+1 如果我们先给x 赋值. x=3;y=x^2+2*x+1 得结果:y=16 若希望得出2|=x y 的值,输入: x=2;y ? 得结果:y=16,不是2=x 时的值.读者从这里已经领悟到在matlab 工作区中输入命令:y=x^2+2*x+1不能建立函数关系,如何建立函数关系呢?我们可以点选菜单Fill\New\M-fill 打开matlab 文本编辑器,输入: function y=f1(x) y=x^2+2*x+1; 存为f1.m .调用该函数时,输入: syms x ;y=f1(x)? 实验六多元函数的极值 【实验目的】 1.了解多元函数偏导数的求法。 2.了解多元函数极值的求法。 3.了解多元函数条件极值的求法。 4.学习、掌握MATLAB软件有关的命令。 【实验内容】 求函数42 =-+-的极值点和极值。 823 z x xy y 【实验准备】 1.计算多元函数的极值 2.计算二元函数在区域D内的最大值和最小值 3.求函数偏导数的MATLAB命令 MATLAB中主要用diff求函数的偏导数,用jacobian求Jacobian 矩阵。 diff(f,x,n)求函数f关于自变量x的n阶导数。 jacobian(f,x)求向量函数f关于自变量x(x也为向量)的jacobian 矩阵。 【实验重点】 1、多元函数的偏导数计算 2、多元函数极值的计算 【实验难点】 1、多元函数极值的计算 【实验方法与步骤】 练习1 求函数42823z x xy y =-+-的极值点和极值。首先用diff 命令求z 关于x,y 的偏导数 >>clear;syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 结果为 ans=4*x^3-8*y ans=-8*x+4*y 即348,84z z x y x y x y ??=-=-+??再求解正规方程,得各驻点的坐标。一般方程组的符号解用solve 命令,当方程组不存在符号解时,solve 将给出数值解。求解正规方程的MATLAB 代码为 >>clear; >>[x,y]=solve('4*x^3-8*y=0','-8*x+4*y=0','x','y') 结果有三个驻点,分别是P(-2,-4),Q(0,0),R(2,4)。下面再求判别式中的二阶偏导数: >>clear;syms x y; >>z=x^4-8*x*y+2*y^2-3; >>A=diff(z,x,2) >>B=diff(diff((z,x),y)) >>C=diff(z,y,2) 第七讲 Matlab 优化(求极值) 理论介绍:算法介绍、软件求解. 一.线性规划问题 1.线性规划问题是在一组线性约束条件的限制下,求一线性目标函数最大或最小值的问题,Matlab 中规定线性规划的标准形式为 min s.t.T x c x Ax b Aeq x beq lb x ub ≤?? ?=??≤≤? 其中c 和x 为n 维列向量,A 、Aeq 为适当维数的矩阵,b 、beq 为适当维数的列向量。注意:线性规划问题化为Matlab 规定中的标准形式。 求解线性规划问题的Matlab 函数形式为linprog(c,A,b),它返回向量x 的值,它的具体调用形式为: [x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,x0,OPTIONS) 这里fval 返回目标函数的值,LB 、UB 分别是变量x 的下界和上界,x0是x 的初始值,OPTIONS 是控制参数。 例1 求解线性规划问题 1231231 23123123max 23572510s.t.312,,0 z x x x x x x x x x x x x x x x =+-++=??-+≥??++≤??≥? 程序:c=[2;3;5]; >> A=[-2,5,-1;1,3,1];b=[-10;12]; >> Aeq=[1,1,1];beq=[7]; >> LB=[0;0;0];(zeros(3,1)) >> [x,fval]=linprog(c,A,b,Aeq,beq,LB,[]) 练习与思考:求解线性规划问题 12312312123 min 23+428 s.t.3+26,,0z x x x x x x x x x x x =+++≥?? ≥??≥? 注意:若没有不等式:b AX ≤存在,则令A=[ ],b=[ ]. 若没有等式约束, 则令Aeq=[ ], beq=[ ]. 2.可以转化为线性规划的问题 规划问题12min||+||++||s.t.,n x x x Ax b ≤L 其中1=[],T n x x x L ,A b 为相应维数的矩阵和向量。注意到对任意的i x 存在,>0i i u v 满足=-,||=+i i i i i i x u v x u v ,事实上只要取 +||||-= ,=22 i i i i i i x x x x u v 就可以满足上面的条件。 这样,记11=[],=[],T T n n u u u v v v L L 从而可以把问题变成 =1min (+) (-)s.t.,0 n i i i u v A u v b u v ≤?? ≥?∑ 例2 求解规划问题min{max||}i i i x y ε,其中=-.i i i x y ε 对于这个问题,如果取0=lim||i i y x ε,这样,上面的问题就变换成 01100min s.t.-,,-n n x x y x x y x ≤≤L 这是我们通常的线性规划问题。 练习与思考:规划问题 1234123412341234min ||2||+3||+4||--+=0s.t.-+-3=11--2+3=-2 z x x x x x x x x x x x x x x x x =+? ?? ???? 二.非线性一元函数的最小值 对于求一元函数的最小值问题,Matlab 提供了一个命令函数fminbnd , MATLAB 求函數極小(大)值 函數的極值 n函數的極值(極大值或極小值)可從兩個角度來談,一為絕對的極值(absolute or global extreme value),另一為相對的極值(relative or local extreme value) n絕對的極值:在所有定義域內中的極大值或極小值 n相對的極值:在定義域內某一區間中的極大值或極小值 n 單一變數函數 n 多變數函數 n y = f (x 1, x 2, …, x n )為一函數。若f 在x*上有極值,則 函數極值的發生處 0x y = f (x ) 0x y = f (x )極小值 極大值***12()0,()0,,()0n f f f x x x x x x ???===???L 求單變數函數之極小值n 在特定區間尋找單一變數之函數f(x) 之極小值 n 方法一:在區間內取點,計算這些點的函數值,然後利用min 指令找出其極小值 Ex. 求之極小值,其中>> x=linspace(0,8,100);>> y=cos(x).*exp(-2*x);>> [ymin index]=min(y)>> xmin=x(index) ()* min (),=££l u x f x f x x x x 08 ££x 2()cos()-=x f x x e ymin =-0.0076index =26xmin =2.0202f(x) 稱為目標函數(objective function) 求單變數函數之極小值n 方法二:利用MATLAB 內建函數fminbnd Ex.求之極小值,其中*step 1. edit fun.m function F=fun(x) F=cos(x)*exp(-2*x); *step 2. 求解(回到Matlab Command Window )>> [x, fval]=fminbnd(@fun, 0, 8)[x, fval] = fminbnd(@fun, x1, x2) x: 使函數值最小之x 值fval: 函數之極小值fun: 定義目標函數的function m-file 檔名x1: 區間下限, x2: 區間上限 2()cos()-=x f x x e 08 ££x x =2.0344fval =-0.0076 基于MATLAB 可行方向法求极值的实现 姓名:xxx 学号:xxx (北京理工大学机械与车辆学院车辆工程,北京 100081) 摘要:在工程实际的优化设计中,随着设计变量数和约束条件数的增加,随机方向搜索法和复合形法等直接优化解法的求解效率会偏低。可行方向法,顾名思义,一种始终在可行域内寻找下降方向的搜索法,以其收敛速度快、效果好的优点已成为求解约束非线性问题的一种有代表性的直接解法,同时也是求解大型约束优化问题的主要方法之一。本文将简单介绍可行方向法的数学思想,采用线性规划法和约束最优步长法编写MATLAB 程序,最后通过算例完成对优化问题的求解。 关键字:可行方向法;MATLAB ;优化方法。 1. 可行方向法的基本数学思想 1.1可行方向法的搜索策略 可行方向法迭代的第一步都是从可行域的某一初始点(0)X 出发,沿负梯度 (0)()f X -?方向移至某一个或J 个起作用约束面的交集()k X 上。以后的搜索路线和迭代计算可根据约束函数和目标函数的不同性状,分别采用以下三种不同策略继续搜索。 1) 由点()k X 出发,沿可行方向作一维最优化搜索,若所得新点(1)k X +在可行域内,则再沿(1)()k f X +-?方向作一维最优化搜索;若所得的新点不在可行域内,则将它移至约束面上再反复重复上述步骤,若 (1)()k f X ε+?≤,则停止迭代,如图1.1所示。 2) 由点()k X 出发,沿可行方向作一维最优化搜索,若所得新点(1)k X +在可行域外,则沿可行方向以最大步长到达另一个约束面上一点,将该点作为迭代点(1)k X +进行反复搜索,直至满足给出的K-T 条件,如图1.2所示。 遗传算法求函数最大值(matlab实现) 一、题目: 2,,当x在0~31区间的最大值。寻找f(x)=x 二、源程序: %遗传算法求解函数最大值 %本程序用到了英国谢菲尔德大学(Sheffield)开发的工具箱GATBX,该工具箱比matlab自带的GATOOL使用更加灵活,但在编写程序方面稍微复杂一些 Close all; Clear all; figure(1); fplot('variable*variable',[0,31]); %画出函数曲线 %以下定义遗传算法参数 GTSM=40; %定义个体数目 ZDYCDS=20; %定义最大遗传代数 EJZWS=5; %定义变量的二进制位数 DG=0.9; %定义代沟 最优结果的初始值% trace=zeros(2, ZDYCDS); FieldD=[5;-1;2;1;0;1;1]; %定义区域描述器的各个参数%以下为遗传算法基本操作部分,包括创建初始种群、复制、交叉和变异 Chrom=crtbp(GTSM, EJZWS); %创建初始种群,即生成给定规模的二进制种群和结构 gen=0; %定义代数计数器初始值variable=bs2rv(Chrom, FieldD); %对生成的初始种群进行十进制转换 2 f(x)=x计算目标函数值% ObjV=variable*variable; while gen 实验六 多元函数的极值 【实验目的】 1. 多元函数偏导数的求法。 2. 多元函数自由极值的求法 3. 多元函数条件极值的求法、 4. 学习掌握MATLAB 软件有关的命令。 【实验内容】 求函数3282 4-+-=y xy x z 的极值点与极值 【实验准备】 1.计算多元函数的自由极值 对于多元函数的自由极值问题,根据多元函数极值的必要与充分条件,可分为以下几个步骤: 步骤1、定义多元函数),(y x f z = 步骤2、求解正规方程0),(,0),(==y x f y x f y x ,得到驻点 步骤3、对于每一个驻点),(00y x ,求出二阶偏导数,,,22222y z C y x z B x z A ??=???=??= 步骤4、 对于每一个驻点),(00y x ,计算判别式2B AC -,如果02>-B AC ,则该驻点就是极值点,当0>A 为极小值, 0 可以用help diff, help jacobian 查阅有关这些命令的详细信息 【实验方法与步骤】 练习1 求函数3282 4-+-=y xy x z 的极值点与极值、首先用diff 命令求z 关于x,y 的偏导数 >>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>diff(z,x) >>diff(z,y) 结果为 ans =4*x^3-8*y ans =-8*x+4*y 即.48,843y x y z y x x z +-=??-=??再求解正规方程,求得各驻点的坐标。一般方程组的符号解用solve 命令,当方程组不存在符号解时,solve 将给出数值解。求解正规方程的MA TLAB 代码为: >>clear; >>[x,y]=solve('4*x^3-8*y=0','-8*x+4*y=0','x','y') 结果有三个驻点,分别就是P(-2,-4),Q(0,0),R(2,4)、下面再求判别式中的二阶偏导数: >>clear; syms x y; >>z=x^4-8*x*y+2*y^2-3; >>A=diff(z,x,2) >>B=diff(diff(z,x),y) >>C=diff(z,y,2) 结果为 A=2*x^2 B =-8 C =4 由判别法可知)2,4(--P 与)2,4(Q 都就是函数的极小值点,而点Q(0,0)不就是极值点,实际上,)2,4(--P 与)2,4(Q 就是函数的最小值点。当然,我们可以通过画函数图形来观测极值点与鞍点。 >>clear; >>x=-5:0、2:5; y=-5:0、2:5; >>[X,Y]=meshgrid(x,y);实验五 用matlab求二元函数的极值
用MATLAB求极值
实验3 Matlab 符号运算及求函数极值
matlab自定义函数与极值求法
matlab实验六 多元函数的极值
Matlab优化(求极值)
Matlab求函数最值
基于MATLAB的可行方向法求极值问题讲解
遗传算法求函数极大值matlab实现
MATLAB多元函数导数求极值或最优值
MATLAB多元函数极值