【发布时间】:2021-05-27 07:32:09
【问题描述】:
注意:我是前一阵子做的,从那以后学到了很多东西,足以理解为什么我的要求是不切实际的。在问这个问题之前,我也应该对 sympy 做更多的研究。
我想创建一个程序,您可以在其中输入一个线性方程或线性方程组作为字符串,然后您会得到您输入的变量的值,如下所示:
equation = input('Expression: ')
# Code to solve your linear equation here
print(answer)
为了清楚起见,我希望能够解决诸如 x+5=10 或 2x+3y=29 之类的问题,并获得输出分别类似于 "5" 或 "4, 7"。
我已经尝试搜索多个网站和一些堆栈溢出问题,但我想出的只是使用 numpy 或方法来求解线性方程组的方法,例如 2x+3y=29解决像 x+5=10 这样的正规线性方程,但没有一个可以同时解决。
这是我找到的 3 个答案的列表以及为什么它们没有帮助:
-
https://www.mybluelinux.com/how-solve-any-linear-equation-in-python/
- 提供求解正规线性方程组的解法,但不能求解线性方程组
-
https://stackabuse.com/solving-systems-of-linear-equations-with-pythons-numpy/
- 求解线性方程组,但不能求解像 x+5=10 这样的线性方程组
-
Is there a python module to solve linear equations?
- 与 2 的原因相同,大多数答案建议使用 NumPy,其他答案也没有解决我的问题。
我还搜索了一些其他网站和堆栈溢出问题,但由于与我列出的 3 个示例相同的原因,它们也不起作用。
【问题讨论】:
-
在您的最后一个链接中,一些答案提到了 sympy。这对你来说真的不够吗?不过,我必须同意 Prune 的回答。 “x + 5 = 10”或“2x + 3y = 29”不是合法的 Python 语法。您需要将这些字符串转换为您的方法所需的任何格式(如您的第一个链接中所做的那样)。假设您可以使用
eval(),那么使用 sympy 可以省去很多麻烦。 -
为什么不使用numpy??
-
@Reti43,我对 sympy 进行了更多研究,我认为可以!我以为由于某种原因它不起作用(我不记得了,因为我没有把它写下来),但我错了!感谢您的评论。
-
如果您正在寻找仅是整数的解,则诸如
2*x + 3*y = 29之类的方程称为丢番图方程,并且此类方程有专门的方法。您可能有兴趣阅读相关内容。顺便说一句,我赞同 sympy 的建议。