线性代数Python计算:线性变换的值域与核
设数域PPP上的向量空间PnP^nPn的线性变换TTT,在某个基下其变换矩阵A=(α1,α2,⋯,αn)\boldsymbol{A}=(\boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\cdots,\boldsymbol{\alpha}_n)A=(α1,α2,⋯,αn)。TTT的值域T(Pn)T(P^n)T(Pn)为α1,α2,⋯,α1\boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\cdots,\boldsymbol{\alpha}_1α1,α2,⋯,α1的生成空间,TTT的核K(T)K(T)K(T)为Ax=o\boldsymbol{Ax}=\boldsymbol{o}Ax=o的解空间。因此,只要构造出TTT在PnP^nPn的某个基底下的矩阵A\boldsymbol{A}A,利用博文《向量组的最大无关组计算》定义的maxIndepGrp函数,计算α1,α2,⋯,αn\boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\cdots,\boldsymbol{\alpha}_nα1,α2,⋯,αn的最大无关组,就是T(Pn)T(P^n)T(Pn)的基底。用博文《线性方程组的通解》定义的mySolve函数,计算Ax=o\boldsymbol{Ax}=\boldsymbol{o}Ax=o的基础解系,就是K(T)K(T)K(T)的基底。
例1 用Python计算在ℝ4^44的自然基上矩阵为A=(1021−121312552−21−2)∈\boldsymbol{A}=\begin{pmatrix}1&0&2&1\\-1&2&1&3\\1&2&5&5\\2&-2&1&-2\end{pmatrix}\inA=⎝⎜⎜⎛1−112022−22151135−2⎠⎟⎟⎞∈ℝ2×2^{2\times2}2×2的线性变换TTT的值域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函数(见博文《线性方程组的通解》),计算齐次线性方程组Ax=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−112)+λ2(022−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\in4)={x∣x=λ1⎝⎜⎜⎛1−112⎠⎟⎟⎞+λ2⎝⎜⎜⎛022−2⎠⎟⎟⎞},λ1,λ2∈ℝ,K(T)={x∣x=c1(−2−3210)+c2(−1−201)},c1,c2∈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\inK(T)={x∣x=c1⎝⎜⎜⎛−2−2310⎠⎟⎟⎞+c2⎝⎜⎜⎛−1−201⎠⎟⎟⎞},c1,c2∈ℝ。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
线性代数Python计算:线性变换的值域与核相关推荐
- 线性代数Python计算导引
线性代数是深度学习的数学基础之一,理论完备,方法经典.Python是当下AI系统首选开发工具,易学好用.教学中攒下两者结合的多个课题,覆盖大学理工科<线性代数>课程内容,写成博文以飨读者. ...
- 线性代数Python计算:向量的模及向量间的夹角
numpy的dot函数计算两个向量α\boldsymbol{\alpha}α和β\boldsymbol{\beta}β的内积: dot(a,b)\text{dot(a,b)}dot(a,b) 两个参数 ...
- 线性代数Python计算:向量空间坐标变换
向量空间中两组基AAA和BBB之间相互线性表示构成的矩阵为过渡阵.若两组基中之一为自然基,譬如AAA为自然基,则基BBB的各向量在自然基下的坐标即构成基AAA到基BBB的过渡阵P\boldsymbol ...
- 线性代数Python计算:向量组的最大无关组计算
对给定的mmm-维向量组 α1=(a11a21⋮am1),α2=(a12a22⋮am2),⋯,αn=(a1na2n⋮amn)\boldsymbol{\alpha}_1=\begin{pmatrix}a ...
- 如何用python计算函数的值域_(Max第一篇)Python基础代数运算大全
@[TOC](目录) 1. 基础运算 1.1 运算代码表格 python中的基本运算符的使用是最基本的内容,需要把每一个运算所使用的符号记住,会对之后的编程有很大的作用 符号 定义 + Additio ...
- 线性代数Python计算:Python的布尔代数
设B={0,1}B=\{0,1\}B={0,1},定义BBB上的或.与.非运算如下 构成布尔代数(B,∨,∧,¬)(B,\vee,\wedge,\neg)(B,∨,∧,¬). Python中所有的关系 ...
- 线性代数Python计算:消元法与矩阵初等变换
对线性方程组 {a11x1+a12x2+⋯+a1nxn=b1a21x1+a22x2+⋯+a2nxn=b2⋯⋯⋯am1x1+am2x2+⋯+amnxn=bn\begin{cases}a_{11}x_1+ ...
- 线性代数Python计算:Python数系
Python作为计算机程序设计语言,受计算机物理结构的限制,无法表示出完整的整数集合ℤ.有理数集合ℚ.实数集合ℝ及复数集合ℂ.然而,Python所模拟的ℤ.ℚ.ℝ和ℂ在大多数实际应用中可以满足需求. ...
- 线性代数Python计算:线性方程组的通解
对齐次线性方程组 {a11x1+a12x2+⋯+a1nxn=0a21x1+a22x2+⋯+a2nxn=0⋯⋯⋯am1x1+am2x2+⋯+amnxn=0(1)\begin{cases}a_{11}x_ ...
最新文章
- RHEL6搭建本地yum源
- Lattice diamond IPexpress 例子 - PLL
- CodePush使用调研
- 正则化与L0、L1、L2范数略解
- C++ 字符串编程训练1
- N次剩余(详解+例题+代码)
- ORA-27300错误
- 基于ZYNQ FPGA实现数据采集与传输系统设计
- pythonmap和list_(Python)list的内建函数 filter(), map(), 和 reduce()
- python学习之面向对象学习进阶
- linux查找启动程序的路径
- html透明颜色代码,CSS背景颜色透明
- 无线通信学习笔记(三)
- bugkuCTF—杂项—旋转跳跃
- js将html转换成string
- 我新鲜出炉的 plist 图集拆图工具!github
- 忘记Jenkins管理员密码的解决办法
- windows上配置深度学习(李沐-动手学深度学习)
- “盘古”走向产业山峦,打开了一串AI落地的新脑洞
- GameFramework框架——使用过程中遇到的问题