【问题标题】:Solved inputted algebraic equation python求解输入代数方程python
【发布时间】:2021-05-03 18:10:13
【问题描述】:

如果用户输入“y=3x+2”之类的字符串,如何将用户输入中的“x”更改为名为@9​​87654325@ 的 SymPy 符号? 我试过了:

e1 = 'y = 3x+2'
y = parse_expr(e1, evaluate=True)

但是当我尝试解析 e1 时出现错误。

我不想使用正则表达式或将值拆分为单独的变量,因为可能存在完全不同的公式格式。

【问题讨论】:

  • 请从intro tour 重复on topichow to ask。 “告诉我如何解决这个编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后然后就您的算法或技术提出一个具体的问题。 Stack Overflow 无意取代现有的文档和教程。
  • How much research?。许多其他人已经攻击了这个问题。您应该在此处将他们的解决方案纳入您的问题中。

标签: python python-3.x sympy


【解决方案1】:

解析用户字符串后(在处理= 之后)你不再有一个字符串,你有一个 python 表达式,其中是 SymPy 对象。 x 现在将是一个通用符号,就像您分配给变量 x 的符号一样。在这里,我只是在= 上进行拆分,并将左侧和右侧输入Equality 表达式:

>>> from sympy import *
>>> x = Symbol('x')
>>> user = 'y=3*x+2'
>>> y = parse_expr('Eq(%s,%s)' % tuple(user.split('=')))
>>> y
Eq(y, 3*x + 2)
>>> y.subs(x,3)
Eq(y, 11)

在使用solve 求解方程之前,您不需要x 替换为任何内容:

>>> solve(y, x)
[y/3 - 2/3]

您可以阅读solve 文档字符串,了解如何求解多个方程。

您需要了解如何让 parse_expr 识别隐含乘法 - 请注意,在我的示例中,我在 = 的两边都使用了正确的 Python 表达式。

【讨论】:

    【解决方案2】:

    不确定你是否想要这是你所要求的

    修改方程:

    3x-y=-2
    4x-y=2
    
    
        import numpy as np
        a = np.array([[3, -1], [4,-1]])
        b= np.array([-2,2])
        z=np.linalg.solve(a,b)
    

    回答 z =

    array([ 4., 14.])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-20
      • 2013-12-05
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多