【问题标题】:Minimizing a multivariable function最小化多变量函数
【发布时间】:2012-10-07 00:05:00
【问题描述】:

我知道 fminsearch 函数,但它似乎只能解决一个变量。

如果我的函数看起来像 f(x,y,z) 并且我想找到给出最低结果的 x,y,z 的值,我将如何在 MatLab 中执行此操作? f 的复杂性会使计算偏导数变得异常困难。

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 在 fminsearch 文档中,参见示例 1...

标签: matlab minimization


【解决方案1】:

fminsearch 是多变量的,例如:

a = fminsearch(@(x)((x(1)-1)^2+(x(2)-2)^2), [0,0]);

传递给目标函数的参数可以是向量,只要确保将x0参数(fminsearch中的第二个参数)指定为合适的大小即可。

【讨论】:

  • 所以在这个例子中,@(x) 表示一个包含 2 个元素 x(1) 和 x(2) 的数组。那么 [0,0] 代表什么? x(1) 从 0 开始,x(2) 从 0 开始?谢谢!
  • 没错,[0,0]是算法的起点,它的大小决定了优化中的变量个数
  • 澄清一下,@(x) 是一个内联匿名函数减速,上面的例子是一个简写:function y = f(x) y = ((x(1)-1)^2+(x(2)-2)^2) ... a = fminsearch(f, [0,0]);
  • 我收到一个错误:min = fminsearch(GetJointMle, [0,0,0]); ???输入参数“x”未定义。 ==> GetJointMle 在 5 alpha = x(1) 时出错;
  • 我的错误,函数名周围应该有撇号,比如min = fminsearch('GetJointMle', [0,0,0]);。没有撇号,你调用 GetJointMle 没有参数并将结果作为第一个参数传递给 fminsearch...
猜你喜欢
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 2019-11-05
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多