【问题标题】:Solving 1 equation based on input variable根据输入变量求解 1 个方程
【发布时间】:2020-01-12 10:39:26
【问题描述】:

例如,矩形框的体积可以计算为 V = L * W * H

假设我们知道 V、L、W,那么我们可以求解 H。

假设我们知道 V、H、W,那么我们可以求解 V。

假设我们知道 L、W、H,那么我们可以求解 V。 等等

有没有办法在 python 中解决(我目前正在尝试 Sympy)根据给定的输入来解决它? 当然我可以使用 ifs 的情况,但我需要编写 4 个方程来求解,这是一个简短的方程。

欢迎提出任何建议。

亲切的问候, 伊万

【问题讨论】:

    标签: sympy equation


    【解决方案1】:

    这个answer to a similar question 可以帮助你。基本上,您可以定义一般方程,获取除一个变量以外的所有变量的值,将它们代入一般方程,然后将该表达式传递给求解(或者只传递所有方程来求解,如下所示):

    from sympy import Eq, solve, Tuple, S
    from sympy.abc import v,l,w,h
    eq = Eq(v, l*w*h)
    variables = eq.free_symbols
    got = []
    vs = ', '.join(([str(i) for i in variables]))
    print('enter 3 known values of {%s} as equality, e.g. h=2' % vs)
    for i in range(3):
        if 0:  # change to 1 to get real input
            e = input()
        else:
            e = ['v=20','w=5','h=1'][i]
        got.append(Eq(*[S(j) for j in e.split('=')]))
    x = ({v,l,w,h} - Tuple(*got).free_symbols).pop()
    ans = solve([eq]+got)
    print('consistent values: %s' % ans)
    print('%s = %s' % (x.name, ans[0][x])
    

    给予

    enter 3 known values of {v, h, w, l} as equality, e.g. h=2
    consistent values: [{v: 20, h: 1, w: 5, l: 4}]
    l = 4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多