我的博客和笔记我的博客和笔记
首页
文章
  • TurboLink
  • TinyEncrypt
  • UnrealStyleGuide
  • AxTrace
  • Cyclone
  • 数学相关
  • 图形学
  • 密码学
  • 编程语言
关于
GitHub
首页
文章
  • TurboLink
  • TinyEncrypt
  • UnrealStyleGuide
  • AxTrace
  • Cyclone
  • 数学相关
  • 图形学
  • 密码学
  • 编程语言
关于
GitHub
  • 我的文章

    • 从抛币协议到智能合约

      • Part1
      • Part2
    • JPEG算法解密

      • Part1
      • Part2
      • Part3
      • Part4
      • Part5
      • Github
    • SPH算法简介

      • Part1
      • Part2
      • Part3
      • Part4
      • Github
    • 赌博中的数学:Martingle策略
    • 如何生成一个随机的圆形
    • 一个简单的DH密钥协商算法的实现
    • 如何计算线段和圆的交点
    • 一道数学趣题
    • 斐波那契数列和1/89
    • 匀速贝塞尔曲线运动的实现

      • Part1
      • Part2
  • 开源项目

    • TurboLink
    • TinyEncrypt
    • UnrealStyleGuide
    • AxTrace
    • Cyclone
  • 学习笔记

    • 数学相关

      • 常用数学符号
      • 群
      • 数论(一)
      • 数论(二)
      • 数论(三)
      • 概率
    • 密码学

      • RSA
      • 抛币协议
      • 智能扑克协议
    • 图形学

      • 数学基础

        • 矢量
        • 矩阵
          • 3. 矩阵
            • 3.1 定义
            • 3.2 加法
            • 3.3 乘法
            • 3.4 转置矩阵
            • 3.4.3 正交矩阵
            • 3.5 基本运算规则
            • 3.6 单位矩阵
            • 3.7 子式矩阵(Minor Matrix)
            • 3.8 行列式(Determinant of a Matrix)
            • 3.9 伴随矩阵(Adjoint of a Matrix)
            • 3.10 逆矩阵(Inverse of a Matrix)
        • 立体角
        • 几何变换(一)
        • 几何变换(二)
        • 法线变换
        • 摄像机变换
      • 光照模型

        • 传统光照模型
        • 光度学
        • 双向反射分布函数(BRDF)
        • 微平面理论(一)
        • 微平面理论(二)
        • 微平面理论(三)
        • 光照方程
      • 环境光渲染

        • 环境光渲染(一)
        • 环境光渲染(二)
    • 编程语言

      • JavaScript

        • 环境搭建
        • 基本语法
        • 函数
        • 对象和类

数学基础(二)


3. 矩阵

3.1 定义

一个m×n的矩阵A是一个有m行n列的数组, Aij表示第i行第j列的元素, Ai,∗表示第i行所有元素, A∗,j表示第j列所有元素,

A=[A11A12A13A21A22A23A31A32A33]=[←A1,∗→←A2,∗→←A3,∗→]=[↑↑↑A∗,1A∗,2A∗,3↓↓↓]

3.2 加法

如果矩阵A是一个m×n的矩阵,矩阵B是一个m×n的矩阵,那么A+B是一个m×n的矩阵C,并且

Cij=Aij+Bij

3.3 乘法

3.3.1 定义

矩阵之间的乘法,如果矩阵A是一个m×n的矩阵,矩阵B是一个n×p的矩阵,那么AB是一个m×p的矩阵C,并且

Cij=Ai,∗⋅B∗,j

一般来说AB≠BA

3.3.2 举例

AB=[−154321][2100−21−123]=[(−1,5,−4)⋅(2,0,−1)(−1,5,−4)⋅(1,−2,2)(−1,5,−4)⋅(0,1,3)(3,2,1)⋅(2,0,−1)(3,2,1)⋅(1,−2,2)(3,2,1)⋅(1,−2,2)]=[2−19−7515]

3.3.3 矢量和矩阵相乘

以三维为例

u→A=[x,y,z][A11A12A13A21A22A23A31A32A33]=[x,y,z][↑↑↑A∗,1A∗,2A∗,3↓↓↓]=xA∗,1+yA∗,2+zA∗,3

3.4 转置矩阵

3.4.1 定义

将一个m×n的矩阵A的行和列颠倒,变成一个n×m的矩阵,成为A的转置矩阵,记为AT

3.4.2 举例

A=[2−1836−4]AT=[23−168−4]

3.4.3 正交矩阵

如果一个矩阵满足AAT=I,则称A为正交矩阵(Orthogonal matrix)。 正交矩阵满足如下特性:

  • 必须是一个方阵,即n行n列;
  • 矩阵中的每一列若视作向量,则这些向量均两两相互垂直;
  • 矩阵中的每一列若视作向量,则这些向量的长度均为1;

3.5 基本运算规则

  • A+B=B+A
  • (A+B)+C=A+(B+C)
  • r(A+B)=rA+rB
  • (r+s)A=rA+sA
  • A(B+C)=AB+AC
  • (A+B)C=AC+BC
  • (AB)C=A(BC)
  • (A+B)T=AT+BT
  • (cA)T=cAT
  • (AB)T=BTAT
  • (AT)T=A
  • (A−1)T=(AT)−1 对于矩阵,交换律不生效,大部分情况下 AB≠BA

3.6 单位矩阵

3.6.1 定义

一个n×n的矩阵,从左上角到右下角都是1,其他元素都是0,称为单位矩阵,用I表示,如果A是一个m×n矩阵,B是一个n×p矩阵,那么

AI=A,B=B

3.7 子式矩阵(Minor Matrix)

3.7.1 定义

对于一个n×n的矩阵,把第i行和第j列去掉之后的子矩阵,称为Minor Matrix(中文翻译比较乱),记为A―ij,比如对于一个3x3的矩阵

A=[A11A12A13A21A22A23A31A32A33]A―11=[A22A23A32A33],A―13=[A21A22A31A32]

3.8 行列式(Determinant of a Matrix)

3.8.1 定义

一个矩阵A的行列式是一个数值,记为detA

detA=∑j=1n(A1j(−1)1+jdetA―1j)

当矩阵是一个1x1的矩阵时,det[A11]=A11

3.8.2 举例

det[A11A12A21A22]=A11det[A22]−A12det[A21]=A11A22−A12A21det[A11A12A13A21A22A23A31A32A33]=A11det[A22A23A32A33]−A12det[A21A23A31A33]+A13det[A21A22A31A32]=A11A22A33−A11A23A32−A12A21A33+A12A23A31+A13A21A32−A13A22A31

3.9 伴随矩阵(Adjoint of a Matrix)

3.9.1 定义

对于n×n的矩阵A,定义另一个n×n矩阵C,使得

Cij=(−1)i+jdetA―ij

那么C的转置矩阵称为A的伴随矩阵,记为A∗

A∗=CAT

3.9.2 举例

A=[abcd]A∗=[d−b−ca]

3.9.3 基本运算

  • (A∗)T=(AT)∗
  • (kA)∗=kn−1A∗
  • AA∗=A∗A=det(A)I

3.10 逆矩阵(Inverse of a Matrix)

3.10.1 定义

只有正方形矩阵有逆矩阵,对于一个n×n的矩阵M,定义它的逆矩阵为M−1,满足MM−1=M−1M=I

3.10.2 计算方法

M−1=M∗det(A)

3.10.3 正交矩阵

对于正交矩阵,根据定义有M−1=MT

Prev
矢量
Next
立体角