如何解决关于在给定区间之间找到函数的绝对最大值的Matlab问题
假设我有一个函数 f=@(x) -1/x^2。我需要找到 [1,2] 之间的最大值。 所以答案是 1 因为如果 x=1 abs(-1/x^2) 的最大值
是否有 matlab/octave 内置功能,可以接受一个函数、区间并返回一个数字?
解决方法
您的问题是非线性规划问题的一个实例。
在基本倍频程中,您可以使用 sqp
函数:
https://octave.org/doc/v6.2.0/Nonlinear-Programming.html#Nonlinear-Programming
示例:
f = @(x) -1 ./ (x .^ 2);
Min = sqp( 1.5,% Initial guess. I chose middle of proposed range
f,% The function to be minimized
[],% Function representing equality constraint. Not used here.
[],% Function representing inequality constraint. Not used here.
1,% Lower bound of 1 for x
2 % Upper bound of 2 for x
)
% output: Min = 1
另外还有来自 optim 包/工具箱的 fmincon
(分别在 octave/matlab 中),其工作方式类似。如果您特别关注八度音程/matlab 的互通性,这可能是更好的选择。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。