这个多项式的极值如何用Matlab编程?

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:01:11
Y1 = 53.3 + 0.625*X1 + 2.15*X2 + 3.875*X3 - 4.525*X1*X1
+ 0.6*X1*X2 + 1.9*X1*X3 - 5.225*X2*X2 + 2.05*X2*X3
- 1.075*X3*X3
方程如上,X1 X2 X3 的取值范围均为[1 -1]之间,请用matlab编程计算极大值和极小值。谢谢!!要求写精准了,本人新手,希望能直接粘贴到软件里就直接出结果。

楼上的fmincon正解,结果也对。
三楼的方法没错,但是存在两个问题,所以结果不对
(1)矩阵H中0.85应为0.95
(2)对于quadprog的含义记错啦,前面有个系数1/2.
所以,将0.85改为0.95后,还得有H=2*H
然后就没错啦

对于楼上的,我想说的是,你可以用f=inline()来写入函数,省的麻烦。当然长远打算,还是用M-file来写更有意义。

当然我的建议是楼主对于两种方法都好好看看,至于那个好,个人意见保留

如果你也在学习matlab,可以一起探讨,我也刚起步

这个简单,不知道你能不能看懂:
1,求最小值:

>> H=[-4.525,0.3,0.85;0.3,-5.225,1.025;0.85,1.025,-1.075];f=[0.625;2.15;3.875];
>> lb=[-1;-1;-1];ub=[1;1;1];x0=[0;0;0];
>> [x,fval]=quadprog(H,f,[],[],[],[],lb,ub,x0)
Optimization terminated: relative function value changing by
less than OPTIONS.TolFun.

x =

-1.0000e+000
-1.0000e+000
-1.0000e+000

fval =

-9.8875e+000
>> ymin=fval+53.3

ymin =

4.3413e+001
2.求最大值
>> [x,fval]=quadprog(-H,-f,[],[],[],[],lb,ub,x0)
Optimization terminated: relative function value changing by
less than OP