用MATLAB 求极值 灵活的运用MATLAB 的计算功能,可以很容易地求得函数的极值。 例3.6.1 求223441xxyxx的极值 解 首先建立函数关系: syms s y=(3*x^2+4*x+4)/( x^2+x+1); ↙ 然后求函数的驻点: dy=diff(y); ↙ xz=solve(dy) ↙ xz= [0] [-2] 知道函数有两个驻点 x1=0 和 x2 =-2,考察函数在驻点处二阶导数的正负情况: d2y=diff(y,2); ↙ z1=limit(d2y,x,0) ↙ z1= -2 z2=limit(d2y,x,-2) ↙ z2= 2/9 于是知在 x1=0 处二阶导数的值为 z1=-2,小于 0,函数有极大值;在 x2 =-2 处二阶导数的值为 z2 =2/9,大于 0,函数有极小值。如果需要,可顺便求出极值点处的函数值: y1=limit(y,x,0) ↙ y1= 4 y2 =limit(y,x,-2) ↙ y2 = 8/3 事实上,如果知道了一个函数的图形,则它的极值情况和许多其它特性是一目了然的。而借助 MATLAB 的作图功能,我们很容易做到这一点。 例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 来算它的极值和最大值? 求极值: sy ms x y >> y =x ^3+x ^2+1 >> diff(y ) %求导 ans = 3*x ^2 + 2*x >> solve(ans) %求导函数为零的点 ans = -2/3 0 极值有两点。 求最大值,既求-y 的最小值: >> f=@(x )(-x ^3-x ^2-1) f = @(x)(-x^3-x^2-1) >> x=fminunc(f,-3,3)% 在-3;-3 范围内找 Warning: Gradient must be provided for trust-region method; using line-search method instead. > In fminunc at 354 Optimization terminated: relative infinity-norm of gradient less than options.TolFun. x = -0.6667 >> f(x) ans = -1.1481 在规定范围内的最大值是1.1481 由于函数的局限性,求出的极值可能是局部最小(大)值。 求全局最值要用遗传算法。 如何用 matlab求多元函数的极值 求 在 0> dzy...