根据我看过的材料来说 ,求最值(极值)无非有下面几种情况。
1、求简单函数的单一最值(极值)clear
clc
t= -100:0.001:100; % 初值: 增量: 终 值
syms x;
y = x/(x * x + 1);
f = inline(y); % 内联函数
max = max(f(t))
min = min(f(t))
内联函数
这里有必要介绍下内联函数,c++也有,应该说好多编程语言都有。
在matlab命令窗口、程序或函数中创建局部函数时,可用inline。优点是不必将其储存为一个单独文件。
在运用中有几点限制:不能调用另一个inline函数,只能由一个matlab表达式组成,并且只能返回一个变量—显然不允许[u,v]这种形式。
因而,任何要求逻辑运算或乘法运算以求得最终结果的场合,都不能应用inline。
除了这些限制,在许多情况下使用该函数非常方便。
Inline函数的一般形式为:
FunctionName=inline(‘任何有效的matlab表达式’, ‘p1’,’p2’ ,….) ,其中‘p1’,’p2’ ,…是出现在表达式中的所有变量的名字。
如:(求解F(x)=x^2*cos(a*x)-b ,a,b是标量;x是向量 )
在命令窗口输入:
Fofx=inline('x .^2*cos(a*x)-b' , 'x', 'a', 'b');
g= Fofx([pi/3 pi/3.5],4,1)
系统输出为:g=-1.5483 -1.7259
*****************************************************
feval函数如何理解feval函数的最通常的应用是以下形式:
feval('functionname', parameter)
举个简单的例子: 比如要计算sin(2),当然可以直接用命令
y=sin(2);
利用feval,还可以这样来做:
y=feval('sin',2);
另外这里的函数名字还可以是一个函数句柄,即h=@sin;
y=feval(h,2);
或者,直接写成
y=feval(@sin,2);
2.求函数的极值点和最大值
比如说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
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 由于函数的局限性,求出的极值可能是局部最小(大)值。
function value F evaluated at X. X0 can be a scalar, vector or matrix.
3.求多元函数的极值列如
求最大值f=5+1350*(1-x)^(2.9)+1350*x^3*((1-y)^(2.9)-(1-x)^(2.9))+135*y^3*(1-10*(1-y^(2.9))); 其中0.8
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?


微信扫码登录