XingYun blog
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具

XingYun

冲!
  • JS基础

    • 图解js原型链
    • JS Event Loop
    • 对象的底层数据结构
    • 让你的JavaScript代码简单又高效
    • 函数参数按值传递
    • 判断数据类型
    • 浮点数精度问题和解决办法
    • 常用方法snippet
    • 实现Promise
    • 防抖和节流
    • 巧用sort排序
  • CSS && HTML

    • CSS也需要性能优化
    • class命名规范
    • em、px、rem、vh、vw 区别
    • CSS揭秘阅读笔记
  • 浏览器

    • 浏览器是如何渲染页面的
    • 重排和重绘
    • BOM浏览器对象模型
    • DOM事件
    • 浏览器存储
  • 数据结构

    • JS实现链表
    • JS实现栈与栈应用
    • JS实现常见排序
    • 哈夫曼编码
    • MD5算法
  • vue原理浅析

    • Vue虚拟dom与Diff算法
    • 前端打包文件的缓存机制
    • vue数组为什么不是响应式
    • v-for为什么不能用index做key
  • 前端工程化

    • 浏览器是如何渲染页面的
    • 前端打包需要gzip压缩吗
    • 前端打包文件的缓存机制
    • webpack loader和plugin
  • 轮子&&组件库

    • 实现水波浪进度球
  • 文字转语音mp3文件
  • 文件上传前后端实现
  • moment.js给定时间获取自然月、周的时间轴
  • 实现文件上传功能
  • 批量下载照片
  • leaflet改变坐标原点
  • 网络

    • 有了MAC地址 为什么还需要IP地址
    • 为什么IP地址老是变
    • 我们为什么需要IPV6
    • TCP与UDP
  • 计算机组成原理

    • ASCII、Unicode、UTF-8和UTF-16
  • VSCode

    • VSCode图片预览插件 Image preview
    • rsync:linux间的高效传输工具
  • 数学
XingYun
2023-07-20
目录

如何理解线性代数

# 起源

人类在探索每一个科学问题的时候,为了简化问题,都会把具体科学问题看作一个机器。给这个机器输入一个条件,机器会运转,对条件进行加工,然后输出一种现象。

通过研究输入与输出,有时候可以推测出机器内部的构造,这就是所谓的科学。

比如牛顿,他发现:给物体一个力,就能使物体产生一个加速度,力越大,加速度就越大。

当然,有时候研究了输入与输出,依然没有搞清楚机器内部的原理,只是知道一个大概的规律,那么就干脆先不管内部原理,先把这个规律为自己所用。

这就是所谓的工程。比如,人们通过做实验发现,给机翼一个气流,机翼就能够产生一个升力,人们并不能解释升力是怎么产生的,但是不妨碍自己使用,于是给一个驾驶舱装上两个翅膀,飞机就上天了。

人类探索自然运行的原理,归根结底是想利用这些原理,对万物进行定量控制。

定量控制的意思是说:牛顿写出《原理》这本书的时候,不能够含糊其辞的说,给物体很大的力,物体就能产生很大的加速度。而是必须告诉大众:给一个多少 Kg 的物体多少 N 的力能够产生多少
的加速度。

这时候,数学应运而生。简而言之,数学就是人类在解释这个世界是怎样运行的时候,人为发明的一种工具,有了这种工具,我们可以不用那么含糊其辞。

于是,就有了函数。

于是就有了 F=Ma,于是就有了各种各样的公式、定理及定律。

# 什么是线性代数

函数研究的是,输入一个数,经过函数运算之后,产出一个数。而有时候我们研究的问题太复杂,需要输入很多个数,经过运算之后,产出很多个数。这时候,线性代数应运而生。

很多个数,我们可以用括号括起来,形成一个数组。在几何学上,数组被称作向量,向量就是一个有大小有方向的直线段。

所以,线性代数就是:输入一段直线,经过加工之后,产出一段直线。

线性的意思就是,你往机器里扔进去直线,产出的肯定也是直线。

当然,在数学上,线性有着及其严格的定义,并不是像我刚才说的那么简单。不过,正由于线性的严格定义,才能够实现:输入一段直线,产出一段直线。

与函数相类似,用图描述线性代数就是:

输入叫向量,内部原理叫矩阵,输出叫向量。

# 矩阵是怎么对直线进行加工的?

通过函数表达式 y=5x+9 我们可以一目了然地知道,输入的自变量 x 是怎样一步步被加工,最后输出因变量 y 的。

同样,我们通过观察矩阵,也可以一目了然地知道,输入的直线是怎样一步步被加工的。

假如输入的直线为[1,2]。

插一句,向量[1,2]的全称其实是 1i+2j,i 和 j 叫做基向量。意思是说,我们目前所写出来的向量,是以这两个向量作为基本原料,拼凑组合出来的。

假如用于加工向量的矩阵为[0,1 -1,0],

那么这个矩阵所代表的加工过程就是,把基向量 i,换成矩阵中的第一列,把基向量 j 换成矩阵中的第二列。然后再以新的基向量为原料,重新利用[1,2]拼凑一个新的向量。用新的基向量拼凑出来的新向量就是输出。

通过展示矩阵对向量的加工过程,我们可以“看出”上面例子的解。

下面,我们用熟悉的口诀“左行乘右列”来检验一下上面的答案是否靠谱。

其实,计算所用的口诀就来源于上述加工过程。

同理,稍微复杂一些的三维向量遇到三维矩阵后的加工过程如下图:

# 行列式是什么?

矩阵对向量进行加工,行列式能够描述这种加工作用的强弱。

有时候,矩阵的行列式为 0,说明新的基向量张成的面积为 0,说明新的基向量发生了重合。

有时候,矩阵的行列式为负数,说明线性空间发生了翻转。也就是说,本来,默认的两个基向量,j 在 i 的逆时针方向,经过矩阵加工之后,线性空间发生了翻转,导致 i 在 j 的逆时针方向。如下图:

# 什么叫单位矩阵?

矩阵能够对向量进行加工,产生一个新的向量。但有一种矩阵比较特殊,无论给它输入什么样的向量,加工后产生的向量都与原来的相同,这种矩阵叫单位矩阵。

既然矩阵对向量的加工作用是通过改变基向量来实现的,如果想保持输入与输出相等,那么只需要保证矩阵不会改变基向量即可。

所以,二阶单位矩阵,三阶单位矩阵以及 n 阶单位矩阵可写为:

# 总结

所以线性代数到底研究什么?

其实就是利用线性空间和线性变换,提供了一个框架,这个框架可以把几何,分析,解方程代数统一到这个框架下面。

任意元素都可以用线性空间的基矢量进行线性表达, 用抽象的形式表达广泛的数学和物理学概念的特征。

举个栗子:

我们平时用的屏幕,各种屏幕,不管是电视,手机,电脑,平板,不管哪种操作系统,我们在任何一个平台观看同一部电影时,看到的都是相同的图像。

可实际上,每个硬件平台的屏幕规格并不完全相同,并不是简单的放大,就能解决这个多平台播放的问题的,这问题的背后,就是事物的本身的属性中,有些是不变的,不随平台或者说屏幕的改变而改变

我们对这个本质,最直观的理解是,图像的比例不变,角度不变。但这点观察,不足以解释为什么屏幕分辨率改变了,明明屏幕比例变了,这部电影并没有随之变化。

线性代数用一种更深入的数学方式进行观察,发现了特征值这个更接近本质的属性,不管屏幕、设备如何变化,是这部电影的特征值一直没有变,它的这个最核心的属性一直没有改变,所以我们的眼睛看到结果,效果都没变。

这就是线性代数的推导过程,几乎所有人,都能在冥冥中感觉到,两个事物间有某种联系,但这种联系是什么?说不上来。 这种联系用一个代数方程,还表示不出来。一个表示不出来,那么就用两个,用三个,用更多的方程,组成方程组来表示这两者间的内在联系, 这就是矩阵。研究矩阵的变换,就是在变化中把握不变(特征)。

上次更新: 2023/05/25, 02:13:05
最近更新
01
JavaScript-test
07-20
02
二维码的原理
07-20
03
利用ChatGPT优化代码
07-20
更多文章>
Theme by Vdoing | Copyright © 2021-2023 XingYun | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式