线性代数
文章平均质量分 84
线性代数基础知识。
我什么都布吉岛
Keep writing,Keep thinking!
展开
-
施密特正交化
相信大家在平时的期末考试中一定少不了对某某向量组执行标准正交化类型的题目。今天我们从这个题目入手,说明这个如何执行施密特正交化,以及为什么要进行正交化。原创 2023-10-21 10:59:48 · 1215 阅读 · 0 评论 -
QR分解降低了最小二乘法的计算量
QR分解求解最小二乘的优点是:速度快、具有数值稳定性原创 2022-07-13 10:40:10 · 713 阅读 · 0 评论 -
Eigen库学习(一) 快速体验
如何安装Eigen库?下载安装源文件,你可以选择直接包含源文件也可以选择使用cmake安装到系统。几个例子第一个程序#include <iostream>#include <Eigen/Dense>using Eigen::MatrixXd;int main(){ MatrixXd m(2,2); m(0,0)=3; m(1,0)=2.5; m(0,1)=-1; m(1,1)=m(1,0)+m(0,1); std::原创 2021-08-12 21:48:52 · 250 阅读 · 1 评论 -
Eigen库学习(二)Matrix类
在Eigen库中,所有的矩阵(matrices)和向量(Vector)都是Matrix模板的具体类。Vectors只是matrices的一种特殊情况,也就是一行一列的情况。一、Matrix 矩阵Matrix模板有六个模板参数,一般我们只需要用到最前面的三个。这三个参数都有默认参数,现阶段暂时不必理会。这三个强制参数如下:Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>Scalar 是一个标量类型原创 2021-08-12 22:55:49 · 1730 阅读 · 0 评论 -
Eigen库学习(四)Array类
什么是Array类?与Matrix与线性代数相关,Array类提供一个通用的数组。具体的,Array能够提供一个coefficient-wise操作,该类操作是没有线性代数意义的。如,增加一个常数到array每一个元素(coefficient)中,或者两个array对应元素相乘。coefficient-wise个人理解应该是逐元素运算,换句话说就是每个元素都执行的运算。Array类Array类也是一个模板参数,他和Matrix的模板参数完全一样。Array<typename Scalar,原创 2021-08-13 09:22:24 · 1055 阅读 · 0 评论 -
Eigen库学习(五)块运算
eigen中的矩阵块(block)既可以作为左值也可以作为右值,就和普通表达式一样,经过编译器优化能够达到运行时达到0抽象成本。一、使用块运算eigen中最常使用的块操作是block()方法,该方法有两种形式:说明动态块形式固定块形式从(i,j)开始的大小为(p,q)的块matrix.block(i,j,p,q);matrix.block<p,q>(i,j);matrix和array都有该方法。注:如果总的大小<16,推荐使用fix-size以提高效率。原创 2021-08-13 10:12:52 · 1128 阅读 · 0 评论 -
Eigen库学习(六)高级初始化
本节主要内容是对集中高级初始化矩阵的方法进行介绍,其中比较常用的零矩阵和单位矩阵也在将会进行介绍。逗号初始化(The comma initializer)逗号初始化让用户可以一次设置matrix所有元素,具体的,看下代码就知道。Matrix3f m;m << 1, 2, 3, 4, 5, 6, 7, 8, 9;std::cout << m;注:矩阵必须已经被指定,如果太多或者太少,Eigen将会告知。这种方式还可以用于matrix和array的连接原创 2021-08-13 10:42:24 · 489 阅读 · 0 评论 -
Eigen库学习(七)Reductions,visitor和broadcasting
Reductions是什么?Eigen中reductions是将matrix或array作为输入,返回一个单一的标量值。最常见的就是sum,他将所有的系数求和结果返回。#include <iostream>#include <Eigen/Dense> using namespace std;int main(){ Eigen::Matrix2d mat; mat << 1, 2, 3, 4; cout << "Her原创 2021-08-13 11:43:21 · 355 阅读 · 0 评论 -
Eigen库学习(三)Matrix和vector算术运算
本节来讲Matrix和Vector的一些算术运算。一、简介Eigen提供对C++常见的运算符进行了重载运算,如加减乘除;除此还有一些特殊的方法如dot corss等。需要注意Matlab不一样地方,这里支持的只是常规的线性代数运算,如matrix1*matrix2是支持的,matrix+scalar不支持(matlab支持)。如果你想支持所有的数组元素,请看下一节。二、加法、乘法二元运算符 a+b二元运算符 a-b一元运算符 -a复合运算符 += -=#include <iostr原创 2021-08-12 23:28:41 · 7439 阅读 · 2 评论 -
Eigen的学习(十)几何学应用
Geometry(几何学)主要就是指的空间变换。学习这一章,可以减少代码编写量。本小节将会介绍一些处理2D、3D旋转、投影和仿射的变换的一些内容,这些内容将会由几何模块(geometry module)提供。一、Eigen模块介绍Eigen的几何模块将会提供两种不同的几何变换:抽象变换。比如旋转(以轴角或者四元数),平移,缩放。这些变换不是由matrix类来表示的,但是你愿意,你仍可以将它们与matrix类、vector类混合使用。投影或者仿射变换则是matrix类。查看Transform类,确实原创 2021-08-13 22:53:07 · 2620 阅读 · 1 评论 -
Eigen库学习(八)Map类与原始类型交互
这一节主要是解释Eigen是如何与原始的C/C++内存进行交互的,在很多场合是非常有用的,如从外部库输入vector和matrix到Eigen。一、简介有时候你可能有一个已经初始化了数组数据,但是你又想用Eigen库的计算功能,你有两种选择,要么拷贝,要么复用。Eigen将提供一个Map类来完成后者。二、Map类及Map变量定义Map类模板参数与Matrix前三个一样:Map<Matrix<typename Scalar, int RowsAtCompileTime, int Cols原创 2021-08-13 12:42:18 · 402 阅读 · 1 评论 -
Eigen库学习(九)Reshape和Slicing
Reshapereshape操作改变了matrix的形状的同时还保留了相同的系数。MatrixXf M1(3,3); // Column-major storageM1 << 1, 2, 3, 4, 5, 6, 7, 8, 9; Map<RowVectorXf> v1(M1.data(), M1.size());cout << "v1:" << endl << v1 << endl; Mat原创 2021-08-13 13:16:17 · 433 阅读 · 1 评论 -
01方程的几何解释
线性方程组的几何解释,直线和向量两个角度来看待同一个线性方程组。直线可以看成是两个直线方程的交点;向量则将方程组的系数和等号右边的常数看成是列向量,问题等价于,我应该如何找到一组未知数组合使得等于右侧列向量。...原创 2020-11-09 13:59:11 · 339 阅读 · 0 评论 -
02矩阵消元(Elimination with matrices)
花了几天复习了一下高等数学和高中数学中的解析几何的内容,虽然时间花费的比较多,但是想到后边可以更好地理解线性代数,时间花了就花了吧。求解下列一元三次方程:{2x+3y+z=6x−y+2z=−1x+2y−z=5\begin{cases}&2x+3y+z=6 \\ &x-y+2z=-1\\&x+2y-z=5\end{cases}⎩⎨⎧2x+3y+z=6x−y+2z=−1x+2y−z=5式333+式111:3x+5y=113x+5y=113x+5y=11记为式444;式3×23\times原创 2020-11-09 13:59:49 · 429 阅读 · 0 评论 -
03矩阵的乘法和逆
一、矩阵乘法的四种理解角度1.1 矩阵定义1.2 列向量1.3 行向量1.4 逐行×\times×逐列1.5 分块矩阵二、方阵的逆2.1 定义Invertable Insigular等价定义2.2 Gause-Jordan求逆矩阵2×22\times22×2相当于进行两个线性变换变换过程中EA=IEA=IEA=I,故,E=A−1E=A^{-1}E=A−1E[AI]=[IA−1]E[A\quad I]=[I \quad A^{-1}]E[AI]=[IA−1]...原创 2020-11-11 08:44:45 · 755 阅读 · 0 评论 -
04A的LU分解
一、逆矩阵性质补充如果AAA BBB是可逆的,那么ABABAB的逆矩阵是什么?根据逆矩阵的定义,我们仅需要找出一个矩阵TTT使得ABABAB满足:(AB)T=T(AB)=I(AB)T=T(AB)=I(AB)T=T(AB)=I可以取T=B−1A−1T=B^{-1}A^{-1}T=B−1A−1,结合矩阵的括号可移动性,有:AB(B−1A−1)=A(BB−1)A−1=AIA−1=AA−1=IAB(B^{-1}A^{-1})=A(BB^{-1})A^{-1}=AIA^{-1}=AA^{-1}=IAB(原创 2020-11-29 00:19:47 · 274 阅读 · 0 评论 -
05转置和向量空间
进入了向量空间才算开始了线性代数的大门。一、转置矩阵Permutation转置矩阵适用于执行行交换的。回忆一下我们上一节讲到的A=LUA=LUA=LU分解,一个矩阵LULULU的LLL的特征非常明显,它是进行的行变换的直观矩阵:A=LU=[1000X100XX10XXX1][1XXX01XX001X0001]A=LU=\begin{bmatrix}1&0&0&0\\X&1&0&0\\X&X&1&0\\X&X&am原创 2020-11-29 15:15:28 · 3534 阅读 · 0 评论 -
06列空间和零空间
复习向量空间(Vector space)是满足一定运算规则的向量集合,这个运算规则是对加法和数乘封闭,即结果仍然属于原空间。子空间(subspace)是在某个空间中选取的部分向量组成的集合,在新集合中,仍然满足其是一个向量空间。一、子空间的交并运算我们以R3R^3R3空间为例子说明子空间的运算规律:子空间之间的并集是否属于子空间子空间之间的交集是否属于子空间子空间的交并运算的结果不为空(至少有零向量),结果也是一些向量集合,至于这些集合是否为子空间,得看具体情况。举个简单的例子,R3R^3原创 2020-12-02 00:10:22 · 1631 阅读 · 1 评论 -
07AX=0主变量、特解
一、消元法求取零空间考虑系数矩阵A=[1222246836810]A=\begin{bmatrix}1&2&2&2\\2&4&6&8\\3&6&8&10\end{bmatrix}A=⎣⎡1232462682810⎦⎤ 尝试求出其零空间。方法就是对其进行消元,即使其主元为零也继续。A=[1222246836810]→[122200240024]→[122200240000]=UA=\begin{bmatrix}1&原创 2021-08-18 22:13:47 · 447 阅读 · 0 评论 -
08AX=b可解性及解的结构
上节课主要讲的是AX=0AX=0AX=0方程的解,也就是零空间,使得结果向量为零向量的解的集合。#mermaid-svg-ycom4z0dfHvqTHjg .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-ycom4z0dfHvqTHjg .label text{fill:#333}#mermaid-svg-yc原创 2022-04-14 00:29:17 · 278 阅读 · 0 评论 -
09线性相关性、基、维数
一、线性相关性向量独立定义:向量x1,x2,...xnx_1,x_2,...x_nx1,x2,...xn是独立的必要条件是:存在非零组合使得:c1x1+c2x2+⋯+cnxn≠0c_1x_1+c_2x_2+\cdots+c_nx_n\ne0c1x1+c2x2+⋯+cnxn=0举个例子,二维空间中的两个共线向量,有2v1−v2=02v_1-v_2=02v1−v2=0存在系数组合是2,-1是非零组合,所以这些向量是线性相关的;假如其中一个向量v1v_1v1是零向原创 2022-04-25 22:32:40 · 447 阅读 · 0 评论 -
10四个基本子空间
四个基本子空间及其概念介绍。原创 2022-05-04 17:18:11 · 576 阅读 · 0 评论 -
11矩阵空间、秩1矩阵和小世界图
上一节课,将向量的概念扩展到了矩阵。一、矩阵空间矩阵空间是一个子空间吗?是的,数乘和加法等运算后仍然是一个矩阵。所有3×33\times33×3的矩阵MMM构成了一个类似于R3R^3R3的空间,那么这个矩阵空间也将会有子空间,比如:对称矩阵SSS上三角矩阵UUU根据定义很容易知道这些矩阵是线性封闭的。1.1 矩阵的基和维数一个矩阵是由那些基本的矩阵组成的?[100000000][010000000][001000000]⋯[000000001]\begin{bmatrix}1&原创 2022-05-05 22:50:32 · 435 阅读 · 0 评论 -
14正交向量与子空间
一、正交向量(Orthogonal Vector)谈到正交向量,我们经常会聊到另一个概念:垂直(Perpendicular),在直角三角形中,有一个著名的定理:毕达哥拉斯定理(Pythagoras):两边平方和等于第三边平方和。对于直角三角形有:∣∣X∣∣2+∣∣Y∣∣2=∣∣X+Y∣∣2XTX+YTY=(X+Y)T(X+Y)XTX+YTY=(XT+YT)(X+Y)XTY+YTX=0XTY=0(1)\begin{aligned}\vert \vert X \vert \vert^2+\vert.原创 2022-05-08 12:17:57 · 994 阅读 · 0 评论 -
15子空间投影
一、平面内的投影平面中有两个向量aaa和bbb,过bbb的末端点作垂线正交于bbb,垂足为PPP,aaa起点到垂足点PPP记为向量ppp。根据向量的运算法则,有e=b−pe=b-pe=b−p,因为ppp与aaa共线,所以有:p=xa(1)p=xa\tag{1}p=xa(1)xxx表示一个实数。 因为eee与aaa正交,所以有:aT(b−xa)=0xaTa=aTb(2)\begin{aligned}a^T(b-xa)&=0\\xa^Ta&=a^Tb\\\end{alig原创 2022-05-08 23:29:46 · 974 阅读 · 0 评论 -
16投影矩阵和最小二乘法
介绍了投影矩阵和最小二乘法之间的关系。原创 2022-05-14 20:14:32 · 506 阅读 · 0 评论 -
17正交矩阵和Gram-Schmidt正交化
正交矩阵的定义及应用。原创 2022-10-10 11:04:58 · 2232 阅读 · 0 评论 -
18行列式及其性质
现在开始进入课程的第二部分——行列式,这个部分将集中在方程的行列式。一、行列式的性质行列式是与矩阵对应的一个数字,反映了方阵的性质。性质1:单位矩阵III,∣I∣=1\vert I\vert=1∣I∣=1性质2:交换两行后,行列式的值符号相反举个例子:[1001]=1[0110]=−1 \begin{bmatrix} 1&0\\0&1 \end{bmatrix}=1\quad \begin{bmatrix} 0&1\\1&0 \end{bmatrix原创 2022-05-29 18:11:28 · 899 阅读 · 0 评论 -
19行列式公式、代数余子式
行列式的定义和代数余子式求解行列式值的方法。原创 2022-06-03 21:12:12 · 921 阅读 · 1 评论 -
20行列式应用:克拉默法则、逆矩阵和体积
介绍了克拉默法则求解具有唯一解的方法,行列式的几何意义。原创 2022-07-13 23:12:18 · 899 阅读 · 0 评论 -
21特征值和特征向量
介绍了特征值和特征向量的求法以及一些性质。原创 2022-07-18 23:18:09 · 3773 阅读 · 1 评论 -
22对角化、A的幂
矩阵对角化概念,A的幂,以及差分方程的应用。原创 2022-07-23 17:35:32 · 949 阅读 · 0 评论 -
23微分方程和exp(At)
利用矩阵的特征根和特征向量求解常系数微分方程。原创 2022-09-23 10:53:11 · 1221 阅读 · 0 评论 -
24马尔可夫矩阵、傅立叶级数
傅里叶级数和马尔可夫在矩阵上的表示和应用。原创 2022-10-09 14:39:15 · 1267 阅读 · 0 评论 -
25复习课
前面知识的复习。原创 2022-10-15 15:23:08 · 914 阅读 · 0 评论 -
26对称矩阵及正定性
给定一个对称矩阵,可以分解为三项,他完全展示了对称矩阵的特征值和特征向量以及其对称的性质。在数学上称为谱定理( Spectral theorem),这里指的是特征向量矩阵,不光是数学,光学和力学(主轴定理)也有类似的概念。如果我们需要计算一个50阶的矩阵的特征值,手工算并不是一个明智的选择。对于一个单位矩阵任何向量都是其特征向量,这里指的特征向量应该理解为可以选出的垂直的特征向量。也就是说每一个对称矩阵都是一些相互垂直的投影矩阵的组合。不是一个实对称矩阵,而是一个复对称矩阵必须要满足。原创 2022-11-02 22:03:08 · 1823 阅读 · 0 评论 -
27复矩阵和快速傅里叶变换
这一节,我们将会把线性代数扩展到新的数域,复数。原创 2023-02-02 22:51:14 · 809 阅读 · 0 评论 -
28正定矩阵
这一节进入正定矩阵的内容,什么叫做正定矩阵?为什么我们对矩阵正定这么感兴趣?PS:这一节将前面所有的概念都融合在一起:主元、行列式、特征值、不稳定性。原创 2023-02-22 15:42:00 · 1597 阅读 · 0 评论 -
29相似矩阵和若尔当标准型
介绍了相似矩阵的定义和若尔当矩阵。原创 2023-03-02 22:00:08 · 1029 阅读 · 0 评论 -
30奇异值分解
在讲SVD之前,我们先来看看计算是如何存储一个灰度图的。计算机用矩形,这个矩形由很多小块组成,这个在图像中是一个像素点,因为表示的是灰度图,所以一共有256种状态,不同数值表示不同的灰度程度。如果一个图像时纯白的,那么其所有像素点数值为255。如果我们要拷贝一个m×n像素图像时,那一共需要多少次位的操作呢?m×n×8,一个典型的电视一般有m1080n1920。原创 2023-04-17 22:11:05 · 369 阅读 · 0 评论