matlab求已知函数的最大最小值的完整程序
时间: 2024-11-15 14:32:13 浏览: 1
在MATLAB中,可以使用`fminbnd`和`fmaxbnd`这两个内置函数来分别找到单变量函数的最大值和最小值。以下是创建一个完整的程序示例,它会寻找给定函数`fun`在指定区间`a`和`b`内的最大值和最小值:
```matlab
function [min_val, max_val] = findMinMax(fun, a, b)
% 输入函数、区间的左端点和右端点
if nargin < 2 || nargin > 3
error('Please provide the function handle and interval endpoints.');
end
% 检查输入合法性
if ~isa(fun, 'function_handle') || ~isreal(a) || ~isreal(b)
error('Invalid input. Please ensure fun is a valid function handle and a and b are real numbers.');
end
% 如果区间的长度小于等于0,则返回错误
if b - a <= 0
error('The interval must be non-empty.');
end
% 使用fminbnd查找最小值
[min_val_min, min_val_result] = fminbnd(fun, a, b);
% 使用fmaxbnd查找最大值
[max_val_max, max_val_result] = fmaxbnd(fun, a, b);
% 检查是否有解
if isnan(min_val_result) || isnan(max_val_result)
error('No solution found for the specified function.');
end
% 返回结果
min_val = min_val_min;
max_val = max_val_max;
% 示例:寻找函数y = x^2在[-10, 10]上的最大值和最小值
fun_example = @(x) x.^2;
[min_example, max_example] = findMinMax(fun_example, -10, 10);
disp(['Minimum value of y = ', num2str(min_example), ' at x = ', num2str(min_example_result)]);
disp(['Maximum value of y = ', num2str(max_example), ' at x = ', num2str(max_example_result)]);
%
阅读全文