【问题标题】:Is there a way to solve any linear equation and system of linear equations all in one?有没有办法同时解决任何线性方程和线性方程组?
【发布时间】:2021-05-27 07:32:09
【问题描述】:

注意:我是前一阵子做的,从那以后学到了很多东西,足以理解为什么我的要求是不切实际的。在问这个问题之前,我也应该对 sympy 做更多的研究。

我想创建一个程序,您可以在其中输入一个线性方程或线性方程组作为字符串,然后您会得到您输入的变量的值,如下所示:

equation = input('Expression: ')
# Code to solve your linear equation here
print(answer)

为了清楚起见,我希望能够解决诸如 x+5=102x+3y=29 之类的问题,并获得输出分别类似于 "5""4, 7"

我已经尝试搜索多个网站和一些堆栈溢出问题,但我想出的只是使用 numpy 或方法来求解线性方程组的方法,例如 2x+3y=29解决像 x+5=10 这样的正规线性方程,但没有一个可以同时解决。

这是我找到的 3 个答案的列表以及为什么它们没有帮助:

  1. https://www.mybluelinux.com/how-solve-any-linear-equation-in-python/
    • 提供求解正规线性方程组的解法,但不能求解线性方程组
  2. https://stackabuse.com/solving-systems-of-linear-equations-with-pythons-numpy/
    • 求解线性方程组,但不能求解像 x+5=10 这样的线性方程组
  3. 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 的建议。

标签: python math


【解决方案1】:

有很多现有的软件包可以求解线性方程。然而,他们不会做你的标准化工作。您必须首先将现有方程转换为标准形式:增广矩阵。

如果你想接受任意线性方程,那么你必须编写代码来做预处理,比如转

3*x + 10 = y - 5

进入标准格式

 v1  v2   c
(3, -1, -15)

一旦你有了规范形式的每个方程,你就可以将系数和常数传递给现有的包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2018-09-23
    • 2021-12-13
    相关资源
    最近更新 更多