APP下载

多元函数极值的MATLAB解法

2019-01-03

时代金融 2018年35期
关键词:驻点等高线极值

李 娜

(长春建筑学院基础教学部,吉林 长春 130607)

在实际生产和生活中有很多问题都涉及到函数的最值和极值.利用高阶偏导数或实二次型理论求解多元函数的极值,这种方法理论上对函数要求较高,并且计算过程繁难。MATLAB具有强大的计算和作图功能,可以帮我们方便快捷的解决极值问题。

如果函数是可导的,我们可以用MATLAB命令先找到驻点,然后再利用等高线找出极值点,求出极值。具体的过程见例1

例1 求 f(x,y)=x3-y3+3x2+3y2-9x 的极值

输入:Syms x y f=’x^3-y^3+3*x^2+3*y^2-9*x’;fx=diff(f,x)fy=diff(f,y)

输出为偏导函数fx=3*x^2+6*x-9 fy=-3*y^2+6*y

再用解方程组的命令求出驻点

[x y]=solve(’3*x^2+6*x-9=0’,’-3*y^2+6*y=0’)

x=1-3 1-3 y=0 0 2 2

得到四个驻点的坐标,

然后输入下面的命令,把函数的等高线的图形画出来(图1)

〉 〉 [x,y]=meshgrid(-5∶0.1∶3,-3∶0.1∶5);

z=x.^3-y.^3+3*x.^2+3*y.^2-9*x;

〉 〉 contour(x,y,z,20)

输出如图,因为在两个极值点附近,函数的等高线是封闭的,在鞍点附近,等高线不封闭,从而可判断极值点是(-3,2),(1,0).

注:此法的缺点是无法判断不可导点是极值的情形.

若函数高度非线性,没有导数或者导数很难计算的情况,可以采用直接搜索法。先观察图形,给定一个初始点,同时设定一定的步长和搜索方向,就能对问题的参数进行更新,使得函数值变小(大),常用的直接搜索法有单纯性法、最速下降法等.见例2

例 2 求 f(x1,x2)=(x1-x22)2+(1-x2)2的极值

输入 ezmesh(’(x-y)^2+(1-y)^2’),画出图形(图 2),观察可能的极值点在(0,1)附近,

所以以(0,1)为初始点,进行搜索求极值点

x=fminunc(@(x) (x(1)-x(2))^2+(1-x(2))^2,[0;1])

x=1.0000 1.0000

注:此法的缺点是初始点的选择问题,还有可能不能求出全部的极值点.

猜你喜欢

驻点等高线极值
极值点带你去“漂移”
极值点偏移拦路,三法可取
地形图的阅读
一类“极值点偏移”问题的解法与反思
一种基于Fréchet距离的断裂等高线内插算法
基于游人游赏行为的留园驻点分布规律研究
“等高线地形图的判读”专题测试
借助微分探求连续函数的极值点
利用远教站点,落实驻点干部带学
山区等高线内插生成DEM的精度评价