matlab求最值(极值) |
您所在的位置:网站首页 › 函数有极值点求参数范围怎么求 › matlab求最值(极值) |
根据我看过的材料来说 ,求最值(极值)无非有下面几种情况。 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 由于函数的局限性,求出的极值可能是局部最小(大)值。 求全局最值要用遗传算法。 注:此处@的用法 函数句柄 匿名函数 这是函数句柄的一种高级用法, 这样产生的函数句柄变量不指向特定的函数, 而是一个函数表达式. 其语法: 变量名=@(输入参数列表)运算表达式 例如, 前面那个计算变量平方的函数可以简单地写为这个匿名函数: mysqr1=@(x)x.*x 之后, 执行mysqr1(变量名), 即可计算该变量的平方, 注意, mysqr1属性是函数句柄变量, 而不是这个表达式; 还有要注意这个表达式不需要用单引号括起来 注: fminunc 用法,找不到百度,就写英文的了 fminunc finds a local minimum of a function of several variables. X = fminunc(FUN,X0) starts at X0 and attempts to find a local minimizer X of the function FUN. FUN accepts input X and returns a scalarfunction 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 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |