matlab为什么fminbnd跑不出结果,编的程序感觉没错啊

clear all
syms x y
f1=x^2+y^2;
fun=inline(f1);
[X,FVAL,EXITFLAG]=fminbnd(fun,[-1 1],[-1 1])

注意看下fminbnd的帮助:

    Find minimum of single-variable function on fixed interval

也就是说,fminbnd用于求取单变量函数在某个固定区间的最小值,你现在的目标函数是多变量的二元函数,当然不能求解了(即使程序能运行,得到的结果也是错误的)。

 

另外,对于多元函数的优化,变量应该写成x(1)、x(2)而非x、y。例如可以用fminsearch、fminunc或fmincon求解(前两个属于无约束优化):

>> fun=inline('x(1)^2+x(2)^2');
>> [X,FVAL,EXITFLAG]=fminsearch(fun,[-1 1])
X =
  1.0e-004 *
    0.2102    0.2548

FVAL =
  1.0915e-009

EXITFLAG =
     1
>> [X,FVAL,EXITFLAG]=fminunc(fun,[-1 1])
Warning: Gradient must be provided for trust-region method;
  using line-search method instead.
> In fminunc at 281
Optimization terminated: relative infinity-norm of gradient less than options.TolFun.
X =
     0     0

FVAL =
     0

EXITFLAG =
     1
>> [X,FVAL,EXITFLAG]=fmincon(fun,[-1 1],[],[],[],[],[-1 -1],[1 1])
Warning: Trust-region-reflective method does not currently solve this type of problem,
 using active-set (line search) instead.
> In fmincon at 422
Optimization terminated: first-order optimality measure less
 than options.TolFun and maximum constraint violation is less
 than options.TolCon.
No active inequalities.
X =
  1.0e-008 *
   -0.7451    0.7451

FVAL =
  1.1102e-016

EXITFLAG =
     1

温馨提示:内容为网友见解,仅供参考
无其他回答

matlab为什么fminbnd跑不出结果,编的程序感觉没错啊
也就是说,fminbnd用于求取单变量函数在某个固定区间的最小值,你现在的目标函数是多变量的二元函数,当然不能求解了(即使程序能运行,得到的结果也是错误的)。另外,对于多元函数的优化,变量应该写成x(1)、x(2)而非x、y。例如可以用fminsearch、fminunc或fmincon求解(前两个属于无约束优化):>>...

matlab 隐函数求解出来结果很诡异,想用 fminbnd 求解 最小值,错误,具 ...
1、最主要的问题在于,你的jie是sym对象,不能用于fminbnd这类数值方法的优化程序。可以改成 [fz,fval]=fminbnd(inline(char(jie(i)),z(i),z(i+1));2、由于你现在的条件中,Xt、Yt、S以及z的值都没给出,我随便指定的值,虽然可以运行,但算出来的结果没什么意义。希望对你有帮助,有问题...

关于matlab中的fminbnd函数
这个函数求的是局部极小值点,只可能返回一个极小值点,像这种有多个极小值的函数,你应该先绘图找到各个极小值点的大致范围,然后把x的范围缩小到只有那个极小值的范围。

有谁能帮我看看matlab的这个函数 虽然简单但是运行不了
你的第一个问题可能是由于M文件里面还有其它内容引起的,如果仅仅是你贴出来的代码,尽管存在不少问题,但不会出现你所说的那个错。函数myfunc的输出参数应该是R吧?按照常理,不可能计算了半天的结果不要,却把输入参数不加任何处理而直接返回。函数的输入参数w既然是固定值,那就没必要作为一个输入参...

Matlab用fminbnd求出的最小值用plot画出后不一致是为什么呢?
findbnd只能给出局部最小值,所以用这个命令时,初始范围很重要 建议你看看fminbnd的help。plot(x,cos(4*x).*sin(10*x).*exp(-abs(x)))给出的最小值也不是0呀,不知你怎么算的 如果用数值方法,自变量步进要很小才行,要不就用ezplot clear all;clc;f=@(x)cos(4*x).*sin(10*x)....

请教使用matlab中fminbnd函数优化的问题?
程序还是不给你,自己学会了,要写很简单的。按照步骤,照猫画虎就可以了。由于我不能贴图,例子中的数学模型没有写,供你参考。优化工具箱提供fmincon函数用于对有约束优化问题进行求解,其语法格式如下:x = fmincon(fun,x0,A,b)x = fmincon(fun,x0,A,b,Aeq,beq)x = fmincon(fun,x0,A,...

matlab中 fminbnd函数
X = FMINBND(FUN,x1,x2) attempts to find a local minimizer X of the function FUN in the interval x1 < X < x2. FUN is a function handle。它求的是函数fun在(x1,x2)的取局部最小值时的x的值.只适用求局部最优解.还可以用fminsearch.这里的fun需要使用函数句柄或者是函数文件。

matlab问题,如图,怎么会多出0.0001呢?为什么
fminbnd是通过数值方法求解,无法保证得到的解绝对准确,只能是相对准确。而这个相对量是由算法设置的TolX决定的,只要满足误差比TolX小,就认为得到的想要的结果。TolX的默认值是1e-4,上面求出的结果是满足这个要求的:>> format long>> fminbnd(@(x)2*x,3,9)ans = 3.000057869254071应该指出...

matlab的fmincon函数程序运行问题求助
解决此问题的Matlab程序为:clear fun='(x^5+x^3+x^2-1)\/(exp(x^2)+sin(-x))'ezplot(fun,[-2,2])[X,fval,exitflag,output]= fminbnd(fun,-2,2)结果为:X = 0.2176 fval =-1.1312 exitflag = 1 output = iterations: 13 funcCount: 13 algorithm: 'golden section search, ...

为什么我的matlab中没有fmin函数
matlab不断更新换代。fmin这个函数是以前老版本的函数了。现在你可以使用FMIN has been replaced with FMINBND. FMIN currently works but will be removed in the future. Use FMINBND instead.即fminbnd函数。其实也只是名字变了,大同小异。

相似回答