Matlab查找函数的最小值/最大值
我试图编写一个m文件,在给定一定范围的情况下,找到函数的最大/最小值 假设我在命令窗口中定义了一个等式,如下所示:Matlab查找函数的最小值/最大值,matlab,function,max,min,Matlab,Function,Max,Min,我试图编写一个m文件,在给定一定范围的情况下,找到函数的最大/最小值 假设我在命令窗口中定义了一个等式,如下所示: > y = @(x) -1*x^2 + 3 y = function_handle with value: @(x)-1*x^2+3 假设我想要的范围是-3到3。。。所以我会用 function fminmax = input(f, lowerbound, upperbound) 那我用什么呢?我在谷歌上搜索了一段时间,找不到任何有用的东西。请帮忙 您可以
> y = @(x) -1*x^2 + 3
y =
function_handle with value:
@(x)-1*x^2+3
假设我想要的范围是-3到3。。。所以我会用
function fminmax = input(f, lowerbound, upperbound)
那我用什么呢?我在谷歌上搜索了一段时间,找不到任何有用的东西。请帮忙 您可以使用已经存在的函数
x=fminbnd(fun,x1,x2)
,该函数为x1
和x2
范围内的函数句柄fun
提供最小值。要获得最大值,可以使用函数句柄的负数
您的函数可以如下所示:
function [min, max] = fminmax(f, lowerbound, upperbound)
min = fminbnd(f, lowerbound, upperbound);
max = fminbnd(@(x) -f(x), lowerbound, upperbound);
end
您可以使用已经存在的函数
x=fminbnd(fun,x1,x2)
,该函数为x1
和x2
范围内的函数句柄fun
提供最小值。要获得最大值,可以使用函数句柄的负数
您的函数可以如下所示:
function [min, max] = fminmax(f, lowerbound, upperbound)
min = fminbnd(f, lowerbound, upperbound);
max = fminbnd(@(x) -f(x), lowerbound, upperbound);
end
当我尝试此操作时,Matlab会发出错误消息。它表示“function_handle”类型的输入参数为“Undefined operator'*”@Marcus my bad。函数句柄不是数值,因此不能与-1相乘。我编辑了我的答案。这应该可以做到。当我尝试这一点时,Matlab会发出一条错误消息。它表示“function_handle”类型的输入参数为“Undefined operator'*”@Marcus my bad。函数句柄不是数值,因此不能与-1相乘。我编辑了我的答案。这应该能奏效。是我在谷歌上搜索你的问题标题时的第一个热门话题。是我在谷歌上搜索你的问题标题时的第一个热门话题。