你好,想向你咨询用matlab求多元二次函数最大值的问题。希望能够得到你的帮助,非常感谢! 10
这是二次规划,用quadprog函数解决。不过要首先把目标函数前加负号,然后写成标准的二次型样式。这是因为quadprog求解的是最小值。
先直接定义x1=50:500;x2=50:500;x3=50:500;x4=50:500;x5=50:500,然后定义y=2842.13+1.62*x1-4.89*x2-5.79*x3
+3.28*x4-2.20*x5+0.001*x1.^2+0.003*x2.^2+0.004*x3.^2+0.003*x4.^2+0.001*x5.^2-0.004*x1.*x2-0.0008*x1.*x3+0.004*x1.*x4
-0.001*x1.*x5+0.008*x2.*x3-0.003*x2.*x4+0.004*x2.*x5-0.008*x3.*x4+0.0008*x3.*x5-0.004*x4.*x5此处请注意,x1,x2,x3,x4,x5之间的互乘和自身的2次方均用用“ .* ”,即点乘最后,max(y),即可得出最大值。
注意:
“变量”不同于“未知数”,不能说“二次函数是指未知数的最高次数为二次的多项式函数”。“未知数”只是一个数(具体值未知,但是只取一个值),“变量”可在一定范围内任意取值。
在方程中适用“未知数”的概念(函数方程、微分方程中是未知函数,但不论是未知数还是未知函数,一般都表示一个数或函数——也会遇到特殊情况),但是函数中的字母表示的是变量,意义已经有所不同。从函数的定义也可看出二者的差别。
不过要首先把你的目标函数前加负号,然后写成标准的二次型样式。这是因为quadprog求解的是最小值。
具体做法参考:
http://wenku.baidu.com/link?url=3ecoMLdwm0_pBHbL87_ZzVCW69OCwMimqWKqKk28r_Wo-9O1P8hkvW-hMIa5C-KT9ToQ8D7Puwr_IaS-qv9NcjGUp9GmWQqk9mQPOgY9l3y
2014-02-26
然后定义y=2842.13+1.62*x1-4.89*x2-5.79*x3+3.28*x4-2.20*x5+0.001*x1.^2+0.003*x2.^2+0.004*x3.^2+0.003*x4.^2+0.001*x5.^2-0.004*x1.*x2-0.0008*x1.*x3+0.004*x1.*x4-0.001*x1.*x5+0.008*x2.*x3-0.003*x2.*x4+0.004*x2.*x5-0.008*x3.*x4+0.0008*x3.*x5-0.004*x4.*x5
此处请注意,x1,x2,x3,x4,x5之间的互乘和自身的2次方均用用“ .* ”,即点乘
最后,max(y),即可得出最大值