我正在尝试使用此 YouTube 视频中的问题来计算拉格朗日乘数:https://www.youtube.com/watch?v=B0yzLgJ6wn8,但是使用 sympy.solve 不会返回解决方案
我已经用Python编写了这个代码
import sympy as sp
x, y = sp.var('x y')
# constraint
g1 = 2 * x + y - 100
# function
f = 2 * x + 2 * x * y + y
# lambda
g1L = sp.Symbol('g1L')
fin_eqs = []
for i in [x, y]:
fin_eqs.append(
sp.Eq(
sp.simplify(f.diff(i)),
sp.simplify(
g1.diff(i) * g1L
)
)
)
fin_eqs.append(sp.Eq(sp.simplify(g1), 0))
for i in fin_eqs:
print(i)
"""
prints
Eq(2*y + 2, 2*g1L)
Eq(2*x + 1, g1L)
Eq(2*x + y - 100, 0)
which I've confirmed is correct
"""
sp.solve(fin_eqs, x, y) # returns []
但是,x = 25 和 y = 50 并不成立
由于某些原因,要获得结果,您需要省略正在求解方程组的符号。
sp.solve(fin_eqs)
返回{g1L: 51, x: 25, y: 50}