matlab 计算函数极值,如何用MATLAB求函数的极值点和最大值 |
您所在的位置:网站首页 › 二次函数极值公式推导过程图 › matlab 计算函数极值,如何用MATLAB求函数的极值点和最大值 |
两种方法: 1、求导的方法:syms x y; >> y=x^3+x^2+1 >> diff(y) ans =3*x^2 + 2*x >> solve(ans) ans =-2/3 0 极值有两点。 同时也是最值; 2、直接用最小值函数: 求最大值,既求-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 354Optimization terminated: relative infinity-norm of gradient less than options.TolFun. x = -0.6667 >> f(x) ans = -1.1481在规定范围内的最大值是1.1481由于函数的局限性, 求出的极值可能是局部最小(大)值。求全局最值要用遗传算法。 例子:syms x f=(200+5*x)*(0.65-x*0.01)-x*0.45; s=diff(f);%一阶导数 s2=diff(f,2);%二阶导数 h=double(solve(s));%一阶导数为零的点可能就是极值点,注意是可能,详情请见高数课本 for i=1:length(h) if subs(s2,x,h(i))0 disp(['函数在' num2str(h(i)) '处取得极小值,极小值为' num2str(subs(f,x,h(i)))]) else disp(['函数在' num2str(h(i)) '处二阶导数也为0,故在该点处函数可能有极大值、极小值或无极值'])%%%详情见高数课本 end end |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |