Python符号矩阵初步

发布时间:2023年12月28日

创建矩阵

通过sympy.matrices可以创建矩阵

imprort sympy
from sympy.interactive.printing import init_printing
from sympy.matrices import Matrix
M = Matrix([[1,0,0], [0,0,0]])
sympy.latex(M)
sympy.latex(Matrix([M, (0, 0, -1)]))
sympy.latex(Matrix([[1, 2, 3]]))
sympy.latex(Matrix([1, 2, 3]))

效果如下

[ 1 0 0 0 0 0 ] [ 1 0 0 0 0 0 0 0 ? 1 ] [ 1 2 3 ] [ 1 2 3 ] \left[\begin{matrix}1 & 0 & 0\\0 & 0 & 0\end{matrix}\right]\quad \left[\begin{matrix}1 & 0 & 0\\0 & 0 & 0\\0 & 0 & -1\end{matrix}\right]\quad\left[\begin{matrix}1 & 2 & 3\end{matrix}\right]\quad \left[\begin{matrix}1\\2\\3\end{matrix}\right] [10?00?00?] ?100?000?00?1? ?[1?2?3?] ?123? ?

符号矩阵在索引上和数值矩阵区别不大,但Matrix有一个非常霸道的创建方法,示例如下,即可根据匿名函数来确定对应元素的值。

m = Matrix(3,4, lambda i,j : i**2+j**2)
sympy.latex(m)

[ 0 1 4 9 1 2 5 10 4 5 8 13 ] \left[\begin{matrix}0 & 1 & 4 & 9\\1 & 2 & 5 & 10\\4 & 5 & 8 & 13\end{matrix}\right] ?014?125?458?91013? ?

特殊矩阵

除了Matrix,sympy.matrices还提供了单位矩阵eye;全零矩阵zeros;全1矩阵ones,对角矩阵diag等特殊矩阵的生成方法,这些方法相对来说比较简单,故不作示范。

from sympy.matrices import eye, zeros, ones, diag

randMatrix可生成随机矩阵,其参数包括

  • r,c 行数和列数,c默认为None,此时生成KaTeX parse error: Undefined control sequence: \timesr at position 2: r\?t?i?m?e?s?r?的方阵
  • min, max 随机数的最小值和最大值,默认为0和99
  • seed 随机数种子
  • symmetric 为True时返回一个对称矩阵
  • percent 默认为100,表示不为0的元素的百分比
  • prng 默认为None,为随机数生成器

示例如下

from sympy.matrices import randMatrix
m = randMatrix(3, symmetric=True, percent=50)
print(sympy.latex(m))

[ 24 37 0 37 59 42 0 42 0 ] \left[\begin{matrix}24 & 37 & 0\\37 & 59 & 42\\0 & 42 & 0\end{matrix}\right] ?24370?375942?0420? ?

运算

Matrix重载了部分运算符,支持矩阵和矩阵之间的加减法,以及矩阵乘法和数乘,下面列举的表达式都是符合条件的,但不支持矩阵和数值之间的加减法。

m + m
m - m
m * 2
m * m.T # 注意矩阵乘法需要照顾彼此的shape
'''
Matrix([
[ 98, 112, 154],
[112, 130, 184],
[154, 184, 274]])
'''

此外,通过调用applyfunc方法,可以对矩阵的单个元素进行函数操作

y = m.applyfunc(lambda x : x**2)
print(sympy.latex(y))

[ 0 1 16 81 1 4 25 100 16 25 64 169 ] \left[\begin{matrix}0 & 1 & 16 & 81\\1 & 4 & 25 & 100\\16 & 25 & 64 & 169\end{matrix}\right] ?0116?1425?162564?81100169? ?

文章来源:https://blog.csdn.net/m0_37816922/article/details/135150886
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。