【问题标题】:Matlab find min/max of functionMatlab找到函数的最小值/最大值
【发布时间】:2017-09-30 23:46:02
【问题描述】:

我正在尝试编写一个 M 文件,在给定特定范围的情况下找到函数的最大值/最小值。

假设我在命令窗口中定义了一个方程,如下所示:

> y = @(x) -1*x^2 + 3
y =

  function_handle with value:

    @(x)-1*x^2+3

假设我想要的范围是从 -3 到 3...所以我会开始我的 M 文件

function fminmax = input(f, lowerbound, upperbound)

但那我会用什么?我已经用谷歌搜索了一段时间,我找不到任何有用的东西。请帮忙!

【问题讨论】:

  • This 是我在 Google 上搜索您的问题标题时的第一个目标。

标签: matlab function max min


【解决方案1】:

您可以使用现有的函数x = fminbnd(fun, x1, x2),它为您提供函数句柄funx1x2 范围内的最小值。要获得最大值,您可以使用函数句柄的负数。

您的函数可能如下所示:

function [min, max] = fminmax(f, lowerbound, upperbound)
    min = fminbnd(f, lowerbound, upperbound);
    max = fminbnd(@(x) -f(x), lowerbound, upperbound);
end

【讨论】:

  • 当我尝试这个时,Matlab 会吐出一条错误消息。它说“未定义运算符'*'用于'function_handle'类型的输入参数”
  • @Marcus 我的错。函数句柄不是数值,因此不能与 -1 相乘。我编辑了我的答案。这应该可以解决问题。
猜你喜欢
  • 1970-01-01
  • 2013-09-28
  • 2012-06-21
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2018-10-26
  • 2014-12-15
相关资源
最近更新 更多