Skip to content

不定阶矩阵模块 #75

@HelloMrGeorge

Description

@HelloMrGeorge

基本的不定阶矩阵

class mn_matrix

不定阶矩阵(即中间含省略号的矩阵)的基类,不建议直接用该类的构造方法

Source: lam/mnmatrix/mnmatrix.py


properties

  • m: 矩阵最后一行的序号
  • n: 矩阵最后一列的序号

get(x, y)

获取矩阵第x行,第y列的元素

Parameter

  • x: Expr, Number, Symbol
  • y: Expr, Number, Symbol

x, y是获取元素的坐标,行和列的序号以1开始计数,x,y可以是sympy中的Expr, Number, Symbol类。
如要获取倒数第一行,倒数第一列的元素,可以参考以下语句

mat = corner_matrix(tl, tr, bl, br, square=True)
element = mat.get(mat.m, mat.n)

以此类推,倒数第二行可以表示为mat.m-1


class corner_matrix(mn_matrix)

Source: lam/mnmatrix/cornermatrix.py

一个可定制的不定阶矩阵,该类适用于辅助生成latex代码,不需要严谨的数学逻辑。corner_matrix继承自mn_matrix,包含了mn_matrix所有的成员变量和方法。

在数学文章中,一般的不定阶矩阵只有四个角落的元素会显示,所以该类只开放了编辑矩阵四个角落元素的功能。以下面的矩阵为例,A,B,C,D四个位置的元素是可编辑的内容,A,B,C,D可以不单是一个元素,还可以视为整个矩阵的一个分块矩阵。

$$ \left[\begin{matrix} A & \cdots & B\\ \vdots & \ddots & \vdots\\ C & \dots & D \end{matrix}\right] $$


corner_matrix(tl, tr, bl, br, square=True)

用四个角落的分块矩阵构造一个不定阶矩阵

Parameter

  • tl: MutableDenseMatrix
  • tr: MutableDenseMatrix
  • bl: MutableDenseMatrix
  • br: MutableDenseMatrix
  • square: bool

tl, tr, bl, br分别代表一个矩阵的左上角,右上角,左下角,右下角的元素,即A,B,C,D四个分块矩阵,这四个必须是MutableDenseMatrix类,即便他们是一个纯粹的数字。square用于标志该矩阵是否是方阵,square=True时,不定阶矩阵将以方阵的形式生成。


properties

  • tl: 矩阵左上角可显示的分块
  • tr: 矩阵右上角可显示的分块
  • bl: 矩阵左下角可显示的分块
  • br: 矩阵右下角可显示的分块

继承自mn_matrix的成员变量不做赘述


get(x, y)

该方法继承自mn_matrix类,也没有修改父类的任何内容


线性运算

class scalar_mul_matrix(mn_matrix):

Source: lam/mnmatrix/mnmatrix.py

用于实现矩阵数乘的类,scalar_mul_matrix继承自mn_matrix,包含了mn_matrix所有的成员变量和方法,故之后重复的成员变量和方法不在叙述。


scalar_mul_matrix(mat, k):

构造矩阵mat和标量k相乘得到的矩阵对象

Parameter

  • mat: mn_matrix
  • k: Expr, Number, Symbol

class add_matrix(mn_matrix):

Source: lam/mnmatrix/mnmatrix.py

用于实现矩阵加法的类,add_matrix继承自mn_matrix,包含了mn_matrix所有的成员变量和方法。


add_matrix(ma, mb):

构造矩阵ma和矩阵mb相加得到的矩阵对象

Parameter

  • ma: mn_matrix
  • mb: mn_matrix

初等变换

class ele_row_tran_mn(mn_matrix):

Source: lam/mnmatrix/eletran.py

该类实现了矩阵初等行变换:交换m,n行

ele_row_tran_mn继承自mn_matrix,包含了mn_matrix所有的成员变量和方法。


ele_row_tran_mn(mat, m_ind, n_ind):

构造矩阵mat交换自身m_ind,n_ind行后得到的矩阵对象

Parameter

  • mat: mn_matrix
  • m_ind: Expr, Number, Symbol
  • n_ind: Expr, Number, Symbol

class ele_row_tran_km(mn_matrix):

Source: lam/mnmatrix/eletran.py

该类实现了矩阵初等行变换:m行乘k

ele_row_tran_km继承自mn_matrix,包含了mn_matrix所有的成员变量和方法。


ele_row_tran_km(mat, k, m_ind):

构造矩阵mat的第m_ind行乘k后得到的矩阵对象

Parameter

  • mat: mn_matrix
  • k: Expr, Number, Symbol
  • m_ind: Expr, Number, Symbol

class ele_row_tran_kmn(mn_matrix):

Source: lam/mnmatrix/eletran.py

该类实现了矩阵初等行变换:m行乘k

ele_row_tran_kmn继承自mn_matrix,包含了mn_matrix所有的成员变量和方法。


ele_row_tran_kmn(mat, k, m_ind, n_ind):

构造矩阵mat的第m_ind行乘k后加到n_ind行得到的矩阵对象

Parameter

  • mat: mn_matrix
  • k: Expr, Number, Symbol
  • m_ind: Expr, Number, Symbol
  • n_ind: Expr, Number, Symbol

同样的,也有对应的初等列变换,它们分别是ele_row_tran_mn, ele_row_tran_km, ele_row_tran_kmn这三个类,用法和行变换相同。


单例的矩阵

class id_matrix(mn_matrix)

Source: lam/mnmatrix/lammatrix

定义了单位矩阵,继承自mn_matrix,用于调试和后续拓展。


id_matrix():

构造一个单位矩阵。


class tridiagonal_matrix

Source: lam/mnmatrix/lammatrix

定义了三对角矩阵,即主对角线和次对角线不为0的对称矩阵。


tridiagonal_matrix(diag, diag2nd):

构造一个三对角矩阵。diag, diag2nd分别指主对角,次对角上的元素

Parameter

  • diag: Expr, Number, Symbol
  • diag2nd: Expr, Number, Symbol

class circ_matrix

Source: lam/mnmatrix/lammatrix

定义了一个典型的循环矩阵,即1到n的序列在每行不断循环的矩阵。


circ_matrix():

构造一个典型的循环矩阵。


Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions