线性代数几何直觉速成3Blue1Brown课程精华Matlab实战演示理工科学生常陷入会算不会想的困境——能熟练计算行列式却说不清其几何意义能推导特征值公式却画不出其空间变换。本文融合3Blue1Brown的视觉化教学精髓与Matlab交互实验带你用动态视角重构线性代数认知体系。我们将通过可修改的代码片段让抽象概念在三维空间中动起来。1. 向量从静态坐标到动态变换1.1 向量的三重人格物理视角空间中的箭头长度与方向编程视角有序数字列表[x y z]数学视角满足加法和数乘规则的任意对象% 绘制二维向量演示 quiver(0,0,3,2,LineWidth,2,MaxHeadSize,1); hold on quiver(0,0,-1,4,Color,r,LineWidth,2); axis equal; grid on title(向量加法几何演示);提示在Matlab中运行上述代码拖动向量端点观察三角形法则的动态演示1.2 基变换的视觉魔术当选择非正交基时同一向量在不同坐标系下呈现完全不同的数字表达标准正交基自定义基 (30°倾斜)[3,2][2.8, 0.4]% 基变换可视化 theta pi/6; A [cos(theta) -sin(theta); sin(theta) cos(theta)]; v_standard [3;2]; v_custom A\v_standard; % 求新坐标系下的坐标2. 矩阵空间变形的密码本2.1 线性变换的双重解读每个2×2矩阵都是对空间的改造说明书第一列î变换后的位置第二列ĵ变换后的位置典型变换矩阵库变换类型矩阵几何效果旋转[0 -1; 1 0]逆时针旋转90°剪切[1 1; 0 1]水平方向倾斜45°缩放[2 0; 0 0.5]x轴拉伸2倍y轴压缩50%% 交互式变换演示 function visualize_transform(M) [x,y] meshgrid(-5:5,-5:5); uv M * [x(:); y(:)]; quiver(x,y,uv(1,:),uv(2,:)); end2.2 行列式的空间压缩率行列式绝对值表示面积缩放倍数符号暗示空间取向M [1 2; 3 4]; det_M det(M); % 返回-2 → 面积翻倍且镜像翻转注意当det0时意味着空间被压缩到低维如三维→二维3. 特征向量变换中的不动轴3.1 寻找空间变换的黄金分割线特征向量在变换中保持方向不变仅被特征值缩放A [3 1; 0 2]; [V,D] eig(A); % V包含特征向量D为特征值对角阵 % 动态展示特征向量 t linspace(0,2*pi,100); circle [cos(t); sin(t)]; transformed A*circle; plot(transformed(1,:), transformed(2,:)); hold on; quiver(0,0,V(1,1),V(2,1),r);3.2 对角化的降维打击将矩阵转换到特征基坐标系会得到对角矩阵原始矩阵 $$ \begin{bmatrix} 3 1 \ 0 2 \end{bmatrix} $$对角化后 $$ \begin{bmatrix} 3 0 \ 0 2 \end{bmatrix} $$% 对角化验证 inv(V)*A*V % 应输出对角矩阵4. 高维应用从图形处理到数据分析4.1 三维旋转的轴角表示任何三维旋转都可分解为绕特征向量的旋转% 绘制立方体旋转动画 cube [-1 -1 -1; 1 -1 -1; 1 1 -1; -1 1 -1; -1 -1 1; 1 -1 1; 1 1 1; -1 1 1]; axis([-2 2 -2 2 -2 2]); view(3); for theta 0:0.1:2*pi R [cos(theta) -sin(theta) 0; sin(theta) cos(theta) 0; 0 0 1]; rotated R*cube; cla; patch(rotated(1,[1 2 3 4]),rotated(2,[1 2 3 4]),rotated(3,[1 2 3 4]),r); patch(rotated(1,[5 6 7 8]),rotated(2,[5 6 7 8]),rotated(3,[5 6 7 8]),g); drawnow; end4.2 主成分分析(PCA)的几何本质PCA实质上是寻找数据分布的特征方向% 二维数据PCA演示 data randn(100,2)*[1 0.5; 0.5 1]; [coeff,score] pca(data); scatter(data(:,1),data(:,2)); hold on quiver(0,0,coeff(1,1),coeff(2,1),r,LineWidth,3); quiver(0,0,coeff(1,2),coeff(2,2),b,LineWidth,3);在Matlab中修改这些代码的参数比如调整旋转矩阵的角度或改变数据分布能立即看到几何关系的变化。这种所见即所得的学习方式正是建立数学直觉的最高效路径。
线性代数几何直觉速成:3Blue1Brown课程精华+Matlab实战演示
线性代数几何直觉速成3Blue1Brown课程精华Matlab实战演示理工科学生常陷入会算不会想的困境——能熟练计算行列式却说不清其几何意义能推导特征值公式却画不出其空间变换。本文融合3Blue1Brown的视觉化教学精髓与Matlab交互实验带你用动态视角重构线性代数认知体系。我们将通过可修改的代码片段让抽象概念在三维空间中动起来。1. 向量从静态坐标到动态变换1.1 向量的三重人格物理视角空间中的箭头长度与方向编程视角有序数字列表[x y z]数学视角满足加法和数乘规则的任意对象% 绘制二维向量演示 quiver(0,0,3,2,LineWidth,2,MaxHeadSize,1); hold on quiver(0,0,-1,4,Color,r,LineWidth,2); axis equal; grid on title(向量加法几何演示);提示在Matlab中运行上述代码拖动向量端点观察三角形法则的动态演示1.2 基变换的视觉魔术当选择非正交基时同一向量在不同坐标系下呈现完全不同的数字表达标准正交基自定义基 (30°倾斜)[3,2][2.8, 0.4]% 基变换可视化 theta pi/6; A [cos(theta) -sin(theta); sin(theta) cos(theta)]; v_standard [3;2]; v_custom A\v_standard; % 求新坐标系下的坐标2. 矩阵空间变形的密码本2.1 线性变换的双重解读每个2×2矩阵都是对空间的改造说明书第一列î变换后的位置第二列ĵ变换后的位置典型变换矩阵库变换类型矩阵几何效果旋转[0 -1; 1 0]逆时针旋转90°剪切[1 1; 0 1]水平方向倾斜45°缩放[2 0; 0 0.5]x轴拉伸2倍y轴压缩50%% 交互式变换演示 function visualize_transform(M) [x,y] meshgrid(-5:5,-5:5); uv M * [x(:); y(:)]; quiver(x,y,uv(1,:),uv(2,:)); end2.2 行列式的空间压缩率行列式绝对值表示面积缩放倍数符号暗示空间取向M [1 2; 3 4]; det_M det(M); % 返回-2 → 面积翻倍且镜像翻转注意当det0时意味着空间被压缩到低维如三维→二维3. 特征向量变换中的不动轴3.1 寻找空间变换的黄金分割线特征向量在变换中保持方向不变仅被特征值缩放A [3 1; 0 2]; [V,D] eig(A); % V包含特征向量D为特征值对角阵 % 动态展示特征向量 t linspace(0,2*pi,100); circle [cos(t); sin(t)]; transformed A*circle; plot(transformed(1,:), transformed(2,:)); hold on; quiver(0,0,V(1,1),V(2,1),r);3.2 对角化的降维打击将矩阵转换到特征基坐标系会得到对角矩阵原始矩阵 $$ \begin{bmatrix} 3 1 \ 0 2 \end{bmatrix} $$对角化后 $$ \begin{bmatrix} 3 0 \ 0 2 \end{bmatrix} $$% 对角化验证 inv(V)*A*V % 应输出对角矩阵4. 高维应用从图形处理到数据分析4.1 三维旋转的轴角表示任何三维旋转都可分解为绕特征向量的旋转% 绘制立方体旋转动画 cube [-1 -1 -1; 1 -1 -1; 1 1 -1; -1 1 -1; -1 -1 1; 1 -1 1; 1 1 1; -1 1 1]; axis([-2 2 -2 2 -2 2]); view(3); for theta 0:0.1:2*pi R [cos(theta) -sin(theta) 0; sin(theta) cos(theta) 0; 0 0 1]; rotated R*cube; cla; patch(rotated(1,[1 2 3 4]),rotated(2,[1 2 3 4]),rotated(3,[1 2 3 4]),r); patch(rotated(1,[5 6 7 8]),rotated(2,[5 6 7 8]),rotated(3,[5 6 7 8]),g); drawnow; end4.2 主成分分析(PCA)的几何本质PCA实质上是寻找数据分布的特征方向% 二维数据PCA演示 data randn(100,2)*[1 0.5; 0.5 1]; [coeff,score] pca(data); scatter(data(:,1),data(:,2)); hold on quiver(0,0,coeff(1,1),coeff(2,1),r,LineWidth,3); quiver(0,0,coeff(1,2),coeff(2,2),b,LineWidth,3);在Matlab中修改这些代码的参数比如调整旋转矩阵的角度或改变数据分布能立即看到几何关系的变化。这种所见即所得的学习方式正是建立数学直觉的最高效路径。