python拉格朗日乘子法求解不等式约束下的极值例子

"""
拉格朗日不等式约束
例子:求最小值:f(x)=x1+x2
约束:x1**2-x2<=0
-x1<=0
引入松弛变量z1,z2
"""
from sympy import *
x1,x2,k1,k2,z1,z2= symbols('x1,x2,k1,k2,z1,z2')
#构造拉格朗日等式
f=x1+x2
g1=x1**2-x2+z1**2
g2=-x1+z2**2
# g2=x1**2+x2**2-1+z2**2
L=f+k1*g1+k2*g2

dx1=diff(L,x1)
dx2=diff(L,x2)
dk1=diff(L,k1)
dk2=diff(L,k2)
dz1=diff(L,z1)
dz2=diff(L,z2)

"""
sympy 的 solve 函数本身并不直接支持在求解过程中加入变量的上下限(即边界条件或约束)。
solve 函数主要用于求解代数方程,它不考虑变量的取值范围。
"""
#求出多个个变量解
m= solve([dx1,dx2,dk1,dk2,dz1,dz2],[x1,x2,k1,k2,z1,z2],dict=True)
print(m)
#{k1: 1, k2: 1, x1: 0, x2: 0, z1: 0, z2: 0}为合理结果

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Conan-Sherry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值