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

Matlab中如何对以向量为输入的多元函数实现优化求解

完全可以通过将多组优化变量拼接为单个长向量作为输入,配合矢量化目标函数即可实现单输入求解,不需要借助arrayfun循环处理,以下是具体实现方案:

方案1:长向量拼接法(通用适配所有优化器)

将所有待求解的变量拼接为一维长向量作为优化输入,目标函数内做对应维度拆分计算即可:

clear;
A = [1;2];
n = length(A); % 待求解的独立问题个数

% 目标函数输入为长度2*n的长向量:
% 前n个元素对应每个独立问题的Vs变量,后n个元素对应每个独立问题的Vx变量
obj = @(x) sum( -x(1:n).^2 - A .* x(n+1:end).^2 );

% 初始化所有变量的初始值设为0
x0 = zeros(2*n, 1);
% 直接调用优化器求解
x_opt = fminsearch(obj, x0);

% 拆分得到所有最优解
Vs_opt = x_opt(1:n);
Vx_opt = x_opt(n+1:end);

注意:你给出的原目标函数是负平方项求和,若要做最小值求解是无界的,没有有限最优解;如果是求解最大值,将目标函数取反后再求最小值即可,对应原问题的最大值。

如果你的各个A对应的优化问题独立没有变量耦合,长向量拼接法的求解结果和你之前用arrayfun循环得到的结果完全一致,计算效率更高。

方案2:二次规划专属优化(更高效)

你的目标属于二次型结构,可以调用quadprog求解,比fminsearch这类启发式求解器速度更快、精度更高:

clear;
A = [1;2];
n = length(A);
H = diag([ones(n,1); A]); % 二次型系数矩阵
f = zeros(2*n, 1);
x_opt = quadprog(H, f);
Vs_opt = x_opt(1:n);
Vx_opt = x_opt(n+1:end);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:06:06