Featured image of post 250908

250908

今天的学习

矩阵论部分

关于线性空间的判定:

在证明是线性空间时需要列出8条定义,但证明不是的时候基本只要看对加法、数乘不封闭或无零元即可

关于数乘:常数是额外指定的,通常为实数,不是线性空间里的内容

例:所有n次多项式关于普通多项式的加法和数乘构成的空间$V$:

设$A = x^n, B = -x^n$,显然$A, B \in V$,但$A+B=0 \notin V$,因此对加法不封闭,不是线性空间

求$A^{-1}B$的时候,设$A^{-1}B = X$,则$AX = B$,所以可以写出增广矩阵$[A|B]$然后行变换成为$[E|A^{-1}B]$求出结果。

代码部分

遵循老师“有计算机就别手算矩阵”的教诲,寻找了计算机计算矩阵的方式

使用numpy可求逆矩阵

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import numpy as np

def matrix_invert(A: np.ndarray):
    try:
        A_inv = np.linalg.inv(A)
        print("\n逆矩阵:")
        print(A_inv)
    except np.linalg.LinAlgError:
        print("\n该矩阵不可逆")

A = np.array([  [1, 2, 1],
                [2, 4, 0],
                [3, 7, 2],])
matrix_invert(A)

逆矩阵:
[[ 4.   1.5 -2. ]
 [-2.  -0.5  1. ]
 [ 1.  -0.5  0. ]]

使用sympy可得行最简形矩阵+主元列

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sympy as sp

def matrix_simplify(A: np.ndarray):
    A_sym = sp.Matrix(A)  # 转换成 sympy 矩阵
    rref_matrix, pivot_cols = A_sym.rref()
    print("\n行最简形矩阵:")
    sp.pprint(rref_matrix)
    print("主元列:", pivot_cols)

A = np.array([[1, 1, -1, -1, 2, 0, -2, 1],
              [2, -1, 2, -1, 1, 1, 1, 3],
              [-1, 1, 1, 0, 0, 2, 1, 1],
              [0, 1,  1, 1, 1, 2, 2, 2]])
matrix_simplify(A)

行最简形矩阵:
⎡1  0  0  0  1  0  0  1⎤
⎢                      ⎥
⎢0  1  0  0  1  1  0  1⎥
⎢                      ⎥
⎢0  0  1  0  0  1  1  1⎥
⎢                      ⎥
⎣0  0  0  1  0  0  1  0⎦
主元列: (0, 1, 2, 3)

没了

呜呜呜

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
只有亲眼去看,才能感受到世界的美
使用 Hugo 构建
主题 StackJimmy 设计