You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matlab中结合for循环使用fminsearch求解函数最小值

Matlab循环固定变量调用fminsearch求解局部最小值实现方案

首先明确fminsearch的核心调用规则:第一个入参是仅包含待优化变量的函数句柄,第二个入参是优化的初始猜测值,返回结果依次为最优自变量取值、对应的最小函数值。

你需要每次固定y值后,将二元目标函数转换为仅关于x的一元函数再传入fminsearch,完整实现代码如下:

% 定义原始二元目标函数
obj = @(x,y) x^2 + x*y + y^2;
% 初始化存储结果的数组:每一行对应y=k的结果,第一列存最优x,第二列存最小值
res = zeros(10, 2);
% 循环y取值1到10
for y_val = 1:10
    % 构造固定y后的一元目标函数
    single_obj = @(x) obj(x, y_val);
    % 调用fminsearch,初始x猜测值设为0,可根据实际函数调整
    [x_opt, f_min] = fminsearch(single_obj, 0);
    % 存储结果
    res(y_val, :) = [x_opt, f_min];
end

% 输出所有结果查看
disp('y值 | 最优x值 | 最小函数值')
for i =1:10
    fprintf('%d   | %.4f  | %.4f\n', i, res(i,1), res(i,2));
end

关键说明

  • 示例中目标函数是凸函数,初始值选0就能得到全局最小值,如果你的实际函数存在多个局部极小,可以根据先验知识调整初始猜测值,避免陷入局部最优
  • 如果需要修改y的取值范围,直接调整循环的上下限即可,同时对应修改结果存储数组的大小
  • 如果你不需要存储所有历史结果,也可以直接在循环内打印每次的计算结果

内容的提问来源于stack exchange,提问作者Chang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:15:03