评论里说得差不多了基本上是鈳以对角化=存在某组基,使得这个线性变换在这组基的每一个向量上都是伸缩变换(复向量上的复“伸缩变换”≈带某种意义上非刚性但依然线性的伸缩的旋转下简称为带伸缩的旋转);不能对角化=找不到这样的一组基。
单独写一个答案的原因是我做了个二维线性变换的┅个带交互的可视化(/)形象生动地表现了平面上格点经过变换后的样子。请于安装 后运行截几个图:
单位变换,什么也不发生(注意箭头的长度以便与下文作比较)
箭头表示特征向量(=独立伸缩)的方向,长度表示压缩或拉伸的程度(跟第一张图的长度比较短了=壓缩,长了=拉伸)
注意这时候发生了:它既不能表示为某两个方向的独立伸缩也不能表示为带伸缩的旋转。图中不从原点出发的箭头表礻切变的方向与大小
另一个方向的切变,注意y方向上有拉伸
产生这种变换最简单的方法是保持a和d一致,然后令b或c为零相应地令c或b非零。如果你熟悉 Jordan 标准型这当然是显然的
箭头终点的角度表示旋转的角度(两个方向,挑你觉得合理的)
旋转的同时“拉伸”了(箭头終点的模比箭头起点的模大表示拉伸,小则表示压缩)那个“非刚性但依然线性”比较难用箭头表示,请根据格子的变形体会一下欢迎提供改进意见。
另外这个演示其实是有 bug 的但如果你是瞎拖 abcd 的话,发生的概率接近于0(因为)所以不打算改。