SciTech-Mathmatics - Advanced Linear Algebra(高等线性代数):

矩阵乘法 的 四种理解方式

矩阵乘法有四种理解方式:

  • 线性方程组视角:将矩阵看作行向量与向量的点积。
  • 列向量观点视角:将矩阵分解成列向量的线性组合。
  • 向量变换视角:将矩阵看作向量的变换函数。
  • 坐标变换视角:将矩阵乘法理解为同一向量在不同坐标系下的表达方式。

背景: 线性方程组 + 消元法 + 初等行变换

矩阵诞生于线性方程组的求解,最基本的运算方法来自于高斯消元法,

所以矩阵整个运算规则都符合高斯消元法,矩阵源于 线性方程组,

但经过几十年的发展已不限于求解线性方程组,可用于很多应用场景。

线性方程组如下所示:

\[\large \begin{array}{lllll} a_{11}x_1 &+a_{12}x_2 &+ \cdots & + a_{1n}x_n & = y_1 \\ a_{21}x_1 &+a_{22}x_2 &+ \cdots & + a_{2n}x_n & =y_2 \\
\cdots \\ a_{m1}x_1 &+a_{m2}x_2 & + \cdots & + a_{mn}x_n &=y_m \end{array}\]

四种视角理解

  1. 线性方程组视角(向量点积视角)

    线性方程组直接写成向量形式,如下所示:

    \(\large \begin{array}{lll} \begin{pmatrix} a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n\\ a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n\\ \cdots \\ a_{m1}x_1+a_{m2}x_2+ \cdots +a_{mn}x_n \\ \end{pmatrix}= \begin{pmatrix} y_1\\ y_2\\ \cdots \\ y_m \end{pmatrix} \end{array}\)

    可认为是 "矩阵的行向量" 与 "向量x" 的 点积(矩阵的行乘以向量的列)

    \(\large \begin{array}{lll} \begin{pmatrix} a_{11}&a_{12}& \cdots &a_{1n}\\ a_{21}&a_{22}& \cdots &a_{2n}\\ \cdots \\ a_{m1}&a_{m2}& \cdots &a_{mn} \\ \end{pmatrix} \begin{pmatrix} x_1\\x_2\\ \cdots \\x_n \end{pmatrix}= \begin{pmatrix} y_1\\ y_2\\ \cdots \\ y_m \end{pmatrix} \end{array}\)

  2. 列向量观点视角

    对于\(\large Ax=y\):

    \(\large \begin{array}{lll} \begin{pmatrix} a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n\\ a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n\\ \cdots \\ a_{m1}x_1+a_{m2}x_2+ \cdots +a_{mn}x_n \\ \end{pmatrix}= \begin{pmatrix} y_1\\ y_2\\ \cdots \\ y_m \end{pmatrix} \end{array}\)

    可以分解成:

    \(\large \begin{array}{lll} \begin{pmatrix} a_{11}\\ a_{21}\\ \cdots \\ a_{m1}\\ \end{pmatrix}x_1+\begin{pmatrix} a_{12}\\ a_{22}\\ \cdots \\ a_{m2}\\ \end{pmatrix}x_2+\begin{pmatrix} \cdots \\ \cdots \\ \cdots \\ \cdots \\ \end{pmatrix}x_{ \cdots }+\begin{pmatrix} a_{1n}\\ a_{2n}\\ \cdots \\ a_{mn}\\ \end{pmatrix}x_n = \begin{pmatrix} y_1\\ y_2\\ \cdots \\ y_m \end{pmatrix} \end{array}\)

    上述就表示 向量\(\large y\) 是否能由 向量\(\large a\) 的 线性组合 得到,

    只要向量\(\large y\)位于向量\(\large a\)张成的向量空间,那么向量\(\large y\)一定能由向量\(\large a\)线性组合得到,

    即一定能找到一组\(\large x\)使得上式必然成立。

  3. 向量变换视角(矩阵函数)

    对\(\large Ax=y\): 矩阵\(\large A\)使 向量\(\large x.\) 作 拉伸、旋转两种变换变成向量\(\large.y\),写成函数形式:

    \[\large f(x)=Ax
    \]

    矩阵乘法 可理解为 矩阵\(\large A\) 作为一个 "线性变换函数", 将输入向量 映射到一个新向量 。

    对于一个 \(\large m×n\) 的矩阵 \(\large A\):

    • 定义域: 所有 n维向量的集合,即\(\large \bf{R}^n\);
    • 值域: 可从 "矩阵乘法的列观点" 视角,值域\(\large \bf{R}^m\)。

    通过矩阵函数(在矩阵的作用下),研究:

    • 义域 与 值域 的 映射关系

      如\(\large A\)是一个\(\large m \times n\)的矩阵,\(\large x\)是一个n维向量,

      那么值域可认为是由\(\large A\)的n个列向量张成的空间,

      张成的空间的维数等于列向量组的秩(小于等于n),即值域的维数一定是小于等于定义域的维数

      通过函数视角, 可研究在矩阵\(\large A\)有什么特征下, 定义域\(\large x\)与值域\(\large y\)的关系(满/单 射特性)。
    • 矩阵函数(线性变换函数)的分解与合成:
      • 任何一个"矩阵(函数)"都可分解为“伸缩与旋转”两种基本的“矩阵函数(线性变换函数)”。
      • 用“伸缩与旋转”两种基本的“矩阵函数(线性变换函数)”可合成任意目标矩阵(函数)。
      • 伸缩(基本线性变换矩阵): 特征值,
      • 旋转(基本线性变换矩阵): 等效于 “坐标系变换(换坐标系)”,
  4. 坐标变换视角

    对于同一个向量不同基(即为不同坐标系)下有不同的坐标值

    虽然 坐标值不同, 但都表达 同一向量,即它们的方向和长度完全一致

    对于 "矩阵向量的乘法", 可以认为是 "同一个向量" 在 不同的坐标系的表达

    当然就可以由 "正向变换" 与 "逆向变换" 两个角度去理解矩阵乘法

    对于\(\large Ax=y\)可以有两个坐标变换的视角

    • 一个视角是向量\(\large x\) 自然基坐标,另外一个是非自然基坐标

      对于向量\(\large x\)为非自然基坐标,向量\(\large y\)为自然基坐标,

      向量\(\large x\)可以理解为以矩阵\(\large A\)的列向量为基非自然坐标系坐标

      那个\(\large Ax\)运算即为将 向量\(\large x.\)转换到自然系的向量\(\large y\)的坐标

      \(\large \begin{array}{lll} Ax=\begin{pmatrix} a_{11}\\ a_{21}\\ \cdots \\ a_{m1}\\ \end{pmatrix}x_1+\begin{pmatrix} a_{12}\\ a_{22}\\ \cdots \\ a_{m2}\\ \end{pmatrix}x_2+\begin{pmatrix} \cdots \\ \cdots \\ \cdots \\ \cdots \\ \end{pmatrix}x_{ \cdots }+\begin{pmatrix} a_{1n}\\ a_{2n}\\ \cdots \\ a_{mn}\\ \end{pmatrix}x_n \\ = y_{1} e_{1} + y_{2} e_{2} + \cdots + y_{n} e_{n} \end{array}\)

    • 坐标变换的另外一个角度,是认为\(\large x\)是自然基坐标系,即:

      \(\large \begin{array}{lll} x=\begin{pmatrix}x_1 \\x2\\ \cdots \\x_n\end{pmatrix} = E*\begin{pmatrix}x_1 \\x2\\ \cdots \\x_n\end{pmatrix} \\ = x_1\begin{pmatrix}1\\0\\ \cdots \\0\end{pmatrix}+ x_2\begin{pmatrix}0\\1\\ \cdots \\0\end{pmatrix}+ \cdots + x_n\begin{pmatrix}0\\0\\ \cdots \\1\end{pmatrix}\\ \ \\=x_1e_1+x_2e_2+ \cdots +x_n e_n \\ = y_1 A^{-1}_{1} + y_2 A^{-1}_{2} + \cdots + y_n A^{-1}_{n} \\ A^{-1} = (A^{-1}_{1}, A^{-1}_{2}, \cdots , A^{-1}_{n}) \end{array}\)

      用\(\large Ax\)视角观察, 并不能直观地观察到坐标变换规律,可将其做一个简单变形:

      \(\large \begin{array}{lll} Ax=y\ \rightarrow \ x=A^{-1}y \end{array}\)

      上式的\(\large x\)是自然基坐标系,\(\large y\)是非自然基坐标系

      \(\large Ax\)就将自然基坐标, 转换成以\(\large A^{-1}\)的列向量基坐标系坐标

      矩阵向量乘法\(\large Ax=y\),一定情况下可认为:

      向量\(\large x\)与向量\(\large y\)为同一向量,仅仅是坐标系不同,

      "一定情况下"指 "\(\large A\)为满秩矩阵",因为 \(\large A\)为 非满秩矩阵就可能出现 "降维" 情况。

向量 的空间&基、坐标&坐标变换

Eigenvalue Decompression(特征值分解)

特征分解的本质之一: 利用分解结果生成新的向量空间

SVD(奇异值分解, Singular Value Decomposition)

SciTech-Mathmatics - Advanced Linear Algebra: 矩阵乘法 的 四种理解方式 + 向量 的空间&基、坐标&坐标变换 + Eigenvalue Decompression(特征值分解) + SVD(奇异值分解, Singular Value Decomposition)的更多相关文章

  1. 从矩阵(matrix)角度讨论PCA(Principal Component Analysis 主成分分析)、SVD(Singular Value Decomposition 奇异值分解)相关原理

    0. 引言 本文主要的目的在于讨论PAC降维和SVD特征提取原理,围绕这一主题,在文章的开头从涉及的相关矩阵原理切入,逐步深入讨论,希望能够学习这一领域问题的读者朋友有帮助. 这里推荐Mit的Gilb ...

  2. 讲一下numpy的矩阵特征值分解与奇异值分解

    1.特征值分解 主要还是调包: from numpy.linalg import eig 特征值分解:  A = P*B*PT  当然也可以写成 A = QT*B*Q  其中B为对角元为A的特征值的对 ...

  3. POJ3070 Fibonacci[矩阵乘法]

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  4. 2.3CUDA矩阵乘法

    CPU 矩阵乘法 能相乘的两个矩阵,必须满足一个矩阵的行数和第二个矩阵的列数相同. A(N*P) * B(P*M) = C(N*M). 其中P是行数,N是列数, 从宽高的角度来说,即 A的宽度和B的高 ...

  5. POJ3070 Fibonacci[矩阵乘法]【学习笔记】

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13677   Accepted: 9697 Descri ...

  6. C# 矩阵乘法实现

    矩阵乘法是一种高效的算法可以把一些一维递推优化到log( n ),还可以求路径方案等,所以更是是一种应用性极强的算法.矩阵,是线性代数中的基本概念之一.一个m×n的矩阵就是m×n个数排成m行n列的一个 ...

  7. 《Linear Algebra and Its Applications》-chaper2-矩阵代数-分块矩阵

    分块矩阵的概念: 在矩阵的实际应用中,为了形式的更加简化我们将一个较大的矩阵的内部进行一定的划分,使之成为几个小矩阵,然后在表大矩阵的时候,矩阵的内部元素就用小矩阵代替. 进行了这一步简化,我们就要分 ...

  8. HDU 4914 Linear recursive sequence(矩阵乘法递推的优化)

    题解见X姐的论文 矩阵乘法递推的优化.仅仅是mark一下. .

  9. 线性代数导论 | Linear Algebra 课程

    搞统计的线性代数和概率论必须精通,最好要能锻炼出直觉,再学机器学习才会事半功倍. 线性代数只推荐Prof. Gilbert Strang的MIT课程,有视频,有教材,有习题,有考试,一套学下来基本就入 ...

  10. [转]OpenBLAS项目与矩阵乘法优化

    课程内容 OpenBLAS项目介绍 矩阵乘法优化算法 一步步调优实现 以下为公开课完整视频,共64分钟: 以下为公开课内容的文字及 PPT 整理. 雷锋网的朋友们大家好,我是张先轶,今天主要介绍一下我 ...

随机推荐

  1. Golang 版本导致的容器运行时问题

    问题现场 用户反馈安装了某个 containerd 版本的节点无法正常拉起容器,业务场景是在 K8S Pod 里面运行一个 Docker,在容器里面通过 docker 命令再启动新的容器. 报错信息如 ...

  2. python初学之random()模块

    ##python小脚本 random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法. random.random()用于生成 一个指定范围内的随机符点数 ...

  3. Java单例模式:从实战到面试的深度解析

    结论先行 饿汉式:线程安全但可能造成资源浪费,推荐在初始化成本低的场景使用 懒汉式:需要解决线程安全问题,推荐使用双重检查锁+volatile优化 静态内部类:最佳实践方案,完美平衡延迟加载与线程安全 ...

  4. 通用的servlet

    1 通用的servlet实现的原理 2 实例 2.1 目录结构 2.2 BaseServlet.java 2.3 ServletDemo.java 2.4 index.html 2.5 test.ht ...

  5. 阿里云Ansible自动化运维平台部署

    以下是在阿里云平台上基于Ansible实现自动化运维的完整实践指南,整合所有核心操作流程和命令,适配指定的服务器规划: 一.环境规划 主机名 IP地址 角色 操作系统 manage01 192.168 ...

  6. SpringBoot中的拦截器江湖

    前言 很多小伙伴在工作中遇到拦截需求就无脑写HandlerInterceptor,结果被复杂场景搞得鼻青脸肿. 作为一名有多年开发经验的程序员,今天领大家到SpringBoot的山头认认6把交椅: 这 ...

  7. c++并发编程实战-第3章 在线程间共享数据

    线程间共享数据的问题 多线程之间共享数据,最大的问题便是数据竞争导致的异常问题.多个线程操作同一块资源,如果不做任何限制,那么一定会发生错误.例如: 1 int g_nResource = 0; 2 ...

  8. 一篇文章给你讲清楚运筹优化到底怎么学!基于 SCIP Optimization Suite 的运筹优化入坑教程

    [!abstract] 本文笔者用暴躁而又不失严谨性的语言,从优化问题的背景入手,强调了针对实际的工程问题开展的优化建模方法和学校教学内容之间的偏差,并围绕优化建模到底应该怎么学的问题,讲解了如何下载 ...

  9. MySQL8.0安装与环境配置win10

    本次安装笔者借鉴了n篇前辈的文章,如有冒犯,请指正 https://blog.csdn.net/qq_20788055/article/details/80372577 https://blog.cs ...

  10. WPF 用 DrawingBrush实现图形的平铺

    WPF平铺图像,一般用到 DrawingBrush 来实现对图形.图形的平铺,查阅了 微软官方文档的 DrawingBrush  属性 创建一个 DrawingBrush,其中: TileMode=& ...