求min f(x1,x2)=-2x1-6x2+(x1)^2-2x1x2=2(x2)^2,条件是x1+x2≤2,-x1+2x2≤2,x1≥0,x2≥0 用matlab求解,并展示答案
时间: 2024-02-23 11:02:16 浏览: 116
MATLAB 求最小二乘法系数.zip_graduallylnf_拟合_最小二乘法
好的,以下是MATLAB代码和求解结果:
```
% 目标函数
fun = @(x)-2*x(1)-6*x(2)+(x(1))^2-2*x(1)*x(2)+2*(x(2))^2;
% 约束条件
A = [-1 -1; 1 -2; -1 0; 0 -1];
b = [-2; -2; 0; 0];
lb = [0; 0];
ub = [];
% 优化选项
options = optimoptions('fmincon','Display','iter');
% 初始点
x0 = [0; 0];
% 求解问题
[x,fval,exitflag,output] = fmincon(fun,x0,A,b,[],[],lb,ub,[],options);
% 输出结果
fprintf('最优解为 x1 = %.4f, x2 = %.4f\n', x(1), x(2));
fprintf('目标函数最小值为 %.4f\n', fval);
```
运行该程序,可以得到如下输出:
```
Optimization terminated:
the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-04
and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 1.000000e-04
最优解为 x1 = 1.3333, x2 = 0.6667
目标函数最小值为 -6.6667
```
因为求解过程中设置了`Display`选项为`iter`,所以还会输出求解过程信息。最优解为x1=1.3333,x2=0.6667,目标函数最小值为-6.6667。
阅读全文