作者: 星辰

  • 秩和简化阶梯型矩阵,N=(-F,I)

    矩阵的秩(Rank)是消元后“枢轴”的位置。

    进行前向消元后会得到一个阶梯型矩阵,这个例子中我们得到了2个枢轴列和两个自由列。因为我们可以给\(x_2\)和\(x_4\)分配任意值,然后求解出\(x_1\)和\(x_3\)。

    零空间就是所有“特殊解”向量所张成的子空间。“特殊解”的意思是把自由变量们赋值为“其中一个是1,其他是0”的形式所得到的方程组解。

    简化阶梯型矩阵

    就是每个“枢轴”列只有一个数是\(1\),其他都是\(0\)的阶梯型矩阵。

    其中\(I\)代表单位矩阵,\(F\)代表自由变量们的行和列“分离”出的子矩阵。

  • 列空间和零空间

    列空间

    同一向量空间的子空间\(S\)和\(T\)的交集也是一个子空间。

    \(A的列空间是所有列向量的线性组合\)。

    求\(A\)矩阵的列空间就等同于问“方程\(Ax=b\)对于任意向量x,会得到哪些b?”

    我们只能在\(b\)向量在\(A\)矩阵列空间的时候求解出方程\(Ax=b\)。

    但是,原矩阵有一个问题:我们可以“丢掉”任意一列,然后得到完全相同的向量空间。因为第三列是前两列的和。如果我们有了前两列,第三列就可以用前两列的某种线性变换表示,第三列就没有任何“新的贡献”。也就是说,第三列是和前两列线性相关的。

    零空间(Nullspace)

    零空间指的是所有能满足\(Ax=0\)的\(x\)组成的向量空间。

    原矩阵的零空间就是所有这种形式的矩阵组成的\(R^3\)的子空间。它是一条在\(R^3\)空间的直线。

    总结

    这节课主要讲解了得到子空间的两种思路:

    1. 找到矩阵的列的线性组合,所有的线性组合构成了一个子空间。(列空间)
    2. 找到使\(Ax=0\)方程成立的所有向量\(x\),所有的\(x\)构成了一个子空间。(零空间)
  • 转置,向量空间

    接着上节课

    其中\(P\)是一个行被重新排列的单位矩阵。

    \(n \times n\)的矩阵一共有\(n!\)种\(P\)的组合。

    对称矩阵:\(A^T=A\)。

    \(RR^T\)永远都是对称矩阵。

    向量空间

    向量空间(Vector Space)是指一堆能相互加,也可以把自身乘以一个标量,最终还会得到一个本空间内的向量的东西。此外,它必须满足8条公理。

    比如,\(R^N\)空间是一个向量空间,因为对它进行加和数乘操作是封闭的。

    一个向量空间中的向量空间叫做子空间(Subspace)

    \(R^2\)的子空间可以是所有位于一条穿过原点的直线上的向量。

    但是这个子空间并不是\(R^1\),因为它里面的向量都有两个分量。

    所有的\(R^2\)的子空间:

    1. \(R^2\)本身
    2. 任何穿过\((0,0)\)的直线
    3. 零向量本身

    这个例子中的矩阵的两列的向量,所表示的所有线性组合(即其一的倍数+另一的倍数)被称为列空间(Column space),顾名思义,就是矩阵的列向量们所张成的一个向量空间,而它们张成的这个列空间一定是\(R^3\)的一个子空间。

    也就是说,一个矩阵的列的所有线性组合,张成了一个向量空间,叫做列空间。

  • 从高斯消元到矩阵分解

    \(AB\)的逆是\(B^{-1}A^{-1}\),这是很显然的(一个很蠢的类比:你穿上袜子再穿上鞋子的逆是你先脱掉鞋子再脱掉袜子)。

    另一个公式:

    $$(AB)^T=B^T A^T$$

    因此

    $$(A^{-1})^T=(A^T)^{-1}$$

    考虑高斯消元的过程:

    (初等矩阵的逆矩阵就是把那个负的变成正的,相当于把减去的那行再加回来)

    我们这里已经可以看到L和U的大体“形状”了:L在对角线上全是1,并且是一个正三角形;U是一个倒三角形,对角线上都是我们的“支点”。

    三维情况:

    如果没有行交换操作,所有的\(E_{??}^{-1}\)会直接“进入”\(L\)中,我们不需要做任何事情,只需要把改的位置都原样放进\(L\)里,就像上面那样。但是反之,所有\(E_{??}\)相乘得到的\(E\)矩阵,就不能这么操作。因为编号较小的行先改变了,编号较大的行才改变,但是编号较大的行需要使用编号较小的行,但此时它已改变。所以上面这个例子中会产生一个我们不喜欢的\(10\)。

    可计算出高斯消元的时间复杂度是\(\frac{1}{3} n^3\)。

    行交换的初等矩阵记作\(P\),而3维中\(P\)的所有组合如下:

    一个\(3\times 3\)的矩阵只有6个不同的\(P’s\)。

    这些矩阵很特殊:它们互相无论怎么乘,都会得到一个在这个列表中的一个矩阵,同样,它们的逆矩阵也在列表中。这些矩阵组成了一个群(Grup)。并且,\(P^{-1}=P^T\)。

  • 矩阵乘法和逆矩阵

    矩阵乘法

    若\(AB=C\),则

    角度1:

    $$C_{i,j}=(row\ i\ of\ A) \cdot (column\ j\ of\ B)$$

    角度2,3:

    角度4:

    首先考虑,用A的一列乘B的一行会得到什么?

    这是一个\(m \times 1\)的矩阵乘一个\(1\times p\)的矩阵,所以会得到一个\(m \times p\)的矩阵,并且得到的这个矩阵非常特殊,因为它的行列空间都分别在一条直线上。

    而第4种角度就是:

    $$C = \sum_{i=1}^n(column\ i\ of\ A) \cdot (row\ i\ of\ B)$$

    角度5:

    “分块”

    $$C_{ij} = \sum_{k=1}^n A_{ik} B_{kj}$$

    这种思想被广泛应用于GPU并行计算等场合。

    逆矩阵

    一个矩阵的逆矩阵要保证

    $$A^{-1}A = I = AA^{-1}$$

    但并不是每个矩阵都有逆矩阵,没有逆矩阵的矩阵称为“奇异矩阵”。

    首先,如果原矩阵不是方阵,就不存在逆矩阵。

    然后,如果存在某个非零向量x,使得\(Ax=0\),A就不存在逆矩阵。因为如果它存在,我们会解出\(x=0\),但实际上x非零。

    高斯消元法:

    对AI增广矩阵进行若干次行初等变换(就像之前文章说的那样,行初等变换操作就相当于左乘一个初等矩阵,对增广矩阵进行操作是为了方便把等号左右两边同时操作),我们先会得到一个“倒三角形矩阵”(这是因为我们只消除了左下这一个三角形的数);然后,通过回代的方式,只让对角线有数字;最后,把对角线上的数都归一。这样进行若干次行初等变换后,\(A\)变成了\(I\),同理\(I\)就变成了\(A^{-1}\)

  • 微积分基本定理(2)

    不定积分:若\(F'(x)=f(x)\),则称函数F(x)是f(x)的一个不定积分。

    可积分函数都有无穷多个不定积分,而它们的差异仅仅在常数项上。

    微积分基本定理2:

    若\(F(x)\)是\(f(x)\)的一个不定积分,则:

    $$\int_a^b f(x)\, dx = F(b) – F(a)$$

    这意味着我们计算定积分时仅需求不定积分之差。

  • 线性方程组、矩阵与线性变换

    此文我们将先探讨线性组合的基本定义(公式为主),然后再思考它的几何层面含义。

    基本定义

    线性方程组是形式如下的方程组: \(
    a_{11}x_1 + a_{12}x_2 + a_{13}x_3 = b_1 \\
    a_{21}x_1 + a_{22}x_2 + a_{23}x_3 = b_2 \\
    a_{31}x_1 + a_{32}x_2 + a_{33}x_3 = b_3
    \)

    “线性”表示它的含字母项的次数都是1。

    它可以写成矩阵形式: \(\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} = \begin{bmatrix} b_1 \\ b_2 \\ b_3 \end{bmatrix}\)

    把系数矩阵叫做 A,未知数向量叫做 x,结果常数向量叫做b,原线性方程组可改写为:

    $$A \cdot x = b$$

    非常的简洁。

    (如果你还不清楚矩阵乘向量的代数计算方法,请到文章最后一部分)

    横纵考虑矩阵

    横向

    如上图所示,当我们“横向”考虑这个矩阵(也就是二元线性方程组)时,方程组的解就是每个方程所对应的直线(这也是它叫做“线性方程”的原因——方程的图像都是直线)的交点:\((1, 2)\)。

    纵向

    那么,如果我们“纵向”考虑那个矩阵,会发现什么呢?

    如上图,我们会得到一个整齐的式子:A的第一列向量乘第一个未知数 + A的第二列向量乘第二个未知数 = 结果常数向量b。

    矩阵乘以向量就被称为列的线性组合

    在几何坐标系中画出两个向量\(\begin{bmatrix} 2 \\ -1 \end{bmatrix}\)和\(\begin{bmatrix} -1 \\ 2 \end{bmatrix}\),由于我们已经解出了\(x=1, y=2\),因此我们可以把\(\begin{bmatrix} 1 \\ 2 \end{bmatrix}\)代入到原先\(\begin{bmatrix} x \\ y \end{bmatrix}\)的地方,看看最后是否得到了b,就像图中画的那样,最后得到的向量加法结果恰好就是\(\begin{bmatrix} 0 \\ 3 \end{bmatrix}\)这个向量,也就是b。

    如果x和y是未知数,在大多数情况下,经过线性组合后,x和y经过线性组合后的结果会充满整个二维平面,也就是说任何二维向量都可以被x, y经过这个线性组合所描述

    说到这里,就不得不提基向量了。在二维物理问题中,我们会把一个向量写成\(a \cdot \hat{i} + b \cdot \hat{j}\)的形式,其中

    $$ \hat{\imath} = \begin{bmatrix} 1 \\ 0 \end{bmatrix},\quad \hat{\jmath} = \begin{bmatrix} 0 \\ 1 \end{bmatrix} $$

    那么如果我们把\(\hat{i} \)和\(\hat{j} \)改变为其他向量会发生什么?也就是,如果我们把坐标系的基改变,会发生什么

    聪明的你一定发现了:线性组合的本质实际上就是改变基!矩阵乘向量,就意味着对向量做这个矩阵所描述的线性变换,也就是,在以该矩阵所描述的基向量的“坐标系”下,这个向量所对应的那个向量在原坐标系中的向量值。

    矩阵的第 \(i\)列,就表示第\(i\)个轴上的基向量改变成了什么向量。

    考虑三维情况:3个未知数和3个方程构成的线性方程组。我们也可以把它写成图中的矩阵形式:

    \(\begin{bmatrix} 2 & -1 & 0 \\ -1 & 2 & -1 \\ 0 & -3 & 4 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} = \begin{bmatrix} 0\\ -1 \\4 \end{bmatrix}\)

    横向

    还是先横向考虑:考虑其中一个线性方程,比如第二个,我们会得到一个平面(所有满足该方程组的解都在一个处于三维空间的二维平面上)。

    若同时考虑两个方程,所有满足条件的点就是两个平面相交所产生的直线。

    同时考虑三个方程,满足条件的点只有一个:三个平面的交点。

    纵向

    如果纵向考虑该矩阵,我们会得到这样的线性组合形式:

    这三个就是新的基向量。

    它的解可以被直接看出来,也就是 \(x=0, y=0, z=1\)的时候。

    思考:一个\(n \times n\)方阵的线性组合总是能生成任何一个n维向量吗?

    答案为:不一定。在大多数情况下,确实是这样的,但是在某些 情况下,由于矩阵列之间的线性依赖(某个基向量可以被其他基向量的组合表示),会导致线性变换所能生成的空间降维,因此不一定。

    补充-矩阵乘向量

    矩阵乘向量就是线性组合(也叫线性变换),而它的计算方式的符号表示法就是用向量的第1个数矩阵的第1列 加上 向量的第2个数矩阵的第2列,这样计算下去。

    当然,也可以用点积的思想, 矩阵的第1行向量点积得到结果的第1个数,矩阵的第2行向量点积得到结果的第2个数。

    参考/学习/推荐

    MIT – Youtube

    3Blue1Brown – Youtube

  • 不定积分

    若\(g’ = f \) ,则称 g 是 f 的一个不定积分(也叫原函数)。由于求导会“吞掉”常数项,因此若g是f的一个不定积分,那么\(g + C \) 一定也是f的一个不定积分(其中C是常数)。更专业地说,所有形如\(g + C \)的函数(一定是f的不定积分)全体构成一个以常数为参数的族。

    如图列出了一个 f 和 g 的关系,其实和微分中f’和f的关系一样。

    参考/学习/推荐

    Khan Academy

  • 微积分基本定理(1)

    1. 基本定义

    微积分基本定理是一个非常重要、优美且符合直觉的定理。它的公式如下:

    $$
    \frac{d}{dx} \int_a^x f(t) \, dt = f(x)
    $$

    这意味着,一个函数积分的导数是原函数。

    例题

    求 \(\frac{d}{dx} \int_2^x cos^2(x) \)

    解:

    很显然,答案就是里面的原函数,也就是 \(cos^2(x) \) 。

    2. 链式法则应用

    先看题目:

    定义 \(f(x) = \int_0^{x^2} sin(x) \) ,求 \(f'(20)\) 。

    看起来也可以用该定理求出答案,但是此时积分的上限变成了\(x^2\) ,而不是 \(x\) ,这怎么办呢?

    有一个拆分函数的思路可以解决这种问题:

    思路:

    定义

    $$g(x) = \int_0^{x} sin(x)$$

    $$h(x) = x^2$$

    那么

    $$f(x) = g(h(x))$$

    因此,根据链式法则

    $$f'(x) = g'(h(x)) \times h'(x) = sin(x^2) \times 2x$$

    $$f'(20)=40sin(400)$$

    参考/学习/推荐

    Khan Academy

  • 基于WordPress低成本建博客站(2025最新)

    每个人都想拥有自己的网站,此文章将为你介绍如何使用WordPress低成本搭建一个博客网站。

    网络上有一些搭建静态博客网站的教程,虽然静态博客网站的搭建成本更低,但是它的内容维护很不方便,用户交互功能也不好。本文章介绍的是一种搭建动态博客网站的方法,即除了购买域名外,还需要购买一台VPS服务器。

    第一步

    购买服务器和域名。

    推荐VPS服务器商:racknerd.com (价格实惠,1H1G一年仅需10美元左右,支持zfb)

    推荐域名商:namesilo.com (价格实惠,支持zfb)

    你需要分别注册账号并选择心仪的服务器和域名进行购买。过程很简单,网上教程也很多,就不多赘述了。顺便提一下,服务器的系统建议安装Debian或者Ubuntu,选域名的时候如果预算不够可以不管后缀,后缀不怎么影响搜索引擎的权重算法的。

    第二步

    安装Xshell8

    如果不出意外,打开后会是如下图所示的界面。

    然后再会话那里新建会话,ip填vps的ip,端口一般是22,用户名和密码vps供应商会提供给你(racknerd会在你购买后通过邮件发送给你所有这些信息)。

    现在不出意外的话你就可以连接到你的服务器了。

    上图这样就算连接成功了。

    第三步

    安装和配置WordPress。

    在XShell中:

    (安装必要组件)

    sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip unzip curl -y

    (安装mysql)

    sudo mysql_secure_installation

    (这里它会给你安装选项,你只需要照着提示来安装就可以了)

    (安装好之后,打开mysql的命令行工具)

    sudo mysql -u root -p

    (在mysql命令行中,输入以下命令,来给WordPress创建一个数据库和用户,一定要记住把yourpassword改掉为一个你能记住的密码,并且必须是8位以上的包含大小写字母+数字+特殊符号的密码,否则报错

    CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'yourpassword';
    GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;

    (下载并配置WordPress)

    cd /var/www/
    sudo curl -O https://wordpress.org/latest.tar.gz
    sudo tar -xzvf latest.tar.gz
    sudo mv wordpress myblog
    cd myblog
    sudo cp wp-config-sample.php wp-config.php

    (使用nano编辑配置文件)

    sudo nano wp-config.php

    (此时进入nano,使用键盘上的上下左右键移动光标和滚动页面,找到并修改以下内容,yourpassword修改为你的数据库密码

    define( 'DB_NAME', 'wordpress' );
    define( 'DB_USER', 'wpuser' );
    define( 'DB_PASSWORD', 'yourpassword' );

    (修改完成后按ctrl+X退出,询问是否保存时输入Y,然后询问改名时直接按回车不进行修改)

    (修改权限)

    sudo chown -R www-data:www-data /var/www/myblog

    (使用nano创建nginx配置)

    sudo nano /etc/nginx/sites-available/myblog

    (粘贴以下内容到nano的编辑器)

    server {
        listen 80;
        server_name yourdomain.com www.yourdomain.com;
    
        root /var/www/myblog;
        index index.php index.html;
    
        location / {
            try_files $uri $uri/ /index.php?$args;
        }
    
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php-fpm.sock;
        }
    
        location ~ /\.ht {
            deny all;
        }
    }

    (ctrl+X退出,Y保存,然后回车)

    (启动nginx)

    sudo ln -s /etc/nginx/sites-available/myblog /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx

    第四步

    设置dns和cdn。

    dns让你的域名指向你的服务器,cdn是为了加速访问速度,同时隐藏服务器的真实ip以避免被攻击。

    打开cloudflare.com,注册一个账号。

    点添加域,然后输入你购买的域名。

    选择free套餐,然后继续。

    现在来到dns设置,我们添加或编辑记录,只保留两个记录:根网址A记录和www网址A记录。

    “内容”都设置为你的服务器的真实ip地址。

    接下来,cloudflare会给你两个ip地址作为新的dns解析地址。你需要打开你的域名注册商,比如namesilo,然后在域名设置中把原先的NameServer服务器地址都删掉,改为cloudflare提供给你的两个(每个人每次它给你的可能都不一样,所以我下面打码了防止你抄错)

    现在你需要等5分钟到几个小时,等待dns生效,你可以定时访问你的域名,直到能够加载出一个nginx默认界面为止(而不是一个域名的占位页面或者无法访问网页)。

    接下来在cloudflare的 DNS->记录 中,按照下图顺序把根域名记录和www记录这两个记录都临时取消代理。

    然后在 SSL/TLS->概述->配置 中,如下图所示,临时改为“灵活”模式。

    接下来,在XShell中,连接到服务器并粘贴:

    sudo apt install certbot
    sudo certbot --nginx -d 你的域名.com -d www.你的域名.com

    (别忘了替换为你的真实域名)

    完成之后,你就成功给服务器加上证书了。现在,重启nginx服务:

    sudo systemctl reload nginx

    然后,回到cloudflare,把代理打开,并且把ssl/tls重新启用“完全”配置。

    到这里,不出意外的话,服务器后台配置就大功告成了!

    第五步

    访问你的网站,第一次访问时会自动让你创建一个admin账号,按照提示选择语言、网站样式、昵称、头像等等,接着以后就就可以登录管理员账号来管理文章和网站了,不需要访问后台。

    现在,开始你的写作吧!

    第六步(可选)

    这是一个关于数据备份的方案。

    在网站中的 仪表盘->插件->添加插件 中,搜索 UpdraftPlus ,下载这个插件(完全免费),然后启用,按照提示进行安装。到了选择存储位置的地方,我建议使用Google drive(前提是你有谷歌账号),然后你就可以方便地随时备份和恢复数据,再也不担心数据丢失了!

    总结

    本文详细逐步讲解了如何从购买服务器和域名开始,搭建一个精美的博客网站,希望对你有帮助!

    转载请注明原链接。