线性代数Python计算:线性变换的值域与核

在这里插入图片描述
设数域 P P P上的向量空间 P n P^n Pn的线性变换 T T T,在某个基下其变换矩阵 A = ( α 1 , α 2 , ⋯   , α n ) \boldsymbol{A}=(\boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\cdots,\boldsymbol{\alpha}_n) A=(α1,α2,,αn) T T T的值域 T ( P n ) T(P^n) T(Pn) α 1 , α 2 , ⋯   , α 1 \boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\cdots,\boldsymbol{\alpha}_1 α1,α2,,α1的生成空间, T T T的核 K ( T ) K(T) K(T) A x = o \boldsymbol{Ax}=\boldsymbol{o} Ax=o的解空间。因此,只要构造出 T T T P n P^n Pn的某个基底下的矩阵 A \boldsymbol{A} A,利用博文《向量组的最大无关组计算》定义的maxIndepGrp函数,计算 α 1 , α 2 , ⋯   , α n \boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\cdots,\boldsymbol{\alpha}_n α1,α2,,αn的最大无关组,就是 T ( P n ) T(P^n) T(Pn)的基底。用博文《线性方程组的通解》定义的mySolve函数,计算 A x = o \boldsymbol{Ax}=\boldsymbol{o} Ax=o的基础解系,就是 K ( T ) K(T) K(T)的基底。
例1 用Python计算在ℝ 4 ^4 4的自然基上矩阵为 A = ( 1 0 2 1 − 1 2 1 3 1 2 5 5 2 − 2 1 − 2 ) ∈ \boldsymbol{A}=\begin{pmatrix}1&0&2&1\\-1&2&1&3\\1&2&5&5\\2&-2&1&-2\end{pmatrix}\in A= 1112022221511352 2 × 2 ^{2\times2} 2×2的线性变换 T T T的值域 T ( T( T( 4 ) ^4) 4)与核 K ( T ) K(T) K(T)

import numpy as np                          		#导入numpy
from fractions import Fraction as F                 #导入Fraction
np.set_printoptions(formatter=                      #设置输出数据格式
                    {'all':lambda x:str(F(x).limit_denominator())})
A=np.array([[1,0,2,1],                      		#设置矩阵A
            [-1,2,1,3],
            [1,2,5,5],
            [2,-2,1,-2]],dtype='float')
r,ind,_=maxIndepGrp(A)                      		#A的列向量最大无关组
print('值域基底:')
print(A[:,ind[:r]])
o=np.array([0,0,0,0]).reshape(4,1)
X=mySolve(A,o)                              		#Ax=o的解集
print('核基底:')
print(X[:,1:])

程序的第5~8行设置线性变换矩阵A。第9行调用maxIndepGrp函数(见博文《向量组的最大无关组计算》)计算矩阵A中列向量的最大无关组,返回A的秩r和表示A中各列调整后的顺序ind,ind[0:r](或简略为ind[:r])为列向量的最大无关组下标。第11行输出A中列向量最大无关组作为值域的基底。第13行调用mySolve函数(见博文《线性方程组的通解》),计算齐次线性方程组 A x = o \boldsymbol{Ax}=\boldsymbol{o} Ax=o的解空间X。回忆X中第1列为零解,基础解系存于X[:,1:]中,第15行作为核的基底输出之。运行程序,输出

值域基底:
[[ 1  0]
 [-1  2]
 [ 1  2]
 [ 2 -2]]
核基底:
[[ -2  -1]
 [-3/2 -2]
 [  1   0]
 [  0   1]]

T ( T( T( 4 ) = { x ∣ x = λ 1 ( 1 − 1 1 2 ) + λ 2 ( 0 2 2 − 2 ) } , λ 1 , λ 2 ∈ ^4)=\{\boldsymbol{x}|\boldsymbol{x}=\lambda_1\begin{pmatrix}1\\-1\\1\\2\end{pmatrix}+\lambda_2\begin{pmatrix}0\\2\\2\\-2\end{pmatrix}\},\lambda_1,\lambda_2\in 4)={xx=λ1 1112 +λ2 0222 },λ1,λ2ℝ, K ( T ) = { x ∣ x = c 1 ( − 2 − 3 2 1 0 ) + c 2 ( − 1 − 2 0 1 ) } , c 1 , c 2 ∈ K(T)=\{\boldsymbol{x}|\boldsymbol{x}=c_1\begin{pmatrix}-2\\-\frac{3}{2}\\1\\0\end{pmatrix}+c_2\begin{pmatrix}-1\\-2\\0\\1\end{pmatrix}\},c_1,c_2\in K(T)={xx=c1 22310 +c2 1201 },c1,c2ℝ。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值