作者: 星辰

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

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

    基本定义

    线性方程组是形式如下的方程组: \(
    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(前提是你有谷歌账号),然后你就可以方便地随时备份和恢复数据,再也不担心数据丢失了!

    总结

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

    转载请注明原链接。