首页 > 解决方案 > 带有 Sympy 和 Scipy/Numpy 的矩阵的三角系统

问题描述

我刚刚开始自学线性代数,并且正在尝试自学一些基本的 Python 模块。如果可以的话,我决定学习 Scipy 和 Numpy 的线性代数组件,以及一些 Sympy。

我遇到了以下练习:

矩阵

我已经手动解决了第一步(我相信):

解决方案

我想使用 Numpy 和/或 Scipy 以及 Sympy 来解决这个问题。我今天花了一些时间试图弄清楚使用什么结构来解决这个问题(显然是 Numpy 数组,然后是 Sympy 矩阵),但我不确定如何将其转换为三角形数组。我在求解方面看到了很多,但没有什么能简单地产生上三角系统。

是否有人对使用其中一个或所有这些软件包进行此操作有任何建议?

标签: pythonnumpyscipysympylinear-algebra

解决方案


我不确定您到底想做什么,但这就是您如何在 SymPy 中执行一些基本的线性代数例程:

In [1]: import sympy as sym

In [2]: M = sym.Matrix([[2,-3,0,3],[4,-5,1,7],[2,-1,-3,5]])

In [3]: M
Out[3]: 
⎡2  -3  0   3⎤
⎢            ⎥
⎢4  -5  1   7⎥
⎢            ⎥
⎣2  -1  -3  5⎦

In [4]: M.echelon_form()
Out[4]: 
⎡2  -3   0   3⎤
⎢             ⎥
⎢0  2    2   2⎥
⎢             ⎥
⎣0  0   -20  0⎦

In [5]: M.rref()
Out[5]: 
⎛⎡1  0  0  3⎤           ⎞
⎜⎢          ⎥           ⎟
⎜⎢0  1  0  1⎥, (0, 1, 2)⎟
⎜⎢          ⎥           ⎟
⎝⎣0  0  1  0⎦           ⎠

In [9]: sym.linsolve(M)
Out[9]: {(3, 1, 0)}

推荐阅读