numpy - 将方程的 txt 文件格式化为相同格式,然后在 Python 中操作它们以进行线性代数计算

标签 numpy formatting matplotlib linear-algebra python-3.2

我正在寻找一种在 Python 3.2 中转换方程的通用方法。我最近才开始使用它,并偶然发现了我以前的一些 MATLAB 作业。我可以在 MATLAB 中计算这个值,但 pylab 对我来说仍然有点神秘。

因此,我有一个方程文本文件,我正在尝试将其转换为 A x = b 的相同形式,然后在 PYLAB 中解决一些与它们相关的线性代数问题。

文本文件“equations.txt”包含以下格式的线性方程组:

-38 y1  +  35 y2  +  31 y3  = -3047

11 y1  + -13 y2  + -34 y3  = 784

34 y1  + -21 y2  +  19 y3  = 2949

等等

该文件包含四组方程的方程,每组都有不同数量的变量。每组方程都具有所示的精确形式(上面的 3 个示例),每组方程之间有一个空行。

我想编写一个程序来读取文件中的所有方程组,将方程组转换为矩阵方程A x = b,并求解向量x

我的方法非常“MATLABy”,这是一个问题,因为我希望能够编写一个程序来求解所有变量。

我尝试将单个方程作为文本行读取,去掉末尾的回车符,并在 = 符号处分割线,因为我们知道分割中的第二个元素是等式的右边,进入向量b

分割中的第一个元素是您必须获取 A 矩阵中的系数的部分。如果你在空白' '处分割它,你会得到一个像

这样的列表
['-38', 'y1', '+', '35', 'y2', '+', '31', 'y3']

现在请注意,您可以提取每个第三个元素并获取进入矩阵A的系数。
部分答案是:

y1 = 90; c2 = 28; x4 = 41; z100 = 59

我试图操纵它们来给出第一个方程组的解 y1, ..., y3 的条目总和,即解条目的总和第二个方程组的 c1, ..., c6,第三个方程组的解 x1, ..., x13 的项之和,以及第四个方程组的解 z1, ..., z100 项的总和。

就像我说的 - 我可以在 MATLAB 中执行此操作,但不能在 Python 中执行此操作,因此我可能以错误的方式实现此目的,但这就是我到目前为止所拥有的:

import pylab
f = open('equations.txt', 'r')

L=f.readlines()

list_final = []

for line in L:
line_l = line.rstrip()
list_l = line_l.split(";")
list_l = filter(None, list_l)

for expression in list_l:

并以

结尾
f.close()

这只是我尝试将方程格式化为看起来相同的尝试。我意识到这不是很多,但我真的希望有人能开始我的工作,因为尽管我了解一些 Python,但我通常不会将它用于数学,因为我有 MATLAB。

我认为这对于我们许多拥有 MATLAB 经验但没有 pylab 经验的人来说可能很有用。 你会如何解决这个问题?谢谢!

最佳答案

对于您的示例格式,通过numpy.loadtxt()处理它非常容易:

import numpy as np
data = np.loadtxt("equations.txt", dtype=str)[:, ::3].astype(np.float)
a = data[:, :-1]
b = data[:, -1]
x = np.linalg.solve(a, b)

步骤是:

关于numpy - 将方程的 txt 文件格式化为相同格式,然后在 Python 中操作它们以进行线性代数计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15983553/

相关文章:

debugging - Julia 有类似 `dbg!` 的宏吗?

asp.net-mvc - 具有自定义格式的 ASP.NET MVC ViewModel 映射

python - 使用 matplotlib 寻找角度

python - 带 basemap 的 Matplotlib 子图动画

python - numpy : indexes too big giving sometimes exceptions, 有时不是

python - 多重矩阵乘法

python - 获取python中2个数据帧之间的差异数

python - 当逐行应用于 pandas DataFrame 中的 numpy.int 列时,整数格式规范 'd' 会产生 ValueError

Python matplotlib 图例如何减少帧左边缘和标记之间的距离

python-2.7 - 在numpy中使用python数值求解器求解方程