Matlab 函数quadprog(),如何求 H(对称矩阵)经验分享

相信很多小伙伴在使用matlab的时候总会遇到函数参数不理解的情况,下面就对 quadprog(函数)做出参数解释:

下面是该函数的几种调用形式:

x = quadprog(H,f)
x = quadprog(H,f,A,b)
x = quadprog(H,f,A,b,Aeq,beq)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)
x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
x = quadprog(problem)

这里H 是实对称矩阵,f ,b 是列向量,A 是相应维数的矩阵

H:二次规划中的二次项矩阵(对称矩阵)。
f:二次规划中一次项系数向量(一阶项系数)。
A:线性不等式约束的系数矩阵。
b:线性不等式约束的右端向量。
Aeq:线性等式约束的系数矩阵。
beq:线性等式约束的右端向量。
lb:自变量下界约束。
ub:自变量上界约束。
x0:初始点。
options:options结构。

这些参数在网上其他的文章都有解释,下面我只说 H 怎么求解。其实很简单。给大家一个公式:

在这里插入图片描述
在这里插入图片描述
然后很容易得到:我们的 H 就是下面的矩阵:
在这里插入图片描述
当然还有一般式,对于 n 变量:

定义 n元齐次多项式:
在这里插入图片描述

得到对应的 函数表达式(矩阵表示):
在这里插入图片描述

其中 H :
在这里插入图片描述
**更新

突然发现一个问题,对于matlab 在求解 H 的时候 应该✖2.原因如下:

在这里插入图片描述
第一项 代表非线性向量函数 其中 matlab解的时候 有一个1/2 .所以 必须将原来上面讲的H 乘2 (H = H*2)

猜你喜欢

转载自blog.csdn.net/qq_45689790/article/details/107816148