smypy 未使用solve返回解决方案

问题描述 投票:0回答:1

我正在尝试使用此 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 并不成立

python sympy
1个回答
0
投票

由于某些原因,要获得结果,您需要省略正在求解方程组的符号。

sp.solve(fin_eqs)
返回
{g1L: 51, x: 25, y: 50}

© www.soinside.com 2019 - 2024. All rights reserved.