拉格朗日matlab仿真程序,matlab练习程序(二次规划-拉格朗日方法)

最近在看二次规划方法,对于等式约束的二次规划问题,可以使用拉格朗日方法求解。

336f7318919080dbeab3ce33a45569ad.png

d78c4bd65a33cea0e92e05cfdedbc7cb.png

这里代码如下(代码中给了三个例子):

clear all;

close all;

clc;

% min x1^2+2*x2^2+x3^2+x2^2-2*x1*x2+x3

% s.t. x1+x2+x3 = 4

% 2*x1-x2+x3 = 2

%{

H=[2 -2 0;

-2 4 0;

0 0 2];

c = [0 0 1]';

A=[1 1 1;

2 -1 1];

b=[4 2]';

%}

%min 2*x1^2+x2^2+x1*x2-x1-x2

%s.t. x1+x2 = 1

H=[4 1;

1 2];

c=[-1 -1]';

A=[1 1];

b=1;

%min 1.5*x1^2-x1*x2+x2^2-x2*x3+0.5*x3^2+x1+x2+x3

%s.t. x1+2*x2+x3 = 4

%{

H=[3 -1 0;

-1 2 -1;

0 -1 1];

c=[1 1 1]';

A=[1 2 1];

b=4;

%}

invH = inv(H);

S = -inv(A*invH*A');

R = -S*A*invH;

Q = invH-invH*A'*R;

x = -Q*c+R'*b;

[x1,x2]=meshgrid(0:0.02:0.7,0:0.02:1.5);

z1 = 2*x1.^2+x2.^2+x1.*x2-x1-x2;

mesh(x1,x2,z1);

x1 = 0:0.02:0.7;

x2 = -x1 + 1;

hold on;

plot3(x1,x2,zeros(1,length(x1)),'r');

plot3(x(1),x(2),0,'r*')

plot3(x(1),x(2),2*x(1).^2+x(2).^2+x(1).*x(2)-x(1)-x(2),'b*')

结果如下:

718f3db09f568f0b8d79e9cf17f81cba.png

图中红线为约束条件,曲面为待求解问题函数,红点为问题的解,蓝点为二次规划问题最小值所在的位置。

标签:拉格朗,min,0.02,练习,matlab,invH,x2,x3,x1

来源: https://www.cnblogs.com/tiandsp/p/12088929.html

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值