matlab中用quadprog时为啥求出的极值和自己后来带入极值点的极值不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中用quadprog时为啥求出的极值和自己后来带入极值点的极值不同相关的知识,希望对你有一定的参考价值。

这个是非线性规划的模型
min f(x)=x*x1*x1-4*x1*x2+4*x2*x2-6*x1-3*x2
x1+x2<=3
4*x1+x2<=9
x1,x2>=0
代码如下
h=[4,-4;-4,8];
f=[-6;-3];
a=[1,1;4,1];
b=[3;9];
[x,value]=quadprog(h,f,a,b,[],[],zeros(2,1))
这个是例题的函数,得出的结果是x=[1.9500;1.0500] minf(x)=-11.0250
将极值点带入得
x'*h*x+f'*x
ans =
-7.2000
为什么两个不一样的?

h=[4,-4;-4,8];
f=[-6;-3];
a=[1,1;4,1];
b=[3;9];
x0=[0;0];
[x,value]=quadprog(h,f,a,b,[],[],0,inf,x0)%%%这里最好也改一下
Warning: Large-scale algorithm does not currently solve this problem formulation,
using medium-scale algorithm instead.
> In quadprog at 293
Optimization terminated.

x =

1.9500
1.0500

value =

-11.0250

>> 0.5*x'*h*x+f'*x%%%这里写错了

ans =

-11.0250
参考技术A 看警告:
Warning:Large-scale method does not currently solve this problem formulation,
switching to medium-scale method.

以上是关于matlab中用quadprog时为啥求出的极值和自己后来带入极值点的极值不同的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Matlab 的 quadprog 实现软边距 SVM 模型?

请教matlab,已知优化目标函数表达式和约束条件,如何求一个使目标极值的参数对应的一般表达式!

MATLAB 求函数极值的内置函数一览表(实则优化算法函数汇总)

MATLAB 求函数极值的内置函数一览表(实则优化算法函数汇总)

matlab中用左除和逆矩阵法 求方程 为啥答案不一样?

PSO粒子群算法(鸟群算法)计算二元函数极值(C语言实现matlab工具箱实现)