<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/scripts/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:h="http://www.w3.org/TR/html4/"><channel><title>chinosan&apos;s notes</title><description>握紧你的锄头</description><link>https://chinosan.com</link><item><title>编译原理 - 代码优化</title><link>https://chinosan.com/blog/compiler/code-opt</link><guid isPermaLink="true">https://chinosan.com/blog/compiler/code-opt</guid><description>编译原理课程笔记：基本块、DAG 局部优化、控制流分析、数据流分析与循环优化。</description><pubDate>Mon, 29 Jun 2026 04:00:00 GMT</pubDate><content:encoded>&lt;p&gt;节约时间、节约空间都叫做优化&lt;/p&gt;
&lt;h3&gt;优化技术分类&lt;/h3&gt;
&lt;p&gt;按优化范围分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;局部优化：基本块内的优化&lt;/li&gt;
&lt;li&gt;循环优化：循环体里头的优化&lt;/li&gt;
&lt;li&gt;全局优化：在整个源程序范围内优化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;按优化时间分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中间代码级优化：目标代码生成之前优化&lt;/li&gt;
&lt;li&gt;目标代码级优化：目标代码生成之后优化&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;基本技术&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常量合并（在定义变量/常量的值的时候 如果能直接算出来就直接算出来）&lt;/li&gt;
&lt;li&gt;公共子表达式删除（两个算式都使用了同一个子表达式）&lt;/li&gt;
&lt;li&gt;循环不变量或不变代码外提&lt;/li&gt;
&lt;li&gt;无用赋值删除（比如先定义了 a=5 且没用，后面又定义了 a=7，那么 a=5 就可以删掉）&lt;/li&gt;
&lt;li&gt;死代码删除（比如 ifelse 的条件句永假时，只需要保留 else 的代码）&lt;/li&gt;
&lt;li&gt;多跳删除（一个 goto 之后到的那个地方又是一个 goto）&lt;/li&gt;
&lt;li&gt;函数嵌入&lt;/li&gt;
&lt;li&gt;循环内运算强度削弱&lt;/li&gt;
&lt;li&gt;降低循环次数（把 n 次循环拆成：n/4 次四倍效果的循环 + n%4 次的单倍效果循环）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;优化过程：控制流分析、数据流分析、代码变换&lt;/p&gt;
&lt;h4&gt;局部优化&lt;/h4&gt;
&lt;p&gt;基本块：一个顺序执行的语句序列，只有唯一入口和唯一出口，分别对应序列的第一个语句和最后一个语句。没有转进转出，没有分叉汇合。在基本块里头做优化一定不会影响到程序的执行顺序&lt;/p&gt;
&lt;p&gt;基本块的划分方法。先找出所有的入口语句。入口语句：程序的第一个语句 / 转移语句中转移到的那个语句 / 紧跟在转移语句后面的语句。然后从上到下顺序扫描：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;找到一个入口语句，基本块开始
&lt;ul&gt;
&lt;li&gt;如果遇到一个入口语句，则从刚才那个入口语句（含）到当前语句（不含）之间的所有语句构成一个基本块。继续寻找下一个入口语句&lt;/li&gt;
&lt;li&gt;如果遇到一个转移语句/暂停语句，则从刚才那个入口语句（含）到当前语句（含）之间的所有语句构成一个基本块。继续寻找下一个入口语句&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;程序的控制流图：有向图，节点是基本块。a 到 b 有边的条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要么基本块 b 紧跟在基本块 a 的后面，且 a 的出口语句不是无条件转移或者停语句&lt;/li&gt;
&lt;li&gt;要么基本块 a 的出口语句是转移到基本块 b 的入口语句的转移语句（可以无条件也可以有条件）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个基本块内的代码可以表示成有向无环图 DAG。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;叶节点是变量名或常数，写在节点的下面，代表该变量或常数的值，通常标识符下标加 0 表示变量初值&lt;/li&gt;
&lt;li&gt;内部节点是运算符号，写在节点下面，代表运算出来的结果（相当于一个值了）&lt;/li&gt;
&lt;li&gt;每个节点可能附加一个或多个标识符，写在节点右边&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;考试只考虑三种四元式：0、1、2 型，分别表示有几个操作数。0 个操作数就是纯赋值。三种的 DAG 长这样长这样长这样长这样&lt;br&gt;
&lt;img src=&quot;./illus/opt/1.png&quot; alt=&quot;DAG三种四元式节点形式|500&quot;&gt;&lt;br&gt;
从基本块中的四元式构造出这个基本块的 DAG 的算法：构造叶节点、捕捉已知量并合并常数、捕捉公共子表达式、捕捉无用赋值。对每一个四元式都走一遍这个步骤。例子：&lt;br&gt;
&lt;img src=&quot;./illus/opt/2.png&quot; alt=&quot;基本块四元式示例|200&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;捕捉已知量合并常数：能算出来的变量值，就当作常数来用。比如图中的 T1&lt;/li&gt;
&lt;li&gt;捕捉公共子表达式：遇到相同的表达式或值，直接把对应的变量名写到同一个节点的右边，比如图中的 A 和 T5&lt;/li&gt;
&lt;li&gt;捕捉无用赋值：发现对同一个变量赋值且之前没使用过，那么就把之前那个赋值删掉，比如图中的 B&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./illus/opt/3.png&quot; alt=&quot;基本块DAG优化结果示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;写完之后，根据这个图重新写一遍四元式，就是最终的优化结果&lt;/p&gt;
&lt;h4&gt;控制流分析寻找循环&lt;/h4&gt;
&lt;p&gt;循环：是一个节点集，集合里头任意两个节点之间必有一条通路，且==只有一个入口==能够进入该集合。特别的，自环的节点认为是“自己到自己有通路”&lt;br&gt;
&lt;img src=&quot;./illus/opt/4.png&quot; alt=&quot;控制流图循环示例|500&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;如何找循环&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;定义：a DOM b，表示 a 是 b 的必经节点，也即从==程序入口节点==开始到达节点 b 的任意一条路径，都要经过点 a。DOM 是流图节点集上的偏序关系，自反性、传递性、反对称性&lt;br&gt;
必经节点集：$D(n)={a\mid \forall a \ \ \text{DOM}\ \ n}$ ，里头一定有 a 有 n&lt;br&gt;
&lt;img src=&quot;./illus/opt/5.png&quot; alt=&quot;必经节点集和回边示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;定义：回边 &lt;code&gt;&amp;#x3C;a,b&gt;&lt;/code&gt;，指的是一条有向边，从路径下游的某个点 a 指回 a 上游的某一个必经节点 b。例如上图中，7-&gt;4 就是回边，因为 7 的必经节点集里头有 4。&lt;/p&gt;
&lt;p&gt;循环的求法：从回边开始。对于一条回边 &lt;code&gt;&amp;#x3C;n,d&gt;&lt;/code&gt;，他将定义出一个循环 &lt;code&gt;&amp;#x3C;n,d&gt;_loop&lt;/code&gt;，循环里的节点是 &lt;strong&gt;所有 终点为 n 且不经过 d 的通路&lt;/strong&gt; 上的所有节点，再加上 n 和 d 自己。d 是循环的唯一入口。&lt;/p&gt;
&lt;p&gt;例如上图中，7-&gt;4 是一条回边，说明 7 是下游、4 是上游。那么就看所有从入口到 7 的路径，把路径中 4 之前的部分砍掉，剩下的部分会是一个从 4 到 7 的通路，再加上 7 回到 4 的回边，就构成了一个循环。&lt;/p&gt;
&lt;h4&gt;数据流分析&lt;/h4&gt;
&lt;p&gt;点：就是一个位置&lt;/p&gt;
&lt;p&gt;按语句位置分&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;入口点：基本块第一个代码之前的位置&lt;/li&gt;
&lt;li&gt;出口点：基本块最后一个代码之后的位置&lt;/li&gt;
&lt;li&gt;相邻点：两个代码中间的点&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;按语句功能分&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;定值点：使得变量 A 获得值的那个语句的位置，称为 A 的定值点。可以是赋值可以是输入可以是函数调用。用 &lt;code&gt;圈A&lt;/code&gt; 表示对 A 的定值&lt;/li&gt;
&lt;li&gt;引用点：引用变量 A 的值的那个语句的位置，称为 A 的引用点。例如 i=i+1，第一个 i 是定值点、第二个 i 是引用点；i++，i 既是引用点又是定值点。用 &lt;code&gt;&amp;#x3C;A&gt;&lt;/code&gt; 表示对 A 的引用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;几个关于通路的&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;到达 - 定值：称变量 A 在某点 d 的定值到达了点 p，如果存在一条 d-&gt;p 的通路、且一路上没有对变量 A 再进行定值。&lt;/li&gt;
&lt;li&gt;变量 A 在引用点 p 的&lt;strong&gt;引用 - 定值链（ud 链）&lt;/strong&gt;：即所有能改变到我在 p 点引用变量 A 的值的那些定值点的全体。如图所示，由于 d2 这个定值会被 d4 覆盖掉，所以 d2 并不属于 A 的 ud 链&lt;br&gt;
&lt;img src=&quot;./illus/opt/6.png&quot; alt=&quot;到达定值与ud链示例|500&quot;&gt;&lt;/li&gt;
&lt;li&gt;变量 A 在定值点 p 的&lt;strong&gt;定值 - 引用链（du 链）&lt;/strong&gt;：即所有会使用到我在 p 点对变量 A 的定值的那些引用点的全体。&lt;/li&gt;
&lt;li&gt;ud 和 du 怎么区分：看==后面那个==，如果是 d 就是定值点的集合，如果是 u 就是引用点的集合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./illus/opt/7.png&quot; alt=&quot;du链示例|500&quot;&gt;&lt;/p&gt;
&lt;h4&gt;数据流方程&lt;/h4&gt;
&lt;p&gt;基本形式：$\text{out}[B]=\text{gen}[B]\cup(\text{in}[B]-\text{kill}[B])$&lt;br&gt;
out 输出的信息、gen 生成的信息、in 输入基本块的信息、kill 注销掉的信息&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;到达 - 定值数据流方程：在数据流分析中采集变量定值情况
$$
\text{out}[B]=\text{gen}[B]\cup(\text{in}[B]-\text{kill}[B])
$$
$$
\text{in}[B]=\bigcup(B_k\in \text{Prev}(B))\ \text{out}[B_k]
$$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in 集合 = 能够到达当前基本块入口点的定值点的集合&lt;/li&gt;
&lt;li&gt;out 集合 = 能够到达当前基本块出口点的定值点的集合&lt;/li&gt;
&lt;li&gt;gen 集合 = 在当前基本块中的定值点（且这个定值能够到达出口点）的集合&lt;/li&gt;
&lt;li&gt;kill 集合 = 在其他基本块中的定值点（且在当前基本块中重新被定值，和实际流不流得到无关）的集合&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;表达式在 p 点可用，就是说到达 p 点的所有路径当中都计算该表达式，且路上没有对表达式当中的变量定值。&lt;br&gt;
&lt;img src=&quot;./illus/opt/8.png&quot; alt=&quot;可用表达式路径示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;可用表达式数据流方程：
$$
\text{out}[B]=\text{gen}[B]\cup(\text{in}[B]-\text{kill}[B])
$$
$$
\text{in}[B]=\bigcap(B_k\in \text{Prev}(B))\ \text{out}[B_k]
$$&lt;/p&gt;
&lt;p&gt;刚才是并 现在是交，是因为只有当在所有前驱块结束点都有效的时候，这个表达式才可用，只要有一个无效，就会出现冲突&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;活跃变量：对于某个点 p，若存在一条从 p 开始的通路，路上引用了 A 在 p 点的值，则称 A 在 p 是活跃的。例如图中，如果右边不划掉，A 就在 p 活跃，因为存在一条路使得这个定值是有效的；划掉之后，A 就在 p 死亡，而在 d&apos; 活跃&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/opt/9.png&quot; alt=&quot;活跃变量示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;活跃变量数据流方程：
$$
\text{inL}[B]=\text{useL}[B]\cup(\text{outL}[B]-\text{defL}[B])
$$
$$
\text{outL}[B]=\bigcup(B_k\in \text{Succ}(B))\ \text{inL}[B_k]
$$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;inL 集合 = 在当前基本块入口点活跃的活跃变量的集合&lt;/li&gt;
&lt;li&gt;outL 集合 = 在当前基本块出口点活跃的活跃变量的集合&lt;/li&gt;
&lt;li&gt;defL 集合 = 在当前基本块中被定值、且定值前未曾在当前块中引用的变量的集合&lt;/li&gt;
&lt;li&gt;useL 集合=在当前基本块中被引用、且引用前未曾在当前块中定值的变量的集合&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;循环优化&lt;/h4&gt;
&lt;p&gt;先用控制流分析找到循环，然后对于循环里头的每一个基本块做数据流分析性&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;代码外提：寻找不变运算（即运算对象的定值在循环之外）&lt;/p&gt;</content:encoded><h:img src="/_astro/compiler-cover.DLQuUW98.png"/><enclosure url="/_astro/compiler-cover.DLQuUW98.png"/></item><item><title>编译原理 - 语义分析与中间代码生成</title><link>https://chinosan.com/blog/compiler/sem-analysis</link><guid isPermaLink="true">https://chinosan.com/blog/compiler/sem-analysis</guid><description>编译原理课程笔记：语法制导语义分析、符号表、类型检查、中间语言与控制流翻译。</description><pubDate>Mon, 29 Jun 2026 03:00:00 GMT</pubDate><content:encoded>&lt;p&gt;语义分析是编译程序最实质性的工作，第一次对源程序的语义做出解释，引起源程序的实质变化&lt;/p&gt;
&lt;p&gt;语义处理的任务：按照语法分析器识别的语法范畴结构，依据其语义规则进行语义检查和处理，产生相应的中间代码或目标代码&lt;/p&gt;
&lt;p&gt;中间代码：介于源语言和目标语言之间的一种代码。引入中间代码的目的：方便生成目标代码，便于优化和移植&lt;/p&gt;
&lt;h3&gt;语法制导的语义分析&lt;/h3&gt;
&lt;p&gt;就是说在语法分析的过程中把语义分析给做了。==这块承认没法考大题 所以知道定义和概念就行了 不要死抠细节==&lt;/p&gt;
&lt;p&gt;文法符号的属性 N.t，N 是文法符号，t 是 N 的属性。文法符号可以是终结符也可以是非终结符，例如终结符至少有值和类型。&lt;br&gt;
属性的值由产生式的语义规则来定义（语义规则就是一段代码，告诉计算机要做什么），语义处理就是要计算出属性的值&lt;/p&gt;
&lt;p&gt;可以理解为，每一个文法符号都是一个类，成员变量就是属性，成员函数就是语义规则&lt;/p&gt;
&lt;p&gt;非终结符有两类属性&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;综合属性（synthesized 属性）：产生式左部符号的某些属性由候选式中符号的属性和自己的其他属性定义&lt;/li&gt;
&lt;li&gt;继承属性（inherited 属性）：候选式中符号的某些属性由产生式左侧非终结符好的属性和候选式中其他符号的某些属性定义&lt;/li&gt;
&lt;li&gt;简单说就是，综合属性就是左部符号的属性，继承属性就是右部符号的属性&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;终结符的所有属性都是==综合属性==&lt;/p&gt;
&lt;h4&gt;语法制导定义 SDD&lt;/h4&gt;
&lt;p&gt;Syntax-Directed Definition&lt;/p&gt;
&lt;p&gt;利用属性文法。属性文法是一个三元组，二型文法 + 属性集 (所有文法符号加点加属性) + 语义规则&lt;/p&gt;
&lt;p&gt;属性翻译文法是上下文无关文法的推广，将每个文法符号和一个语义属性集合相关联，将每个产生式和一组语义规则相关联，这些规则用于计算该产生式中各文法符号的属性值&lt;/p&gt;
&lt;p&gt;例如一个计算器的 SDD。注意下标，因为在真正的计算中 E 和 E 是不一样的&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/sem/1.png&quot; alt=&quot;计算器SDD示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;再例如乘法运算的 SDD。这里头出现了“右侧符号的属性”，说明是继承属性&lt;br&gt;
&lt;img src=&quot;./illus/sem/2.png&quot; alt=&quot;乘法运算SDD继承属性示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;再例如变量定义语句。虚属性就是说没有对某个符号的属性做操作，而是做了其他的事情，算是一种广义的计算。&lt;br&gt;
&lt;img src=&quot;./illus/sem/3.png&quot; alt=&quot;变量定义语句SDD虚属性示例|500&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;然后就需要根据语义规则确定各个属性的计算顺序。&lt;/p&gt;
&lt;p&gt;定义：依赖图。在语法分析树基础上：继承属性写在符号左边、综合属性写在符号右边（刚好与符号在产生式的位置相反），红色箭头表示“箭头的计算依赖于箭尾”&lt;br&gt;
&lt;img src=&quot;./illus/sem/4.png&quot; alt=&quot;依赖图中属性位置和依赖箭头示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;==注：图中 digit 的属性放右边，因为终结符的所有属性都是综合属性==&lt;/p&gt;
&lt;p&gt;在执行语法分析的时候，每次砍一个句柄、按照对应关系更新属性就行了&lt;/p&gt;
&lt;p&gt;再看一个例子，包含虚属性的处理以及无属性常量 (float) 的处理。虚属性当作综合属性写在右端&lt;br&gt;
&lt;img src=&quot;./illus/sem/5.png&quot; alt=&quot;含虚属性和float常量的依赖图示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;得到依赖图之后，做拓扑排序得到属性值的计算的顺序&lt;/p&gt;
&lt;p&gt;两种特殊的属性文法，可以在语法分析阶段就做完属性值计算，原本的语法树变为称为注释语法分析树：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;S- 属性文法：所有非终结符只有综合属性。此时只需要后序遍历语法分析树就能算完所有属性。&lt;br&gt;
&lt;img src=&quot;./illus/sem/6.png&quot; alt=&quot;S属性文法注释语法树示例|500&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;L- 属性文法：既有综合属性又有继承属性，但对继承属性有要求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要么是其直接父节点的继承属性&lt;/li&gt;
&lt;li&gt;要么是其左侧兄弟的任何属性&lt;/li&gt;
&lt;li&gt;要么是自己的其他继承属性、且自身属性间不存在环&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;此时只需要深度优先遍历语法分析树就能算完所有属性&lt;br&gt;
&lt;img src=&quot;./illus/sem/7.png&quot; alt=&quot;L属性文法继承属性计算示例一|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/8.png&quot; alt=&quot;L属性文法继承属性计算示例二|500&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;SDD 的一个用法是求出句子的抽象语法树。只需要在语义规则当中创建节点并做好连接就行了&lt;/p&gt;
&lt;p&gt;抽象语法树中，内部节点为运算符，子节点为运算符相关的运算分量。生成方式：可以通过定义一组语义规则从产生式当中创建出一棵树&lt;br&gt;
&lt;img src=&quot;./illus/sem/9.png&quot; alt=&quot;抽象语法树构造语义规则示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/10.png&quot; alt=&quot;语法树到抽象语法树示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/11.png&quot; alt=&quot;抽象语法树节点连接结果示例|500&quot;&gt;&lt;/p&gt;
&lt;h4&gt;语法制导翻译 SDT&lt;/h4&gt;
&lt;p&gt;Syntax-Directed Translation&lt;/p&gt;
&lt;p&gt;SDD 只告诉我们这条语义规则与这个产生式相关，但没有告诉我们什么时候计算。所以 SDT 就是把属性计算或语义动作用“{}”嵌入在产生式中，嵌入的位置表示相对应的计算时间。&lt;br&gt;
&lt;img src=&quot;./illus/sem/12.png&quot; alt=&quot;SDT语义动作嵌入产生式示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;(1) 当 SDD 是 s 属性文法，那么对应的 SDT 中把计算都放在产生式的最后，表示在“归约”的时候做计算。计算的时候只需要在做自下而上分析的时候，在状态栈、符号栈之外多加一个属性栈，每次归约的时候就做属性计算即可。这种翻译方案称为后缀 SDT&lt;br&gt;
&lt;img src=&quot;./illus/sem/13.png&quot; alt=&quot;后缀SDT属性栈计算示例一|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/14.png&quot; alt=&quot;后缀SDT属性栈计算示例二|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;(2) 当 SDD 是 L 属性文法，那么对应的 SDT 中：继承属性的语义动作放在符号出现之前，多个继承属性动作按拓扑排序排列，分析开始前执行语义动作；综合属性的语义动作放在产生式最后，分析完成后执行语义动作。计算的时候做自上而下分析。&lt;/p&gt;
&lt;p&gt;自上而下分析要消除左递归。消除方法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果语义动作不涉及属性计算，则直接按以前的方法消除左递归&lt;br&gt;
&lt;img src=&quot;./illus/sem/15.png&quot; alt=&quot;无属性语义动作消除左递归示例|500&quot;&gt;&lt;/li&gt;
&lt;li&gt;如果语义动作涉及属性计算：==完全没看懂==&lt;br&gt;
&lt;img src=&quot;./illus/sem/16.png&quot; alt=&quot;含属性语义动作消除左递归示例|500&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个例子（==这个是会考的==，比如说写一个矩阵乘法）。L1L2L3 就是三个位置标签，就是规定 goto 到的位置。==&amp;#x3C;expr&gt;.true 或者&amp;#x3C;expr&gt;.false 都是标签，不是值==&lt;br&gt;
&lt;img src=&quot;./illus/sem/17.png&quot; alt=&quot;布尔表达式标签翻译SDT示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/18.png&quot; alt=&quot;布尔表达式标签翻译结果示例|500&quot;&gt;&lt;/p&gt;
&lt;h3&gt;符号表与类型检查&lt;/h3&gt;
&lt;p&gt;程序内置的叫做固定单词（关键字、运算符、代码界限），用户定义的变量名之类的叫做标识符&lt;/p&gt;
&lt;p&gt;符号表：存放源程序中有关于标识符属性信息的数据结构。属性信息比如变量名、类型、（数组）大小、（函数）参数等。&lt;/p&gt;
&lt;p&gt;==类型检查没写==&lt;/p&gt;
&lt;h3&gt;中间代码生成&lt;/h3&gt;
&lt;h4&gt;中间语言&lt;/h4&gt;
&lt;p&gt;主要有抽象语法树、逆波兰式、四元式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;语法树&lt;/strong&gt;去除非终结符和无语义的终结符之后变为&lt;strong&gt;抽象语法树&lt;/strong&gt;，后序遍历线性化之后变为&lt;strong&gt;逆波兰式&lt;/strong&gt;，写成单步表示变为&lt;strong&gt;四元式&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;逆波兰式就是后缀表达式。J 是 jump 的意思 J_T 是跳到 true 的意思&lt;br&gt;
&lt;img src=&quot;./illus/sem/19.png&quot; alt=&quot;逆波兰式和四元式中间语言示例|500&quot;&gt;&lt;br&gt;
关于 if 跳转，当 if 里头的代码执行完，要跳转出整个 if 块&lt;br&gt;
&lt;img src=&quot;./illus/sem/20.png&quot; alt=&quot;if语句跳转四元式示例一|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/21.png&quot; alt=&quot;if语句跳转四元式示例二|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;三元式：操作符、第一操作数、第二操作数&lt;br&gt;
四元式：操作符、第一操作数、第二操作数、运算结果&lt;/p&gt;
&lt;p&gt;三元式中，算式的标号也可以作为结果直接引用，例如下面第二条式子就是把 A 和第一条式子的结果相加&lt;br&gt;
&lt;img src=&quot;./illus/sem/22.png&quot; alt=&quot;三元式引用临时结果示例|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/23.png&quot; alt=&quot;三元式序列示例|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;间接三元式：新建一个间接码表代表三元式的执行顺序，可以把重复的部分进行合并&lt;br&gt;
&lt;img src=&quot;./illus/sem/24.png&quot; alt=&quot;间接三元式间接码表示例|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;四元式：增加一个位置用于存储运算结果&lt;br&gt;
&lt;img src=&quot;./illus/sem/25.png&quot; alt=&quot;四元式结构示例|400&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4&gt;说明语句的翻译&lt;/h4&gt;
&lt;p&gt;变量名信息，不产生目标代码，供语义检查（是否重复定义）和存储空间分配。处理方式：填入符号表即可有三种&lt;/p&gt;
&lt;p&gt;常量定义语句：&lt;code&gt;const pi=3.14&lt;/code&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/26.png&quot; alt=&quot;常量定义语句文法示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/27.png&quot; alt=&quot;常量定义语句语义规则示例|500&quot;&gt;&lt;br&gt;
其 SDT 如下&lt;br&gt;
&lt;img src=&quot;./illus/sem/28.png&quot; alt=&quot;常量定义语句SDT示例|300&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;简单说明语句。表中 I 是 int、R 是 real，整型和实型&lt;br&gt;
&lt;img src=&quot;./illus/sem/29.png&quot; alt=&quot;简单说明语句文法示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/30.png&quot; alt=&quot;简单说明语句语义规则示例|500&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;复合类型说明语句（主要是 struct）&lt;br&gt;
&lt;img src=&quot;./illus/sem/31.png&quot; alt=&quot;复合类型说明语句文法示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/32.png&quot; alt=&quot;复合类型说明语句语义规则示例|500&quot;&gt;&lt;/p&gt;
&lt;h4&gt;赋值语句和表达式的翻译&lt;/h4&gt;
&lt;p&gt;赋值语句文法 $A\to V=E$&lt;br&gt;
SDT：先计算 E.code（因为值可以是一个表达式），然后检查等号左右的类型相容性以及转换，最后复制&lt;br&gt;
&lt;img src=&quot;./illus/sem/33.png&quot; alt=&quot;赋值语句翻译SDT示例|500&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;表达式文法 $E\to E\ op\ E\mid op\ E\mid id$&lt;br&gt;
SDT：&lt;br&gt;
&lt;img src=&quot;./illus/sem/34.png&quot; alt=&quot;表达式翻译SDT示例|500&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;逻辑表达。&lt;br&gt;
&lt;img src=&quot;./illus/sem/35.png&quot; alt=&quot;逻辑表达式翻译示例|500&quot;&gt;&lt;/p&gt;
&lt;h4&gt;控制流类语句翻译&lt;/h4&gt;
&lt;p&gt;打破程序执行顺序，引起程序执行发生跳转这类的重点是跳转目标标记（也就是之前说的 label）&lt;br&gt;
&lt;img src=&quot;./illus/sem/36.png&quot; alt=&quot;控制流语句跳转标签示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;跳转语句的四元式&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无条件：&lt;code&gt;(J, , , pos)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;有条件：
&lt;ul&gt;
&lt;li&gt;条件单独写一个四元式，例如 &lt;code&gt;(&gt;,A,B,T)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;当条件为真的时候跳转：&lt;code&gt;(J_t, T, , pos)&lt;/code&gt; jump true&lt;/li&gt;
&lt;li&gt;当条件为假的时候跳转：&lt;code&gt;(J_f, T, , pos)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;第一类：goto 语句。&lt;/p&gt;
&lt;p&gt;语句标号表：==标号名 + flag + addr==，flag=1 时表示是标号的定义 &lt;code&gt;A: S1;&lt;/code&gt; (定义性出现)，0 是表示是标号的使用 &lt;code&gt;goto A;&lt;/code&gt; (使用性出现)，addr 表示 &lt;code&gt;S1&lt;/code&gt; 的第一条代码的地址或编号&lt;/p&gt;
&lt;p&gt;拉链 - 返填技术：为了解决“出现 goto 语句的时候还不知道标记在什么位置”的情况。例如&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;...
goto 20;
...
goto 20;
...
20: c=a*b;
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;拉链返填的意思就是，将跳转位置写成一个链表，每次遇到一个 goto 就把 jump 位置设置成上一次遇到 goto 的位置（第一次遇见的时候位置为 0 表示链尾），直到遇见标记定义位置的时候，然后开始返填，直到填到链头。&lt;br&gt;
&lt;img src=&quot;./illus/sem/37.png&quot; alt=&quot;goto语句拉链返填示例|500&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;第二类：if 语句。当条件当中有 and or 的时候，可以通过 Jt 和 Jf，这样只需要判断一部分式子就行了&lt;br&gt;
&lt;img src=&quot;./illus/sem/38.png&quot; alt=&quot;if语句短路跳转翻译示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;其他：&lt;br&gt;
纯 if：&lt;img src=&quot;./illus/sem/39.png&quot; alt=&quot;纯if语句四元式模板|300&quot;&gt;&lt;br&gt;
if else：&lt;img src=&quot;./illus/sem/40.png&quot; alt=&quot;if-else语句四元式模板|300&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;第三类：while 循环&lt;br&gt;
&lt;img src=&quot;./illus/sem/41.png&quot; alt=&quot;while循环四元式模板|500&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;第四类：for 循环&lt;br&gt;
&lt;img src=&quot;./illus/sem/42.png&quot; alt=&quot;for循环四元式模板|500&quot;&gt;&lt;br&gt;
一个 for 总共有四个标签。第一个在条件式前面，一轮循环结束后回来判断用的；第二个在循环体的第一行代码，当条件判断为真的时候跳到这里；第三个在循环体外面，当条件判断为假的时候跳到这里；第四个标签在更新循环变量前面，循环体结束之后立刻执行的，执行完回到第一个标签&lt;/p&gt;
&lt;p&gt;例题：两层 for 一层 if&lt;br&gt;
&lt;img src=&quot;./illus/sem/43.png&quot; alt=&quot;两层for一层if例题源码|300&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/sem/44.png&quot; alt=&quot;两层for一层if四元式翻译结果|500&quot;&gt;&lt;/p&gt;
&lt;h4&gt;数组语句的翻译&lt;/h4&gt;
&lt;p&gt;先填符号表，再填信息向量表。信息向量表：维数、第一维大小、……、第 n 维大小、体积、计算数元地址不变部分 C、数组第一个元素的地址。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;a[m][n]&lt;/code&gt; 按行存储和按列存储怎么区分：看在引用的时候乘以的是什么，如果乘以的是列数就是按行存储的（因为一次跳过了全部的 n 列也即一行），如果乘以的是行数那就是按列存储的（因为一次跳过了全部的 m 行也就是一列）&lt;/p&gt;
&lt;p&gt;多维数组：&lt;code&gt;int a[d1][d2]...[dn]&lt;/code&gt;，则&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;a[i1][i2]...[in]=a0+(i1 x d2 x d3 x ... x dn)
				   +(i2 x d3 x ... x dn)
				   +...
				   +i(n-1) x dn
				   +in) x width
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;计算数元地址不变部分 C：如果不是从 0 存起而是从 1 存起，那么上述式子当中每一个 ik 都要减去 1，展开后会多出来一个不含 i、只含 d 的式子，这个式子就是那个 C，剩下的部分就是 V（可变部分）。为什么叫元地址不变：因为这一块不含 i，编译的时候就能计算出来。这样寻址的公式就变成了 a0 + V - C&lt;/p&gt;
&lt;p&gt;四元式：&lt;br&gt;
&lt;img src=&quot;./illus/sem/45.png&quot; alt=&quot;数组元素地址计算四元式示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;拓展：动态数组 malloc 之类的，编译的时候只分配信息向量表所占据的空间，具体信息都得等执行的 malloc 的时候才能填写&lt;/p&gt;
&lt;h4&gt;函数的翻译&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;./illus/sem/46.png&quot; alt=&quot;函数调用翻译示例|500&quot;&gt;&lt;br&gt;
语义处理：检查调用的函数火锅是否已经定义，参数类型和数量是否一致&lt;/p&gt;
&lt;p&gt;四元式：&lt;code&gt;call f 1 t3 &lt;/code&gt;，用一个参数调用 f，结果存到 t3&lt;/p&gt;</content:encoded><h:img src="/_astro/compiler-cover.DLQuUW98.png"/><enclosure url="/_astro/compiler-cover.DLQuUW98.png"/></item><item><title>编译原理 - 语法分析</title><link>https://chinosan.com/blog/compiler/syntax-analysis</link><guid isPermaLink="true">https://chinosan.com/blog/compiler/syntax-analysis</guid><description>编译原理课程笔记</description><pubDate>Mon, 29 Jun 2026 02:00:00 GMT</pubDate><content:encoded>&lt;p&gt;| 分析   | 说明工具（数学表示的方法） | 识别工具  |
| ---- | ------------- | ----- |
| 词法分析 | 正规式           | NFA   |
| 语法分析 | 上下文无关文法       | LL、LR |&lt;/p&gt;
&lt;h2&gt;文法&lt;/h2&gt;
&lt;p&gt;文法是一个四元组 $G=(V_N,V_T,S,P)$&lt;br&gt;
$V_N$ 非终结符号集&lt;br&gt;
$V_T$ 终结符号集&lt;br&gt;
$S$ 文法的开始符号或识别符号&lt;br&gt;
$P$ 产生式集&lt;/p&gt;
&lt;p&gt;有的时候只写产生式集（下面有例子）&lt;/p&gt;
&lt;p&gt;VN VT 合称文法 G 的符号集 V&lt;br&gt;
产生式集：&lt;br&gt;
&lt;img src=&quot;./illus/syntax/1.png&quot; alt=&quot;产生式左部和候选式示例|300&quot;&gt;&lt;br&gt;
黑色的就是非终结符，绿色的就是终结符&lt;br&gt;
箭头左边称为左部，是 $V^+$ 的元素，且必须要包含 $V_N$ 中的一个元素。&lt;br&gt;
右边称为右部/候选式，是 $V^*$ 的元素。&lt;/p&gt;
&lt;p&gt;开始符号必须至少在某个产生式的左部出现一次。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;句子的推导与归约，推导就是左部到右部；归约就是右部到左部&lt;/p&gt;
&lt;p&gt;推导：从 S 开始，反复用产生式的右部去替换左部，得到一个由终结符号组成的字符串。例如这个，称为直接推导序列。记作 $\lambda \xRightarrow+\mu$，（如果还有 $\lambda=\mu$ 也可以记作 $\lambda \xRightarrow*\mu$）&lt;br&gt;
&lt;img src=&quot;./illus/syntax/2.png&quot; alt=&quot;直接推导序列示例一|300&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/3.png&quot; alt=&quot;直接推导序列示例二|300&quot;&gt;&lt;/p&gt;
&lt;p&gt;文法 $G$ 生成的语言 $L(G)$：是所有用 G 可以生成的终结符号串的全体&lt;/p&gt;
&lt;p&gt;句型：$S\xRightarrow*\alpha\in V^&lt;em&gt;$&lt;br&gt;
句子：$S\xRightarrow&lt;/em&gt;\alpha\in V_T^*$&lt;/p&gt;
&lt;p&gt;如果推导过程中，总是对句型中的最左边的非终结符进行替换，称为最左推导&lt;br&gt;
如果推导过程中，总是对句型中的最右边的非终结符进行替换，称为最右推导/规范推导。&lt;br&gt;
至于选择哪一个产生式做推导，并不在乎&lt;/p&gt;
&lt;p&gt;仅用规范推导得到的句型称为规范句型 。规范推导的逆序为规范归约。&lt;/p&gt;
&lt;p&gt;例子：&lt;br&gt;
&lt;img src=&quot;./illus/syntax/4.png&quot; alt=&quot;表达式文法产生式示例|500&quot;&gt;&lt;br&gt;
这个文法就只写了产生式集，这里总共四个产生式，E 就是非终结符，i 就是终结符&lt;/p&gt;
&lt;p&gt;这还引出了“递归文法”的概念&lt;br&gt;
文法 G 的产生式形如 $A\to \gamma$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;若 $\gamma=\alpha A\beta$ 则称为直接递归文法，递归的非终结符出现在了产生式的右部&lt;/li&gt;
&lt;li&gt;若 $\gamma\Rightarrow\alpha A\beta$ 则称为间接递归文法&lt;/li&gt;
&lt;li&gt;若 $A\beta$ 则称为左递归文法（就是说 产生式后部当中，左半部分是递归的）&lt;/li&gt;
&lt;li&gt;若 $\alpha A$ 则称为右递归文法（就是说 产生式后部当中，右半部分是递归的）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;直接/间接 x 左递归/右递归。只要其中一条产生式符合某个递归，整个文法就算这个递归&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/5.png&quot; alt=&quot;直接右递归文法示例|400&quot;&gt;&lt;br&gt;
也是直接右递归&lt;/p&gt;
&lt;p&gt;关于间接递归的例子&lt;br&gt;
&lt;img src=&quot;./illus/syntax/6.png&quot; alt=&quot;间接递归文法示例|400&quot;&gt;&lt;/p&gt;
&lt;h3&gt;语言推文法&lt;/h3&gt;
&lt;p&gt;==必考==&lt;br&gt;
ppt p42 to 52&lt;br&gt;
注意 n 是从 0 开始还是从 1 开始&lt;/p&gt;
&lt;p&gt;重复式&lt;br&gt;
&lt;img src=&quot;./illus/syntax/7.png&quot; alt=&quot;重复式语言文法示例一|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/8.png&quot; alt=&quot;重复式语言文法示例二|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/9.png&quot; alt=&quot;重复式语言文法示例三|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;不等号&lt;br&gt;
&lt;img src=&quot;./illus/syntax/10.png&quot; alt=&quot;不等号约束语言文法示例|400&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;倍数处理方式（直接背下来）&lt;br&gt;
&lt;img src=&quot;./illus/syntax/11.png&quot; alt=&quot;倍数关系语言文法示例|400&quot;&gt;&lt;br&gt;
解析：第一题，用横线下面那个式子好理解。aTbb 就是先让 b 的个数是 a 的两倍，然后 aTb 就是让 a 和 b 同时增长，这样就能控制在 1 到 2 倍之间。&lt;br&gt;
第二题是一样的道理，aTbbb 就是先让 b 的个数是 a 的三倍。然后不能只通过 aTb 来调整倍数，否则 abb 就凑不出来了，所以要加一个 aTbb&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;然后还有两个文字描述的例子，也是直接背下来&lt;br&gt;
&lt;img src=&quot;./illus/syntax/12.png&quot; alt=&quot;带正负号奇整数文法示例|400&quot;&gt;&lt;br&gt;
第一条：添加正负号。这一条一定没法用递归文法，所以单独拎出来&lt;br&gt;
第五条 A：1 3 5 7 9&lt;br&gt;
第四条 B ：1-9&lt;br&gt;
第三条 C：0-9&lt;br&gt;
第二条：构造式，无符号奇整数，要么是一位数（A），要么是两位数（BA），要么是三位及以上（BDA），其中 D 是任意 0-9 符号串&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/13.png&quot; alt=&quot;奇偶计数语言文法示例|400&quot;&gt;&lt;br&gt;
解析：记右下角那个写法。类似以前 qee qeo qoo qoe 自动机的那个题，只不过这里 qee 和 qoo 合到一起了&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;文法的描述方法。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BNF 表示法（尖括号表示非终结符，就是之前举例子用的）&lt;/li&gt;
&lt;li&gt;EBNF 表示法（增加了大中小括号。花括号表示重复次数，圆括号表示分配公因式，方括号表示可有可无）&lt;/li&gt;
&lt;li&gt;语法图表示法（一个起始结点和一个终止结点。终结符结点用圆形表示，非终结符结点用方形表示）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;EBNF 三个例子&lt;br&gt;
&lt;img src=&quot;./illus/syntax/14.png&quot; alt=&quot;EBNF表示法示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;语法图例子&lt;br&gt;
&lt;img src=&quot;./illus/syntax/15.png&quot; alt=&quot;语法图表示法示例一|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/16.png&quot; alt=&quot;语法图表示法示例二|500&quot;&gt;&lt;/p&gt;
&lt;h3&gt;二义性与语法树&lt;/h3&gt;
&lt;p&gt;语法树：句子从文法中推导出来的过程中生长出来的树。终结符是叶子&lt;/p&gt;
&lt;p&gt;句子二义性：一部文法 G，如果至少存在一个句子或句型，有不只一棵分析树（或最左推导或最右推导），则称该句子或句型是二义性的。&lt;/p&gt;
&lt;p&gt;包含有二义性句子（或句型）的文法称为二义文法。否则，该文法是无二义性的。&lt;/p&gt;
&lt;p&gt;这个例子：25 是无二义性的句子，只是展开的顺序不一样，最左推导是在第三层先推导数字串，最右推导是在第三层先推导数字&lt;br&gt;
&lt;img src=&quot;./illus/syntax/17.png&quot; alt=&quot;无二义性句子的两种推导树|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;有二义性的例子&lt;br&gt;
&lt;img src=&quot;./illus/syntax/18.png&quot; alt=&quot;二义性表达式文法分析树一|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/19.png&quot; alt=&quot;二义性表达式文法分析树二|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;二义性消除的方法：在文法中规定优先级、并规定结合规则。优先级越高的越在下面。结合律：只要不是符号两边都是相同的非终结符应该就可以（==暂时的理解==）。下面==这个两例子要背下来==&lt;br&gt;
&lt;img src=&quot;./illus/syntax/20.png&quot; alt=&quot;消除表达式二义性的优先级文法|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/21.png&quot; alt=&quot;表达式二义文法规则|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/22.png&quot; alt=&quot;按优先级分层后的表达式文法|500&quot;&gt;&lt;/p&gt;
&lt;h3&gt;四类文法&lt;/h3&gt;
&lt;p&gt;四类文法。k 型文法描述的语言称为 k 型语言 $L_k$，k=0 1 2 3。从 0 到 3 限制越来越严，描述能力越来越弱&lt;br&gt;
ppt 中每个类型的文法都给了例子，当作推导的练习（就是文法推描述）&lt;/p&gt;
&lt;p&gt;0 型文法（ 短语文法 ）就是最基本的文法。0 型语言可以用图灵机识别。&lt;/p&gt;
&lt;p&gt;1 型文法（上下文有关文法）：要求产生式必须满足 $\alpha A\beta\to\alpha \gamma \beta$，其中 A 是非终结符，$\alpha\beta\gamma$ 无所谓。也就是说每条产生式必须有上下文，可以只有上文，也可以只有下文。1 型语言可由线性有界自动机来识别&lt;/p&gt;
&lt;p&gt;2 型文法（上下文无关文法）：要求产生式必须满足 $A\to  \gamma$，其中 A 是非终结符，$\alpha$ 无所谓。也就是说每条产生式都不能有上下文。2 型语言可由非确定的下推自动机来识别&lt;/p&gt;
&lt;p&gt;3 型文法（线性文法、正则文法）。要求产生式必须满足以下条件的其中一个，要么都是左线性，要么都是右线性，不能混在一起&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左线性文法：$A\to B\alpha  \mid \alpha$（左边非终结）&lt;/li&gt;
&lt;li&gt;右线性文法：$A\to\alpha B \mid \alpha$（右边非终结。实在分不清就写 3 型好了）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中 $AB$ 是非终结符，$\alpha$ 是终结符构成的串。3 型语言可由 DFA 来识别，画 FA 的方法如下（注意只是 FA 因为还有空串，要等价成 DFA）&lt;br&gt;
&lt;img src=&quot;./illus/syntax/23.png&quot; alt=&quot;右线性文法转有限自动机步骤一|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/24.png&quot; alt=&quot;右线性文法转有限自动机步骤二|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/25.png&quot; alt=&quot;右线性文法转有限自动机步骤三|400&quot;&gt;&lt;/p&gt;
&lt;h2&gt;语法分析方法&lt;/h2&gt;
&lt;p&gt;给出一个算法，自动判断属性字流是否属于某个文法&lt;/p&gt;
&lt;p&gt;自顶向下：就是从开始符号 S 开始，用产生式的右部替换非终结符，逐步推导出句子。重点在于如何选择合适的产生式&lt;br&gt;
自底向上：就是从句子中寻找与产生式匹配的子串，并用产生式的左部替换之（称为归约），直到归约到开始符号 S。重点在于如何选择可归约串&lt;/p&gt;
&lt;h3&gt;自上而下分析&lt;/h3&gt;
&lt;h4&gt;不确定的自上而下分析法&lt;/h4&gt;
&lt;p&gt;==下面的所有讨论都是基于最左推导==&lt;/p&gt;
&lt;p&gt;自上而下分析的本质 是试探，尝试使用不同的产生式谋求匹配输入串，带回溯，算法效率低开销大。&lt;/p&gt;
&lt;p&gt;而且如果有左递归，当分析器尝试匹配非终结符 $I$ 时，它会根据产生式 $I \rightarrow I0$ 再次尝试匹配 $I$。这个过程发生在尝试消耗任何输入字符之前，这会使分析树无休止的延伸，陷入死循环。&lt;/p&gt;
&lt;p&gt;右递归没事。因为分析器会先处理左侧的符号 $\alpha$，如果 $\alpha$ 是终结符（或者能推导出终结符的非终结符），分析器会先匹配并消耗输入字符串中的字符。只有在当前输入匹配成功后，分析器才会递归地调用自己处理剩下的部分。由于输入字符串的长度是有限的，每递归一次就消耗一些字符，最终会因输入耗尽或匹配到终止情况而停止。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;例子： $I \rightarrow 0I \mid a$。对于输入 &lt;code&gt;00a&lt;/code&gt;，它会先读两个 &lt;code&gt;0&lt;/code&gt;，最后读 &lt;code&gt;a&lt;/code&gt; 结束，不会死循环。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这就是“不确定”的两个原因：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;假匹配&lt;/li&gt;
&lt;li&gt;左递归&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;解决方法：消除左递归 / 提取左公因子&lt;/p&gt;
&lt;h4&gt;消除左递归&lt;/h4&gt;
&lt;p&gt;对于直接左递归：引入新的非终结符，转换为右递归。母公式，直接背下来：&lt;br&gt;
&lt;img src=&quot;./illus/syntax/26.png&quot; alt=&quot;直接左递归消除公式|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/27.png&quot; alt=&quot;直接左递归转换为右递归示意|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;例题：&lt;br&gt;
&lt;img src=&quot;./illus/syntax/28.png&quot; alt=&quot;直接左递归消除例题|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;加乘表达式例题&lt;br&gt;
&lt;img src=&quot;./illus/syntax/29.png&quot; alt=&quot;加乘表达式消除左递归例题|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;对于间接左递归：先改写成直接左递归文法，然后套用刚才的&lt;/p&gt;
&lt;p&gt;Algorithm：消除左递归算法。要求：不含回路 $P\xRightarrow+P$；不含以 ε 为右部的产生式&lt;br&gt;
&lt;img src=&quot;./illus/syntax/30.png&quot; alt=&quot;间接左递归消除算法流程|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;先规定一个非终结符顺序。然后按顺序一个一个处理非终结符的产生式。如果出现了“前面的非终结符”的左递归，则用右部替换掉，重复操作直到不出现“以前面的非终结符开头”的产生式。然后用母公式消除直接左递归。例子&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/31.png&quot; alt=&quot;间接左递归消除例题|500&quot;&gt;&lt;/p&gt;
&lt;h4&gt;消除假匹配&lt;/h4&gt;
&lt;p&gt;对 $\gamma\in V^*$（也即由终结符或非终结符组成的序列），定义它的 &lt;strong&gt;FIRST 集&lt;/strong&gt;：集合里面都是终结符，并且这个终结符是“$\gamma$ 经过若干步推导得到的句子或句型 的第一个字符（==不要求一定能从 S 推导出来，这一点和后面 FOLLOW 集不一样==）”。如果能推导出 ε，那么 ε 也要加入 FIRST 集&lt;/p&gt;
&lt;p&gt;曰：如果文法满足以下条件，则一定不带回溯（反过来不成立，也即充分不必要）：对于 $A\to \gamma_1\mid\gamma_2\mid\cdots\mid\gamma_n$，每个候选式 $\gamma_i$ 均不能推导出 ε，且这些 $\gamma$ 的 FIRST 集两两不相交。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;两两不相交很好理解，因为第一个字符决定了你要用哪一个候选式；不能推导出 ε，是因为一旦能够推出 ε，就说明这个非终结符可以被跳过而不消耗输入流的任何字符，于是就要看下一个非终结符，相当于又调用了一个子程序，也即涉及到回溯&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;如何计算 FIRST 集（==一定要反复检查，后面很多东西依赖这个 FIRST 集==）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单个符号的 FIRST 集：如果 X 是终结符，则 FIRST(X)={X}；如果 X 是非终结符，则 FIRST(X) 是所有候选式的 FIRST 集的并集&lt;/li&gt;
&lt;li&gt;$V^*$ 里的串的 FIRST 集：Algorithm 如图。第一步中 FIRST(X1) 要去掉 ε，因为还有 X2 的存在，不能保证 α 能推出纯 ε。第二步的循环，就是要考虑 FIRST(X1) 能推导出 ε 的情形，这时候 X1 被跳过，那么 X2 的 FIRST 就变成了 α 的 FIRST。如果做完之后还能推导出 ε，才说明 α 能推出纯空，此时 ε 才能加入 FIRST(α)。&lt;strong&gt;如果中间出现某个 Xi，它的 FIRST 集里头没有 ε，就可以停了&lt;/strong&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/32.png&quot; alt=&quot;FIRST集计算算法|500&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以，如果候选式的 FIRST 集存在交集，消除假匹配的方式：提取左公因子，提完就必然没有交集了&lt;br&gt;
&lt;img src=&quot;./illus/syntax/33.png&quot; alt=&quot;提取左公因子示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;==注意，消除假匹配不意味着不用回溯，因为还有ε的问题==&lt;/p&gt;
&lt;h4&gt;LL(1) 分析法&lt;/h4&gt;
&lt;p&gt;判断一个字符串是否属于该文法。分析过程：维护一个栈（分析栈）。指针指向待处理的字符、选择合适的候选式&lt;strong&gt;倒序入栈&lt;/strong&gt;、对栈顶元素反复推导、直到产生这个字符，然后这个字符出栈、指针右移。直到最后栈空，就算属于这个文法&lt;/p&gt;
&lt;p&gt;选哪一个候选式，就是 LL(1) 分析法要解决的&lt;/p&gt;
&lt;p&gt;命名的由来：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L：扫描顺序：自左向右扫描&lt;/li&gt;
&lt;li&gt;L：分析模式：最左推导&lt;/li&gt;
&lt;li&gt;(1)：在分析中最多向前看 1 个输入字符&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;分析表：一行是一个非终结符、一列是一个终结符，表里头的元素称为预测分析函数。预测分析函数要么为空白，要么为这个非终结符的&lt;strong&gt;一条&lt;/strong&gt;产生式（==后面会讲到“一条”的作用，见 LL(1) 文法==）&lt;br&gt;
&lt;img src=&quot;./illus/syntax/34.png&quot; alt=&quot;LL1预测分析表示例|500&quot;&gt;&lt;br&gt;
先学会用这个表格，至于这个表格怎么来的 先不管&lt;/p&gt;
&lt;p&gt;如果栈顶是终结符、且为字符串结束符，则分析成功&lt;br&gt;
如果栈顶是终结符、且与指针指向的字符相等、且不是字符串结束符，则出栈、指针右移&lt;br&gt;
如果栈顶是终结符、且与指针指向的字符不相等，则不属于文法&lt;/p&gt;
&lt;p&gt;如果栈顶是非终结符 $X$、当前指针指向的字符为 $a_i$ 则查看分析表的 $M(X,a_i)$&lt;br&gt;
如果 $M(X,a_i)$ 为一个产生式，则出栈、然后把候选式&lt;strong&gt;倒序入栈&lt;/strong&gt;&lt;br&gt;
如果 $M(X,a_i)$ 为空白，则不属于文法&lt;/p&gt;
&lt;p&gt;例子：语法分析 ppt 161-162&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;现在来看分析表是怎么来的。&lt;/p&gt;
&lt;p&gt;对于一个非终结符 $A$，定义它的 &lt;strong&gt;FOLLOW 集&lt;/strong&gt;：集合里面都是终结符，并且这个终结符是“在文法的所有句型/句子中紧跟在 $A$ 后面的那个字符”。如果 $S\xRightarrow*\cdots A$，那么 &lt;code&gt;#&lt;/code&gt; 也要加入 FOLLOW 集。==既然是文法的句型，那说明必须要能从 S 推导出来。这个和 FIRST 集不一样==&lt;/p&gt;
&lt;p&gt;如何计算 FOLLOW 集：Algorithm。按照下面的规则 遍历所有含 A 的候选式，往 FOLLOW(A) 当中添加元素：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果 $A$ 是开始符号，则加入 &lt;code&gt;#&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;对于 $A$ 在候选式末尾的情况，则加入左部的 FOLLOW 集&lt;/li&gt;
&lt;li&gt;对 $A$ 不在候选式末尾的情况，则看后面==整个串==的 FIRST 集，如果含有 ε 则加入左部的 FOLLOW 集，如果含有 非ε 则加入“FIRST 集==扣掉ε==”&lt;/li&gt;
&lt;li&gt;一路带入。直到 FOLLOW(A) 的表达式当中，除了 FOLLOW(A) 之外没有其他 FOLLOW 集，这时候把 FOLLOW(A) 划掉，剩下的就是真正的 FOLLOW(A)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Algorithm：写分析表的方法&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对于分析表的某一行 $M(A,a_i)$，记 $A\to\gamma_1\mid\cdots\mid\gamma_n$。计算每一个 $\gamma_i$ 的 FIRST 集：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;若存在 $i$ 使得 $a\in$ FIRST $(\gamma_i)$，则 $M(A,a)=A\to\gamma_i$&lt;/li&gt;
&lt;li&gt;若存在 $i$ 使得 $\varepsilon \in$ FIRST $(\gamma _i)$，则对 FOLLOW(A) 中的所有元素 $b$，都有 $M(A,b)=A\to\gamma_i$&lt;/li&gt;
&lt;li&gt;否则置空&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（==也就是说：如果这一行的 A 的候选式中没有一个 FIRST 含 ε 的，就不用算 FOLLOW(A) 了==）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;写一整个表的方法&lt;/strong&gt;：首先先计算每一个候选式的 FIRST 集。然后一行一行填表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于 FIRST 集不含 ε 的候选式，则对 FIRST 集中出现的每一个字符，填入这个候选式。其他置空&lt;/li&gt;
&lt;li&gt;对于 FIRST 集含 ε 的候选式，则对 FIRST 集中出现的每一个非ε字符，填入这个候选式；然后对左部 FOLLOW 集中的每一个字符，也填入这个候选式。其他置空&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例子：加乘表达式的分析表&lt;br&gt;
&lt;img src=&quot;./illus/syntax/35.png&quot; alt=&quot;加乘表达式LL1分析表|400&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;定义 &lt;strong&gt;LL(1) 文法&lt;/strong&gt;：可以用 LL(1) 分析法的文法，也就是“分析表不存在多重入口”。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LL(1) 文法一定没有二义性&lt;/li&gt;
&lt;li&gt;左递归文法一定是 非 LL(1) 文法&lt;/li&gt;
&lt;li&gt;不存在这样的算法，它能判定上下文无关语言能否由 LL(1) 文法产生（语言推文法本来就没有算法，所以才那么难）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;一个文法是 LL(1) 文法的充要条件&lt;/strong&gt;（理论上要求非左递归、无左公因子、无二义性，但其实直接看写出分析表就行了，也就是看下面这个过程）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于每一个产生式，其候选式的 FIRST 集两两不相交&lt;/li&gt;
&lt;li&gt;且，对于每一个产生式，如果某个候选式能推出 ε，则左部的 FOLLOW 集与其他候选式的 FIRST 集也两两不相交&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;将非 LL(1) 文法转化为 LL(1) 文法&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;消除左递归&lt;/li&gt;
&lt;li&gt;提取左公因，这个可以消除候选式 FIRST 集有交集的情况&lt;/li&gt;
&lt;li&gt;产生式代入，这个可以消除候选式 FIRST 集和左边的 FOLLOW 集有交集的情况&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例子：if else 语句的文法&lt;br&gt;
&lt;img src=&quot;./illus/syntax/36.png&quot; alt=&quot;if-else文法的LL1冲突示例|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/37.png&quot; alt=&quot;if-else文法转化后的LL1文法|400&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4&gt;LL(1) 分析器 与 递归下降分析器&lt;/h4&gt;
&lt;p&gt;对比词法分析里头：有&lt;strong&gt;数据中心法&lt;/strong&gt;和&lt;strong&gt;程序中心法&lt;/strong&gt;，数据中心法就是查表，程序中心法就是直接写成代码&lt;/p&gt;
&lt;p&gt;L L(1) 分析法 - 对应数据中心法，因为我们有 LL(1) 分析表、维护一个分析栈&lt;br&gt;
递归下降分析法 - 对应程序中心法。直接把分析过程写成 if else 语句的程序。&lt;/p&gt;
&lt;p&gt;从分析表构造分析程序的过程：不考&lt;br&gt;
使用递归下降分析法的过程：看 ppt p203&lt;/p&gt;
&lt;h3&gt;自下而上分析&lt;/h3&gt;
&lt;p&gt;回顾：自下而上分析，就是从句子中寻找与产生式匹配的子串，并用产生式的左部替换之（称为归约），直到归约到开始符号 S。&lt;br&gt;
所以关键就是：如何确定可归约的串（归约条件）、如何归约（归约原则）&lt;/p&gt;
&lt;h4&gt;总原则：移进 - 归约&lt;/h4&gt;
&lt;p&gt;就是说，每一个步骤，要么把待分析串的符号“移进”分析栈里头，要么利用某个产生式 把分析栈归约成左部。至于什么时候移进什么时候归约、怎么归约，后面再说&lt;/p&gt;
&lt;p&gt;例子&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/38.png&quot; alt=&quot;移进归约分析过程示例|400&quot;&gt;&lt;br&gt;
可以看出，移进归约的过程实际上就是&lt;strong&gt;最右推导 (规范推导) 的逆过程&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;短语、直接短语、句柄&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;短语：$\beta$ 是句型 $\alpha \beta \gamma$ 相对于 $A$ 的短语，当且仅当 能够生成 $\alpha A\gamma$ 且 $A\xRightarrow+\beta$。（也即，对于句型 $\alpha A\gamma$ 的分析树当中，存在一个子树，根节点为 $A$，叶节点为 $\beta$）。理解上：一个句子里头 suck your dick 这三个词可以被归约为一个动词，于是这就是一个动词短语（相对于“动词”这个非终结符的短语）&lt;/li&gt;
&lt;li&gt;直接短语：如果这个短语 $\beta$ 是 $A\to\beta$ 一步推导出来的&lt;/li&gt;
&lt;li&gt;句柄：句型当中最左边的那个直接短语，称为这个句型的句柄。直接短语一定是不交叠的。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;判断句型的直接短语和句柄的方法：构造句型对应的语法树（最右推导）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/39.png&quot; alt=&quot;直接短语和句柄语法树示例一|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/40.png&quot; alt=&quot;直接短语和句柄语法树示例二|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;在规范句型的规范推导序列中，最后一步使用的产生式的右部就是这个句型的句柄。序列中的每一步都是句柄&lt;br&gt;
所以移进归约的本质就是“砍句柄”，每一次砍掉一个句柄，砍到最后只剩开始符号就说明分析成功&lt;/p&gt;
&lt;h4&gt;LR 分析法&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;L：扫描顺序：自左向右扫描&lt;/li&gt;
&lt;li&gt;R：分析模式：最右推导&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;维护两个栈，一个符号栈，一个状态栈&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;状态栈：记录仅分析过程中每一步的“历史”和“展望”信息&lt;/li&gt;
&lt;li&gt;符号栈：移进和归约的符号。一般来说终结符是移进产生的、非终结符是归约产生的&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LR 分析表&lt;br&gt;
&lt;img src=&quot;./illus/syntax/41.png&quot; alt=&quot;LR分析表Action和Goto结构示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;分为两个表。每一行是一个状态。分为两个表&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;action 表是遇到终结符/串尾符时候的情况。$S_i$ 表示“将该终结符移进符号栈，并把状态 $i$ 压入状态栈，指针右移”。$r_i$ 表示“根据第 $i$ 条产生式的右部，将符号栈和状态栈的对应项全部出栈，然后把左部压入符号栈”；这时候你会注意到，状态栈相比符号栈少了一个状态，这就是 goto 表的作用：&lt;/li&gt;
&lt;li&gt;goto 表是遇到非终结符时候的情况。$i$ 表示把状态 $i$ 压入状态栈&lt;/li&gt;
&lt;li&gt;acc 是 accept 的意思，空白的就是 error&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;分析时，初始状态为：状态栈仅 $Q_0$，符号栈仅 $#$，然后按照 LR 分析表分析。&lt;/p&gt;
&lt;p&gt;总控程序如下&lt;br&gt;
&lt;img src=&quot;./illus/syntax/42.png&quot; alt=&quot;LR分析总控程序伪代码|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;先会使用 LR 分析表。至于这个表是怎么来的：我们有四个分析法。分析过程都与 LR 分析法是一样的，区别在于分析表的构造方式不同&lt;/p&gt;
&lt;h5&gt;LR(0) 分析&lt;/h5&gt;
&lt;p&gt;定义：&lt;strong&gt;活前缀&lt;/strong&gt;：规范句型的所有前缀中，不包含句柄右侧的 前缀，称为该句型的活前缀。当恰好包住句柄的时候，称为可归前缀&lt;br&gt;
理解：在移进归约的过程中，符号栈里的东西要么被某条产生式归约，要么是在等待归约；如果在等待，那么相当于栈顶有一个“自由基”，正在等句柄里头的符号压进来然后归约成左部；如果此时进来的是句柄之后的符号，压进栈之后就破坏掉了当前栈顶的“活性”。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;LR(0) 分析法。&lt;/p&gt;
&lt;p&gt;方法：在每一条产生式的右部的任何位置加一个圆点，构成的每个产生式称为一个 LR(0) 项目（如果是 A→ε 则项目为 A→·）。如果右部长度为 n 则有 n+1 个位置可以打点。==特别地，开始符号的两侧也要打点==。这通过引入一个新的开始符号 $S&apos;$ 指向原本的开始符号 $S$、以引入一个新的产生式 $S&apos;\to S$ 的方式解决（这一步称为拓广文法）&lt;/p&gt;
&lt;p&gt;圆点的位置是为了标记候选式已经被匹配了多少。点左边的部分就是已经被匹配的部分&lt;/p&gt;
&lt;p&gt;打完点后，将这些 LR(0) 项目进行分类&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;圆点出现在产生式的最右端
&lt;ul&gt;
&lt;li&gt;接受项目：$S&apos;\to S\ \cdot$ ，直接结束&lt;/li&gt;
&lt;li&gt;归约项目： $A\to \alpha \ \cdot$ ，说明分析栈里头刚好是一个可归前缀，可以归约&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;圆点不出现在产生式的最右端
&lt;ul&gt;
&lt;li&gt;移进项目：$A\to \alpha \cdot a\beta$，即圆点后面是终结符，说明分析栈里头是活前缀，且需要移进一个终结符&lt;/li&gt;
&lt;li&gt;待约项目：$A\to \alpha \cdot B\beta$，即圆点后面是非终结符，说明得先把其他符号归约出 B 才能进行当前归约项目&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;每一个 LR(0) 项目都是一个状态。据此可以构造 NFA&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;初态：$S&apos;\to \cdot\ S$（如果没有拓广文法，则初态即“圆点在候选式最左侧的、来自开始符号产生式的项目”）&lt;/li&gt;
&lt;li&gt;终态：所有“圆点出现在产生式最右端”的项目（要么是归约项目，要么是接受项目）&lt;/li&gt;
&lt;li&gt;状态转移：
&lt;ul&gt;
&lt;li&gt;若两个项目出自同一产生式（$i:A\to\alpha \cdot X\beta$，$j:A\to\alpha X\cdot\beta$），则从状态 i 到状态 j 存在边，识别字符即为 X&lt;/li&gt;
&lt;li&gt;若状态 i 为待约项目（也即圆点后跟着的非终结符记为 $B$），而状态 j 为 $B\to\cdot\  \gamma$（也即以 B 为左部的产生式的第一个 LR(0) 项目），那么状态 i 到状态 j 存在边，识别字符为 ε&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后把 NFA 确定化成 DFA（不用最小化，按 DFA 填表即得 &lt;strong&gt;LR(0) 分析表&lt;/strong&gt;：对于每一个状态，看出边。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果出边是终结符，则填 action 表：
&lt;ul&gt;
&lt;li&gt;如果当前状态是非终态，就填 $S_i$&lt;/li&gt;
&lt;li&gt;如果当前状态是终态（归约项目），则根据对应的产生式填写 $r_i$（整行都写，包括 # 列）&lt;/li&gt;
&lt;li&gt;如果当前状态是终态（接受项目），则对应行的 # 列填 acc&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;如果出边是非终结符，则填 goto 表，直接写转移的状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;DFA 的每个状态都是若干个项目，DFA 的状态集则称为 LR(0) 项目集规范族 C&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;另一个求项目集规范族的方法&lt;/strong&gt;，用 项目集闭包函数（clousure 函数） 和 项目集转移函数（go 函数），看 ppt264，直接从产生式就可以做，不需要写项目集、NFA、DFA。本质和刚才的步骤是一样的，但是快很多&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基本项目：$S&apos;\to\cdot\ S$&lt;/li&gt;
&lt;li&gt;clousure 函数求法：如果点后面是非终结符，则要把以这个非终结符为左部的产生式，最左端打点后加入项目集闭包；如果点后面不是非终结符则不用动。重复直到没有新的项目加入&lt;/li&gt;
&lt;li&gt;go 函数求法：对于一个项目集闭包，看一下点后面跟了什么，跟了几种东西就有几个 go 函数。例如下图中，项目集闭包 $I_0$ 当中，点的后面跟了 A、a、b，于是就有三个 go 函数。读入 a 之后，对应的那个项目当中圆点就要右移，然后再求一次闭包&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/43.png&quot; alt=&quot;LR0项目集闭包和go函数示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;最终得到的其实就是 DFA，其中 项目集规范族 就是 状态集，go 函数 就是 状态转移函数，初态就是基本项目的闭包。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;和 LL(1) 分析表一样，表格项具有唯一性时可以定义 LL(1) 文法，所以这就可以定义 LR(0) 文法：&lt;/p&gt;
&lt;p&gt;曰：如果文法对应的 DFA 的每一个状态内（即项目集内）性质唯一，则称为 LR(0) 文法，即：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不存在“既有移进项目又有归约项目”的状态（否则无法确定是移进还是归约。这称为移进 - 归约冲突）&lt;/li&gt;
&lt;li&gt;不存在“含有多个归约项目”的状态（否则无法确定用哪一个产生式进行归约。这称为归约 - 归约冲突）&lt;/li&gt;
&lt;li&gt;不存在“既有归约项目又有接受项目”的状态（否则无法确定是归约还是停止。这称为接受 - 归约冲突）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;或者简单说，就是“如果一个项目集里头含有归约项目，那么这个项目集里就只能有这一个项目”&lt;/p&gt;
&lt;h5&gt;SLR(1) 分析&lt;/h5&gt;
&lt;p&gt;刚才当遇到归约项目的时候，整行都要填 $r_i$，而我们又知道归约动作是引起冲突的主要原因。因此我们需要限制 $r_i$ 的填写。&lt;/p&gt;
&lt;p&gt;规定：在填归约动作的时候，求产生式左部的 FOLLOW 集，只有属于 FOLLOW 集的终结符才填 $r_i$，其他都置空。这就是 SLR(1) 分析表。&lt;em&gt;S 的意思是 Simple，1 的意思是往后看一个字符，“往后看一个”就是靠 Follow 集实现的&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;这样子就只有“能被推导出来的句型”可以做归约动作，其他时候说明该终结符一定不可能出现在后面，这时候做状态转移或者直接报错，可以减少很多冲突。&lt;/p&gt;
&lt;p&gt;同样的可以定义 SLR(1) 文法：文法的 SLR(1) 分析表没有多重表项的时候 称为 SLR(1) 文法&lt;/p&gt;
&lt;h5&gt;LR(1) 分析&lt;/h5&gt;
&lt;p&gt;例子&lt;br&gt;
&lt;img src=&quot;./illus/syntax/44.png&quot; alt=&quot;LR1分析例题文法|300&quot;&gt;&lt;/p&gt;
&lt;p&gt;写出识别可归前缀的 DFA（==这个例子很好 建议练一下==）：&lt;br&gt;
&lt;img src=&quot;./illus/syntax/45.png&quot; alt=&quot;LR1例题可归前缀DFA|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;状态 2 既有归约项目又有移进项目，LR(0) 肯定是不行了。再看 SLR(1)，状态 2 当中要填 $r_5$，那么就要看左部 $R$ 的 Follow 集，求出来 Follow(R)={#, =}。这就又有问题了，因为读入等号可以转移到状态 6，这时 action 表的 (2, =) 项既要填 $r_5$ 又要填 $S_6$，又冲突了&lt;/p&gt;
&lt;p&gt;其原因在于，SLR(1) 确实看了后一个字符，排除掉了那些不可能出现在 follow 集当中的终结符；但是他没有考虑已经进入符号栈当中的东西。完全有这样一种可能：当符号栈里头已经有了一串 $\delta$ 的时候，等号不可能接在 R 的后面，此时状态 2 遇上等号的时候一定是走 $r_5$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;定义：文法的一个 LR(k) 项目，就是一个 LR(0) 项目再加上 k 个终结符（或井号）。这 k 个终结符称为“搜索符串”&lt;br&gt;
定义：当存在规范推导 $S\xRightarrow*\delta A\omega \Rightarrow\delta \alpha \beta \omega$（$\omega$ 是终结符串）时，称 LR(1) 项目【$A\to\alpha \cdot\beta$ ，$a$】对于活前缀 $\gamma=\delta\alpha$ &lt;strong&gt;有效&lt;/strong&gt;；其中 $a$ 称为搜索符，当 $\omega =\varepsilon$ 时 $a=#$，否则 $a\in \text{First}(\omega)$。注意，规范推导的最后一步是==一步从 A 推导出 αβ==&lt;/p&gt;
&lt;p&gt;例子：&lt;br&gt;
&lt;img src=&quot;./illus/syntax/46.png&quot; alt=&quot;LR1项目有效性规范推导示例|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;比如我想要知道 LR(1) 项目【$B\to a.B，a$】是否对活前缀 aaa 有效。根据圆点可知，候选式里已经有一个 a 在栈里头了，活前缀还剩下 aa，产生式左部是 B，搜索符是 a，所以我就需要求 aa/B/a… 这个句型（之后就只需要使用这个产生式==一步==推导出 aa/aB/a…），所以用最右推导推出这个句型。如果能推导出来则说明有效。否则无效。&lt;/p&gt;
&lt;p&gt;例子：&lt;/p&gt;
&lt;p&gt;例如刚才冲突的那个状态 2。把 LR(0) 项目 $R\to L.$ 根据 Follow(R) 拆成两个 LR(1) 项目，现在看他们对 L 是否有效&lt;br&gt;
【$R\to L.，#$】【$R\to L.，=$】&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一个项目：根据圆点我们知道，L 已经在栈里头了，所以活前缀剩下的就是空串，产生式左部是 R，搜索符是 # ，所以我就需要求 /R/# 这个句型。这个推导很简单，直接 S-&gt;R 就行了。所以他对 L 有效&lt;/li&gt;
&lt;li&gt;第二个项目：搜索符是 =，所以我就需要求 /R/=… 这个句型。而规范推导推不出这个句型，所以他对 L 无效&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;LR(1) 项目也有项目集规范族。求法和 LR(0) 几乎是一样的&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;基本项目：&lt;/em&gt; 【$S&apos;\to \cdot S，#$】&lt;/li&gt;
&lt;li&gt;&lt;em&gt;clousure 函数求法：如果点后面是非终结符&lt;/em&gt;（例如项目【$A\to\alpha .B\beta，a$】），&lt;em&gt;则要把以这个非终结符为左部的产生式，最左端打点后&lt;/em&gt;，对把 First(βa) 当中的每一个终结符都构建一个 LR(1) 项目&lt;em&gt;并加入项目集闭包；如果点后面不是非终结符则不用动。重复直到没有新的项目加入&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;go 函数求法：对于一个项目集闭包，看一下点后面跟了什么，跟了几种东西就有几个 go 函数。例如下图中，项目集闭包 $I_0$ 当中，点的后面跟了 A、a、b，于是就有三个 go 函数。读入 a 之后，对应的那个项目当中圆点就要右移，然后再求一次闭包&lt;/em&gt;，搜索符继承过去即可&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/47.png&quot; alt=&quot;LR1项目集规范族构造示例|400&quot;&gt;&lt;br&gt;
特别注意，不同的搜索符对应的是不同的 LR(1) 项目，这一点和 LR(0) 不一样，所以状态 0 当中，第三条和第五条是两个不同的 LR(1) 项目。可以合并。&lt;/p&gt;
&lt;p&gt;状态 11 是状态 4 的子集&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;终于要来填表格了。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果出边是终结符，则填 action 表：
&lt;ul&gt;
&lt;li&gt;如果当前状态含有待约项目/移进项目，就填 $S_i$&lt;/li&gt;
&lt;li&gt;如果当前状态含有归约项目，则根据对应的产生式，只在&lt;strong&gt;搜索符&lt;/strong&gt;那几列填写 $r_i$&lt;/li&gt;
&lt;li&gt;如果当前状态含有接受项目，则对应行的 # 列填 acc&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;如果出边是非终结符，则填 goto 表，直接写转移的状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/48.png&quot; alt=&quot;LR1分析表填写示例|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;同样的，LR(1) 分析表当中没有多重表项的时候称为 LR(1) 文法&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;再一个例子（这个其实 LR(0) 就够用了）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/49.png&quot; alt=&quot;LR分析补充例题文法|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/50.png&quot; alt=&quot;补充例题LR项目集DFA|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/51.png&quot; alt=&quot;补充例题LR分析表|400&quot;&gt;&lt;/p&gt;
&lt;h5&gt;LALR(1) 分析&lt;/h5&gt;
&lt;p&gt;LookAhead LR，是 LR(1) 的简化版本，将状态数压缩到 LR(0) 相同，但保留了 LR(1) 的“瞻前”能力，也即省内存。因此 LR(1) 分析不了的，LALR(1) 也分析不了。&lt;/p&gt;
&lt;p&gt;观察刚才最后一个例子，我说“用 LR(0) 其实就够了”，因为有几个状态仅仅是搜索符不同而已（下图中同颜色的）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/52.png&quot; alt=&quot;LR1同心项目集合并前示例|400&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/syntax/53.png&quot; alt=&quot;LR1同心项目集合并后示例|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;定义：如果 LR(1) 项目当中，LR(0) 项目相同、只有向前搜索符不相同，则称他们具有相同的心，或者称为同心项目集。&lt;/p&gt;
&lt;p&gt;将 LR(1) 的所有状态，同心的合并到一起，就变成了 LALR(1) 的状态集，状态函数相应地合并就行了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/syntax/54.png&quot; alt=&quot;LALR1项目集合并示例|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;项目数和 LR(0) 一致，但是这和 LR(0) 完全不同，因为有了向前搜索符，填表方式变了。&lt;/p&gt;
&lt;p&gt;LR(1) 合并同心项目集之后，不一定能保证不冲突，但是只可能是归约 - 归约冲突，不可能是移进 - 归约冲突。因为 LR(1) 文法保证了归约项目的搜索符集和该状态的出边集一定不交，而同心项目集的出边集一定是一样的（否则 LR(0) 部分不可能相等），所以合并之后还是不交的&lt;/p&gt;
&lt;h5&gt;总结&lt;/h5&gt;
&lt;p&gt;判断文法属于哪一种 LR 文法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先尝试做 LR(0) 分析，如果发现归约项目不是单独成项的：&lt;/li&gt;
&lt;li&gt;则尝试做 SLR(1)，即看一下冲突的时候，左部的 Follow 集是否不交，如果还是冲突：&lt;/li&gt;
&lt;li&gt;尝试做 LR(1)，即需要重新做一遍带有搜索符的语法分析&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;LR 分析与二义文法&lt;/h4&gt;
&lt;p&gt;任何一个二义文法都不是一个 LR 文法&lt;/p&gt;
&lt;h4&gt;LR 分析的错误处理与恢复&lt;/h4&gt;
&lt;p&gt;策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;局部化恢复（主要看这个）
&lt;ul&gt;
&lt;li&gt;紧急恢复方式：每次发现错误时，抛弃一个输入符号，直到输入符号属于某个指定的同步符号集合为止（例如代码界限符，分号、大括号、end 等）。在分析到某一含有错误的短语时，分析程序认为含有错误的短语是由某一非终结符 A 所推导出的，短语的一部分已处理，放在栈顶部，剩下未处理的在输入串，分析程序跳过这些剩余符号，直至找到 A 的跟随字符为止，同时把栈顶内容逐个移去， 直至找到某个状态 q，GOTO(q,A) 对应一新状态，将 GOTO(q,A) ，A 压入栈。保证接下来能够继续推进分析过程&lt;/li&gt;
&lt;li&gt;短语级恢复：发现错误时，对剩余符号串做局部校正，使用可以使编译器继续工作的输入串代替剩余输入的前缀。在输入串的出错点采用插入、删除或修改的方法。关键是选择合适的替换串。怎么替换呢：带错误处理的 LR 分析表。原本空白格子就是分析错误，现在在空白格填入 $e_i$，表示使用第 i 条产生式进行短语恢复。这块直接看 ppt 379 页开始。感觉是需要分析语义的，“当前状态下期待读入一个什么字符”，似乎是要一个一个空格看&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;出错产生式，扩充语言的文法 增加产生错误结构的产生式，分析中可以直接识别处理错误&lt;/li&gt;
&lt;li&gt;全局纠正，扩充语言的文法&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="/_astro/compiler-cover.DLQuUW98.png"/><enclosure url="/_astro/compiler-cover.DLQuUW98.png"/></item><item><title>编译原理 - 编译引论与词法分析</title><link>https://chinosan.com/blog/compiler/lex-analysis</link><guid isPermaLink="true">https://chinosan.com/blog/compiler/lex-analysis</guid><description>编译原理课程笔记</description><pubDate>Mon, 29 Jun 2026 01:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;编译引论&lt;/h2&gt;
&lt;h3&gt;编程语言&lt;/h3&gt;
&lt;p&gt;命令式语言：C/Python，通过明确的步骤和状态变化控制计算机行为&lt;br&gt;
声明式语言：SQL，只讲目标不讲中间步骤&lt;/p&gt;
&lt;p&gt;静态类型语言：运行前/编译时进行类型检查，C&lt;br&gt;
动态类型语言：运行时进行类型检查，Python&lt;/p&gt;
&lt;p&gt;强类型语言：不允许隐式数据类型转换，Python&lt;br&gt;
弱类型语言：允许隐式数据类型转换，C&lt;/p&gt;
&lt;p&gt;编译型语言：要用编译器转换为机器码（二进制文件），可以直接在目标机器上运行，执行速度快。不能跨平台，只能重新编译&lt;br&gt;
解释型语言：由解释器逐行读取并执行，不生成中间文件，执行速度慢。跨平台性强，只要目标机器有对应的解释器）&lt;/p&gt;
&lt;h3&gt;程序设计语言与编译程序&lt;/h3&gt;
&lt;p&gt;源程序，经过编译器（一个程序），变成等价的目标程序&lt;br&gt;
源程序 是用 源语言 描述的&lt;br&gt;
编译器 是用 宿主语言 描述的，运行在宿主机上&lt;br&gt;
目标程序 是用 目标语言 描述的&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/lex/1.png&quot; alt=&quot;编译器源语言宿主语言目标语言关系图|500&quot;&gt;&lt;/p&gt;
&lt;h3&gt;编译程序的表示&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./illus/lex/2.png&quot; alt=&quot;编译程序T形图表示法|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;组合：编译程序之间的转换，将以 C 为宿主语言编写的 A-&gt;B 编译程序，转化为以 L 为宿主语言的 A-&gt;B 编译程序&lt;br&gt;
&lt;img src=&quot;./illus/lex/3.png&quot; alt=&quot;编译程序组合生成新宿主语言编译器|500&quot;&gt;&lt;br&gt;
这个图的意思是，已知中间的和左边的，我就可以得到右边的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左边和右边，源语言和目标语言是一致的，都是 A-&gt;B&lt;/li&gt;
&lt;li&gt;左边的宿主语言一定是中间的源语言，右边的宿主语言一定是中间的目标语言&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;==必考==&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/lex/4.png&quot; alt=&quot;L语言编译器从A机移植到B机的题目图|500&quot;&gt;&lt;br&gt;
这类题目故意隐去的前提：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;我们不可能直接写出一个“宿主语言是 A 或 B 的编译程序”，因为 A 和 B 一般会是汇编甚至直接是 01 二进制代码，所以我们不能直接写出一个 L-(B)-&gt;B 的编译器&lt;/li&gt;
&lt;li&gt;不论哪个组合，中间的 T 形图的其宿主语言一定得是 A 或者 B，因为必须要在某个机器上运行起来，而 L 是不能单独运行起来的。结合第一条可知，这个中间的 T 形图，要么是题目已知的，要么是我们通过另一个组合得到的&lt;/li&gt;
&lt;li&gt;A 机器上运行的 L 语言的编译程序，指的是 L-(A)-&gt;A&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;题目上已知 L-(A)-&gt;A，我们的最终目标是 L-(B)-&gt;B，因此最后一步一定是 L-&gt;(1)-&gt;B、2-(3)-&gt;B、L-(B)-&gt;B。现在就来填未知的这 123。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 是 L，因为 A 和 B 不能做宿主语言&lt;/li&gt;
&lt;li&gt;2 是 1，因为左边的宿主语言一定是中间的源语言，所以 2 是 L&lt;/li&gt;
&lt;li&gt;3 是 A，因为中间的宿主语言一定是 A 或 B，而如果是 B 的话，中间和右边就重复了&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是最后一步就出来了：L-(L)-&gt;B、L-(A)-&gt;B、L-(B)-&gt;B&lt;/p&gt;
&lt;p&gt;因此我只需要搞出 L-(L)-&gt;B 和 L-(A)-&gt;B。L-(L)-&gt;B 直接就可以写，因为宿主语言不是 A 或 B。而 L-(A)-&gt;B 就要再迂回一下，因此还需要前置一步 L-&gt;(1)-&gt;B、2-(3)-&gt;A、L-(A)-&gt;B&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 是 L，因为 A 和 B 不能做宿主语言&lt;/li&gt;
&lt;li&gt;2 是 1，因为左边的宿主语言一定是中间的源语言，所以 2 是 L&lt;/li&gt;
&lt;li&gt;3 是 A，因为因为中间的宿主语言一定是 A 或 B，由于我们题上已知了 L-(A)-&gt;A，直接用就行了，根本不要考虑 3 是 B 的可能性，即使有我们也不用。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是这步前置也出来了 L-(L)-&gt;B、L-(A)-&gt;A、L-(A)-&gt;B&lt;/p&gt;
&lt;p&gt;所有东西都是已知的了，这就是题上三步骤的由来。把三个步骤写到一起：&lt;br&gt;
&lt;img src=&quot;./illus/lex/5.png&quot; alt=&quot;L语言编译器三步自举移植过程|300&quot;&gt;&lt;br&gt;
直接写这个图更快，反复嵌套“未知编译器”就行了，实在不行背下来&lt;/p&gt;
&lt;h3&gt;编译程序的结构&lt;/h3&gt;
&lt;p&gt;编译程序的逻辑结构的经典划分&lt;br&gt;
&lt;img src=&quot;./illus/lex/6.png&quot; alt=&quot;编译程序逻辑结构流程图|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;词法分析：依据词法规则，将源字符串中有独立意义的单词识别出来。识别结果是一个二元组（属性字），表示这个单词的属性（类型标识）以及值（内码，可以为空）&lt;br&gt;
&lt;img src=&quot;./illus/lex/7.png&quot; alt=&quot;词法分析将源字符串转换为属性字|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;语法分析：依据语法规则，将线性的属性字流转化为语法分析树。比如下面这个语法，“数组元素引用”这个语法包含四个元素，标识符 + 左中括号 + 标识符 + 右中括号；所以反过来说，只要出现“标识符 + 左中括号 + 标识符 + 右中括号”这个组合，就可以归约为一个“数组元素引用”。只要能从属性字流中生成一个语法分析树，就说明这个属性字流是合法的&lt;br&gt;
&lt;img src=&quot;./illus/lex/8.png&quot; alt=&quot;语法分析由属性字流生成语法分析树|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;语义分析：依据语义规则，将语法树进行处理,  翻译成等价的中间代码或目标代码（四元式序列）。刚才的两步只是拆解，语义分析才是整个编译程序完成的最实质性的翻译任务。比如表达式 a+b=c 翻译为汇编语言 ADD A B C。在语义分析之前，你根本不知道“+”这个字符是什么意思；同样的，前面只知道“while(表达式)”这几个东西要合在一起，但不知道为什么是要做循环&lt;br&gt;
&lt;img src=&quot;./illus/lex/9.png&quot; alt=&quot;语义分析将语法树翻译为四元式序列|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;代码优化：不改变源程序语义的基础上，对四元式序列加工变换,  以期获得高效的目标代码。比如下面这个，说的就是“对于常数，在编译阶段就会算好，节省一步四元式的计算”&lt;br&gt;
&lt;img src=&quot;./illus/lex/10.png&quot; alt=&quot;代码优化中的常量提前计算示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;代码生成不考&lt;/p&gt;
&lt;p&gt;表格管理 + 出错处理，这两个是各阶段都要涉及到的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;表格管理：对各种量进行管理，登记在相应的表格。处理时通过查表得到所需的信息。&lt;/li&gt;
&lt;li&gt;出错处理：对源程序中的各种错误检查、定位、定性、报告， 尽可能将错误限制在尽可能小的范围内， 保障编译能够继续运行。当然新时代的出错处理已经是“通过大模型直接把错误给改对了”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;“一遍”，指的是将源程序从头到尾扫描一次。一个编译程序可能有很多“遍”&lt;/p&gt;
&lt;h3&gt;编译程序结构的实例模型&lt;/h3&gt;
&lt;p&gt;要构造一个编译程序，必须掌握的三要素为？&lt;/p&gt;
&lt;p&gt;源语言&lt;br&gt;
目标语言&lt;br&gt;
编译方法、技术与工具&lt;/p&gt;
&lt;p&gt;编译程序的生成方式：使用编程语言；移植方式； 自编译 （用源语言作为宿主语言）&lt;/p&gt;
&lt;h2&gt;词法分析&lt;/h2&gt;
&lt;p&gt;流程：正规集 $\Leftrightarrow$ NFA $\Leftrightarrow$ DFA $\Leftrightarrow$ 最小 DFA $\Leftrightarrow$ 词法分析器代码&lt;/p&gt;
&lt;h3&gt;正规式与正规集&lt;/h3&gt;
&lt;p&gt;字符串：由有限个字母或空串拼成的。字符串的长度不可能是无限长的&lt;br&gt;
语言：字符串的集合&lt;br&gt;
&lt;em&gt;防止考定义：&lt;/em&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/11.png&quot; alt=&quot;字符串和语言定义示意|300&quot;&gt;&lt;/p&gt;
&lt;p&gt;空串 $\varepsilon$，只含有一个空串的集合 ${\varepsilon }$，这个不是空集&lt;/p&gt;
&lt;p&gt;串长度&lt;br&gt;
&lt;img src=&quot;./illus/lex/12.png&quot; alt=&quot;字符串长度定义|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/13.png&quot; alt=&quot;字符串长度计算示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;串的前缀、后缀和子串&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前缀：串的前面连续几个字母，可以是空，可以是自身。不是自身的时候称为真前缀&lt;/li&gt;
&lt;li&gt;后缀：串的后面连续几个字母，可以是空，可以是自身。不是自身的时候称为真后缀&lt;/li&gt;
&lt;li&gt;子串：串的中间连续几个字母，可以是空，可以是自身，可以是前缀，可以是后缀&lt;/li&gt;
&lt;li&gt;只要不连续，就啥也不是&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;用希腊字母表示字符串，英文字母表示字母&lt;/p&gt;
&lt;p&gt;串的乘积（直接拼接）、方幂&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;串集合的乘积：所有拼接排列组合、方幂&lt;br&gt;
&lt;img src=&quot;./illus/lex/14.png&quot; alt=&quot;串集合乘积示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/15.png&quot; alt=&quot;串集合方幂示例|500&quot;&gt;&lt;br&gt;
注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;串的零次幂 $\alpha ^0=\varepsilon$&lt;/li&gt;
&lt;li&gt;串集合的零次幂 $A^0={\varepsilon }$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;串集合的闭包&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;正闭包：$A^+=A^1\cup A^2\cup\cdots$&lt;/li&gt;
&lt;li&gt;自反闭包：$A^*=A^+\cup A^0$，也就是比正闭包多一个 $\varepsilon$ 这个元素&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;会说含义，会算长度&lt;br&gt;
&lt;img src=&quot;./illus/lex/16.png&quot; alt=&quot;串集合闭包长度计算示例|500&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;正规式：是一个特殊的字符串（严格来说不是字符串，因为这里头的括号、竖线、星号都是附加的字母，不在字母表里头），用来描述一个串集，称为这个正规式对应的正规集。正规式有三个操作，得到新的正规式对应的正规集的构造如下&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;或操作 $r|s$，表示“将两个正规式表示的正规集取并集”&lt;/li&gt;
&lt;li&gt;连接操作 $rs$，表示“将两个正规式表示的正规集相乘”&lt;/li&gt;
&lt;li&gt;闭包操作 $r^*$，表示“将这个正规式表示的正规集做闭包”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;正规式是由字母或空串经过有限次的“或”“连接”“闭包”操作得到的&lt;br&gt;
特殊：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;空串 $\varepsilon$ 是正规式，描述的正规集为 ${\varepsilon }$；&lt;/li&gt;
&lt;li&gt;为了让正规集 $\varnothing$ 也能被正规式描述，我们让 $\varnothing$ 作为 $\varnothing$ 的正规式&lt;br&gt;
&lt;em&gt;防止考定义：&lt;/em&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/17.png&quot; alt=&quot;正规式和正规集定义|300&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例子&lt;br&gt;
&lt;img src=&quot;./illus/lex/18.png&quot; alt=&quot;正规式构造正规集示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/19.png&quot; alt=&quot;正规式等价与化简示例|500&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;正规式 $r$ 表达了一个正规集 $R$，也即表达了一个字符串的集合。而语言就是字符串的集合，因此正规式描述了一个语言，这称为正规式 $r$ 的正则语言 $L(r)=R$&lt;/p&gt;
&lt;p&gt;$L(r)$ 中的元素称为单词或句子。&lt;/p&gt;
&lt;p&gt;若两个正规式所表示的语言相等，也即正规集相等，则称这两个正规式等价。例如 $1(01)^*$ 和 $(10)^*1$ 这两个正规式不相等，但是表达的正规集是相等的&lt;/p&gt;
&lt;h3&gt;有限自动机&lt;/h3&gt;
&lt;h4&gt;DFA&lt;/h4&gt;
&lt;p&gt;确定的有限自动机&lt;/p&gt;
&lt;p&gt;$M=(Q,\Sigma ,f,q_0,Z)$，状态集、字母表、状态转移函数、初态、终态集&lt;/p&gt;
&lt;p&gt;三种表示方式：状态转移函数、状态转换图、状态转换表，三者等价&lt;br&gt;
&lt;img src=&quot;./illus/lex/20.png&quot; alt=&quot;DFA状态转移函数和状态图示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/21.png&quot; alt=&quot;DFA状态转换表示例|300&quot;&gt;&lt;/p&gt;
&lt;p&gt;DFA 的识别机制&lt;/p&gt;
&lt;p&gt;对于字符串 $\alpha$，一个字母一个字母地进入 DFA，如果读完之后落在终态，代表这个 DFA 能接受这个 $\alpha$，否则不接受。特别地，如果初态就是终态，则接受空串 $\varepsilon$&lt;/p&gt;
&lt;p&gt;记号描述：$f(q_0,\alpha )$，表示从初态开始，每次读入 $\alpha$ 的一个字母，最后落到的那个状态，也即
$$
f(q_0,\alpha )=f(f(f(\cdots f(f(q_0,a_1),a_2)\cdots),a_{n-1}),a_n)
$$
如果 $f(q_0,\alpha )\in Z$，则字符串 $\alpha$ 能被接受&lt;/p&gt;
&lt;p&gt;DFA $M$ 所识别的字符串的全体称为 M 识别的语言，记为 $L(M)$。也即 $L(M)={\alpha\mid f(q_0,\alpha)\in Z}$，当然还有一个要求是 $\alpha \in\Sigma^*$&lt;/p&gt;
&lt;p&gt;分析过程书写格式&lt;br&gt;
&lt;img src=&quot;./illus/lex/22.png&quot; alt=&quot;DFA识别字符串的分析过程格式|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;例子：&lt;br&gt;
&lt;img src=&quot;./illus/lex/23.png&quot; alt=&quot;接受含子串001的二进制串DFA|500&quot;&gt;&lt;br&gt;
如果改成“接受不含有子串 001 的所有二进制串的 DFA”，只需要把这个图的终态改成前三个、第四个不是终态就行了&lt;/p&gt;
&lt;h4&gt;NFA&lt;/h4&gt;
&lt;p&gt;非确定的有限自动机&lt;/p&gt;
&lt;p&gt;例如 c 语言中，读入一个加号，你不知道这是加号、还是 &lt;code&gt;++&lt;/code&gt;、还是 &lt;code&gt;+=&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;依然是五元组 $M=(Q,\Sigma ,f,q_0,Z)$，区别在于 $f$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DFA 中 $f:Q\times\Sigma\to Q$&lt;/li&gt;
&lt;li&gt;NFA 中 $f:Q\times(\Sigma \cup{\varepsilon })\to2^Q$，也即 NFA 可以读入空字符，而且不是映射到一个具体的状态，而是映射到一个状态集。比如说 $f(p,a)=R$，就是说状态 $p$ 读入字符 $a$ 之后可以转移到 $R$ 当中的任意一个状态，$R$ 中的任意一个状态都称为 $p$ 的后继状态。若 $a=\varepsilon$ 则不需要读入字符就可以转化到 $R$ 中的任意一个状态。&lt;br&gt;
特别地，如果 $R=\varnothing$，那么相当于直接卡住了，无法再读入一个新的字母&lt;br&gt;
&lt;img src=&quot;./illus/lex/24.png&quot; alt=&quot;NFA状态转移函数和状态图示例|500&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;NFA 的识别机制， 和 DFA 是类似的，只要存在一条路径使得最后落在终态，我就接受这个字符串。验证路径可能不止一条&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/lex/25.png&quot; alt=&quot;NFA多路径识别字符串示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;设计一个&lt;br&gt;
&lt;img src=&quot;./illus/lex/26.png&quot; alt=&quot;NFA设计题目标语言说明|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/27.png&quot; alt=&quot;NFA设计题状态图答案|500&quot;&gt;&lt;/p&gt;
&lt;h4&gt;NFA 的确定化&lt;/h4&gt;
&lt;p&gt;曰：任何一个 NFA $M$，都存在一个 DFA $M&apos;$ 使得他们两个能接受的语言是一样的。&lt;/p&gt;
&lt;p&gt;定义：状态集 $I$ 的 $\varepsilon$ 闭包：在 $I$ 中的状态下，不读任何字符就能到达的状态的全体。&lt;/p&gt;
&lt;p&gt;构造方法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;设置一个空的“状态集”集，这里头的每个 NFA 状态集都是 DFA 的一个状态&lt;/li&gt;
&lt;li&gt;从原来的 $q_0$ 开始，将原来由 $\varepsilon$ 联系起来的状态合成一个新的初始状态，加入“状态集”集&lt;/li&gt;
&lt;li&gt;遍历“状态集”集，遍历字母表，得到一步之后的新状态集，加入“状态集”集&lt;/li&gt;
&lt;li&gt;直到不再出现新的状态集&lt;/li&gt;
&lt;li&gt;含有终态集中元素的状态集就是 DFA 的终态&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;./illus/lex/28.png&quot; alt=&quot;NFA确定化的epsilon闭包计算示例|500&quot;&gt;&lt;br&gt;
&lt;strong&gt;先求接受这个字符之后的集合，然后再求ε闭包&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;最终的 DFA 状态转移表就长这样&lt;br&gt;
&lt;img src=&quot;./illus/lex/29.png&quot; alt=&quot;NFA确定化后的DFA状态转移表|500&quot;&gt;&lt;br&gt;
$I_a$ 表示 $ε\text{-closure}\bigg(f\big( ε\text{-closure}(I),a\big)\bigg)$，称为 a 弧转化&lt;/p&gt;
&lt;h4&gt;DFA 的最小化&lt;/h4&gt;
&lt;p&gt;曰：对于任意一个语言 $L(M)$，存在一个状态数最小的 DFA $M&apos;$ 使得 $L(M&apos;)=L(M)$。这个新的 DFA 当中没有无关状态，也没有彼此等价的状态，称这个 DFA 是“归约的”&lt;/p&gt;
&lt;p&gt;定义：无关状态：从 $q_0$ 开始，任何输入序列都不能到达的那些状态。方法：直接看表，从初态 0 开始一个一个看，存在过的则有关，直到做到最后都不离开有关状态集&lt;br&gt;
&lt;img src=&quot;./illus/lex/30.png&quot; alt=&quot;DFA无关状态判定表|200&quot;&gt;&lt;br&gt;
定义：等价状态：从 q1，q2 状态出发，对任意输入字符串，总是同时到达接收状态或拒绝状态之中，称 q1，q2 是等价的。否则称 q1，q2 不等价。方法：划分法。&lt;/p&gt;
&lt;p&gt;将状态集划分为几个块，每一块是将来 M&apos; 的一个状态&lt;br&gt;
0. 对每一块，判断每一块里头的状态是否等价（也就是加同样一个字母之后，是否到达同一个块），把不等价的状态划分到不同的子集，形成新的划分&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一开始将状态集划分为“终态集”和“非终态集”&lt;/li&gt;
&lt;li&gt;重复步骤零中的操作，直到划分不再变化&lt;/li&gt;
&lt;li&gt;划分出来的每一块是一个新状态。含有原来初态的就是初态，含有原来终态的就是终态&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;./illus/lex/31.png&quot; alt=&quot;DFA最小化初始划分示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/32.png&quot; alt=&quot;DFA最小化最终划分示例|500&quot;&gt;&lt;/p&gt;
&lt;h3&gt;正规式与有限自动机&lt;/h3&gt;
&lt;p&gt;曰：FA 接受的语言是一个正规集，也即存在一个正规式使得 $L(r)=L(M)$&lt;br&gt;
（推论曰：串集 $V$ 是正规的，当且仅当存在 $M$ st ￥ $V=L(M)$）&lt;/p&gt;
&lt;h4&gt;从 FA 到正规式&lt;/h4&gt;
&lt;p&gt;方法：从 FA 的原始状态图开始，变成只有两个状态，中间连线上的表达式就是这个 FA 对应的正规式&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;增加初态节点 $q_s$，通过ε接到 $q_0$&lt;/li&gt;
&lt;li&gt;增加终态节点 $q_Z$，原来的所有终态都通过ε接到 $q_Z$&lt;/li&gt;
&lt;li&gt;按照替换规则化简，直到只剩 $q_s$ 和 $q_Z$ 两个结点 &lt;img src=&quot;./illus/lex/33.png&quot; alt=&quot;FA到正规式的状态消除替换规则|450&quot;&gt;&lt;br&gt;
中间随时可以等价化简，看正规式化简规则&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;正规式运算规则&lt;br&gt;
&lt;img src=&quot;./illus/lex/34.png&quot; alt=&quot;正规式运算规则汇总|500&quot;&gt;&lt;br&gt;
还有几条常用的&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$r(sr)^*=(rs)^*r$&lt;/li&gt;
&lt;li&gt;$r^&lt;em&gt;|\varepsilon =r^&lt;/em&gt;$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;写正规式的例子：&lt;br&gt;
&lt;img src=&quot;./illus/lex/35.png&quot; alt=&quot;FA转正规式原始状态图|300&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/36.png&quot; alt=&quot;增加初态和终态后的FA|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/37.png&quot; alt=&quot;消除中间状态后的FA|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/38.png&quot; alt=&quot;合并平行边后的FA|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/39.png&quot; alt=&quot;继续消除状态后的FA|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/40.png&quot; alt=&quot;化简后只剩起终态的FA|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/41.png&quot; alt=&quot;FA对应正规式结果|500&quot;&gt;&lt;br&gt;
最后这条线上的就是 r&lt;/p&gt;
&lt;h4&gt;从正规式到 FA&lt;/h4&gt;
&lt;p&gt;方法：先从正规式写出 NFA，然后确定化成 DFA，然后最小化&lt;br&gt;
&lt;img src=&quot;./illus/lex/42.png&quot; alt=&quot;正规式构造NFA的基本规则|500&quot;&gt;&lt;br&gt;
写 NFA：乘法串行、或并行、循环“两ε夹一环”。拆到最后每条边上只能剩下单个字母或者ε&lt;/p&gt;
&lt;h3&gt;词法分析器的设计与实现&lt;/h3&gt;
&lt;p&gt;==看 ppt==&lt;br&gt;
&lt;img src=&quot;./illus/lex/43.png&quot; alt=&quot;词法分析器设计流程图|500&quot;&gt;&lt;br&gt;
DFA 的激活：数据中心法/程序中心法&lt;/p&gt;
&lt;p&gt;数据中心法：将最小 DFA 用一种数据结构 (状态表) 存储，用总控程序控制输入的源程序串在其上运行。&lt;br&gt;
状态表由主表和分表组成&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主表的每一行：状态 - 地址（当状态为终态时，为子程序入口地址；当状态不是终态时，为分表地址）&lt;/li&gt;
&lt;li&gt;分表的每一行：当前输入字符 - 转换到的新状态&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./illus/lex/44.png&quot; alt=&quot;数据中心法词法分析器主表和分表示例|500&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./illus/lex/45.png&quot; alt=&quot;数据中心法词法分析器运行示例|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;算法：建立状态寄存器 B、字符寄存器 W、字符串寄存器 W&apos;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;初值设置：B 为初态、W 和 W&apos; 均为空&lt;/li&gt;
&lt;li&gt;据 B 查主表
&lt;ol&gt;
&lt;li&gt;如果是分表地址，则读入当前字符到 W，指针前移，组合单词 W&apos;=W&apos;+W，转 (3)；&lt;/li&gt;
&lt;li&gt;(如果是子程序入口，则转 (4)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;据 W 查分表，将 W 对应的状态存入 B，转 ()2)。&lt;/li&gt;
&lt;li&gt;终态处理：输出单词 (W’) 属性字，转 (1);     &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;程序中心法：直接把 FA 写成 while 循环和 switch 的程序。看 ppt&lt;/p&gt;</content:encoded><h:img src="/_astro/compiler-cover.DLQuUW98.png"/><enclosure url="/_astro/compiler-cover.DLQuUW98.png"/></item><item><title>LLaVA 图像理解模型系列</title><link>https://chinosan.com/blog/ai/llava</link><guid isPermaLink="true">https://chinosan.com/blog/ai/llava</guid><description>LLaVA 系列模型论文及实验复现，以及在实际图像理解任务中的表现。</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;h2&gt;llava1&lt;/h2&gt;
&lt;p&gt;Liu, H., Li, C., Wu, Q., &amp;#x26; Lee, Y. J. (2023). Visual Instruction Tuning. https://doi.org/10.48550/arXiv.2304.08485&lt;br&gt;
(nips 2023 oral)&lt;/p&gt;
&lt;h3&gt;Introduction&lt;/h3&gt;
&lt;p&gt;llava 的目的是，希望开发一个通用的、能遵循 vision and language instructions 的系统。以前的模型，基本都是基于语言增强的模型，虽然能够做到图像的分类、检测、分割、caption、生成、编辑，但每一个任务都是一个独立的模型来完成的，模型的设计当中实际上已经隐含地写死了任务指令；而且，语言在其中的作用只是用来描述图片的。&lt;/p&gt;
&lt;p&gt;大语言模型的成功实践告诉我们，自然语言可以作为一种通用的 interface，这使得“指令微调”成为可能。实验证明，使用机器生成的高质量 instruction-following 对 LLM 进行指令微调，效果甚至超越了任务特化的 LLM。&lt;/p&gt;
&lt;p&gt;综上，本文提出的就是 visual instruction tuning，尝试将指令微调应用到多模态模型上。&lt;/p&gt;
&lt;h3&gt;GPT-assisted Data Generation&lt;/h3&gt;
&lt;p&gt;这是未来用于指令微调的数据集。作者从 COCO 数据集中筛选了 8w 张图片，使用 GPT4 根据这些图的 caption 和 bounding boxes 生成问答样本。使用 GPT4 只是因为 GPT4 是当年最好的大模型，作者对比了 GPT-3.5 和 GPT4，结果表明 GPT4 能提供更高质量的数据，例如空间推理等。&lt;/p&gt;
&lt;p&gt;总共有三种类型的问答样本：多轮对话 5.8w 条、描述细节 2.3w 条、复杂推理 7.7w 条。总共 15.8w 条问答样本。每一种类型都有几个手动编写的示例作为 in context learning，帮助 GPT 生成我们想要的数据集。&lt;/p&gt;
&lt;h3&gt;Visual Instruction Tuning&lt;/h3&gt;
&lt;p&gt;architecture&lt;br&gt;
&lt;img src=&quot;./illustrations/llava/fig-01.png&quot; alt=&quot;架构图|600&quot;&gt;&lt;/p&gt;
&lt;p&gt;选择 Vicuna-13B 作为 base model，因为在当时的开源模型中 vicuna 的指令遵循能力最强，这样就可以最大程度地保证刚才 GPT 生成的高质量数据集被有效使用。&lt;/p&gt;
&lt;p&gt;使用 CLIP 作为 visual encoder，但是取的是倒数第二层 transformer block 的输出作为图像的向量表示，因为 CLIP 的最后一层的特征空间被拉得太偏，语义过于抽象，而倒数第二层能保留更多空间细节，消融实验证明使用倒数第二层的效果更好（&lt;strong&gt;但后来有其他论文证明，其实对于微观任务（例如 ocr 等），倒数第二层并不是最好的，还得往前倒几层&lt;/strong&gt;）。&lt;/p&gt;
&lt;p&gt;训练时的每一轮问答样本的格式：&lt;br&gt;
&lt;img src=&quot;./illustrations/llava/fig-02.png&quot; alt=&quot;每一轮问答样本的格式|600&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第 1 轮：随机选择是把图片放在前面还是把问题放在前面。本意是为了适应“先发问题”还是“先发图片”的变化（&lt;strong&gt;但实际上代码里是把图片是固定在开头的&lt;/strong&gt;）。&lt;/li&gt;
&lt;li&gt;第 n 轮：只发送问题，目的是让模型通过 self attention 自己回去看图片&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;训练分为两阶段。第一阶段是预训练 projector W；这一阶段用的是 CC595K 数据集（从 CC3M 数据集筛选出 59.5w 个图文对，添加问题语句将每个样本包装成单轮对话的格式）。第二阶段即进行指令微调（W 也参与微调）。训练的时候，只对 stop 标和模型的回答计算 loss&lt;br&gt;
&lt;img src=&quot;./illustrations/llava/fig-03.png&quot; alt=&quot;loss计算|600&quot;&gt;&lt;/p&gt;
&lt;h3&gt;Experiments&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;定性分析&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;分析样例表明，相比 BLIP2 和 OpenFlamingo，llava 能遵循用户的指令进行作答，而不是只描述场景。相比 GPT4，即便 instruction 中只是让他描述图像，llava 的回答也更详细。相对与上述几个模型而言，llava 所用的 8w 图 / 15.8w 样本的训练量并不算多，但是其效果展现出了与 GPT4 相近的推理结构与问答结果。&lt;/p&gt;
&lt;p&gt;llava 对于图像的理解是 bag of patch 的。有例子为证。对于下图&lt;br&gt;
&lt;img src=&quot;./illustrations/llava/fig-04.png&quot; alt=&quot;草莓酸奶|400&quot;&gt;
提问“是否有草莓味的酸奶”，模型回答“是”，但实际上图中没有草莓味酸奶，而是一盒草莓和一杯酸奶。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;定量评估&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;评估一个样本的回答水平的指标：用一个大模型作为裁判（文中是用 GPT4）来给句子打分，然后计算 llava 回答的相对得分，公式：
$$
\text{score}=\frac{\text{llava 回答的得分}}{\text{gold-ref 的得分}}\times100%
$$
每一个样本都是一个三元组 &lt;code&gt;[图像，文本描述，Question]&lt;/code&gt;，其中的“文本描述”即图像的 caption + bounding boxes。然后给 llava 发送 &lt;code&gt;[图像, Question]&lt;/code&gt; 获得 llava 的回答、给 GPT4 发送 &lt;code&gt;[文本描述, Question]&lt;/code&gt; 获得 GPT4 的回答。由于 GPT4 用的图像的文字描述，是图像的最完整的真实信息，所以 GPT4 的回答可以视为 gold-ref。于是得到一个四元组 &lt;code&gt;[Question, 文本描述, llava回答, gold ref]&lt;/code&gt;。然后，把这个四元组发给裁判，让他给 llava 的回答和 gold-ref 分别打 1~10 分，代入上述计算公式得到该样本的回答质量。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;COCO benchmark 跑分&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/llava/fig-05.png&quot; alt=&quot;COCO benchmark 跑分&quot;&gt;&lt;/p&gt;
&lt;p&gt;数据集：在 COCO 数据集中选了 30 张图，每张图写了 3 个 question（多轮对话、描述细节、复杂推理各一个）&lt;/p&gt;
&lt;p&gt;列表最左侧是“用的什么数据进行的指令微调”。Full data 就是用全部 158K 条数据，detail+complex 就是只有“描述细节”和“复杂推理”这两类数据，其他同理。列表最上方就是“拿什么 question 来问”，all 就是全部 90 个 question，其他就是各自的 30 个 question。得分计算方法和刚才是一样的&lt;/p&gt;
&lt;p&gt;结果表明：(1) 指令微调使得得分高了 50 个点；(2) 在“多轮对话”训练数据的基础上，加入少量“描述细节”“复杂推理”使得得分高了 7 个点，这说明描述能力、推理能力的提升，也有助于提高多轮对话能力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In-the-Wild benchmark 跑分&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/llava/fig-06.png&quot; alt=&quot;In-the-Wild benchmark 跑分&quot;&gt;&lt;/p&gt;
&lt;p&gt;找来了 24 张图，人工编写了详细的图片描述，针对这些图编写了 60 个高难度问题。由于样本数量太少且存在较大的随机性，对于每一个样例都要跑三遍，记录均值和标准差。每个样例的随机性来自于两个地方，一个是 llava 自身的随机性，另一个是裁判打分的随机性。最后一行 llava dagger 就是用来测试裁判给分的随机性的，就是用第三行当中给出的回答、再问裁判一遍重新计算相对得分。结果表明，裁判的打分是稳定的。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;ScienceQA&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;沿用第一阶段预训练的 projector，第二阶段在 ScienceQA 数据集上重新进行指令微调。&lt;/p&gt;
&lt;p&gt;ScienceQA 数据集里，每一个样本包含以下四部分内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;题干：即问题和候选项，部分题目有图片、hint/context 等信息&lt;/li&gt;
&lt;li&gt;答案：即这个问题的标准答案，是候选项的索引&lt;/li&gt;
&lt;li&gt;题解：即与这个题目相关的通用科学知识、背景，以及如何根据题干中的信息一步步推导出最终答案的逻辑过程&lt;/li&gt;
&lt;li&gt;标签：任务类型、难度（根据年级）、学科大类、学科主题、考点类别、考察技能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;将其改造成适合本实验的指令微调数据集：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入的 instruction：问题 + 候选项。如果有题干里头有图片和 hint，顺序是图片 - hint - 问题&lt;/li&gt;
&lt;li&gt;目标输出：题解 + 答案。一定是题解在前、答案在后，相当于一个 CoT&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;跑分结果如下&lt;br&gt;
&lt;img src=&quot;./illustrations/llava/fig-07.png&quot; alt=&quot;ScienceQA 跑分&quot;&gt;&lt;/p&gt;
&lt;p&gt;其中 GPT4 dagger 组，用的是 2-shot in context learning，即提供了两个完整的样本，让 text-only GPT4 模仿样本来生成回答。由于没有图像信息，text-only GPT4 的跑分不如 llava。但是对于很大一部分题目，text-only GPT4 答错并不是因为选择错误，而是因为他报告说“缺少必要的图像或上下文信息，无法回答”，也即没有做出选择。这说明 text-only GPT4 是知道缺少图片信息的，理论上只要把图片信息告诉 GPT4，他应该是能回答上来的。&lt;/p&gt;
&lt;p&gt;所以设计了两个方法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;complement。当 text-only GPT4 认为回答不上来时，采用 llava 给出的答案。结果表明这个方法的 acc 只比 llava alone 高一点点&lt;/li&gt;
&lt;li&gt;judge。当 text-only GPT4 给出的答案和 llava 给出的答案不同的时候，找一个裁判来决定选哪一个。该方法取得 sota，这是因为很多题目其实不需要看图片、仅依靠文字就能做出来，而更聪明的 GPT4 能够纠正 llava 在文字范围里犯的低级错误。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关于 ScienceQA 的消融实验：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果图像的向量表示用的是 CLIP 最后一层而不是倒二层，会掉 0.96%&lt;/li&gt;
&lt;li&gt;如果不用 CoT，也即在指令微调数据集中是先给出答案再给出推理过程，可以加速收敛，但对最终跑分影响不大&lt;/li&gt;
&lt;li&gt;如果不进行 projector 预训练，直接在 ScienceQA 上面从零开始指令微调，会掉 5.11%&lt;/li&gt;
&lt;li&gt;如果改用 7B 的 vicuna 作为 base model，会掉 1.08%&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;llava1.5&lt;/h2&gt;
&lt;p&gt;Liu, H., Li, C., Li, Y., &amp;#x26; Lee, Y. J. (2024). Improved Baselines with Visual Instruction Tuning. https://doi.org/10.48550/arXiv.2310.03744&lt;br&gt;
(cvpr 2024 highlight)&lt;/p&gt;
&lt;h3&gt;Intro &amp;#x26; Preliminary&lt;/h3&gt;
&lt;p&gt;在前作 llava1 的基础上，后人做了很多补充实验，扩展预训练数据、扩展 instruction-following 数据、换用更好的 visual encoder、换用更好的 base model，都可以提升模型性能。&lt;/p&gt;
&lt;p&gt;主要针对的是 InstructBLIP。InstructBLIP 擅长单字或短词回答的 VQA（视觉问答的 bench），但真实视觉对话弱，不知道什么时候要详细回答、什么时候要简短回答；而 llava 擅长做对话式的视觉推理，不会生成短回答，而且在 YesOrNo 的问题上，倾向于回答 yes。这大概是因为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;prompt 格式含糊。VQA 数据通常长得像是 &lt;code&gt;Q：{问题} A：{答案}&lt;/code&gt;，这种格式没有明确告诉模型答案应该多长；&lt;/li&gt;
&lt;li&gt;llava1 的数据集是基于 COCO 数据集生成的，有论文证明，这种方法适用于文本理解、长上下文等许多场景；而 InstructBLIP 融入了面向学术任务的 VQA 数据集，倾向于短答；&lt;/li&gt;
&lt;li&gt;InstructBLIP 只微调 Qformer，不微调 LLM，也即要靠 Qformer 输出的视觉 token 去间接控制 LLM 输出长短；而 Qformer 容量有限，不如直接微调 LLM 来学会遵循格式指令好。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外，实验说明，如果将 VQA 数据和对话数据合并来训练，会导致模型倾向于对 VQA 数据集产生过拟合，从而丧失参与自然对话的能力，除非对数据集做大量复杂的修改。说明多模态模型似乎无法平衡自然对话和学术任务，这与 NLP 当中“在指令微调中加入学术语言任务能有效提高模型的泛化能力”这一结论不符。&lt;/p&gt;
&lt;h3&gt;Experiments&lt;/h3&gt;
&lt;p&gt;逐步搭建 llava1.5 的过程。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/llava/fig-08.png&quot; alt=&quot;llava1.5 搭建过程|600&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1：显式要求短回答&lt;/strong&gt;&lt;br&gt;
作者对原始 llava 做了一个实验：对于短问答 benchmark，如果在 prompt 中显式地指出 &quot;Answer the question using a single word or phrase&quot;，得益于 vicuna 强大的指令遵循能力，其在 MME（类似 VQA 的短问答和 YesOrNo）上的跑分高了 1.6 倍，且超过 InstructBLIP。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2：加入更多图文指令微调数据&lt;/strong&gt;&lt;br&gt;
包括标准 VQA 数据、细粒度局部感知数据等。标准 VQA 数据的加入使得模型见过短回答；对于细粒度任务例如 ocr、视觉细节、小范围理解等，加入其他数据集来补充；加入 GQA 数据是为了使得数据分布与目标相近。跑分结果三个指标都有所提升，数据类型扩展开始带来更广泛能力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3：加入更多文本数据&lt;/strong&gt;&lt;br&gt;
ShareGPT，即 ChatGPT 真实的用户数据，用于提升模型的 instruction-following、保持对话上下文、写更自然的长文本的能力。跑分微涨，说明纯文本 instruction data 也能影响多模态模型行为，因为最终回答仍依赖 LLM 基础能力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4：升级模型部件&lt;/strong&gt;&lt;br&gt;
(1) visual encoder 的分辨率从 224x224 提到 336x336，使得模型能看清更多细节；跑分微涨，说明当模型已经具备较好的任务数据和连接器后，提高视觉输入清晰度还能继续带来收益。(2) 改用两层 MLP 代替原来的线性 projectior，提升连接器的表征能力。(3)(可选) 把 LLM 从 7B 扩到 13B，MM-Vet 提升明显，说明综合对话、推理、解释等自然视觉对话高度依赖 base model 的能力&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5（llava-1.5-HD）：高分辨率解决方案&lt;/strong&gt;&lt;br&gt;
把大图切成多个小块，每块仍然按 CLIP 原本支持的分辨率编码，然后把这些 feature map 合并，再额外拼接一份低分辨率整图特征作为 global context。这样局部块提供细节，整图提供全局语义，减少切图带来的割裂感。&lt;br&gt;
&lt;img src=&quot;./illustrations/llava/fig-09.png&quot; alt=&quot;llava-1.5-HD|700&quot;&gt;&lt;/p&gt;
&lt;p&gt;最终得到的模型即 llava1.5。&lt;/p&gt;
&lt;h3&gt;Evaluation&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;benchmark&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;实测表明，llava1.5 在 学术任务 和 自然对话 共 12 个 benchmark 上均表现良好。加入了 VQA/OCR 数据后，短答和自然对话任务均得到高分，没有出现 llava1 / InstructBLIP 所呈现的不均衡现象（但并没有本质上地解决偏科，而是让同一个 checkpoint &lt;strong&gt;根据 prompt 在不同输出模式之间切换，公平性有待考量&lt;/strong&gt;）&lt;/p&gt;
&lt;p&gt;其他实测样例表明，llava1.5 体现出任务的泛化能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;llava1.5 只训练过有限格式指令，但可以泛化到别的格式要求。例如要求无法回答时输出 Unanswerable、或者要求输出 JSON 格式，模型可以正确输出。这说明模型学会了按用户要求控制输出形式。&lt;/li&gt;
&lt;li&gt;llava1.5 的数据都是英文，但它在 MMBench-CN 上比 Qwen-VL-Chat 高，这部分提升可能来自 ShareGPT 里的多语言文本对话能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;探索问题 1：数据利用率&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;虽然 llava1.5 的数据量比 InstructBLIP、Qwen 等要少，但相比 llava1 还是多了。尝试随机删除，只保留 10% ~ 50% 的数据，发现保留 30% 的时候模型在大部分 bench 上还能保持在原有水平的 95%~99%，只在 MMVet 上跌到 90%；保留 20% 时才有明显的下降。因此可以推断，llava1.5 的数据混合里有明显冗余，未来应当研究更优化的的数据压缩/数据选择。&lt;br&gt;
&lt;img src=&quot;./illustrations/llava/fig-10.png&quot; alt=&quot;样本利用率|350&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;探索问题 2：多模态幻觉&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;采用 448x448 的 visual encoder，幻觉现象明显少于 224x224。这可能是因为 llava1 的数据集是 GPT 根据 caption 和 boxes 生成的，因此包含了很多细节信息，而 visual encoder 看不清这些细节。如果大量训练标注包含超出模型视觉感知能力的细节，模型可能倾向于“即使视觉输入里细节不清楚，也要输出细节描述”，导致幻觉。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;探索问题 3：组合能力&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;实验中加入了针对不同任务的数据。例如 ShareGPT 是纯文本对话数据，没有图片；VQA/OCR 是视觉任务数据，主要是短答案；如果模型只是机械记任务格式，那它应该只能在各自任务里表现好。但在实验中观察到，加 ShareGPT 后，视觉对话里的语言能力变强，回答更长、更详细，也出现多语言视觉对话能力；加 academic-task-oriented visual datasets 后，视觉对话里的 grounding 更好，MM-Vet 和 LLaVA-Wild 也提升。&lt;/p&gt;
&lt;p&gt;但这种组合并不完美，比如模型能在 VQA 里答对某个物体属性，不代表它在整图详细描述里一定能准确描述这个属性。&lt;/p&gt;
&lt;h2&gt;案例分析&lt;/h2&gt;
&lt;p&gt;使用 LLaVA-1.5-7B 模型进行样例测试。参数取 Temperature=0.2、TopP=0.7、Maxtoken=512。由于在先前测试中发现中文提问的效果很差，故均改为英文提问。以下样例中，文字加粗的部分即与图中相符的描述，红色部分是图中未出现的细节（即幻觉）。&lt;/p&gt;
&lt;h3&gt;1. 场景与细节描述&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/llava/fig-12.png&quot; alt=&quot;实验-场景与细节描述&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到，对于此类场景细节描述，llava1.5 可以准确指出场景中的主要物体、物体颜色、形态等信息，准确识别出颜色、手势、人体部位、物品名称等内容。若关注幻觉，可以看到其幻觉主要来源于相似的形状，例如将第二张图中右下角的演讲台看作了公文包、将第四张图中背后的床架看作了椅子。&lt;/p&gt;
&lt;p&gt;但是，对于含有文字、特别是中文的场景，模型的理解可能存在问题。请看下面的例子。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/llava/fig-13.png&quot; alt=&quot;实验-中文理解&quot;&gt;&lt;/p&gt;
&lt;p&gt;在第一张图中，模型看似能够准确回答站台、到发地、发车时间等信息，但由于对于火车指示牌的理解高度依赖中文字符以及日常经验（例如知道 G 开头的字符串是车次号），一旦让模型自行描述，很可能将图中散乱的文字信息混淆从而无法正确回答。&lt;/p&gt;
&lt;p&gt;无法识别中文的问题在第二和第三张图中体现最为明显。当保留校徽中“BEIJING INSTITUTE OF TECHNOLOGY”时，模型可以根据这个信息推断出整个图像的内容，以及识别出“上方写的是中文的校名”；但去掉英文、只保留中文时，模型只能描述校徽中和图案相关的信息，也不能准确地指出中文校名的位置。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;此外，数据集中的常识性数据将严重影响回答的准确度和质量。请看下面的例子。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/llava/fig-14.png&quot; alt=&quot;实验-常识性数据&quot;&gt;&lt;/p&gt;
&lt;p&gt;模型能够正确说出“美国国会大厦”，却无法识别天安门城楼，而是识别为故宫。这说明在数据集中并没有对于中国建筑的区分，模型看到红墙黄瓦时只能判断为中国北京的建筑，无法识别出具体的建筑名称；同时再次由于无法识别中文，图中的标语也无法被模型利用以做出准确判断。另外，对于第一张图，模型也只能判断是歌手、无法像“特朗普”“马斯克”那样说出名字，可以判断在训练集中并没有该歌手的信息。&lt;/p&gt;
&lt;h3&gt;2. 信息推理与判断&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/llava/fig-15.png&quot; alt=&quot;实验-信息推理与判断&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看出，llava1.5 能够做出最基本的简单推理，但对于更深入的复杂推理以及语义理解，效果并不好。&lt;/p&gt;
&lt;p&gt;第一张图中，模型成功识别出图片中拼出的句子，但完全没有理解右下角散落的字母和推文文本之间的关联，因而无法准确说出原本拼成的句子 (WE ARE GOING TO DISNEYWORLD)。第三张图中，模型能够说出两个物体的名称和位置，即使给出了“stick”的提示，也无法将“fanta”和“stick”两个词从读音角度联系起来，从而无法理解图片的真实含义。第五张图，对于点数量的判断完全错误，说明模型基本不具备数数的能力。&lt;/p&gt;
&lt;p&gt;第二张图的成功案例，说明模型基本理解了文本位置、物体位置、物理动态变化之间的交互关系，正确回答出“剪刀剪下后文字将发生的变化”。第四张图需要做出说明，这一结果的出现具有随机性，在多次测试中，回答“下在左下角”、“下在左上角”、“回答井字棋的规则”这三类回答大约各占 1/3。&lt;/p&gt;
&lt;h3&gt;3. 高频信息偏置&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/llava/fig-16.png&quot; alt=&quot;频率捕捉|600&quot;&gt;&lt;/p&gt;
&lt;p&gt;这两张是典型的高低频图像融合图，也即轮廓信息是 A 图的、填充色信息是 B 图的。左图中，图像的高频信息是单词“Edatactan”、低频信息是单词“Education”（也即，拿近了看是 Edatactan，拿远了看是 Education）；右图中，图像的高频信息是爱因斯坦，图像的低频信息是玛丽莲梦露。针对这两张图对模型进行提问，模型均回答的是高频信息。这说明，llava 观察图像时更关注高频信息，而相对忽略低频信息。这可能与训练集中多涉及“描述”这一任务，模型并没有学会从低频角度处理图片。&lt;/p&gt;</content:encoded><h:img src="/_astro/cover.BAyYacD1.jpg"/><enclosure url="/_astro/cover.BAyYacD1.jpg"/></item><item><title>ADMM 算法原理推导</title><link>https://chinosan.com/blog/ai/admm</link><guid isPermaLink="true">https://chinosan.com/blog/ai/admm</guid><description>从零开始的、纯直观的、不涉及太多数学的 ADMM 推导</description><pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;{/* 
更新中&lt;/p&gt;
&lt;p&gt;*Cover image generated by AI&lt;/p&gt;
&lt;p&gt;前置内容：KKT条件 ↗&lt;/p&gt;
&lt;p&gt;优化算法做的事情就是为了求出满足 KKT 条件的解&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;凸优化，指的是目标函数为凸函数、不等式约束为凸函数、等式约束为线性函数或仿射函数&lt;br&gt;
凸函数：定义域为凸集、任意两点连线上的值 $\ge$ 对应自变量的函数值（即盆地形状，称为下凸函数；山峰那种称为上凸函数）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;惩罚函数与 dual ascent&lt;/h3&gt;
&lt;p&gt;考虑一个优化问题
$$
\begin{aligned}&lt;br&gt;
\min\limits_{x}\quad &amp;#x26;f(x)\&lt;br&gt;
s.t.\quad &amp;#x26;g_k(x)\leq0,\quad k=1,\cdots,K\&lt;br&gt;
\quad &amp;#x26; h_\ell(x)=0,\quad \ell =1,\cdots,L&lt;br&gt;
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;我们把约束当成惩罚项。定义
$$
\tilde{f}(x)=f(x)+\sum\limits I_{k}(g_k(x))+\sum\limits J_{\ell }(h_\ell(x))
$$
其中 $I$ 和 $J$ 即理想罚函数，分别对应各自的约束&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$I_k(\cdot)$ 当自变量 $\leq0$ 时为 0、$&gt;0$ 时为 $+\infty$&lt;/li&gt;
&lt;li&gt;$J_\ell(\cdot)$ 当自变量 $=0$ 时为 0、$\neq0$ 时为 $+\infty$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样我们相当于在无约束条件下做 $\min\tilde{f}(x)$，当解不符合约束时 $\tilde{f}$ 飙到正无穷，那么 minimize 过程就会自动把这些不符合约束的解踢掉。&lt;/p&gt;
&lt;p&gt;对比原问题的 Lagrange 函数：$L(x,\alpha ,\beta )=f(x)+\alpha ^Tg(x)+\beta ^Th(x)$，相当于用线性函数来近似这个惩罚函数。对于不等式约束，为了实现 $I_k$，那么斜率 $\alpha_k$ 就要是正的，这样 $g_k$ 大于 0 的时候就有正的惩罚了，而且 $\alpha_k$ 越大 惩罚越重。我们自然希望 $\alpha_k$ 越大越好，但是这会导致负半轴 $g_k(x)\leq0$ 出问题：为了得到尽可能小的值，minimize 过程会通过把 $g_k(x)$ 弄得很小来刷 $\tilde{f}$ 最小值，而不会去在乎原来的那个 $f(x)$ 是不是在变小。所以我们希望的是，$\alpha_k$ 在负半轴为 0、正半轴为 $+\infty$。&lt;/p&gt;
&lt;p&gt;一个自然的实现方式是，把惩罚从 $\alpha_kg_k(x)$ 改成 $\max \alpha_kg_k(x)$，使得不论什么时候都找一个 $\alpha_k$ 使惩罚最大化（这里其实是 sup，但我们假定存在严格可行点）。这样，在负半轴 $\alpha_k$ 只能取最小值 0（否则惩罚就是负的）、在正半轴总能找到一个足够大的 $\alpha_k$ 使得惩罚 $\to\infty$。这样整完实际上就是理想惩罚函数
$$
I_k(g_k(x))=\max\limits_{\alpha_k\geq0}\alpha_kg_k(x)
$$&lt;/p&gt;
&lt;p&gt;同理地，对于等式约束，也可以用同样的推理过程得到惩罚函数的表达式
$$
J_\ell(h_\ell(x))=\max\limits_{\beta_\ell}\beta_\ell h_\ell(x)
$$
注意 $\beta_\ell$ 没有限制范围，因为对于等式约束，负半轴也要惩罚，只有当 $h_\ell=0$ 时才不惩罚。因此当 $h&gt;0$ 时取 $\beta&gt;0$、当 $h&amp;#x3C;0$ 时取 $\beta&amp;#x3C;0$，使得随时有正惩罚。&lt;/p&gt;
&lt;p&gt;所以原始问题的解与下面这个问题的解是相同的：其中 $\alpha\geq0$ 的意思是每个分量都大于 0
$$
\min\limits_{x}\max\limits_{\alpha\geq0 ,,\beta }f(x)+\alpha ^Tg(x)+\beta ^Th(x)
$$&lt;/p&gt;
&lt;p&gt;进一步地，&lt;strong&gt;如果原问题是凸优化&lt;/strong&gt;，那么 max 和 min 可以互换（称为强对偶性），得到对偶问题
$$
\max\limits_{\alpha\geq0 ,,\beta }\min\limits_{x}f(x)+\alpha ^Tg(x)+\beta ^Th(x)
$$
这样相当于把主元从 $x$ 变成了对偶变量 $\alpha$ 和 $\beta$，里头是一个关于 $\alpha$ 和 $\beta$ 的线性函数，因此 minimize 步骤的本质就是对一堆平面取小，这拼出来是一个上凸的山峰。这样外层问题就转化为“无约束地 maximize 一个上凸函数”，内层就是关于 $x$ 的含参 minimize，这两个问题都是好做的。&lt;/p&gt;
&lt;p&gt;这给出了一个求解方法，称为 &lt;strong&gt;dual ascent&lt;/strong&gt;：轮流更新自变量和对偶变量，一步 min 一步 max：注意 不等式约束的乘子 $\alpha$ 需要取正值
$$
\begin{aligned}
\min:\quad x^{(i+1)} &amp;#x26;= \arg\min_x L(x, \alpha^{(i)}, \beta^{(i)})\
\max:\quad \alpha^{(i+1)} &amp;#x26;= \big[\alpha^{(i)} + \eta^{(i)} g(x^{(i+1)})\big]^+\
\beta^{(i+1)} &amp;#x26;= \beta^{(i)} + \eta^{(i)} h(x^{(i+1)})\
\end{aligned}
$$&lt;/p&gt;
&lt;h3&gt;增广 Lagrange 函数法&lt;/h3&gt;
&lt;p&gt;dual ascent 要求每一步的 argmin 都能给出明确的极小值。当 $g,h$ 是线性约束时，如果 $f$ 不是一个足够凸的函数（例如绝对值函数），惩罚项很容易把 Lagrange 函数变成斜坡，这样 $\arg\min$ 就跑飞到无穷了。&lt;/p&gt;
&lt;p&gt;所以要通过某种方式，修改 Lagrange 函数，强行变成凸的，但不改变最优化的结果。最简单的凸因子就是二次函数。因此增加二次惩罚项：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于等式约束 $h_\ell(x)=0$，惩罚变为 $\beta_\ell h_\ell (x)+\dfrac{\rho}2\big(h_\ell (x)\big)^2$，其中 $\rho&gt;0$ 为惩罚参数。只要 $\rho$ 足够大，就能把原问题强行凸化；且最优时 $h_\ell =0$，故增加这个惩罚并不会改变优化结果。&lt;/li&gt;
&lt;li&gt;对于不等式约束 $g_k(x)\leq0$，不能直接取平方，因为当 $g_k&amp;#x3C;0$ 时不应惩罚。解决方法：引入辅助量 $s_k\geq0$ 将不等式约束转化为等式约束，即 $g_k(x)+s_k=0$，然后仿照等式约束的惩罚
$$
\alpha_k(g_k(x)+s_k)+\dfrac\rho2\big(g_k(x)+s_k\big)^2
$$
这是一个关于 $s_k$ 的二次函数，所以在 minimize 的时候可以解析地给出 $\hat{s}_k$ 的值。这个二次函数开口向上、对称轴 $\hat{s}_k=\dfrac{\alpha_k+\rho g_k(x)}{\rho}$，由于 $s_k\geq0$：
&lt;ul&gt;
&lt;li&gt;当轴 $\leq0$ 时，取 $s_k=0$，化简得惩罚 $=\dfrac{\big(\alpha_k+\rho g_k(x)\big)^2-\alpha_k^2}{2\rho}$&lt;/li&gt;
&lt;li&gt;当轴 $&gt;0$ 时，取 $s_k=$ 轴，化简得惩罚 $=-\dfrac{\alpha_k^2}{2\rho}$&lt;/li&gt;
&lt;li&gt;统一表达式为 $\dfrac{1}{2\rho} \bigg( \big(\left[ \alpha_k + \rho g_k(x)\right]^+\big)^2 - \alpha_k^2 \bigg)$，称为 PHR 罚函数&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是问题转化为：其中 $[,\cdot,]^+$ 表示逐元素取正值，$|\cdot|^2$ 表示向量模长的平方
$$
\min\limits_{x}\max\limits_{\alpha\geq0 ,,\beta },f(x) + \dfrac{1}{2\rho} \bigg( \big|\ [ \alpha + \rho g(x)]^+\big|^2 - |\alpha|^2 \bigg) + \left( \beta^T h(x) + \frac{\rho}{2} |h(x)|^2 \right)
$$
然后对它做 dual ascent 就行了，更新方法是一样的。这称为&lt;strong&gt;增广 Lagrange 函数法（ALM）&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;特别地&lt;/strong&gt;，当只有等式约束的时候，通常令 $u=(1/\rho )\beta$，这样可以把增广 Lagrange 函数配方：
$$
\begin{aligned}
L&amp;#x26;=f(x)+\beta^T h(x) + \frac{\rho}{2}|h(x)|^2 \
&amp;#x26;= f(x)+\frac{\rho}{2} \left| h(x) + \frac{1}{\rho}\beta \right|^2 - \frac{1}{2\rho}|\beta|^2\
&amp;#x26;=f(x)+\frac{\rho}{2}\left(|h(x)+u|^2-|u|^2\right)
\end{aligned}
$$
更新步骤变为：
$$
\begin{aligned}
\min:\quad x^{(i+1)} &amp;#x26;= \arg\min_x \left(f(x)+\frac{\rho}{2}\left(|h(x)+u|^2-|u|^2\right)\right)\
\max:\quad
u^{(i+1)} &amp;#x26;= u^{(i)} + h(x^{(i+1)})\
\end{aligned}
$$
这称为&lt;strong&gt;缩放形式的 ALM&lt;/strong&gt;。其中学习率一般取 1，因为凸优化的时候 $\beta$ 的最佳学习率就是 $\rho$，于是 $u$ 的学习率就是 1（why?）&lt;/p&gt;
&lt;h3&gt;ADMM&lt;/h3&gt;
&lt;p&gt;对于一个优化问题，当问题规模很大的时候，通常有两种优化方式：要么一次只取一小部分样本来优化（例如 mini-batch 梯度下降），要么一次只优化 $\mathbf{x}$ 的一部分分量。前者具有通用性，因为随机样本保证了各样本同性；但后者不行，因为各个分量之间的耦合关系说不清。&lt;/p&gt;
&lt;p&gt;考虑一类优化问题，它的自变量是由两组物理意义完全不同的变量拼起来的，分别对应目标函数的两个部分。也即问题可以写成
$$
\begin{aligned}
x&amp;#x26;=(u,v)\
\min\limits_{x}\quad &amp;#x26;f_1(u) + f_2(v)\
s.t.\quad &amp;#x26;Au+Bv=c
\end{aligned}
$$
比如 $u$ 是一个图像，对应 loss $f_1$；$v$ 是网络权重，对应 loss $f_2$，目标是最小化一个联合 loss $\alpha f_1+\beta f_2$，就属于这种优化问题。&lt;/p&gt;
&lt;p&gt;我们使用 dual ascent 来求解。Lagrange 函数
$$
L(u, v, \beta) = f_1(u) + f_2(v) + \beta^T(Au + Bv - c)
$$
在做 minimize 步骤时，由于使用线性惩罚，我们有
$$
\begin{aligned}
\min_{x} L&amp;#x26;=\min_{u, v}\  f_1(u) + f_2(v) + \beta^T(Au + Bv - c) \
&amp;#x26;= \left( \min_u\  [f_1(u) + \beta^T A u] \right) + \left( \min_v \ [f_2(v) + \beta^T B v] \right) - \beta^T c
\end{aligned}
$$
这说明，寻找 $x=(u,v)$ 联合最小值的过程，可以拆成 $u$ 和 $v$ 两个独立的小问题，分给两个 cpu 并行计算。也就是说，dual ascent 在解决可分问题的时候可并行。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;dual ascent 需要目标函数足够凸。当不够凸的时候，解决方法是 ALM，也即把惩罚改成二次的强行凸化。但这就出问题了，因为这里引入了二次项，其中存在 $u$ 和 $v$ 的交叉项，打破了 dual ascent 的并行性。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但其实根本不用管&lt;/strong&gt;，只需要在更新自变量的时候交替更新 $u$ 和 $v$ 就行了，这就是&lt;strong&gt;交替方向乘子法（ADMM）&lt;/strong&gt;，相当于宏观上并行、微观上串行
$$
\begin{aligned}
\min:\quad u^{(i+1)} &amp;#x26;= \arg\min_u L(u, v^{(i)}, \beta^{(i)})\
v^{(i+1)} &amp;#x26;= \arg\min_v L(u^{(i+1)}, v, \beta^{(i)})\
\max:\quad
\beta^{(i+1)} &amp;#x26;= \beta^{(i)} + \eta^{(i)}(Au^{(i+1)} + Bv^{(i+1)} - c)\
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;对于不等式约束，直接沿用 ALM 的结论，用 PHR 罚函数就行了，因为&lt;strong&gt;本质上 ADMM 只是把可分的两个部分交替来做&lt;/strong&gt;，和 ALM 没区别。&lt;/p&gt;
&lt;p&gt;至于收不收敛，那是数学家的事。&lt;/p&gt;
&lt;h3&gt;非线性约束&lt;/h3&gt;
&lt;p&gt;需要注意，从头到尾我们讨论的都是线性约束情形，因为 dual ascent 要求凸优化，但实际当中大量的约束是非线性的，而且 ALM 还得对它平方，这导致增广 Lagrange 函数很扭曲，argmin 不好做。&lt;/p&gt;
&lt;p&gt;而 ADMM 的形式给出了一种解决思路，称为变量拆分，也即用两个变量，分别解决目标函数和约束函数。类似最开始讲的惩罚函数的想法，把约束写成惩罚项，只不过那会儿惩罚函数的自变量是 $x$，无法把约束剥离出来。所以换一个自变量，定义 $I_{\mathcal{S}}(z)=\begin{cases}0,&amp;#x26;z\in \mathcal{S}\+\infty,&amp;#x26; \text{others}\end{cases}$，其中 $\mathcal{S}$ 即满足约束的 $x$ 构成的集合，这样问题就可以改写为
$$
\begin{aligned}
\min\limits_{x, z}\quad &amp;#x26;f(x) + I_{\mathcal{S}}(z)\
s.t.\quad &amp;#x26;x - z = 0
\end{aligned}
$$
然后就是交替更新步骤了。还是令 $u=(1/\rho )\beta$ 配方，迭代过程变为
$$
\begin{aligned}
x^{(k+1)} &amp;#x26;= \arg\min_x \left( f(x) + \frac{\rho}{2}|x - z^{(k)} + u^{(k)}|&lt;em&gt;2^2 \right) \
z^{(k+1)} &amp;#x26;= \arg\min_z \left( I&lt;/em&gt;{\mathcal{S}}(z) + \frac{\rho}{2}|x^{(k+1)} - z + u^{(k)}|_2^2 \right) \
u^{(k+1)} &amp;#x26;= u^{(k)} + x^{(k+1)} - z^{(k+1)}
\end{aligned}
$$
观察 $z$ 的更新步骤，其本质是在集合 $\mathcal{S}$ 中找一个离 $x^{(k+1)}!+!u^{(k)}$ 最近的点。所以只要 $\mathcal{S}$ 的形状不太复杂（例如圆形球形等），还是可以通过几何方法变成简单计算。&lt;/p&gt;
&lt;h3&gt;ADMM-Net&lt;/h3&gt;
&lt;p&gt;Deep Unfolding 是一种迭代算法的网络化方法，我们把所有涉及到的这些变量 $x$、$z$、$u$ 看作网络中流动的特征，而参数 $\rho$ 则对应网络中每一层的权重，迭代几次就相当于流过几层。把这个方法代入 ADMM 就是 ADMM-Net：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先将迭代公式展开成计算图。
&lt;ul&gt;
&lt;li&gt;每一层对应一次迭代，如果计划迭代 $K$ 次，就构建一个 $K$ 层的网络&lt;/li&gt;
&lt;li&gt;第 $k$ 层的输出 $(x^{(k)}, z^{(k)}, u^{(k)})$ 直接作为第 $k+1$ 层的输入&lt;/li&gt;
&lt;li&gt;每一层内部的代码就是 ADMM 的那三个更新公式。每个子步骤必须可微&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;定义可学习参数 $\Theta$，一般就是惩罚因子和更新步长 ${\rho_k, \eta_k}$。通常每一层设置一套独立的参数，允许网络前几层走得快，后几层走得稳。&lt;/li&gt;
&lt;li&gt;loss：直接用增广 Lagrange 函数（无监督的时候）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;训练好的 ADMM-Net 通常只需要 5-10 层就能达到传统算法迭代上百次的效果。相比传统网络，每一层的计算是有物理含义的，而不是黑盒。因此 ADMM-Net 具有更好的泛化能力，甚至在训练数据分布发生变化的时候也能保持性能。&lt;/p&gt;</content:encoded><h:img src="/_astro/admm-cover.Nybuz1TE.png"/><enclosure url="/_astro/admm-cover.Nybuz1TE.png"/></item><item><title>数学分析 Chapter 9 多元函数微分学</title><link>https://chinosan.com/blog/math-analysis/chapter9</link><guid isPermaLink="true">https://chinosan.com/blog/math-analysis/chapter9</guid><description>数学分析系列笔记第 9 章：偏导与全微分、中值定理、Taylor公式、隐函数存在定理、逆映射存在定理、曲线曲面及法切线面、极值与条件极值</description><pubDate>Sat, 04 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;本章速通：&lt;a href=&quot;./fojiao2#chapter-9-%E5%A4%9A%E5%85%83%E5%87%BD%E6%95%B0%E5%BE%AE%E5%88%86%E5%AD%A6&quot;&gt;数学分析 记忆佛脚（下） - Chapter 9 多元函数微分学 ↗&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;{/* ## Section A 偏导与全微分&lt;/p&gt;
&lt;h3&gt;9.1 偏导&lt;/h3&gt;
&lt;h3&gt;9.2 全微分&lt;/h3&gt;
&lt;h3&gt;9.3 高阶偏导&lt;/h3&gt;
&lt;h3&gt;9.4 高阶微分&lt;/h3&gt;
&lt;h3&gt;9.5 向量值函数的导数与微分&lt;/h3&gt;
&lt;h3&gt;9.6 复合函数微分&lt;/h3&gt;
&lt;h2&gt;Section B 多元中值定理&lt;/h2&gt;
&lt;h3&gt;9.7 中值定理&lt;/h3&gt;
&lt;h3&gt;9.8 Taylor 公式&lt;/h3&gt;
&lt;h2&gt;Section C 隐函数与逆映射&lt;/h2&gt;
&lt;h3&gt;9.9 隐函数存在定理&lt;/h3&gt;
&lt;h3&gt;9.10 逆映射存在定理&lt;/h3&gt;
&lt;h2&gt;Section D 切线法平面、法线切平面&lt;/h2&gt;
&lt;h3&gt;9.11 曲线的切线与法平面&lt;/h3&gt;
&lt;h3&gt;9.12 曲面的法线与切平面 */}&lt;/h3&gt;
&lt;h2&gt;Section E 多元函数极值&lt;/h2&gt;
&lt;p&gt;对于 $f$，若 $\forall x\in U_\rho( \hat{x})$ 有 $f(x)\leq f(\hat{x})$，则称 $\hat{x}$ 为 $f$ 的极大值点。极小值类似定义&lt;/p&gt;
&lt;h3&gt;9.13 无条件极值&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;曰（极值点的必要条件）&lt;/strong&gt;：若 $f$ 可偏导，则偏导均为零，即 $f_{x_1}(\hat{x})=f_{x_2}(\hat{x})=\cdots=f_{x_n}(\hat{x})=0$&lt;/p&gt;
&lt;p&gt;证明：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;令 $\varphi_1(x)=(x,\hat{x}_2,\cdots,\hat{x}_n)$，当 $\hat{x}$ 为 $f$ 极值点时，由定义知 $\hat{x}_1$ 也得是 $\varphi &lt;em&gt;1(x)$ 的极值点，所以 $f&lt;/em&gt;{x_1}(\hat{x})=\varphi _1&apos;(\hat{x}_1)=0$&lt;/li&gt;
&lt;li&gt;令 $\varphi_2(x)=(\hat{x}_1,x,\cdots,\hat{x}_n)$，当 $\hat{x}$ 为 $f$ 极值点时，由定义知 $\hat{x}_2$ 也得是 $\varphi &lt;em&gt;2(x)$ 的极值点，所以 $f&lt;/em&gt;{x_2}(\hat{x})=\varphi _2&apos;(\hat{x}_2)=0$&lt;/li&gt;
&lt;li&gt;以此类推。$\square$&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;极值情况判定定理。一元情形时：$f&apos;(x_0)=0$，$f&apos;&apos;(x_0)\gt 0$ 时为极小，$f&apos;&apos;(x_0)\lt 0$ 时为极大，$f&apos;&apos;(x_0)=0$ 时情况不定。这是因为 Taylor 公式 $f(x_0!+!\Delta x)-f(x_0)=f&apos;(x_0)\Delta x+\dfrac12f&apos;&apos;(x_0!+!\theta \Delta x)\Delta x^2$，一阶导为零，所以等号左边是正是负就要看二阶导的正负。&lt;/p&gt;
&lt;p&gt;二元情形：
$$
\begin{aligned}
f(x_0!+!\Delta x,y_0!+!\Delta y)-f(x_0,y_0)&amp;#x26;=f_x(x_0,y_0)\Delta x+f_y(x_0,y_0)\Delta y+\
&amp;#x26;\quad\dfrac12\bigg(f_{xx}(\tilde{\rho})\Delta x^2+f_{yy}(\tilde{\rho})\Delta y^2+2f_{xy}(\tilde{\rho})\Delta x\Delta y\bigg)
\end{aligned}
$$
其中 $\tilde{\rho}=(x_0!+!\theta \Delta x,y_0!+!\theta \Delta y)$&lt;/p&gt;
&lt;p&gt;由连续性，设&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$f_{xx}(\tilde{\rho})=f_{xx}(x_0,y_0)+\alpha,\quad\alpha =o(1)$&lt;/li&gt;
&lt;li&gt;$f_{xy}(\tilde{\rho})=f_{xy}(x_0,y_0)+\beta ,\quad\beta  =o(1)$&lt;/li&gt;
&lt;li&gt;$f_{yy}(\tilde{\rho})=f_{yy}(x_0,y_0)+\gamma ,\quad\gamma  =o(1)$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是
$$
\begin{aligned}
f(x_0!+!\Delta x,y_0!+!\Delta y)-f(x_0,y_0)&amp;#x26;=\dfrac12\bigg(f_{xx}(x_0,y_0)\Delta x^2+f_{yy}(x_0,y_0)\Delta y^2+2f_{xy}(x_0,y_0)\Delta x\Delta y+\
&amp;#x26;\quad\quad\quad\alpha \Delta x^2+2\beta  \Delta x\Delta y+\gamma \Delta y^2\bigg)
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;令&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$A=f_{xx}(x_0,y_0)$、$B=f_{xy}(x_0,y_0)$、$C=f_{yy}(x_0,y_0)$&lt;/li&gt;
&lt;li&gt;$\rho=\sqrt{\Delta x^2+\Delta y^2}$、$\xi=\dfrac{\Delta x}{\rho}$、$\eta=\dfrac{\Delta y}{\rho}$，这样 $\xi^2+\eta^2=1$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是 $f(x_0!+!\Delta x,y_0!+!\Delta y)-f(x_0,y_0)=\dfrac12\rho^2\bigg(A\xi^2+2B\xi\eta+C\eta^2+o(1)\bigg)$。括号里头就是一个二次型，所以等号左边的正负就相当于考虑右边二次型的定性（&lt;em&gt;严格来说是在单位圆上的定性，但可以验证 $g(k\xi,k\eta)=k^2g(\xi,\eta)$，所以等价于直接考虑在整个平面上的定性&lt;/em&gt;）。令二次型
$$
g(\xi,\eta)=
\begin{pmatrix}
\xi&amp;#x26;\eta
\end{pmatrix}
\begin{pmatrix}
A&amp;#x26;B\B&amp;#x26;C
\end{pmatrix}
\begin{pmatrix}
\xi\\eta
\end{pmatrix}
$$&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;当 $g$ 正定时，$(x_0,y_0)$ 为极小值点&lt;/li&gt;
&lt;li&gt;当 $g$ 负定时，$(x_0,y_0)$ 为极大值点&lt;/li&gt;
&lt;li&gt;当 $g$ 不定时，既不是极大值点 又不是极小值点&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;回忆：正定负定的判断方法&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;正定：任一 $k$ 阶顺序主子式的行列式都 $&gt;0$&lt;/li&gt;
&lt;li&gt;负定：任一 $k$ 阶顺序主子式的行列式的 $(-1)^k$ 都 $&gt;0$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;对于二次型矩阵而言&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;正定 $\Leftrightarrow A&gt;0,,AC!-!B^2&gt;0$，则为极小值点&lt;/li&gt;
&lt;li&gt;负定 $\Leftrightarrow A&amp;#x3C;0,,AC!-!B^2&gt;0$，则为极大值点&lt;/li&gt;
&lt;li&gt;若 $AC!-!B^2&amp;#x3C;0$，则不是极值点（鞍点）&lt;/li&gt;
&lt;li&gt;若 $AC!-!B^2=0$，则情况不定。例如 $f(x,y)=x^4$ 是极小值、$-x^4$ 是极大值、$x^3$ 不是极值&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;对于 n 元情形&lt;/strong&gt;：那个二次型就是 $g(\xi)=\sum\limits_{i,j} f_{x_ix_j}(\hat{x})\xi_i\xi_j$，二次型矩阵 $\big(f_{x_ix_j}(\hat{x})\big)_{n\times n}$ 就是函数在 $\hat{x}$ 的二阶微分，称为 Hessian 矩阵。记它的 $k$ 阶顺序主子式为 $\Delta _k$：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当 $\forall k$，$\det(\Delta _k)&gt;0$ 时，$g$ 正定，$\hat{x}$ 为极小值点&lt;/li&gt;
&lt;li&gt;当 $\forall k$，$(-1)^k\det(\Delta _k)&gt;0$ 时，$g$ 负定，$\hat{x}$ 为极大值点&lt;/li&gt;
&lt;li&gt;$g$ 不定时，不是极值点&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9.14 条件极值&lt;/h3&gt;
&lt;p&gt;例：求原点到直线 $l:\begin{cases}x+y+z=1\x+2y+3z=6\end{cases}$ 的距离&lt;/p&gt;
&lt;p&gt;称 $f(z,y,z)=x^2+y^2+z^2$ 为目标函数，$\begin{cases}G(x,y,z)=x+y+z-1=0\ H(x,y,z)=x+2y+3z-6=0\end{cases}$ 为约束条件。于是问题转化为“求目标函数在约束条件下的最小值”。&lt;/p&gt;
&lt;p&gt;设 $f$、$G$、$H$ 偏导连续，Jacobi $\begin{pmatrix}G_x&amp;#x26;G_y&amp;#x26;G_z\H_x&amp;#x26;H_y&amp;#x26;H_z\end{pmatrix}$ 在约束条件下秩为 2。不妨设 $\dfrac{\partial (G,H)}{\partial (y,z)}$ 在极值点处不为 0，则唯一确定 $\begin{cases}y=y(x)\z=z(x)\end{cases}$，于是原问题转化为求 $\varphi (x)=f(x,y(x),z(x))$ 的无条件极值：
$$
\begin{aligned}
\varphi &apos;(x)&amp;#x26;=f_x+f_y\cdot y&apos;(x)+f_z\cdot z&apos;(x)\
&amp;#x26;=\begin{pmatrix}
f_x&amp;#x26;f_y&amp;#x26;f_z
\end{pmatrix}\begin{pmatrix}
1\y&apos;\z&apos;
\end{pmatrix}=(\mathbf{grad},f)\cdot\vec\tau=0
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;把约束条件 $G=0$、$H=0$ 也对 $x$ 求导
$$
\begin{cases}
G_x+G_y\cdot y&apos;(x)+G_z\cdot z&apos;(x)=0\quad\Rightarrow (\mathbf{grad},G)\cdot\vec\tau=0\
H_x+H_y\cdot y&apos;(x)+H_z\cdot z&apos;(x)=0\quad\Rightarrow (\mathbf{grad},H)\cdot\vec\tau=0
\end{cases}
$$
这说明 $\mathbf{grad},f$ 落在 $\mathbf{grad},G$ 和 $\mathbf{grad},H$ 张成的平面里（因为事先假设过 Jacobi rank=2，这两个梯度不共线），于是存在常数 $\lambda,,\mu$ 使得
$$
\mathbf{grad},f+\lambda \cdot\mathbf{grad},G+\mu \cdot\mathbf{grad},H=\vec0
$$
展开 $x,y,z$ 三个分量 就相当于三个方程，再加上两个约束 $G=0$、$H=0$，总共五个方程、$x,y,z,\lambda ,\mu$ 五个未知数，因此原问题相当于求
$$
L(x,y,z,\lambda ,\mu )=f(x,y,z)+\lambda G(x,y,z)+\mu H(x,y,z)
$$
这个五元函数的无条件极值，其中令 $\lambda,\mu$ 偏导为零 等价于 $G=0,,H=0$&lt;/p&gt;
&lt;p&gt;上述求条件极值的方法称为 Lagrange 乘子法。其中那个五元函数称为 Lagrange 函数，$\lambda,,\mu$ 称为 Lagrange 乘子。由于还是基于无条件极值，所以这个方法给出的仍然是必要条件。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;完整的 Lagrange 乘子法：&lt;/p&gt;
&lt;p&gt;相当于求 Lagrange 函数的无条件极值：
$$
L(x_1, \dots, x_n, \lambda_1, \dots, \lambda_m) = f + \sum_{i=1}^m \lambda_i G_i
$$
也即极值点的必要条件为
$$
\begin{cases} \dfrac{\partial L}{\partial x_j} = 0, &amp;#x26; j=1, \dots, n \ \dfrac{\partial L}{\partial \lambda_i} = G_i = 0, &amp;#x26; i=1, \dots, m \end{cases}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;条件极值情况判定定理：考虑矩阵 $\left(\dfrac{\partial ^2L}{\partial x_i\partial x_j}\right)_{n\times n}$ 在 Lagrange 函数极值点的定性，正定矩阵时为条件极小值点，负定矩阵时为条件极大值点，不定时情况不定。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;为什么只看 $x$ 不看 $\lambda$ 呢？因为当满足约束时 $G=\vec0$，得
$$
\begin{aligned}
L(x,\lambda)-L(\hat{x},\hat{\lambda})&amp;#x26;=\big(f(x)+\lambda^TG(x)\big)-\big(f(\hat{x})+\lambda^TG(x)\big)\
&amp;#x26;=f(x)-f(\hat{x})\
&amp;#x26;=\dfrac12\rho^2(二次型+o(1))
\end{aligned}
$$
与 $\lambda$ 无关&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;无条件极值情形下，矩阵不定表示 $\hat{x}$ 不是极值点；为什么这里矩阵不定表示 $\hat{x}$ 不定？ 因为这里没看 $\lambda$&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;9.15 不等式约束与 KKT 条件&lt;/h3&gt;
&lt;p&gt;对于优化问题
$$
\begin{aligned}
\min\limits_{x}\quad &amp;#x26;f(x)\
s.t.\quad &amp;#x26;g(x)\leq0
\end{aligned}
$$
这个 $g(x)\leq0$ 就是不等式约束。定义可行域：满足不等式约束的 $x$ 的集合，记为 $K$&lt;/p&gt;
&lt;p&gt;我们先强行把 $g$ 看作等式约束。写出该问题的 Lagrange 函数
$$
L(x,\lambda)=f(x)+\lambda g(x)
$$
由 Lagrange 乘子法，最优解 $\hat{x}$ 的必要条件是 $\nabla f(\hat{x})+\lambda \nabla g(\hat{x})=0$。把这个解代回原问题，讨论这个最优解是否受到不等式约束的影响：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;若 $g(\hat{x})&amp;#x3C;0$（内部解），此时约束恒成立，相当于没有这个约束（称为松弛的）。说明 $\hat{x}$ 已经是 $f$ 的极小值，也即 $\nabla f=0$，因此 Lagrange 乘子 $\lambda$ 只能 $=0$&lt;/li&gt;
&lt;li&gt;若 $g(\hat{x})=0$（边界解），说明 $g(x)$ 约束的存在拦住了 $f$ 继续变小的道路，使得 $\hat{x}$ 停了下来。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，不管 $\hat{x}$ 是否在边界，$g(\hat{x})$ 和 $\lambda$ 必有一个是 0，即 $\lambda g(\hat{x})=0$。这被称为互补松弛条件。&lt;/p&gt;
&lt;p&gt;还不够。对于边界解的 $\lambda$ 还要有所限制。如下图所示，其中一圈一圈的代表 $f$ 的等高线、弧线代表 $g(x)=0$。最优解 $\hat{x}$ 被 $g(x)=0$ 这条墙拦住了去路，说明这个地方 $\hat{x}$ 本来还想往下走的，因此 $\nabla f(\hat{x})$ 一定指向 $K$ 的内部；可行域内部 $g(x)&amp;#x3C;0$，所以 $\nabla g(\hat{x})$ 指向 $K$ 的外部。而 Lagrange 乘子法又说 $\nabla f+\lambda \nabla g=0$，因此这个 $\lambda$ 必须 $\geq0$。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./assets/9-kkt.jpg&quot; alt=&quot;KKT条件示意图|400&quot;&gt;&lt;/p&gt;
&lt;p&gt;也就是说，极值点的必要条件为（略去 hat 号，相当于解方程）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lagrange 函数偏导得 0：$\nabla f+\lambda \nabla g=0$&lt;/li&gt;
&lt;li&gt;原始约束：$g(x)\leq0$&lt;/li&gt;
&lt;li&gt;互补松弛条件：$\lambda g(x)=0$&lt;/li&gt;
&lt;li&gt;梯度方向限制：$\lambda \geq0$&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这四个条件，合称为 &lt;strong&gt;KKT 条件（Karush-Kuhn-Tucker）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;加入多个不等式约束、再加入等式约束，完整版的 KKT 长这样&lt;/p&gt;
&lt;p&gt;定义 Lagrange 函数
$$
L(x,\alpha ,\beta )=f(x)+\alpha ^Tg(x)+\beta ^Th(x)
$$
$$
\begin{aligned}&lt;br&gt;
\alpha =(\alpha_1,\cdots,\alpha_K)^T\quad &amp;#x26;g(x)=\big(g_1(x),\cdots,g_K(x)\big)^T\&lt;br&gt;
\beta  =(\beta_1,\cdots,\beta_K)^T\quad &amp;#x26;h(x)=\big(h_1(x),\cdots,h_L(x)\big)^T&lt;br&gt;
\end{aligned}
$$
KKT 条件为&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lagrange 函数偏导得 0：$\nabla L(x,\alpha ,\beta)=0$&lt;/li&gt;
&lt;li&gt;原始约束：$g_k (x)\leq0,\quad h_\ell (x)=0$&lt;/li&gt;
&lt;li&gt;互补松弛条件：$\alpha_kg_k(x)=0$&lt;/li&gt;
&lt;li&gt;梯度方向限制：$\alpha_k\geq0$&lt;/li&gt;
&lt;/ol&gt;</content:encoded><h:img src="/_astro/math_analysis_cover_2.mFnaY7qs.png"/><enclosure url="/_astro/math_analysis_cover_2.mFnaY7qs.png"/></item><item><title>基于相关滤波的单目标跟踪</title><link>https://chinosan.com/blog/cv/correlation-filter</link><guid isPermaLink="true">https://chinosan.com/blog/cv/correlation-filter</guid><description>动机、方法、实验结果与代码。计算机视觉作业。</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;h2&gt;问题描述&lt;/h2&gt;
&lt;p&gt;单目标跟踪是计算机视觉中的一个基础任务。其目标是在视频序列第一帧中框选目标，随后实时跟踪目标在后续每一帧中的位置。算法需要能够应对目标在运动过程中可能的发生旋转、形变、缩放等外观变化，以及环境光照变化、目标被遮挡、相似物体等干扰。&lt;/p&gt;
&lt;h2&gt;动机&lt;/h2&gt;
&lt;p&gt;面对目标跟踪问题，最直观的思路是做窗口匹配，也即在第一帧中截取目标的图像块作为模板，而在后续帧中使用滑动窗口的方式，将模板在搜索区域内逐像素移动，计算模板与当前窗口内图像的相似度，相似度最高的位置即为预测目标在当前帧的位置。&lt;/p&gt;
&lt;p&gt;但该方法计算量较大，在空间域进行密集的滑动窗口匹配等价于卷积操作，其计算复杂度随着图像尺寸的增加呈平方级增长，难以满足实时性要求；且仅依赖首帧图像生成的模板是固定的，无法适应目标的外观变化，也无法区分物体本身和背景内容，容易跟丢也容易在背景杂乱时跟错。&lt;/p&gt;
&lt;p&gt;为了解决上述问题，我们引入相关滤波（Correlation Filter）算法，其目标是学出一个滤波器，使其作用在原始图像后，在跟踪物体位置的响应最大。“相关”是一种运算，类似卷积，只不过卷积需要把 kernel 旋转 180°，相关不需要。利用卷积定理，可以将时域（或空域）中密集的滑动窗口匹配操作转化为频域中的逐元素乘法运算。通过 FFT 能够在一次计算中获得目标模板与搜索区域在所有可能偏移位置上的响应值，从而将复杂度从 $O(N^2)$ 降低到 $O(N \log N)$。&lt;/p&gt;
&lt;h2&gt;算法与实验&lt;/h2&gt;
&lt;h3&gt;评估策略&lt;/h3&gt;
&lt;p&gt;采用 &lt;a href=&quot;https://huggingface.co/datasets/xche32/OTB2015/tree/main&quot;&gt;OTB2015 数据集&lt;/a&gt; 作为测试基准。该数据集包含光照变化、尺度变化、遮挡、形变、运动模糊等多种场景，测试时在第一帧利用真值初始化跟踪器，随后在整个序列运行且不再进行重置。该方法可以有效测试算法的性能。&lt;/p&gt;
&lt;p&gt;评估指标主要包含两项：距离精度（Precision @20px），即预测框中心点与 Ground Truth 框的中心点的欧氏距离在 20 像素之内的帧数占总帧数的比例；平均交并比（Average IoU），即预测框与真值框区域的交集与并集面积之比在整个序列的平均。&lt;/p&gt;
&lt;h3&gt;MOSSE&lt;/h3&gt;
&lt;p&gt;MOSSE (Minimum Output Sum of Squared Error filter) 算法的思路即找到一个滤波器，使得输入图像经过该滤波器作用后，输出的响应图与预设的响应图之间的误差最小。&lt;/p&gt;
&lt;p&gt;用 $f$ 表示原始图像，$h$ 表示滤波器，于是输出图像 $g=f&lt;em&gt;h$，记 $F=\mathcal{F}[f]$、$H=\mathcal{F}[h]$，运用卷积定理得
$$
G=F\odot H^&lt;/em&gt;
$$
其中 $\odot$ 表示 Hadamard 积（逐元素相乘），$H^*$ 表示 $H$ 的复共轭，因为卷积需要把滤波器 $h$ 翻转 180°，而相关不用，这在 Fourier 变换中等价于在频域取共轭复数。&lt;/p&gt;
&lt;p&gt;优化目标即为最小化误差矩阵：
$$
H=\arg\min\limits_{H}  \sum_i |F_i \odot H^* - G_i|^2
$$
其中 $i$ 表示第 $i$ 帧，$G_i$ 表示频域的期望响应图，通常是“以跟踪目标为中心的 Gauss 函数”的频域图；期望响应图的 $\sigma$ 参数决定了峰值的尖锐程度，$\sigma$ 越大容错越高但精度越低，越小峰值越高（有助于在背景杂乱时更精确地定位目标中心）。逐元素考虑：
$$
H_{uv}=\arg\min\limits_{H_{uv}}  \sum_i |F_{iuv}H^&lt;em&gt;&lt;em&gt;{uv} - G&lt;/em&gt;{iuv}|^2
$$
自变量为复数，故令共轭梯度为 0：
$$
\begin{aligned}
\frac{\partial L}{\partial H^&lt;/em&gt;&lt;em&gt;{uv}}&amp;#x26;=\frac{\partial }{\partial H^*&lt;/em&gt;{uv}}\sum_i\big((F_{iuv}H^&lt;em&gt;&lt;em&gt;{uv} - G&lt;/em&gt;{iuv})(F_{iuv}H^&lt;/em&gt;&lt;em&gt;{uv} - G&lt;/em&gt;{iuv})^&lt;em&gt;\big)\
&amp;#x26;=\frac{\partial }{\partial H^&lt;/em&gt;&lt;em&gt;{uv}}\sum_i\big((F&lt;/em&gt;{iuv}H^&lt;em&gt;&lt;em&gt;{uv} - G&lt;/em&gt;{iuv})(F^&lt;/em&gt;&lt;em&gt;{iuv}H&lt;/em&gt;{uv} - G_{iuv}^&lt;em&gt;)\big)\
&amp;#x26;=\frac{\partial }{\partial H^&lt;/em&gt;&lt;em&gt;{uv}}\sum_i\big(F&lt;/em&gt;{iuv}H_{uv}^&lt;em&gt;F_{iuv}^&lt;em&gt;H_{uv}-F_{iuv}H_{uv}^&lt;em&gt;G^&lt;/em&gt;&lt;em&gt;{iuv}- G&lt;/em&gt;{iuv}F^&lt;/em&gt;&lt;em&gt;{iuv}H&lt;/em&gt;{uv}-G_{iuv}G_{iuv}^&lt;/em&gt;\big)\
&amp;#x26;=\sum_i\big(F_{iuv}F_{iuv}^&lt;em&gt;H_{uv}-F_{iuv}G^&lt;/em&gt;&lt;em&gt;{iuv}\big)=0\
\end{aligned}
$$
解得
$$
H&lt;/em&gt;{uv}=\dfrac{\sum_iF_{iuv}G_{iuv}^&lt;em&gt;}{\sum_iF_{iuv}F_{iuv}^&lt;/em&gt;}
\quad\Rightarrow\quad
H = \frac{\sum_i F_i \odot G_i^&lt;em&gt;}{\sum_i F_i \odot F_i^&lt;/em&gt;}
$$
其中的除法为逐元素除法。&lt;/p&gt;
&lt;p&gt;为了让模型适应目标的外观变化（例如旋转、光照、形变），应当对最近的帧赋予更大的权重，因此将上式的求和式改写为迭代形式，并引入指数移动平均：
$$
\begin{aligned}
H_i&amp;#x26;=\frac{A_i}{B_i}\
A_i&amp;#x26;=\eta F_i\odot G^&lt;em&gt;&lt;em&gt;i+(1-\eta)A&lt;/em&gt;{i-1}\
B_i&amp;#x26;=\eta F_i\odot F^&lt;/em&gt;&lt;em&gt;i+(1-\eta)B&lt;/em&gt;{i-1}
\end{aligned}
$$
对于 $A$ 和 $B$ 初值的计算，算法会在选定跟踪对象后对目标图像进行随机的仿射变换，利用初始帧生成 $n$ 个样本，使用刚才非迭代的形式，算出稳定的初值 $A_0$ 和 $B_0$；$\eta$ 为学习率，$\eta$ 越小越看重最近的帧。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;经过测试，当 $\eta=0.125$、$\sigma=2.0$、初始随机变换样本数 $n=128$ 时，跟踪效果较好，部分实验结果如下表所示（完整对比将在 [[#总结对比]] 中给出）&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;Coupon:        Precision @20px: 100.00% | Average IoU: 0.9125
Fish:          Precision @20px: 100.00% | Average IoU: 0.8309
Man:           Precision @20px: 100.00% | Average IoU: 0.8286
...
Dog:           Precision @20px:  99.21% | Average IoU: 0.3486
...
Freeman1:      Precision @20px:  48.47% | Average IoU: 0.2234
...
Gym:           Precision @20px:  32.59% | Average IoU: 0.2291
...
Human3:        Precision @20px:   0.53% | Average IoU: 0.0081
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以看出，MOSSE 在 Coupon、Fish、Man 等目标运动平稳、背景干扰较小的序列上取得了极高的精度，Precision 达到 100%，且 IoU 保持在 0.8 以上。这是因为设置了较低的 $\eta$，使得算法能够快速适应目标的轻微外观变化。&lt;/p&gt;
&lt;p&gt;但当目标发生剧烈形变（如 Gym）、完全遮挡或背景极其杂乱（如 Freeman1）时跟踪丢失。其次，由于 MOSSE 没有对尺度进行估计，滤波器的大小是固定的，对于 Dog、Walking2 这类目标大小发生显著变化的序列，虽然中心位置预测准确，但预测框无法贴合目标大小，导致 IoU 值较低（如 Dog 序列 Precision 为 99.21% 但 IoU 仅为 0.3486）。事实上本次实验提到的三个算法都无法对尺度进行预测，因此 MOSSE 可以作为一个较好的 baseline。&lt;/p&gt;
&lt;p&gt;【放图】&lt;/p&gt;
&lt;h3&gt;CSK&lt;/h3&gt;
&lt;p&gt;CSK (Circulant Structure Kernels) 引入了正则化和核方法，并引入了循环移位假设。&lt;/p&gt;
&lt;p&gt;MOSSE 虽然能通过卷积提取到了目标位置的特征，但其本质是对“所有可能的候选框中的像素”做线性拟合得到一个响应值，决定这个位置“成为目标位置”的打分。但实际情况下，框选像素和打分之间往往是非线性的。&lt;/p&gt;
&lt;p&gt;为了解决这个问题，我们引入核函数。但在这之前需要先将输入图像 $f$ 和目标响应 $g$ 拉直成向量后，然后才能通过一个映射函数 $\phi(\cdot)$ 投影到一个高维特征空间 $\cal{H}$，并在该空间中引入 $L_2$ 正则项训练一个权重向量 $w$：
$$
w=\arg\min\limits_{w} \left(\sum_i | w^\mathrm{T}\phi(f_i) - g_i|^2 + \lambda |w|^2\right)
$$
（这里没法像 mosse 一样直接写出频域表达式，因为引入了核函数，没法直观地写成卷积）&lt;/p&gt;
&lt;p&gt;记 $\Phi=[\phi^\mathrm{T}(f_i)]$、$\mathcal{g}=[g_i]$，即 $\Phi$ 的第 $i$ 行是第 $i$ 个样本映射、$g$ 的第 $i$ 行是第 $i$ 个样本的目标响应，则上式写为
$$
w=\arg\min\limits_{w} \left(|\Phi w-g|^2 + \lambda |w|^2\right)
$$
令偏导等于 0 解得
$$
w = ({\Phi}^\mathrm{T} {\Phi} + \lambda {I})^{-1} {\Phi}^\mathrm{T} {g}
$$
但直接用这个式子计算不可行的，因为方阵 ${\Phi}^\mathrm{T} {\Phi}$ 边长为特征空间的维数 $\dim\cal{H}$，这个数可能非常大甚至是无穷大（例如 Gauss 核）。因此我们进行变形处理：&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
w &amp;#x26;= ({\Phi}^\mathrm{T} {\Phi} + \lambda {I})^{-1} {\Phi}^\mathrm{T} {g}\
&amp;#x26;= {\Phi}^\mathrm{T} \underbrace{({\Phi} {\Phi}^\mathrm{T} + \lambda {I})^{-1} {g}}&lt;em&gt;{\text{定义为列向量 } {\alpha}}\
&amp;#x26;=\Phi^\mathrm{T}\alpha\
&amp;#x26;=\sum\limits&lt;/em&gt;{i=1}^N\alpha_i\cdot\phi(f_i)
\end{aligned}
$$&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;其中第一步到第二步是 push-through 等式，它是 Woodbury 矩阵恒等式的推论：
$$
(I+UV)^{-1}U=U(I+VU)^{-1}
$$
这样变形后，把方阵 ${\Phi}^\mathrm{T} {\Phi}$ 变成了 ${\Phi} {\Phi}^\mathrm{T}$，它的边长只是框选部分的像素数，相比升维后的特征空间维数就小了一些；另外，${\Phi} {\Phi}^\mathrm{T}$ 就是核矩阵 $\kappa=[k_{ij}]=[\langle \phi(k_i),,\phi(k_j)\rangle]$（也即特征空间中的 Gram 矩阵）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;而且，注意到 $\phi(f_i)$ 即特征向量，因此优化问题的解 $w$ 可以由特征向量 $\phi(f_i)$ 的线性组合表示（&lt;em&gt;事实上，这个证明过程说明，任意一个 $L_2$ 正则化优化问题，其解都可以表示为特征向量的线性组合。这称为“表示定理 Representer Theorem”&lt;/em&gt;）。因此原始优化问题转化为求 $\alpha$，也就相当于 mosse 中的滤波器 $h$：&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
J&amp;#x26;=|\Phi w-g|^2 + \lambda |w|^2\
&amp;#x26;=|\Phi\Phi^\mathrm{T}\alpha-g|+\lambda\alpha^\mathrm{T}\Phi\Phi^\mathrm{T}\alpha^\mathrm{T}\
&amp;#x26;=|\kappa\alpha-g|^2+\lambda\alpha^\mathrm{T}\kappa\alpha
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;令偏导等于 0 解得
$$
{\alpha} = ({\kappa} + \lambda {I})^{-1} {g}
$$
但这仍然涉及到对一个很大的核矩阵求逆，难以实现实时跟踪。于是下面就是利用 FFT 将这个过程变为频域上的逐元素相乘。&lt;/p&gt;
&lt;p&gt;注意到，对于连续视频的图像序列而言，训练样本 $f_i$ 可以看做是上一帧图像 $f_{i-1}$ 经过循环移位生成的，对于还原为矩阵形式的图像而言，就是移出画面的像素从另一侧回到画面。这个假设的优点在于，当图像具有循环移位性质时，特征空间的内积只依赖于两个样本 index 之差；这反映在核矩阵 $\kappa$ 上，就是主对角线方向上的值都相同，这称为循环矩阵。循环矩阵有一个很好的性质，它可以被 DFT 矩阵对角化，也即
$$
\kappa = F^{-1} \text{diag}(\hat{k}) F
$$
其中 $F$ 是 DFT 矩阵，$\hat{k}$ 是核矩阵第一行向量 $k$（即基准图像 $f$ 与其自身所有移位样本的核相关向量）的 Fourier 变换。利用这一性质，代入 $\alpha$ 的解，即可将矩阵求逆运算转化为频域中的逐元素运算：
$$
\begin{aligned}
\alpha &amp;#x26;= (F^{-1} \text{diag}(\hat{k}) F + \lambda I)^{-1} g \
&amp;#x26;= (F^{-1} \text{diag}(\hat{k}) F + F^{-1} (\lambda I) F)^{-1} g \
&amp;#x26;= (F^{-1} (\text{diag}(\hat{k}) + \lambda I) F)^{-1} g \
&amp;#x26;= F^{-1} (\text{diag}(\hat{k}) + \lambda I)^{-1} F g
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;两边同时做 Fourier 变换（即左乘 $F$），记 $A=\mathcal{F}[\alpha]$、$G=\mathcal{F}[g]$，于是&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
Fa&amp;#x26;=(\text{diag}(\hat{k}) + \lambda I)^{-1} F g\
A&amp;#x26;=\text{diag}\left(\frac{1}{\hat k_i+\lambda}\right)G\
&amp;#x26;=\dfrac{G}{\hat k+\lambda}
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;其中最后一行的除法是逐元素除法。这样就实现了从空间域到频域的转换，与 mosse 的复杂度同阶。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;部分实验结果&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;Man:           Precision @20px: 100.00% | Average IoU: 0.9022
BlurFace:      Precision @20px: 100.00% | Average IoU: 0.8295
...
BlurCar4:      Precision @20px:  99.47% | Average IoU: 0.8339
...
Surfer:        Precision @20px:  92.02% | Average IoU: 0.4434
...
Dog1:          Precision @20px:  98.22% | Average IoU: 0.5533
...
Freeman1:      Precision @20px:  36.81% | Average IoU: 0.2073
...
Jogging:       Precision @20px:  23.13% | Average IoU: 0.1850
...
Human3:        Precision @20px:   1.12% | Average IoU: 0.0094
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;分析实验结果可以发现，CSK 相比 MOSSE 在整体鲁棒性上有了显著提升，特别是在处理非线性可分场景和模糊图像时表现突出。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;对复杂背景的区分能力增强。在 Surfer 序列中，MOSSE 仅有 3.99% 的精度，几乎完全失效，而 CSK 跃升至 92.02%。这是因为冲浪场景中背景（浪花）与目标（冲浪者）的灰度特征极度相似且杂乱，MOSSE 的线性分类器无法找到分割超平面，而 CSK 通过高斯核将特征映射到高维空间，成功实现了非线性分离。&lt;/li&gt;
&lt;li&gt;对运动模糊的鲁棒性提升。在 BlurFace（20.69% $\to$ 100%） 和 BlurCar4（51.84% $\to$ 99.47%） 等包含剧烈画面摇晃模糊的序列中，CSK 表现很好。这主要是因为目标函数中引入的 $L_2$ 正则化项，有效抑制了图像噪声和模糊带来的高频干扰。&lt;/li&gt;
&lt;li&gt;局限性依然存在：尽管引入了核方法，CSK 依然依赖单通道灰度特征。因此在 Freeman1（人脸旋转，36.81%）和 Jogging（形变与遮挡，23.13%）序列中，由于目标外观结构发生变化导致像素灰度分布改变，CSK 依然无法有效跟踪。此外，与 MOSSE 一样，CSK 缺乏尺度估计机制，导致在 Dog1 等尺度变化序列上，虽然 Precision 高达 98.22%，但 Average IoU 仅为 0.5533，预测框无法贴合目标大小。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;【更新中】&lt;/p&gt;
&lt;h2&gt;代码&lt;/h2&gt;
&lt;p&gt;代码已上传至 GitHub：&lt;br&gt;
https://github.com/Dingnuooo/course-ComputerVision/tree/main/track&lt;/p&gt;</content:encoded><h:img src="/_astro/correlation.BoWbojqw.png"/><enclosure url="/_astro/correlation.BoWbojqw.png"/></item><item><title>基于 Laplacian Pyramid 的图像融合</title><link>https://chinosan.com/blog/cv/laplacian-pyramid</link><guid isPermaLink="true">https://chinosan.com/blog/cv/laplacian-pyramid</guid><description>动机、方法、实验结果与代码。计算机视觉作业。</description><pubDate>Sun, 09 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;1 动机与方法&lt;/h2&gt;
&lt;p&gt;下面以“融合苹果和橘子两张图片”这一任务为例，阐述 Laplacian Pyramid 的基本思路与方法。&lt;/p&gt;
&lt;h3&gt;1.1 Alpha 混合及其问题&lt;/h3&gt;
&lt;p&gt;一种基础的图像融合方式是 Alpha 混合。该方法通过一张 mask（掩膜）确定每个像素的融合程度。对于待融合的图像 a 和 b，融合后图像 c 上的每个像素的色值由下式决定：
$$
c = a \cdot m + b \cdot (1-m)
$$
其中，$a$ 和 $b$ 是图像在对应像素点的色值；$m$ 是 mask 在对应像素点的明度，取值范围为 $[0,1]$。例如，使用一个左半边为白色（$m=1$）、右半边为黑色（$m=0$）的硬 mask 进行融合，效果等同于将 a 图的左半边和 b 图的右半边直接拼接，在连接处会产生明显的接缝。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./assets/laplacian-pyramid/direct_pingjie.png&quot; alt=&quot;直接拼接|300&quot;&gt;&lt;/p&gt;
&lt;p&gt;因此需要先对硬 mask 进行模糊处理，使其在黑白边界处形成一个平滑的过渡带。一种常见的方法称为 Gauss 模糊，即进行反射 padding 后与 Gauss kernel 做卷积。Gauss kernel 定义为：
$$
k(x,y)=\frac{1}{Z}\exp\left(-\frac{x^2+y^2}{2\sigma^2}\right)
$$
其中，$Z$ 为归一化系数，保证所有卷积后图像能量不变。$\sigma$ 的取值需要适中，若 $\sigma$ 过小，会使 kernel 边缘处的值产生截断；若 $\sigma$ 过大，又会使得边缘处的值接近 0 导致计算时间的浪费。在 OpenCV 中，$\sigma$ 的取值为
$$
\sigma=0.3\left(\dfrac{n-1}{2}-1\right)+0.8
$$
其中 $n$ 是 Gauss kernel 的边长。计算可得，当 $n$ 足够大时，该 $\sigma$ 恰好使得 kernel 边缘处的值约为中心值的 1/255，即 uint8 所能表示的最小亮度，消除截断效应的同时最大限度减少计算浪费。&lt;/p&gt;
&lt;p&gt;Gauss 模糊可以使得图像变得平滑，因此将硬 mask 进行 Gauss 模糊后，将得到带有过渡效果的软 mask。此时再进行 Alpha 混合，就可以获得较好的融合效果。kernel 越大，mask 的模糊程度越高，接缝处的过渡越自然，如图所示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./assets/laplacian-pyramid/alpha_blend.png&quot; alt=&quot;alpha混合结果|700&quot;&gt;&lt;/p&gt;
&lt;p&gt;但这种方法存在两方面的局限性。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一，Gauss 卷积的时间复杂度与 kernel 直径的平方成正比，为了获得足够平滑的过渡带，需要使用一个尺寸很大的 Gauss kernel，计算非常耗时。&lt;/li&gt;
&lt;li&gt;第二，Gauss kernel 越大，过渡带越宽，虽然使得颜色过渡更自然，但在分界线两侧的纹理过度混合，也即无论对于图像中的低频区域还是复杂纹理，都使用相同的过渡宽度来混合，导致连接处的纹理扩散（例如直径为 729 的 kernel 下，左半部分出现了较为明显的橘子纹理，而右半的部分橘子纹理又被苹果的平滑纹理所稀释）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;1.2 Laplacian Pyramid&lt;/h3&gt;
&lt;p&gt;针对问题一，一个直观的想法是，“增大 kernel 直径”可以通过“减小图片本身的尺寸”来近似。也即，大尺寸卷积核对原图进行卷积，可以近似为小尺寸卷积核对缩小后的图像进行卷积。而 Gaussian Pyramid 就是一种表示多尺度图像的方式，其构建过程包括两个基本操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;下采样：首先对当前层级的图像进行 Gauss 模糊，然后移除所有的偶数行和偶数列，得到尺寸为原来 1/4 的小图像。&lt;/li&gt;
&lt;li&gt;上采样：首先将图像的每个像素都扩大为原来的 4 倍，为新像素（奇数行和奇数列）填充 0，随后使用一个 4 倍值的 Gauss kernel 进行卷积，以对新像素进行插值。4 倍是为了补偿因插入大量 0 值而导致的亮度损失，从而维持图像的整体能量。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过构建 Gaussian Pyramid，可以将大尺寸卷积核的卷积，转化为在不同尺度下使用小尺寸卷积核进行卷积，并上采样为原分辨率，有效降低了计算复杂度。&lt;/p&gt;
&lt;p&gt;然而，Gaussian Pyramid 的下采样过程会丢失图像的高频细节信息，导致仅通过上采样无法完美重建原图。为了解决信息丢失的问题，Burt 和 Adelson 于 1983 年提出了 Laplacian Pyramid。 Laplacian Pyramid 的第 $i$ 层 $L_i$ 记录了对应层级 Gaussian Pyramid 图像与其上采样版本之间的差（也即丢失的高频细节信息），即
$$
L_i = G_i - \text{Expand}(G_{i+1})
$$&lt;/p&gt;
&lt;p&gt;其中，$G_i$ 是 Gaussian Pyramid 的第 $i$ 层图像，$\text{Expand}(G_{i+1})$ 是对更高一层图像 $G_{i+1}$ 进行上采样后的结果。若定义 Laplacian Pyramid 的最顶层为 Gaussian Pyramid 的最顶层，则只需要通过不断将高频信息叠加到上低频的底图中，也即
$$
\begin{aligned}
G_n&amp;#x26;=L_n\
G_{n-1} &amp;#x26;= L_{n-1}+\text{Expand}(G_{n})\
G_{n-2} &amp;#x26;= L_{n-2}+\text{Expand}(G_{n-1})\
&amp;#x26;\cdots \
G_1&amp;#x26;=L_1+\text{Expand}(G_2)\
G_0&amp;#x26;=L_0+\text{Expand}(G_1)\
\end{aligned}
$$
从而无损地从 Laplacian Pyramid 中重建出原始图像。因此，Laplacian Pyramid 实质上就是将图像分解为低频部分和高频部分，顶层为最低频的底图，往下每一层代表了不同尺度下的高频信息。&lt;/p&gt;
&lt;h3&gt;1.3 基于 Laplacian Pyramid 的融合&lt;/h3&gt;
&lt;p&gt;利用 Laplacian Pyramid 对图片进行的频域分解，可以解决问题二中纹理扩散的问题。只需要对不同频段分别进行不同程度的融合，对高频信息（边缘与纹理）使用较硬的 mask 进行融合以防止纹理扩散，对低频信息（颜色与光照）使用较软的 mask 进行融合以实现平滑过渡，即可实现高质量的图像融合。具体步骤如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;为待融合的两个源图像（苹果 A 和橘子 B）分别构建 Laplacian Pyramid $LA$ 和 $LB$，将图像分解为低频底图 + 不同尺度的高频信息；由于原图分辨率为 512x512，需要构建 $\log_{2}512+1=10$ 层金字塔。&lt;/li&gt;
&lt;li&gt;为 mask 构建一个 Gaussian Pyramid $GM$，提供不同尺度下的平滑表示。&lt;/li&gt;
&lt;li&gt;构建融合后的 Laplacian Pyramid $LS$：对于第 $i$ 层，使用对应层级的 mask $GR_i$ 作为权重，对 $LA_i$ 和 $LB_i$ 进行 Alpha 混合：
$$
LS_i = GM_i \cdot LA_i + (1 - GM_i) \cdot LB_i
$$&lt;/li&gt;
&lt;li&gt;利用融合后的 Laplacian Pyramid $LS$ 重建最终的图像：从最顶层开始，逐层进行上采样并加上当前层的 Laplacian 细节，直至恢复到原始分辨率，得到最终的无缝融合图像。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;2 实验与结果分析&lt;/h2&gt;
&lt;p&gt;依据上述原理编写程序，尝试不同 kernel 直径下生成的 Gauss Pyramid、Laplacian Pyramid 以及最终的融合图像。其中，为了便于观察，Laplacian Pyramid 在展示时，其像素值均取绝对值并统一放大 4 倍；同时，所有图像的像素值在生成后都需 clip 到 &lt;code&gt;[0, 255]&lt;/code&gt;，以防止像素值循环溢出。取 kernel 直径为 3、5、9、27，生成的金字塔以及融合结果如下：&lt;/p&gt;
&lt;p&gt;kernel 直径 = 3：
&lt;img src=&quot;./assets/laplacian-pyramid/size3_k4.png&quot; alt=&quot;kernel3&quot;&gt;&lt;/p&gt;
&lt;p&gt;kernel 直径 = 5：
&lt;img src=&quot;./assets/laplacian-pyramid/size5_k4.png&quot; alt=&quot;kernel5&quot;&gt;&lt;/p&gt;
&lt;p&gt;kernel 直径 = 9：
&lt;img src=&quot;./assets/laplacian-pyramid/size9_k4.png&quot; alt=&quot;kernel9&quot;&gt;&lt;/p&gt;
&lt;p&gt;kernel 直径 = 27：
&lt;img src=&quot;./assets/laplacian-pyramid/size27_k4.png&quot; alt=&quot;kernel27&quot;&gt;&lt;/p&gt;
&lt;p&gt;融合结果（从左到右 kernel 直径依次为 3、5、9、27）：
&lt;img src=&quot;./assets/laplacian-pyramid/lp_blend_result.png&quot; alt=&quot;fusion_result&quot;&gt;&lt;/p&gt;
&lt;p&gt;对比不同 kernel 尺寸生成的金字塔可知，kernel 对金字塔的分解效果有显著影响。kernel 直径越大，其低通滤波效应越强，导致在构建高斯金字塔的每一层时，图像的模糊程度也越高。这反映在拉普拉斯金字塔上，就是各层所分离出的频率带信息更加平滑，尤其是在低频分量中。另外，当 kernel 直径增大至 27 时，从高斯金字塔的第 8 层开始，图像已收敛为一个恒定色值的区域，所有像素的色值都已相等。这表明在该尺度下，图像的所有细节信息均已被平滑掉，因此不必继续增大 kernel 直径。&lt;/p&gt;
&lt;p&gt;对比不同 kernel 尺寸得到的融合图像可知，不论是大尺寸 kernel 还是小尺寸 kernel，其表现几乎一致，苹果和橘子的分界线完全消失，过渡区域的色彩与纹理融合自然，没有出现可察觉的失真或纹理溢出现象。这表明基于 Laplacian Pyramid 的图像融合方法实现了在不同频率尺度上分别进行融合的功能，能够在实现低频分量相融的同时，有效保护高频分量的信息。&lt;/p&gt;
&lt;p&gt;除了苹果橘子的经典例图，本次实验还尝试了对两张实拍照片的融合，将一张图片的天空部分换成另一张图片。其中 mask 是通过手动绘制遮罩实现的。除了由于精度不足导致对树枝等细节处的抠图不够精细，其他部分能够较好的融合，特别是交界处并没有产生纹理扩散，如图所示。&lt;/p&gt;
&lt;p&gt;实拍原图：（图一摄于上海方浜中路附近；图二摄于北京理工大学珠海校区）
&lt;img src=&quot;./assets/laplacian-pyramid/real.png&quot; alt=&quot;original_and_mask&quot;&gt;&lt;br&gt;
&lt;img src=&quot;./assets/laplacian-pyramid/real_fuse_uplevel.png&quot; alt=&quot;real_blend_result&quot;&gt;&lt;/p&gt;
&lt;h2&gt;3 实验代码&lt;/h2&gt;
&lt;p&gt;代码已上传至 GitHub：&lt;br&gt;
https://github.com/Dingnuooo/course-ComputerVision/tree/main/blend&lt;/p&gt;</content:encoded><h:img src="/_astro/task.BmLDfuxn.png"/><enclosure url="/_astro/task.BmLDfuxn.png"/></item><item><title>数电期末小抄 - 触发器</title><link>https://chinosan.com/blog/digital-electronic/flipflop</link><guid isPermaLink="true">https://chinosan.com/blog/digital-electronic/flipflop</guid><description>期末复习以及开卷考试携带的笔记。</description><pubDate>Fri, 03 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;*Cover image generated by AI&lt;/p&gt;
&lt;p&gt;能够存储 1 位二进制数字信号的基本单元电路称为触发器&lt;/p&gt;
&lt;p&gt;按逻辑功能分类&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RS&lt;/li&gt;
&lt;li&gt;JK&lt;/li&gt;
&lt;li&gt;D&lt;/li&gt;
&lt;li&gt;T 或 T&apos;&lt;/li&gt;
&lt;li&gt;（基本 RS 不算）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;按结构分类&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基本 RS 触发器&lt;/li&gt;
&lt;li&gt;同步触发器&lt;/li&gt;
&lt;li&gt;主从触发器&lt;/li&gt;
&lt;li&gt;边沿触发器&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;基本 RS 触发器&lt;/h2&gt;
&lt;p&gt;两个与非门首尾相连或交叉耦合
&lt;img src=&quot;./assets/chapter5/1.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;电路图
&lt;img src=&quot;./assets/chapter5/2.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;定义不同输入组合的状态名称&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;0 状态：$Q=0$，$\overline Q=1$&lt;/li&gt;
&lt;li&gt;1 状态：$Q=1$，$\overline Q=0$&lt;/li&gt;
&lt;li&gt;$\overline {S_D}$ 直接置 1 端，低电平有效。右下角的 D 表示 Directly，后面会说为什么&lt;/li&gt;
&lt;li&gt;$\overline {R_D}$ 直接置 0 端，低电平有效&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对应这些功能&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;置 1 功能：$\overline {S_D}=0$，$\overline {R_D}=1$，这样就存了一个 1（指的是 $Q=1$）&lt;/li&gt;
&lt;li&gt;置 0 功能：$\overline {S_D}=1$，$\overline {R_D}=0$，这样就存了一个 0&lt;/li&gt;
&lt;li&gt;保持功能：$\overline {S_D}=1$，$\overline {R_D}=1$，由于两个都是低电平有效，此时两个都是无效的。此时状态保持住，数据记忆了。我们记触发器接收信号之前所处的状态称为初态，符号 $Q^n$；接收信号之后建立的新状态叫做次态，符号 $Q^{n+1}$。次态不仅和输入信号有关，还和次态有关。&lt;/li&gt;
&lt;li&gt;无意义状态：$\overline {S_D}=0$，$\overline {R_D}=0$，此时 $Q$ 和 $\overline Q$ 都是 1，就错误了。见下图的阴影部分，当出现无意义状态后来了一个保持状态，整个系统就无序了。&lt;strong&gt;所以说并不是无意义状态下出现随机，而是无意义之后如果来了一个保持，系统就会在 0 和 1 之间反复横跳&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;描述触发器功能的方法&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;波形图
&lt;img src=&quot;./assets/chapter5/3.png&quot; alt=&quot;&quot;&gt;&lt;/li&gt;
&lt;li&gt;特性表
&lt;img src=&quot;./assets/chapter5/4.png&quot; alt=&quot;&quot;&gt;&lt;/li&gt;
&lt;li&gt;表达式（特性方程）：$Q^{n+1}=S_D+\overline {R_D}Q^n$，约束条件 $R_DS_D=0$（即 RS 不能同时为 1，否则进入无意义状态）。写表达式的方法就是真值表到表达式的方法，只要把 $Q^n$ 当作一个单独的符号即可&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;或非门也可以构成 RS 触发器
&lt;img src=&quot;./assets/chapter5/5.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;同步 RS 触发器&lt;/h2&gt;
&lt;p&gt;实践中通常会用很多触发器。为了避免触发器之间相互影响，我们希望这些触发器有一个统一的时刻表、一令一动，即只有在公共同步信号到达的时候，才根据输入信号改变输出状态。称这个同步信号叫做时钟脉冲信号，简称时钟(Clock Pulse，CP)。这么做可能会降低速度，但是只要我时钟足够快就可以。计算机芯片主频越做越快就是提高效率用的（提一嘴，注意 CP 和 CR 的区分，CP 是时钟，CR 是 clear 的缩写，是清空或者复位的）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./assets/chapter5/6.png&quot; alt=&quot;&quot;&gt;
右边两个是一个基本 RS 触发器，左边两个是输入控制电路&lt;/p&gt;
&lt;p&gt;$\overline{S_D}$ 和 $\overline{R_D}$ 称为异步输入信号，$S$ 和 $R$ 称为同步输入信号。以后我们管在时钟控制下的信号叫同步信号，和时钟没关系的叫异步信号。$S$ 和 $R$ 高电平有效，$\overline{S_D}$ 和 $\overline{R_D}$ 低电平有效&lt;/p&gt;
&lt;p&gt;看看工作原理&lt;/p&gt;
&lt;p&gt;先考虑同步工作时候。令 $\overline{S_D}=1$、$\overline{R_D}=1$，两个都无效，处于保持状态。如果 $CP=0$，左边两个与非门都被封锁，不管 $R$、$S$ 输入什么信号，左边两个门的输出都是 1，将触发器置于保持状态；如果 $CP=1$，左侧门导通，$R$、$S$ 经过反向后进入触发器，就和之前一样了。分类如下&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$S=R=0\ \ \ \Rightarrow Q^{n+1}=Q^n$&lt;/li&gt;
&lt;li&gt;$S=1,R=0\Rightarrow Q^{n+1}=1$&lt;/li&gt;
&lt;li&gt;$S=0,R=1\Rightarrow Q^{n+1}=0$&lt;/li&gt;
&lt;li&gt;$S=R=1\ \ \ \Rightarrow$ 无意义，禁止出现&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;发现这与或非门构成的基本 RS 触发器是一致的&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./assets/chapter5/7.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;表达式 $Q^{n+1}=S+\overline RQ^n$，约束条件 $SR=0$
&lt;img src=&quot;./assets/chapter5/8.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里解释一下 Directly 的意思，因为 $\overline{R_D}$ 和 $\overline{S_D}$ 这两个端可以直接对触发器进行更改，而不受到时钟信号的限制，可以随时预置（预置后应该使得异步端处于无效状态）&lt;/p&gt;
&lt;h2&gt;主从触发器&lt;/h2&gt;
&lt;p&gt;刚才说使用同步的目的就是希望一令一动。如果在 $CP=1$ 时输入信号发生多次变化，那么触发器的状态也会发生多次翻转，称为空翻。为了尽可能减少空翻现象，发明了主从型、边沿型等形式的触发器&lt;/p&gt;
&lt;p&gt;主从型，符号上面有一个直角标记。&lt;strong&gt;注意！！！！符号图有错误！！！符号那里 CP 前面有一个圈！！！！有圈表示下降沿触发！！！没圈表示上升沿触发！！！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./assets/chapter5/9.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;工作原理：$CP=1$ 时，主触发器根据 S、R 的状态翻转，从触发器处于保持状态。CP 回到 0 时，主触发器处于保持状态，CP 经过反向器接到从触发器，此时从触发器被打开，并按照与主触发器的输出进行翻转。即 $CP=1$ 时候设定 S、R 的信号但不产生效果，直到 CP 下降沿时才按照设定的信号产生效果，这个效果的表达式与基本 RS 触发器是一致的，即把 $Q&apos;$ 的信号直接传过来&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./assets/chapter5/10.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;JK 触发器&lt;/h2&gt;
&lt;p&gt;为了解决 $S=R=1$ 无意义状态的问题，发明了 JK 触发器。JK 是两个人名的缩写。对应关系：J 和之前的 S 对应，K 和之前的 R 对应。记忆方法：把 R 的上半部分折起来，看起来和把 K 上半部分遮起来一模一样，同理 J 和 S 也是
&lt;img src=&quot;./assets/chapter5/11.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;CP=1 时，主触发器根据 JK 状态而动作，从触发器处于保持状态；CP=0 时，从触发器根据主触发器的状态进行输出。对于 $JK=0$ 的输入组合，这些和之前都是一样的。&lt;/p&gt;
&lt;p&gt;当 $J=K=1$ 的时候，出现无意义状态，即当 CP 下降沿的时候电路变得随机。但不论怎么随机，要么 Q=0 要么 Q=1，分类讨论一下。发现当 $Q=0$ 的时候，推导完得 $Q=1$；当 $Q=1$ 的时候，推导完得 $Q=0$。于是得出结论：$J=K=1\ \Rightarrow Q^{n+1}=\overline {Q^n}$&lt;/p&gt;
&lt;p&gt;完整列表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$J=0,K=0\ \Rightarrow Q^{n+1}=Q^n$&lt;/li&gt;
&lt;li&gt;$J=1,K=0\ \Rightarrow Q^{n+1}=1$&lt;/li&gt;
&lt;li&gt;$J=0,K=1\ \Rightarrow Q^{n+1}=0$&lt;/li&gt;
&lt;li&gt;$J=1,K=1\ \Rightarrow Q^{n+1}=\overline {Q^n}$&lt;/li&gt;
&lt;li&gt;特性方程 $Q^{n+1}=J\overline{Q^n}+\overline KQ^n$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./assets/chapter5/12.png&quot; alt=&quot;&quot;&gt; &lt;img src=&quot;./assets/chapter5/13.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;上面说的功能，有一个基本前提：CP=1 时 J 与 K 不发生变化。如果 J、K 在 CP=1 时发生了变化，则不能直接根据 CP 下降沿前的 JK 状态判断 Q 的变化。因为 CP=1 时，主触发器的左侧两个门总会有一个是被封锁的，只能接受没被封锁的那个门的信号。见下图
&lt;img src=&quot;./assets/chapter5/14.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;边沿触发器&lt;/h2&gt;
&lt;p&gt;进一步优化，把 CP=1 时输入状态可能发生的变化也优化掉。我们不用 CP=1 这么长一段时间，只用 CP 的上升或者下降时刻输入信号的状态，而其他时候输入信号的任何变化都不会影响触发器的次态。电路图比较复杂，也不考。只要知道符号表达即可。&lt;/p&gt;
&lt;p&gt;对于边沿触发器，CP 里面有一个小三角。如果 CP 外面没有圆圈，说明是上升沿触发；如果 CP 外面有圆圈，说明是下降沿触发&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./assets/chapter5/15.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;T 触发器与 D 触发器&lt;/h2&gt;
&lt;p&gt;描述功能的方法：特性表、状态转换图、特性方程&lt;/p&gt;
&lt;p&gt;所谓什么 RS、什么 JK，它是描述功能的名词，而不是描述电路的名词。就像 RS 触发器既可以用与非门又可以用或非门，只要是实现对应功能的电路，都能叫某某触发器。&lt;/p&gt;
&lt;p&gt;下面补充几个触发器类型&lt;/p&gt;
&lt;p&gt;D 触发器：输入什么我就记忆什么。例如下图中，当 CP 上升沿的时候，输入是什么输出就是什么，相当于导线，只是它有记忆功能。
&lt;img src=&quot;./assets/chapter5/16.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;T 触发器：当触发器有效时，$T=0$ 时保持，$T=1$ 时翻转
&lt;img src=&quot;./assets/chapter5/17.png&quot; alt=&quot;&quot;&gt;
T&apos; 触发器：让 T 触发器的输入端接 1。例如图中，每来一个上升沿就翻转。这个东西可以作为计数器的最低位。特性方程 $Q^{n+1}=\overline{Q^n}$&lt;/p&gt;
&lt;h2&gt;触发器功能转换&lt;/h2&gt;
&lt;p&gt;用一个已有触发器，加一个转换电路变成一个新的触发器。其实前面从基本 RS 到同步 RS 再到同步 JK，就是功能转换的一个例子&lt;/p&gt;
&lt;p&gt;基本方法：已有触发器的特性方程和待实现触发器特性方程联立，把已有触发器的输入用待实现触发器的输入表示。&lt;/p&gt;
&lt;p&gt;D 触发器转 JK 触发器
&lt;img src=&quot;./assets/chapter5/18.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;D 触发器转 T 触发器
&lt;img src=&quot;./assets/chapter5/19.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;D 触发器转 T&apos; 触发器
&lt;img src=&quot;./assets/chapter5/20.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;JK 触发器转 D 触发器，这里有一个拆项，把 $D$ 拆成 $DQ^n+D\overline{Q^n}$，和 JK 特性方程一一对应
&lt;img src=&quot;./assets/chapter5/21.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;JK 触发器转 T 触发器（T&apos; 也可以，看右图）。
&lt;img src=&quot;./assets/chapter5/22.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;</content:encoded><h:img src="/_astro/flipflop.C3isVMKp.png"/><enclosure url="/_astro/flipflop.C3isVMKp.png"/></item><item><title>数电期末小抄 - 脉冲波形的产生与整形</title><link>https://chinosan.com/blog/digital-electronic/waveform</link><guid isPermaLink="true">https://chinosan.com/blog/digital-electronic/waveform</guid><description>期末复习以及开卷考试携带的笔记。</description><pubDate>Fri, 03 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;*Cover image generated by AI&lt;/p&gt;
&lt;p&gt;下图中，左上角是 555 定时器本体。右上角是施密特触发器，左下角是单稳态触发器，右下角是多谐振荡器。这一章就围绕这几个东西展开。
&lt;img src=&quot;./assets/chapter7/1.png&quot; alt=&quot;1&quot;&gt;&lt;/p&gt;
&lt;p&gt;产生矩形脉冲的方法：各种形式的多谐振荡器
波形变换电路：比较器、施密特触发器&lt;/p&gt;
&lt;p&gt;集成 555 定时器。长这样。
&lt;img src=&quot;./assets/chapter7/2.png&quot; alt=&quot;2&quot;&gt;
三个电阻 R，是电阻分压器。两个比较器（开环的运放）。右边是 RS 锁存器。左下角是一个开关三极管，基极高电平导通， 低电平截止。最右侧反向器充当输出缓冲功能&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CO 不是进位输出，是 control 的意思。
&lt;ul&gt;
&lt;li&gt;CO 端没有外加电压（即通过小电容接地，通常是 $0.01\ \mu\text{F}$）时，$V_{R1}=\dfrac23V_{CC}$，$V_{R2}=\dfrac13V_{CC}$&lt;/li&gt;
&lt;li&gt;CO 端外加电压时，$V_{R1}=V_{CO}$，$V_{R2}=\dfrac12V_{CO}$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;开环的运放叫做电压比较器，当 $V_+&gt;V_-$ 时输出正电压，$V_+&amp;#x3C;V_-$ 时输出负电压，电压绝对值即运放供电电压最大值。一般不会相等，因为灵敏度很高基本不可能稳定相等&lt;/li&gt;
&lt;li&gt;RS 锁存器，低电平有效。即比较器结果决定输出状态&lt;/li&gt;
&lt;li&gt;开关三极管，当 $Q=1$ 时 $G_3$ 输出低电平，$V_O$ 低电平，三极管截止；当 $Q=0$ 时 $G_3$ 输出高电平，$V_O$ 高电平，三极管导通&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;综上可以给出的工作状态总结表&lt;/p&gt;
&lt;p&gt;| $V_{TH}$  | $V_{\overline{TR}}$ | $\overline{CR}$ | $V_O$ | 三极管 | 工作状态 |
| :-------: | :-----------------: | :-------------: | :---: | :-: | :--: |
|  $\phi$   |       $\phi$        |        0        |   0   | 导通  |  清零  |
| $&gt;V_{R1}$ |      $&gt;V_{R2}$      |        1        |   0   | 导通  | 置 0  |
| $&amp;#x3C;V_{R1}$ |      $&gt;V_{R2}$      |        1        |  原状态  | 原状态 |  保持  |
|  $\phi$   |      $&amp;#x3C;V_{R2}$      |        1        |   1   | 截止  | 置 1  |&lt;/p&gt;
&lt;h2&gt;施密特触发器，两个稳定状态&lt;/h2&gt;
&lt;p&gt;施密特触发器：有两个稳定的输出状态（高/低电平），状态的维持与转化均与输入电压有关。两个阈值电压 $V_{T+}&gt;V_{T-}$，他就是拿来整形的，把边沿变得陡峭。&lt;/p&gt;
&lt;p&gt;施密特触发器传输特性
&lt;img src=&quot;./assets/chapter7/5.png&quot; alt=&quot;5&quot;&gt;
当输入电压增加到上限阈值时，输出翻转；当输入电压下降到&lt;strong&gt;上限&lt;/strong&gt;阈值时，输出&lt;strong&gt;不翻转&lt;/strong&gt;，只有小到下限阈值时才翻转。此为滞回特性。当输入小、输出小时称为同相型，当输入小、输出大时称为反相型。&lt;em&gt;如果只有一个阈值，那么当数值在阈值附近波动时状态会反复切换。所以才引入了两个阈值，构造滞回区间，增加稳定性&lt;/em&gt;。回差电压 $\Delta V=V_{T+}-V_{T-}$&lt;/p&gt;
&lt;p&gt;555 定时器构成施密特触发器的方法：把 $TH$ 和 $\overline{TR}$ 接一起，外接输入电压。实现滞回的，就是 RS 的保持状态。这样构成的是一个反相型施密特触发器。
&lt;img src=&quot;./assets/chapter7/6.png&quot; alt=&quot;6&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入电压增大的过程：
&lt;ul&gt;
&lt;li&gt;当 $V_I&amp;#x3C;V_{R2}$ 时，输出电压为高电平&lt;/li&gt;
&lt;li&gt;当 $V_{R1}&amp;#x3C;V_I&amp;#x3C;V_{R2}$，输出电压保持刚才的高电平状态&lt;/li&gt;
&lt;li&gt;当 $V_I&gt;V_{R1}$ 时，输出电压变成低电平。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;输入电压减小的过程：
&lt;ul&gt;
&lt;li&gt;当 $V_I&gt;V_{R1}$ 时，输出电压为低电平&lt;/li&gt;
&lt;li&gt;当 $V_{R1}&amp;#x3C;V_I&amp;#x3C;V_{R2}$，输出电压保持刚才的低电平状态&lt;/li&gt;
&lt;li&gt;当 $V_I&amp;#x3C;V_{R2}$ 时，输出电压变为高电平&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;阈值电压 $V_{T+}=V_{R1},\ \ \  V_{T-}=V_{R2}$ 回差电压 $\Delta V=V_{T+}-V_{T-}=V_{R1}-V_{R2}$&lt;/p&gt;
&lt;p&gt;施密特触发器的三个功能。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;波形变换&lt;img src=&quot;./assets/chapter7/7.png&quot; alt=&quot;7&quot;&gt;&lt;/li&gt;
&lt;li&gt;整形，即消除畸变&lt;img src=&quot;./assets/chapter7/8.png&quot; alt=&quot;8&quot;&gt;&lt;/li&gt;
&lt;li&gt;鉴幅，即选出高于某电压的脉冲，其他的都洗掉&lt;img src=&quot;./assets/chapter7/9.png&quot; alt=&quot;9&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我们说，某某类型的触发器，只代表电路的功能。所以施密特触发器也是可以使用其他方式实现的。
&lt;img src=&quot;./assets/chapter7/10.png&quot; alt=&quot;10&quot;&gt;&lt;/p&gt;
&lt;h2&gt;单稳态触发器，一个稳定一个暂态&lt;/h2&gt;
&lt;p&gt;单稳态触发器只有一个稳态。在外加触发脉冲的作用下，电路进入暂态，经过一段时间后自动返回稳态。这段时间是一个固定的值，只取决于电路的参数，与外加触发脉冲的宽度无关。&lt;/p&gt;
&lt;p&gt;用 555 定时器构成单稳态触发器
&lt;img src=&quot;./assets/chapter7/11.png&quot; alt=&quot;11&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;左边的 RC 就是定时用的。$V_{TH}$ 就是电容的充电电压。负触发脉冲到来之前，低触发端处于高电平，锁存器输出状态保持低电平（稳态），$V_O$ 输出低电平，三极管导通，相当于电容两端都接地，电容短路掉，什么都不会发生。&lt;/li&gt;
&lt;li&gt;负脉冲来了，$V_{TR}$ 减小，S 端有效，锁存器变高电平，$V_O$ 输出高电平，三极管截止，VCC 开始给电容充电。充电过程，TH 的电压逐渐增大，直到增大到 $\dfrac23V_{CC}$ 时，R 端有效，锁存器变低电平，$V_O$ 输出低电平，三极管导通，电容放电，回到上一点。而 RC 充电过程时间是确定的。
&lt;img src=&quot;./assets/chapter7/12.png&quot; alt=&quot;12&quot;&gt;
根据电路分析知识可得 $t_w=\tau\ln\dfrac{u(\infty)-u(0)}{u(\infty)-u(t_w)}$，代入 $u(\infty)=V_{CC}$ 得 $t_w=1.1RC$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输出脉冲宽度与输入脉冲无关，但输入脉冲不能太宽，否则充完电后还有负脉冲，导致充电超过三分之二&lt;/li&gt;
&lt;li&gt;输入脉冲间隔不能太小，因为电容放电也需要时间，要等电容放完电才能来下一个脉冲&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;同样，单稳态触发器作为一种功能触发器，也可以有其他实现方式。下面这个电路便是一个。没有 RC 的时候存在竞争冒险，会有一个信号快一些。而“快一些”本身就是一种暂态，使用 RC 将这个暂态的时间延长，也可以实现控制脉冲宽度
&lt;img src=&quot;./assets/chapter7/13.png&quot; alt=&quot;13&quot;&gt;&lt;/p&gt;
&lt;h2&gt;多谐振荡器，两个暂态&lt;/h2&gt;
&lt;p&gt;输出有两个暂态，不需要外部信号，就能在两个暂态之间连续交替转换，产生矩形脉冲信号。&lt;/p&gt;
&lt;p&gt;用 555 定时器构成多谐振荡器（红色的电阻是 $R_2$）。其实是一个施密特触发器和两组 RC
&lt;img src=&quot;./assets/chapter7/14.png&quot; alt=&quot;14&quot;&gt;&lt;/p&gt;
&lt;p&gt;充电是 $(R_1+R_2)C$，放电是 $R_2C$（通过 $R_1$ 和 $R_2$ 之间的钮流到 $D$）
&lt;img src=&quot;./assets/chapter7/15.png&quot; alt=&quot;15&quot;&gt;
因此由电分知识有&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$T_1=(R_1+R_2)C\ln 2$&lt;/li&gt;
&lt;li&gt;$T_2=R_2C\ln2$&lt;/li&gt;
&lt;li&gt;$T=T_1+T_2=(R_!+2R_2)C\ln2$&lt;/li&gt;
&lt;li&gt;占空比 $q=\dfrac{T_1}{T}=\dfrac{R_1+R_2}{R_1+2R_2}$，可知占空比始终大于 50%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;占空比可调且可以调到比 50% 小：如图，充电时候经过二极管 1 和 $R_1C$，放电时候经过二极管 2 和 $R_2C$，占空比 $q=\dfrac{R_1}{R_1+R_2}$
&lt;img src=&quot;./assets/chapter7/16.png&quot; alt=&quot;16&quot;&gt;&lt;/p&gt;
&lt;p&gt;施密特触发器可以构成多谐振荡器
&lt;img src=&quot;./assets/chapter7/20.png&quot; alt=&quot;20&quot;&gt;&lt;/p&gt;
&lt;p&gt;门电路可以构成多谐振荡器，利用的是反向器的延时。注意要用&lt;strong&gt;奇数个&lt;/strong&gt;反向器才行。同样使用 RC 延长这段时间差。这叫做环形振荡器。最下面的是实用环形振荡器
&lt;img src=&quot;./assets/chapter7/17.png&quot; alt=&quot;17&quot;&gt;
&lt;img src=&quot;./assets/chapter7/18.png&quot; alt=&quot;18&quot;&gt;&lt;/p&gt;
&lt;p&gt;对称式多谢振荡器可以产生方波。当然还有非对称
&lt;img src=&quot;./assets/chapter7/19.png&quot; alt=&quot;19&quot;&gt;&lt;/p&gt;
&lt;p&gt;石英晶体的特征：当外加信号频率等于石英晶体的固有频率（$32768\text{ Hz}=2^{15}$，可以用分频电路整出秒脉冲）一致时，等效阻抗最小且为纯电阻，信号最容易通过。利用 TTL 非门与石英晶体构成多谐振荡器。
&lt;img src=&quot;./assets/chapter7/21.png&quot; alt=&quot;21&quot;&gt;
改进：可控
&lt;img src=&quot;./assets/chapter7/22.png&quot; alt=&quot;22&quot;&gt;&lt;/p&gt;</content:encoded><h:img src="/_astro/waveform.PnITa0i5.png"/><enclosure url="/_astro/waveform.PnITa0i5.png"/></item><item><title>机器学习 - 概率无向图模型</title><link>https://chinosan.com/blog/ai/ml-mrf</link><guid isPermaLink="true">https://chinosan.com/blog/ai/ml-mrf</guid><description>Markov 随机场 / logistic 回归 / softmax 回归 / 最大熵模型 等</description><pubDate>Wed, 15 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;*Cover image generated by AI&lt;/p&gt;
&lt;p&gt;概率无向图模型，aka Markov 随机场（Markov Random Field）&lt;/p&gt;
&lt;h2&gt;无向图的因子分解&lt;/h2&gt;
&lt;p&gt;有向图中我们分析了独立性，无向图这里也需要。有三种等价表示&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;局部 Markov 性：若某个顶点的所有邻居都已知（也即被观测），那么它与其他顶点条件独立&lt;/li&gt;
&lt;li&gt;成对 Markov 性：若两个顶点之间没有直接相连，那么当其他所有顶点都已知时，这两个顶点条件独立&lt;/li&gt;
&lt;li&gt;全局 Markov 性：若两个点集之间的通路都必须经过某个第三点集，那么当第三点集已知时，这两个点集之间条件独立&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果两个顶点被观测顶点分割的情况下条件独立，则这个无向图就称为 Markov 随机场&lt;/p&gt;
&lt;p&gt;分析概率无向图时同样要做因子分解，但“无向”写不出有向图那样的依赖关系，因此需要使用最大团来做因子分解。&lt;em&gt;备忘：团 (clique) 又称完全子图，即其中的任意两个顶点都有边连接。“最大团”即包含顶点数最多的团。&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;势函数&lt;/h3&gt;
&lt;p&gt;其中 $C$ 为 $G$ 的所有最大团（因为可能不止一个最大团），$\varphi$ 为定义在最大团上的非负函数（称为势函数），$Z$ 为归一化系数
$$
Z=\sum\limits_{x_G}\prod_{C}\varphi_C(X_C=x_C)
$$&lt;/p&gt;
&lt;p&gt;这个分布也叫做 Gibbs 分布。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;特别地，如果定义势函数 $\varphi_C(X_C)=\exp(-E_C(X_C))$，则称为 Boltzmann 分布，其中 $E$ 表示能量。&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;势函数求 Gibbs 分布例题&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;例题&lt;/strong&gt;。总统大选中，共有懂王、拜登两位候选人。有 ABCD 四个人来投票，他们四个人的关系网如下，连线表示两个人的投票倾向之间存在相互影响：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/ML/hc-example.svg&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;图中总共有四个团：AB、BC、CD、DA，都含有两个顶点，因此都是最大团。在这四个最大团上，定义相互影响的势函数为：&lt;/p&gt;
&lt;p&gt;| $\varphi_1(A,B)$            | $\varphi_2(B,C)$        | $\varphi_3(C,D)$        | $\varphi_4(D,A)$        |
| --------------------------- | ----------------------- | ----------------------- | ----------------------- |
| $a^0\quad b^0\quad 30\quad$ | $b^0\quad c^0\quad 100\quad$ | $c^0\quad d^0\quad 1\quad$   | $d^0\quad a^0\quad 100$ |
| $a^0\quad b^1\quad 5\quad$       | $b^0\quad c^1\quad 1\quad$   | $c^0\quad d^1\quad 100\quad$ | $d^0\quad a^1\quad 1$   |
| $a^1\quad b^0\quad 1\quad$       | $b^1\quad c^0\quad 1\quad$   | $c^1\quad d^0\quad 100\quad$ | $d^1\quad a^0\quad 1$   |
| $a^1\quad b^1\quad 10\quad$      | $b^1\quad c^1\quad 100\quad$ | $c^1\quad d^1\quad 1\quad$   | $d^1\quad a^1\quad 100$ |&lt;/p&gt;
&lt;p&gt;其中，事件 $A=a^0$ 表示“A 投懂王”，事件 $B=b^1$ 表示“B 投拜登”，其他类推。&lt;/p&gt;
&lt;p&gt;势函数表反映了两人之间具体的影响关系。例如可以看出，BC、DA 很可能投同一个人，而 CD 很可能投不同的人。&lt;/p&gt;
&lt;p&gt;于是 Gibbs 分布可以由下表计算得到。Gibbs 分布即归一化的势函数积，归一化系数就是中间那一列全部加起来&lt;/p&gt;
&lt;p&gt;| $a\ b\ c\ d$ | 势函数积                                     | Gibbs 分布 |
| ------------ | ---------------------------------------- | :------: |
| $0\ 0\ 0\ 0$ | $30\times100\times1\times100 = 300000$   |  0.0417  |
| $0\ 0\ 0\ 1$ | $30\times100\times100\times1 = 300000$   |  0.0417  |
| $0\ 0\ 1\ 0$ | $30\times1\times100\times100 = 300000$   |  0.0417  |
| $0\ 0\ 1\ 1$ | $30\times1\times1\times1 = 30$           |  0.0000  |
| $0\ 1\ 0\ 0$ | $5\times1\times1\times100 = 500$         |  0.0001  |
| $0\ 1\ 0\ 1$ | $5\times1\times100\times1 = 500$         |  0.0001  |
| $0\ 1\ 1\ 0$ | $5\times100\times100\times100 = 5000000$ |  0.6943  |
| $0\ 1\ 1\ 1$ | $5\times100\times1\times1 = 500$         |  0.0001  |
| $1\ 0\ 0\ 0$ | $1\times100\times1\times1 = 100$         |  0.0000  |
| $1\ 0\ 0\ 1$ | $1\times100\times100\times100 = 1000000$ |  0.1389  |
| $1\ 0\ 1\ 0$ | $1\times1\times100\times1 = 100$         |  0.0000  |
| $1\ 0\ 1\ 1$ | $1\times1\times1\times100 = 100$         |  0.0000  |
| $1\ 1\ 0\ 0$ | $10\times1\times1\times1 = 10$           |  0.0000  |
| $1\ 1\ 0\ 1$ | $10\times1\times100\times100 = 100000$   |  0.0139  |
| $1\ 1\ 1\ 0$ | $10\times100\times100\times1 = 100000$   |  0.0139  |
| $1\ 1\ 1\ 1$ | $10\times100\times1\times100 = 100000$   |  0.0139  |&lt;/p&gt;
&lt;p&gt;这就求出了联合分布。&lt;/p&gt;
&lt;p&gt;从联合分布中可以得出边缘分布。例如我们求 AB 的边缘分布：&lt;/p&gt;
&lt;p&gt;| $a\ b$ | $\phi_1$ | 归一化 $\phi_1$ | 联合分布中的 $P(a,b)$ |
| ------ | ------ | ---------- | ------------- |
| $0\ 0$ |    30    |    0.6522    |     0.1250      |
| $0\ 1$ |    5     |    0.1087    |     0.6944      |
| $1\ 0$ |    1     |    0.0217    |     0.1389      |
| $1\ 1$ |    10    |    0.2174    |     0.0417      |&lt;/p&gt;
&lt;p&gt;可以看出，全局联系改变了 AB 之间单独的关系。细究起来，这种变化主要来源于 CD 之间的强烈不一致性。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;下面讲 3 个常用的概率无向图模型&lt;/p&gt;
&lt;h2&gt;logistic 回归模型&lt;/h2&gt;
&lt;p&gt;说是回归，但其实是基于回归的分类模型。本章我们先用一般流程在二分类上做说明，再阐述多分类问题，以及它与概率无向图的关系&lt;/p&gt;
&lt;h3&gt;二分类与logistic函数&lt;/h3&gt;
&lt;h4&gt;基本推导&lt;/h4&gt;
&lt;p&gt;传统的线性回归做分类，就是把正类样本设标签 $y=1$，负类样本设标签 $y=0$，然后得出线性拟合函数 $z=w^\mathrm{T}x$（偏置项通过 $b=[{w^{(0)}}]^\mathrm{T}x^{(0)}$ 塞进 $w^\mathrm{T}x$ 中）；对于测试样本，若拟合值大于某个值（比如 0.5），就分为正类，否则分为负类，这样就分出来了。这本质上是一个分段判别函数：
$$
y=\begin{cases}
1,&amp;#x26;z&gt;0.5\
0,&amp;#x26;z\leq 0.5
\end{cases}
$$
它不连续，不可导。而 logistic 回归做分类，就是在传统的线性回归当中，加入了一个性质足够好判别函数。logistic 函数就是一个不错的选择：
$$
y=\sigma(z)=\dfrac{1}{1+\mathrm{e}^{-z}}
$$&lt;/p&gt;
&lt;p&gt;它单增、任意阶可导，关于点 $(0,\ 0.5)$ 对称；另外，logistic 函数相当于一个 $\mathbb{R}\to [0,1]$ 的映射，或者说把实数轴映射成概率。于是 logistic 函数的结果便可以解释为：回归出来的数越大，分类为正类的概率就越大。&lt;/p&gt;
&lt;p&gt;将样本 $x_{i}$ 分类为正类的概率记为 $p_i$，即
$$
p_i=\sigma(w^\mathrm{T}x_i)=\dfrac{1}{1+\exp(-w^\mathrm{T}x_i)}
$$&lt;/p&gt;
&lt;p&gt;于是该样本分类正确的概率即为 $p_i^{y_i}(1-p_i)^{1-y_i}$；若进一步假设分类结果只与特征有关（即样本间独立），那么全部分类正确的概率即为 $\prod_i p_i^{y_i}(1-p_i)^{1-y_i}$&lt;/p&gt;
&lt;p&gt;于是我们的目标就是最大化对数似然函数：
$$
\begin{aligned}
L(w)&amp;#x26;=\log\left[\prod\limits_i p_i^{y_i}(1-p_i)^{1-y_i}\right]\
&amp;#x26;=\sum\limits_i\big(y_i\log p_i+(1-y_i)\log(1-p_i)\big)\
&amp;#x26;=\sum\limits_i\big(y_i\log \dfrac{p_i}{1-p_i}+\log(1-p_i)\big)\
\end{aligned}
$$
这样变形的目的，是为了凑出对数几率函数 $\mathrm{logit}(p)=\log \dfrac{p}{1-p}$，因为它是 logistic 的反函数，而这里 $p=\sigma(w^\mathrm{T}x)$，故 $\log \dfrac{p}{1-p}$ 就等于 $w^\mathrm{T}x$&lt;em&gt;（因此 logistic 回归也称为对数几率回归）&lt;/em&gt;。于是代入后继续化简得
$$
\begin{aligned}
L(w)&amp;#x26;=\sum\limits_i\left[y_i(w^\mathrm{T}x_i)+\log\dfrac{\exp(-w^\mathrm{T}x_i)}{1+\exp(-w^\mathrm{T}x_i)}\right]\
&amp;#x26;=\sum\limits_i\big[w^\mathrm{T}x_iy_i-w^\mathrm{T}x_i-\log\big(1+\exp(-w^\mathrm{T}x_i)\big)\big]\
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;梯度下降之即可。其中对 $w$ 的偏导可以进一步化简：
$$
\begin{aligned}
\dfrac{\partial L}{\partial w}&amp;#x26;=\sum\limits_i\big[x_iy_i-x_i-\dfrac{-x_i\exp(-w^\mathrm{T}x_i)}{1+\exp(-w^\mathrm{T}x_i)}\big]\
&amp;#x26;=\sum\limits_ix_i\big[y_i-1+\dfrac{\exp(-w^\mathrm{T}x_i)}{1+\exp(-w^\mathrm{T}x_i)}\big]\
&amp;#x26;=\sum\limits_ix_i\big[y_i-\dfrac{1}{1+\exp(-w^\mathrm{T}x_i)}\big]\
&amp;#x26;=\sum\limits_ix_i\big[y_i-\sigma(w^\mathrm{T}x_i)\big]\
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;把偏置项拆出来，即
$$
\begin{aligned}
\frac{\partial L}{\partial w} &amp;#x26;= \sum_i x_i [y_i - \sigma(w^\mathrm{T}x_i + b)]\
\frac{\partial L}{\partial b} &amp;#x26;= \sum_i [y_i - \sigma(w^\mathrm{T}x_i + b)]
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;至于最后如何判别，就是看分类为正类的概率是否比负类大，本质上还是和 0.5 比大小，但这种比大小可以从概率角度解释，和传统的回归分类还是有区别的；由 logistic 函数的单调性，也可以等价为 $w^\mathrm{T}x$ 和 0 比大小。&lt;/p&gt;
&lt;h4&gt;交叉熵损失&lt;/h4&gt;
&lt;p&gt;实践中采用 mini-batch 梯度下降，即在小批量样本上（而不是在整个训练集上）做梯度下降。为了防止样本量对 loss 的数值尺度的影响，需要把损失函数除以样本量，也即定义损失函数
$$
J(w) = - \dfrac{1}{m} L(w) = -\dfrac 1m\sum\limits_{i=1}^m\bigg[y_i\log p_i+(1-y_i)\log(1-p_i)\bigg]
$$
这称为&lt;strong&gt;交叉熵损失&lt;/strong&gt;。其中 $y_i$ 是第 $i$ 个样本的真实标签，取值 0 或 1，$p_i$ 是模型预测该样本为正类的概率。&lt;/p&gt;
&lt;p&gt;为什么跟“熵”有关系：从公式的形式来看，它是&lt;strong&gt;概率的负对数&lt;/strong&gt;的平均值，这相当于求“在所有样本的真实标签都已知时，获得的&lt;strong&gt;信息量&lt;/strong&gt;的期望”。这个信息量越小，说明“真实标签”这个信息越没用，也即表明模型预测的概率分布越准确，离真实标签的差异越小。&lt;/p&gt;
&lt;p&gt;另外实践中，为了防止对 0 取对数，需要在 log 里面加上一个小正数 $\varepsilon$&lt;/p&gt;
&lt;h3&gt;多分类与 softmax&lt;/h3&gt;
&lt;p&gt;多分类的思路和 logistic 是一样的，只不过它使用权重矩阵 $W=[w_i]$ 代替刚才的权重向量 $w$（同样的，偏置项 $b_k$ 塞进 $w_k$ 的第 0 项），得到“分为每个类的打分”：
$$
z_k=w_k^\mathrm{T}x
$$&lt;/p&gt;
&lt;p&gt;然后再用 softmax 函数将 $\vec{z}$ 压成分类结果的概率分布向量 $\vec{p}$：
$$
p_k = P(y=k|\vec{z}) = \text{softmax}&lt;em&gt;k(\vec{z}) = \dfrac{\exp(z_k)}{\sum&lt;/em&gt;{j=1}^K\exp(z_j)}
$$&lt;/p&gt;
&lt;p&gt;对于多分类问题，loss 函数仍然是用“全部分类正确的概率”然后取对数平均（也即交叉熵）：
$$
L(W) = -\dfrac{1}{m}\sum_{i=1}^my_{i}^\mathrm{T}\log p_{i}
$$
其中第 $i$ 样本的真实标签 $y_i$ 是 onehot 编码，例如对于三分类问题，标签“1”、“2”、“3”分别表示为 $[1,0,0]^\mathrm{T}$、$[0,1,0]^\mathrm{T}$ 和 $[0,0,1]^\mathrm{T}$。&lt;/p&gt;
&lt;p&gt;这说明，二分类的 logistic 回归本质上是在计算两个类别的相对“证据差”。而多分类的 softmax 则是将这种思想推广到了多个类别中。&lt;/p&gt;
&lt;h4&gt;loss 梯度计算&lt;/h4&gt;
&lt;p&gt;仍然需要使用梯度下降进行优化。回顾 logistic 回归中，求 loss 的梯度时是通过配凑 logit 来化简的。softmax 回归中也需要做类似的化简，以便于计算 loss 的梯度。&lt;/p&gt;
&lt;p&gt;softmax 把向量映射成向量，相当于向量值函数，其关于自变量 $\vec z$ 的偏导应该是一个 Jacobi 矩阵。记 softmax 结果为 $\vec p$，也即
$$
p_k(\vec{z}) = \dfrac{\exp(z_k)}{\sum_{k=1}^K\exp(z_k)}
$$
于是在求“分为第 $k$ 类的概率”关于“第 $j$ 类的打分”$\dfrac{\partial p_k}{\partial z_j}$ 时，显然可以分类讨论：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;当 $j\neq k$ 时，自变量只在分母出现。求导时，分母平方；分子“上导下不导”中，上导为 0、“下导上不导”等于 $\exp(z_j)\exp(z_k)$，于是求导结果即为
$$
\frac{\partial p_k}{\partial z_j}=\frac{-\exp(z_j)\exp(z_k)}{\big(\sum_{k=1}^K\exp(z_k)\big)^2}=-p_jp_k
$$&lt;/li&gt;
&lt;li&gt;当 $j=k$ 时，“上导下不导”等于 $\exp(z_j)(\Sigma)$、“下导上不导”等于 $\exp^2(z_j)$，于是求导结果即为
$$
\frac{\partial p_k}{\partial z_j}=\frac{\exp(z_j)(\Sigma)-\exp^2(z_j)}{(\Sigma)^2}=\frac{\exp(z_j)}{\Sigma}-\left(\frac{\exp(z_j)}{\Sigma}\right)^2=p_j-p_j^2=p_j(1-p_j)
$$&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;p&gt;有了这些之后就可以计算 loss 的梯度。为了表述清晰，我们先关注单个样本的 loss 关于打分的偏导，然后再推广到整个数据集在模型参数上的偏导。由于求导过程涉及对自变量向量的非线性运算，需要把第 $i$ 样本的 loss 中的向量点乘写开来：
$$
L_i = -y_i^\mathrm{T} \log p_i = - \sum_{k=1}^K y_{ik} \log p_{ik}
$$
其中 $y_{ik}$ 是第 $i$ 个样本的真实标签的第 $k$ 分量，$p_{ik}$ 是模型预测第 $i$ 个样本分为第 $k$ 类的概率。于是由链式法则，第 $i$ 样本的损失 $L_i$ 对第 $j$ 类的打分 $z_{ij}$ 的偏导为
$$
\begin{aligned}
\frac{\partial L_i}{\partial z_{ij}}
&amp;#x26;= \frac{\partial L_i}{\partial p_{ik}} \frac{\partial p_{ik}}{\partial z_{ij}}=-\sum_{k=1}^K \frac{y_{ik}}{p_{ik}} \frac{\partial p_{ik}}{\partial z_{ij}}\
&amp;#x26;= \underbrace{\left( -\frac{y_{ij}}{p_{ij}} \frac{\partial p_{ij}}{\partial z_{ij}} \right)}&lt;em&gt;{k=j} + \sum&lt;/em&gt;{k \neq j} \underbrace{\left( -\frac{y_{ik}}{p_{ik}} \frac{\partial p_{ik}}{\partial z_{ij}} \right)}&lt;em&gt;{k \neq j} \
&amp;#x26;= \left( -\frac{y&lt;/em&gt;{ij}}{p_{ij}} \right) \cdot \big( p_{ij}(1-p_{ij}) \big) + \sum_{k \neq j} \left( -\frac{y_{ik}}{p_{ik}} \right) \cdot (-p_{ij}p_{ik}) \
&amp;#x26;= -y_{ij}(1-p_{ij}) + \sum_{k \neq j} y_{ik}p_{ij} \
&amp;#x26;= -y_{ij} + y_{ij}p_{ij} + p_{ij}\sum_{k \neq j} y_{ik} \
&amp;#x26;= -y_{ij} + p_{ij} \sum_{k=1}^K y_{ik}
\end{aligned}
$$
而对于 onehot 编码向量 $y_i$ 而言，$\sum\limits_{k=1}^K y_{ik}\equiv1$，于是
$$
\frac{\partial L_i}{\partial z_{ij}} = p_{ij} - y_{ij}
$$&lt;/p&gt;
&lt;p&gt;代入 $z_{ij}=w_{j}^\mathrm{T}x_i$ 得
$$
\frac{\partial L_i}{\partial w_j} = \frac{\partial L_i}{\partial z_{ij}} \frac{\partial z_{ij}}{\partial w_j} = (p_{ij} - y_{ij}) x_i
$$
最后只需要将所有样本的梯度进行平均，于是总 loss 对参数的梯度
$$
\frac{\partial L}{\partial w_j} = \frac{1}{m} \sum_{i=1}^m (p_{ij} - y_{ij}) x_i
$$
拆出偏置项的形式：
$$
\begin{aligned}
\frac{\partial L}{\partial w_j} &amp;#x26;= \frac{1}{m} \sum_{i=1}^m (p_{ij} - y_{ij}) x_i\
\frac{\partial L}{\partial b_j} &amp;#x26;= \frac{1}{m} \sum_{i=1}^m (p_{ij} - y_{ij})
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;作为对比：在 logistic 回归中，loss 梯度 $\dfrac{\partial L}{\partial w}=\dfrac1m\displaystyle\sum\limits_ix_i\big[\sigma(w^\mathrm{T}x_i)-y_i\big]$，其中 $\sigma$ 那一项就是概率，因此在表达式上二者是完全一致的&lt;/p&gt;
&lt;h3&gt;无向图模型视角&lt;/h3&gt;
&lt;p&gt;现在我们回头用概率无向图模型的观点来审视 logistic 回归。事实上，logistic 回归可以被看作一个非常简单的 Markov 随机场。&lt;/p&gt;
&lt;p&gt;考虑一个分类问题，我们有输入特征 $X={X_1, \dots, X_d}$ 和输出类别 $Y$。构建一个无向图，其中 $Y$ 和所有的 $X_i$ 都相连，所有 $X_i$ 之间也相互连接。这个图本身就是一个巨大的团，也是该图的唯一最大团。于是分类问题即求条件概率 $P(Y=k\mid X=\vec x)$&lt;/p&gt;
&lt;p&gt;根据 Hammersley-Clifford 定理，该图的联合概率分布可以表示为：
$$
P(Y, X) = \frac{1}{Z}\varphi(Y, X)
$$
于是条件概率
$$
P(Y\mid X) = \frac{P(Y,  X)}{P( X)} = \frac{P(Y, X)}{\sum_{Y&apos;}P(Y&apos;, X)} = \frac{\frac{1}{Z}\varphi(Y, X)}{\sum_{Y&apos;}\frac{1}{Z}\varphi(Y&apos;, X)} = \frac{\varphi(Y, X)}{\sum_{Y&apos;}\varphi(Y&apos;, X)}
$$&lt;/p&gt;
&lt;p&gt;如果定义势函数
$$
\varphi(Y, X) = \exp\left( \sum_{k=1}^K \mathbb{I}(Y=k) \cdot (w_k^\mathrm{T} X + b_k) \right)
$$
其中 $\mathbb{I}(Y=k)$ 是示性函数（当 $Y=k$ 时为 1，否则为 0），$w_k$ 和 $b_k$ 分别是第 $k$ 类的权重和偏置。当我们只关心 $Y=k$ 这个特定类别时，上式可以简化为 $\varphi(k,X) = \exp(w_k^\mathrm{T}X + b_k)$。&lt;/p&gt;
&lt;p&gt;将这个势函数代入条件概率公式中：
$$
P(Y=k|X) = \frac{\varphi(k,X)}{\sum_{j=1}^K \varphi(j,X)} = \frac{\exp(w_k^\mathrm{T}X+b_k)}{\sum_{j=1}^K \exp(w_j^\mathrm{T}X+b_j)}
$$
这就是 softmax 回归的公式&lt;/p&gt;
&lt;p&gt;因此，从概率图模型的角度来看，logistic/softmax 回归相当于一个 势函数为&lt;strong&gt;特征的线性组合的指数形式&lt;/strong&gt;的 Markov 随机场。这种直接对条件概率 $P(Y|X)$ 进行建模的模型，也称作判别式模型。&lt;/p&gt;</content:encoded><h:img src="/_astro/mrf-cover.PiAhqoke.png"/><enclosure url="/_astro/mrf-cover.PiAhqoke.png"/></item><item><title>强化学习 - Policy iteration 与 Q-Learning</title><link>https://chinosan.com/blog/ai/rl-hw2</link><guid isPermaLink="true">https://chinosan.com/blog/ai/rl-hw2</guid><description>习题作业</description><pubDate>Sat, 25 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;h2&gt;1 通勤北理工&lt;/h2&gt;
&lt;p&gt;研小理是一位在北理工中关村校区的研究生，由于他要做很多实验，而这些实验的仪器设备又分布在不同校区，他经常需要往返良乡校区和西山实验区，然后回到中关村校区。&lt;/p&gt;
&lt;p&gt;考虑到这在几年内是一个重复活动，我们把它建模为一个无限时域的 MDP 过程。研小理做实验的时间非常不确定，而班车的发车时间是固定的。为了实现更加灵活的通勤，他构想出了一套校区间通勤的方案。这个过程可以使用一个三状态 MDP 链描述，其中 $S_1$ 是西山实验区，$S_2$ 是良乡校区，$S_3$ 是中关村校区。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/RL/hw2-q1-1.png&quot; alt=&quot;状态转移图|300&quot;&gt;&lt;/p&gt;
&lt;p&gt;| 奖励 | 班车 | 地铁 |
| :--- | :--- | :--- |
| $S_1$ | +0.7 | -1.0 |
| $S_2$ | +1.0 | -1.3 |
| $S_3$ | -0.5 | -0.7 |&lt;/p&gt;
&lt;p&gt;折扣因子 $\gamma = 0.9$。运行值迭代后，你得到如下最优 $Q$-值：&lt;/p&gt;
&lt;p&gt;| $Q^*$ | 班车 | 地铁 |
| :---- | :--- | :--- |
| $S_1$ | +1.65| -0.05|
| $S_2$ | +1.95| -0.35|
| $S_3$ | +0.98| +1.05|&lt;/p&gt;
&lt;p&gt;请问研小理通勤的最优策略是什么？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解答:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对每一状态，以 $Q^*$ 矩阵中行最大值对应的动作为最优策略。即&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 $S_1$ 西山实验区时选择班车&lt;/li&gt;
&lt;li&gt;在 $S_2$ 良乡校区时选择班车&lt;/li&gt;
&lt;li&gt;在 $S_3$ 中关村校区时选择地铁&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/RL/hw2-q1-2.png&quot; alt=&quot;聚合状态|300&quot;&gt;&lt;/p&gt;
&lt;p&gt;在此聚合状态下（仍取 $\gamma = 0.9$），我们仍然在三状态环境中运行 Q-learning，但是使用双状态的 Q 表，可以得到的 $Q^*$ 值为&lt;/p&gt;
&lt;p&gt;| $Q^*$ | 班车 | 地铁 |
| :---- | :--- | :--- |
| $S_{12}$ | +1.73| -0.08|
| $S_3$ | +1.03| +0.84|&lt;/p&gt;
&lt;p&gt;根据这些 $Q$-值，最优策略是什么？与使用真实三状态表示时得到的最优策略相同？解释原因。&lt;/p&gt;
&lt;p&gt;仍以 $Q^*$ 矩阵中行最大值对应的动作为最优策略，也即不论哪个状态均选择班车。&lt;/p&gt;
&lt;p&gt;与第一问结果不相同。原因：&lt;/p&gt;
&lt;p&gt;$$
Q&apos;(s,a)=Q(s,a)+\alpha\big[R+\gamma \max\limits_{a&apos;}Q(s&apos;,a&apos;)-Q(s,a) \big]
$$&lt;/p&gt;
&lt;p&gt;对于 $S_3$ 中关村，合并状态 1 和 2 后，$Q(s&apos;,a&apos;)$ 都相等，因此 $Q$ 矩阵的更新仅依赖于奖励 $R$. 又因为在 $S_3$ 时 $R_{班车}=-0.5$ 大于 $R_{地铁}=-0.7$，所以最优策略从地铁变为班车。&lt;/p&gt;
&lt;p&gt;另一方面，当使用真实的三状态时，$S_2$ 的“班车”拥有全局最大奖励，而在 $S_3$ 只能通过地铁到达 $S_2$；因此模型将会学习到通过地铁来到 $S_2$，以获取更大的奖励。但是如果合并 $S_1$ 和 $S_2$，这一最大奖励性质不存在，自然会影响其策略。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2 Frozenlake小游戏&lt;/h2&gt;
&lt;p&gt;在本次编程作业中，将实现强化学习中的两种算法——策略迭代（Policy Iteration）和 Q-Learning，并在 Gymnasium（前身为 OpenAI Gym）环境中的 Frozenlake 游戏环境中进行应用。通过这次作业，希望你可以理解这几种算法的工作原理及其在不同环境和奖励条件下的表现。非常鼓励探索和调整不同环境参数，分析算法在各种条件下的适应性和性能。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/RL/hw2-frozenlake.png&quot; alt=&quot;frozenlake|400&quot;&gt;&lt;/p&gt;
&lt;h3&gt;2.1 ~ 2.3&lt;/h3&gt;
&lt;p&gt;参数设定&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;地图大小：$4\times4$&lt;/li&gt;
&lt;li&gt;冰面出现的概率：$0.7$&lt;/li&gt;
&lt;li&gt;最大步数 1000&lt;/li&gt;
&lt;li&gt;策略迭代算法：
&lt;ul&gt;
&lt;li&gt;折扣因子 $\gamma=0.9$&lt;/li&gt;
&lt;li&gt;收敛容差 $\text{tol}=10^{-3}$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Q-Learning 算法：
&lt;ul&gt;
&lt;li&gt;episode = 10000&lt;/li&gt;
&lt;li&gt;折扣因子 $\gamma=0.95$&lt;/li&gt;
&lt;li&gt;学习率 $\alpha=0.1$&lt;/li&gt;
&lt;li&gt;探索率 $\varepsilon=1$&lt;/li&gt;
&lt;li&gt;探索率衰减因子 0.999&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于题述的四个实验条件，采用同一地图进行 100 次测试，计算成功率和平均步数以衡量算法的性能。&lt;/p&gt;
&lt;p&gt;执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;python run.py --multirun algorithm=policy_iteration,QLearning env.is_slippery=False,Tru env.render_mode=ansi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;实验结果如下：&lt;/p&gt;
&lt;p&gt;| 环境  | 算法         | 成功率  | 平均步数  |
| :-- | :--------- | :--- | :---- |
| 确定性 | 策略迭代       | 100% | 5.00  |
| 确定性 | Q-Learning | 100% | 5.00  |
| 随机性 | 策略迭代       | 100% | 34.50 |
| 随机性 | Q-Learning | 100% | 37.83 |&lt;/p&gt;
&lt;p&gt;结果表明：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Policy iteration 和 Q-Learning 两种算法在确定性和随机性环境中成功率均为 100%，表明两个算法均成功学习到了能够到达终点的路径。&lt;/li&gt;
&lt;li&gt;冰面光滑时，两种算法的平均步数显著增加。表明环境的随机性对算法效率有显著影响，智能体需要更多步数以应对不确定性。&lt;/li&gt;
&lt;li&gt;在确定性环境中，两种算法表现一致，平均步数均为理论最小值 5。但在随机性环境中，Policy iteration 得到的策略在效率上略优于 Q-Learning。
原因分析：Policy iteration 使用动态规划，直接使用转移概率 $P$ 进行完整的环境建模，直接算出全局最优策略。而 Q-Learning 为 model-free 方法，没有全局状态转移概率，在随机性环境中，状态转移的不确定性增加了学习的难度，使得 Q-Learning 需要更多的步骤，因此效率低。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;2.4&lt;/h3&gt;
&lt;p&gt;除地图大小外，其他参数保持不变，再次进行实验。实验结果如下。&lt;/p&gt;
&lt;p&gt;6x6 地图&lt;/p&gt;
&lt;p&gt;| 环境  | 算法         | 成功率  | 平均步数  |
| :-- | :--------- | :--- | :---- |
| 确定性 | 策略迭代       | 100% | 9.00  |
| 确定性 | Q-Learning | 100% | 9.00  |
| 随机性 | 策略迭代       | 68%  | 45.02 |
| 随机性 | Q-Learning | 0%   | -  |&lt;/p&gt;
&lt;p&gt;8x8 地图&lt;/p&gt;
&lt;p&gt;| 环境  | 算法         | 成功率  | 平均步数  |
| :-- | :--------- | :--- | :---- |
| 确定性 | 策略迭代       | 100% | 13.00 |
| 确定性 | Q-Learning | 0%   | -  |
| 随机性 | 策略迭代       | 77%  | 79.90 |
| 随机性 | Q-Learning | 0%   | -     |&lt;/p&gt;
&lt;p&gt;实验结果表明，随着地图尺寸的增大，两种算法的表现产生显著差异。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Policy iteration 表现稳定。确定性环境中成功率 100%，说明模型总能找到最优路径；在随机性环境中成功率较高，表明它也能学习到一个鲁棒的策略。说明 Policy iteration 算法具有较好的扩展性，其性能不因状态空间的增大而大幅下跌。&lt;/li&gt;
&lt;li&gt;Q-Learning 算法性能不好。在 6x6 地图、随机性环境中，Q-Learning 成功率为 0%，模型失效，无法学习到有效策略。当地图扩大到 8x8 时，确定性环境与随机性环境中 Q-Learning 算法均失效。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;原因：Q-Learning 是 model-free，只有终点有正奖励。当状态空间增大时，一方面奖励稀疏，另一方面 Q 矩阵大小增大，这导致在有限的训练回合内智能体难以充分探索有效动作，Q 矩阵几乎无法得到更新，难以学习到任何有价值的策略。而 Policy iteration 依然进行全局动态规划，即使地图大小增大也不过是在 $n$ 个数中选择最大值，对效率影响不大。&lt;/p&gt;
&lt;h3&gt;code&lt;/h3&gt;
&lt;p&gt;注：可以使用 python 自带的虚拟环境：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;python -m venv env-name
.\env-name\Scripts\activate # windows
source env-name/bin/activate # linux
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以下是依赖包与主要代码（其他的是老师给的框架&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;gymnasium[toy_text]
hydra-core
tqdm
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-py&quot;&gt;&quot;&quot;&quot;Policy Iteration&quot;&quot;&quot;
import numpy as np
from typing import Dict, List, Tuple

__all__ = [
    &quot;PType&quot;,
    &quot;policy_iteration&quot;, 
    &quot;QLearning&quot;
]

PType = Dict[
    int, 
    Dict[
        int, 
        List[
            Tuple[
                float, 
                int, 
                int, 
                bool
            ]
        ]
    ]
]

def policy_evaluation(
    P: PType, 
    nS: int, 
    nA: int, 
    policy: np.ndarray, 
    gamma: float = 0.9, 
    tol: float = 1e-3
) -&gt; np.ndarray:

    value_function = np.zeros(nS)
    counter=0
    while True:
        delta=0
        for s in range(nS):
            prev=value_function[s]
            a=policy[s]
            sum=0
            rsa=0
            for pssa, next_s, r, _ in P[s][a]:
                rsa=r
                sum+=pssa*value_function[next_s]
            newv=rsa+gamma*sum
            
            value_function[s]=newv
            delta=max(delta, abs(prev-value_function[s]))
        if delta&amp;#x3C;tol:
            break
    return value_function


def policy_improvement(
    P: PType,
    nS: int,
    nA: int,
    value_from_policy: np.ndarray,
    policy: np.ndarray,
    gamma: float = 0.9
) -&gt; np.ndarray:

    new_policy = np.zeros(nS, dtype=&quot;int&quot;)
    for s in range(nS):
        q=np.zeros(nA)
        for a in range(nA):
            sum=0
            for pssa, next_s, r, _ in P[s][a]:
                rsa=r
                sum+=pssa*value_from_policy[next_s]
            q[a]=rsa+gamma*sum
            
        new_policy[s]=np.argmax(q)
    return new_policy


def policy_iteration(
    P: PType, 
    nS: int, 
    nA: int, 
    gamma: float = 0.9, 
    tol: float = 1e-3
) -&gt; Tuple[np.ndarray, np.ndarray]:

    value_function = np.zeros(nS)
    policy = np.zeros(nS, dtype=int)

    while True:
        value_function=policy_evaluation(P, nS, nA, policy, gamma, tol)
        new_policy=policy_improvement(P, nS, nA, value_function, policy, gamma)

        if np.array_equal(new_policy, policy):
            break
        
        policy=new_policy
        
    return value_function, policy


&quot;&quot;&quot;Q-Learning&quot;&quot;&quot;

import gymnasium
from tqdm import tqdm

def QLearning(
    env:gymnasium.Env, 
    num_episodes=2000, 
    gamma=0.9, 
    lr=0.1, 
    epsilon=0.8, 
    epsilon_decay=0.99
) -&gt; np.ndarray:

    nS:int = env.observation_space.n
    nA:int = env.action_space.n

    Q = np.zeros((nS, nA))

    for _ in tqdm(range(num_episodes)):
        state, _ = env.reset()
        stop=False

        while not stop:
            if np.random.rand()&amp;#x3C;epsilon:
                # action=env.action_space.sample()
                action=np.random.randint(nA)
            else:
                action=np.argmax(Q[state])

            next_state, r, terminated, truncated, _=env.step(action)
            
            stop=terminated or truncated

            best_action=np.argmax(Q[next_state])
            Q[state][action] += lr * (r + gamma*Q[next_state][best_action] - Q[state][action])
            state=next_state

        epsilon*=epsilon_decay

    return Q
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;env:
  map_size: 8
  frozen_prob: 0.7
  seed: 114514
  is_slippery: False
  render_mode: human
policy_iteration:
  gamma: 0.9
  tol: 1e-3
qlearning:
  num_episodes: 10000
  gamma: 0.95
  learning_rate: 0.1
  epsilon: 1
  epsilon_decay: 0.999
render:
  max_steps: 1000
algorithm: policy_iteration
&lt;/code&gt;&lt;/pre&gt;</content:encoded><h:img src="/_astro/hw2-frozenlake.6wCnORlc.png"/><enclosure url="/_astro/hw2-frozenlake.6wCnORlc.png"/></item><item><title>强化学习 - Markov 决策过程</title><link>https://chinosan.com/blog/ai/rl-hw1</link><guid isPermaLink="true">https://chinosan.com/blog/ai/rl-hw1</guid><description>习题作业</description><pubDate>Sat, 11 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;h2&gt;1 马尔可夫决策过程&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;老虎机 A&lt;/strong&gt;: 每次下注 10 元，有 0.05 的概率获得 20 元（即净赚 10 元），否则获得 0 元（即输掉 10 元）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;老虎机 B&lt;/strong&gt;: 每次下注 20 元，有 0.01 的概率获得 30 元（即净赚 10 元），否则获得 0 元（即输掉 20 元）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在结束之前，你每轮都要选择玩老虎机 A 还是老虎机 B。请在下方给出一个能够刻画上述情景的 MDP，描述其状态空间、动作空间、奖励函数与转移概率。假设折扣因子 $\gamma = 1$。你可以用方程、表格或图示来表达解答。&lt;/p&gt;
&lt;p&gt;(1) 状态空间即手中金钱数量 $S = {0,,10,,20,,30,,40}$；&lt;/p&gt;
&lt;p&gt;(2) 动作空间 $A=\left{停止,,玩A,,玩B\right}$；&lt;/p&gt;
&lt;p&gt;(3) 转移概率 $P$：如下表所示。其中 $S=0$、$S=40$ 是终止状态，当且仅当进入终止状态时停止游玩；$S=20$ 是初始状态；$S=10$ 时，由于玩 B 需要本金 20 元，因此该状态只能选择玩 A。&lt;/p&gt;
&lt;p&gt;| 当前状态 $s$ | 动作 $a$ | 可能的结果 | 下一状态 $s&apos;$ | 转移概率 $P^a_{ss&apos;}$ |
| :------- | :----- | :---- | :-------- | :--------------- |
| 0        | 停止     | /     | /         | 1.00             |
| 10       | 玩 A    | 赢10元  | 20        | 0.05             |
|          |        | 输10元  | 0         | 0.95             |
| 20       | 玩 A    | 赢10元  | 30        | 0.05             |
|          |        | 输10元  | 10        | 0.95             |
|          | 玩 B    | 赢10元  | 30        | 0.01             |
|          |        | 输20元  | 0         | 0.99             |
| 30       | 玩 A    | 赢10元  | 40        | 0.05             |
|          |        | 输10元  | 20        | 0.95             |
|          | 玩 B    | 赢10元  | 40        | 0.01             |
|          |        | 输20元  | 10        | 0.99             |
| 40       | 停止     | /     | /         | 1.00             |&lt;/p&gt;
&lt;p&gt;(4) 奖励函数：定义 0 状态的奖励为 $0$，40 状态的奖励为 $40$，其他状态的奖励为该次游玩后手中金钱的变化量。这导致模型会以尽可能少输钱的方式达到 $40$ 元&lt;/p&gt;
&lt;h2&gt;2 Gridworld 小游戏&lt;/h2&gt;
&lt;p&gt;考虑如下的网格环境:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;从任意非阴影的格子出发，你可以向上、向下、向左或向右移动。动作是是确定性的，意味着动作执行后一定会从一个状态到达另一个状态（例如从状态 13 向上走，可以连接到状态 9）。&lt;/li&gt;
&lt;li&gt;较粗的边表示墙壁，尝试向墙壁方向移动将会导致智能体原地不动（例如从状态 13 向右走，无法到达状态 14，仍会停留在原状态 13）。&lt;/li&gt;
&lt;li&gt;在绿色目标格子（编号 3）采取任何动作将获得奖励 $r_g$（因此 $r(3, a) = r_g$ 对所有动作 $a$ 成立），并结束回合。在红色死亡格（编号 14）采取任何动作将获得奖励 $r_r$ （因此 $r(14, a) = r_r$ 对所有动作 $a$ 成立），并结束回合。&lt;/li&gt;
&lt;li&gt;在其他所有格子中，采取任何动作都与奖励 $r_s \in {-1, 0, +1}$ 相关（即使该动作导致智能体保持在原地）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;除了特殊规定外，以下假设折扣因子 $\gamma = 1$，$r_g = +3$，且 $r_r = -3$。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/RL/hw1-gridworld-game.png&quot; alt=&quot;地图|300&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2(a) 最短路径策略&lt;/h3&gt;
&lt;p&gt;定义 $r_s=-1$，即每走一格都给出一个负奖励，即对于最终奖励，将要扣除路程的长度。这样到达绿色目标的路径越短，路程上的损失越少，因此在最大化过程中，最优策略将会返回最短路径。&lt;/p&gt;
&lt;p&gt;根据最短路观察，可定义策略 $\pi$：除了绿色和红色，在满足“使得到绿色目标格子距离减少”的所有允许动作中均匀随机选择；绿色和红色状态在所有允许动作中随机均匀选择。也即，记向上、下、左、右动作为 $\mathrm{u}$、$\mathrm{d}$、$\mathrm{l}$、$\mathrm{r}$，那么&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
\pi(\mathrm{u}|s)&amp;#x26;=
\begin{cases}
1&amp;#x26;\mathrm{for}\ s=5,,7,,9,,11,,13,,15\
0.5&amp;#x26;\mathrm{for}\ s=6,,10,,14\
0&amp;#x26;\mathrm{for}\ s=1,,2,,3,,4,,8,,12,,16
\end{cases}
\\
\pi(\mathrm{d}|s)&amp;#x26;=
\begin{cases}
1&amp;#x26;\mathrm{for}\ s=4,,8,,12\
0.5&amp;#x26;\mathrm{for}\ s=3\
0&amp;#x26;\mathrm{for}\ s=1,,2,,5,,6,,7,,9,,10,,11,,13,,14,,15,,16
\end{cases}
\\
\pi(\mathrm{l}|s)&amp;#x26;=
\begin{cases}
1&amp;#x26;\mathrm{for}\ s=16\
0.5&amp;#x26;\mathrm{for}\ s=3\
0&amp;#x26;\mathrm{for}\ s=1,,2,,4,,5,,6,,7,,8,,9,,10,,11,,12,,13,,14,,15
\end{cases}
\\
\pi(\mathrm{r}|s)&amp;#x26;=
\begin{cases}
1&amp;#x26;\mathrm{for}\ s=1,,2\
0.5&amp;#x26;\mathrm{for}\ s=6,,10,,14\
0&amp;#x26;\mathrm{for}\ s=3,,4,,5,,6,,7,,8,,9,,11,,12,,13,,15,,16
\end{cases}
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;由状态价值函数的 Bellman equation，代入 $r_s=-1$、$\gamma=1$ 得，对一切 $s\ne 3 \mathrm{\ and\ }14$
$$
\begin{aligned}
V^\pi(s)&amp;#x26;=\mathbb{E}[R_{t+1}+\gamma V^\pi(S_{t+1})\mid S_t=s]\
&amp;#x26;=-1+\mathbb{E}[V^\pi(S_{t+1})\mid S_t=s]\
&amp;#x26;=-1+\sum\limits_a \pi(a|s)V^\pi(s&apos;)
\end{aligned}
$$
注意到，对任意非红色格子，按照该策略进行一步移动，均导致离绿色目标格子的距离减小一格，因此对于 $\pi=0.5$ 的情形，两个概率将合并；又进入绿色状态时 $V^\pi(3)=r_g=+3$，到达绿色状态的路径上每走一格奖励减 1，故记路程最短长度为 $d(s)$，递推可得
$$
V^\pi(s)=3-d(s),\quad \forall,s\ne 3 \mathrm{\ and\ }14
$$&lt;/p&gt;
&lt;p&gt;因此每个格子的最优价值，如图所示（左上角蓝色数字为最优价值）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/RL/hw1-gridworld-t1.png&quot; alt=&quot;每个格子的最优价值|300&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2(b) 奖励变化的影响&lt;/h3&gt;
&lt;p&gt;由题意，$r_s=1$，递推后的状态价值函数为
$$
V^{\pi_g}_\mathrm{new}(s)=6+d(s),\quad \forall,s\ne 3 \mathrm{\ and\ }14
$$
因此该网格世界中，每个格子的最优价值如图所示&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illustrations/RL/hw1-gridworld-t2.png&quot; alt=&quot;奖励变化后的最优价值|300&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;2(c) 奖励变化的一般表达式&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;给出一个表达式，用于表示策略 $\pi$ 在这个第二个 MDP 中引发的新价值函数 $V_\mathrm{new}^\pi$ 与 $V_\mathrm{old}^\pi$、$c$ 和 $\gamma$ 之间的关系&lt;/li&gt;
&lt;li&gt;是否存在特定的 $c$ 使得最优策略发生变化?如果存在，请给出 $c$ 使得策略变化的取值范围，并说明变化理由，反之则给出不存在的理由。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对任意状态 $s$：&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
V^{\pi}&lt;em&gt;\mathrm{new}(s)&amp;#x26;=\mathbb{E}&lt;/em&gt;\pi[R_{\mathrm{new},,t+1}+\gamma V^{\pi}&lt;em&gt;\mathrm{new}(S&lt;/em&gt;{t+1})\mid S_t=s]\
&amp;#x26;=c\cdot r_s+\gamma,\mathbb{E}&lt;em&gt;\pi[V^{\pi}&lt;/em&gt;\mathrm{new}(S_{t+1})\mid S_t=s]
\end{aligned}
$$
$$
\begin{aligned}
V^{\pi}&lt;em&gt;\mathrm{old}(s)&amp;#x26;=\mathbb{E}&lt;/em&gt;\pi[R_{\mathrm{old},,t+1}+\gamma V^{\pi}&lt;em&gt;\mathrm{old}(S&lt;/em&gt;{t+1})\mid S_t=s]\
&amp;#x26;=r_s+\gamma,\mathbb{E}&lt;em&gt;\pi[V^\pi&lt;/em&gt;\mathrm{old}(S_{t+1})\mid S_t=s]\
c\cdot V^{\pi}&lt;em&gt;\mathrm{old}(s)&amp;#x26;=c\cdot r_s+\gamma,\mathbb{E}&lt;/em&gt;\pi[c\cdot V^\pi_\mathrm{old}(S_{t+1})\mid S_t=s]\
\end{aligned}
$$
于是 $V^{\pi}&lt;em&gt;\mathrm{new}(s)=c\cdot V^{\pi}&lt;/em&gt;\mathrm{old}(s)$，由 Bellman equation 以及 2(a) 中关于概率合并的证明可得
$$
\begin{aligned}
Q_\pi(s,a)&amp;#x26;=R_s^a+\gamma\sum\limits_{s&apos;}P_{ss&apos;}^aV(s&apos;)\
&amp;#x26;=r_s+\gamma V(s&apos;)
\end{aligned}
$$
于是
$$
\begin{aligned}
Q^\pi_\mathrm{old}(s,a)&amp;#x26;=r_s+\gamma,V^\pi_\mathrm{old}(s&apos;)\
Q^\pi_\mathrm{new}(s,a)&amp;#x26;=c\cdot r_s+\gamma,cV^\pi_\mathrm{old}(s&apos;)\
&amp;#x26;=c\cdot Q^\pi_\mathrm{old}(s,a)
\end{aligned}
$$
对 $Q$ 做最大化以得到最优策略。因此：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;当 $c\geq0$ 时，最大化结果不变，策略不变&lt;/li&gt;
&lt;li&gt;当 $c&amp;#x3C;0$ 时，由于该网格世界不具有对称性，最优策略发生改变。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h3&gt;2(d) 正奖励的影响&lt;/h3&gt;
&lt;p&gt;$c=2-(-1)=3$，于是 $r_g=+6$，$r_r=0$，$\gamma=1$ 。这导致所有格子均有非负奖励，因此价值函数始终递增且发散到 $+\infty$ 。故最优策略即“在循环路径中无限运动”，只要不进入红绿两个终止态，奖励的累积将会趋于正无穷。&lt;/p&gt;
&lt;p&gt;此时非阴影格子的价值变为 $+\infty$&lt;/p&gt;</content:encoded><h:img src="/_astro/hw1-cover.9hVBZHpD.png"/><enclosure url="/_astro/hw1-cover.9hVBZHpD.png"/></item><item><title>数据结构与算法设计 - 搜索</title><link>https://chinosan.com/blog/data-structure/search</link><guid isPermaLink="true">https://chinosan.com/blog/data-structure/search</guid><description>《数据结构与算法设计》期末速通笔记。</description><pubDate>Sat, 04 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;*Cover image generated by AI&lt;/p&gt;
&lt;p&gt;分类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;暴力搜索（真叫这个名，brute-force search）&lt;/li&gt;
&lt;li&gt;图遍历
&lt;ul&gt;
&lt;li&gt;广度优先搜索 BFS&lt;/li&gt;
&lt;li&gt;深度优先搜索 DFS&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;树遍历
&lt;ul&gt;
&lt;li&gt;回溯 (Back tracking)，即有剪枝的深搜&lt;/li&gt;
&lt;li&gt;分枝限界&lt;/li&gt;
&lt;li&gt;博弈树搜索&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;启发式搜索&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;1 小记（无关本篇文章）&lt;/h2&gt;
&lt;h3&gt;1.1 博弈树搜索&lt;/h3&gt;
&lt;p&gt;问题：7 根火柴，两个人轮流取火柴，要么取 1 根要么取 2 根，谁拿到最后一根火柴谁赢。&lt;/p&gt;
&lt;p&gt;用方框表示先手面对的情况（即剩下的火柴数），圆框表示后手面对的情况，可以画出一棵树；当面对的情况是 1 或 2 时则胜利。下面是一部分图。可以看出，它是一个按层交替进行的树，一层是先手一层是后手。因此博弈树搜索也叫 α-β 搜索
&lt;img src=&quot;./illus/search/1.png&quot; alt=&quot;博弈树搜索|300&quot;&gt;&lt;/p&gt;
&lt;p&gt;我们给每个结点都打一个标记，1 则是先手胜利，0 则是后手胜利。那么可以直接把叶子结点的标记写出来。对于分支结点，如果是先手结点，我一定希望选择走 1 的方向，如果是后手结点，我一定希望选择走 0 的方向，这就是剪枝。在实际问题中，定义先手胜利为大、后手胜利为小，那么填分支结点过程就是先手取大值、后手取小值。这样就可以把整棵树所有结点的标记全部得出来。（下面图只是一部分，树太大了画不下）
&lt;img src=&quot;./illus/search/2.png&quot; alt=&quot;博弈树搜索|300&quot;&gt;&lt;/p&gt;
&lt;p&gt;在博弈中，对手是不能配合你的。所以作为先手应该尽可能走全 1 的路线，作为后手应该尽可能走全 0 的路线&lt;/p&gt;
&lt;p&gt;结论：对于这种 1 根 2 根的，只要维护一个事情：我的回合结束后，必然剩下 3 的倍数（$3=1+2$）。这样往后每一轮，如果对手取 1 根我就取 2 根。对手取 2 根我就取 1 根，这样最后剩 3 根火柴到对手面前，我必胜。&lt;/p&gt;
&lt;p&gt;反过来，如果取到最后一根火柴的人输，则需要维护我的回合结束后，必然剩下 $3k-1$，然后还是他一根我两根，他两根我一根。&lt;/p&gt;
&lt;h3&gt;1.2 灌水问题&lt;/h3&gt;
&lt;p&gt;灌水问题：一个 7 升的桶和一个 3 升的桶，量出 5 升水。直接暴搜，一个结点两个量，表示两个桶的水量。每一个结点都可以伸出来好多情况，要么装满，要么倒空，要么一个往另一个倒，只要最后整出来两个数中有一个是 5 就齐活。&lt;/p&gt;
&lt;p&gt;实际上这是一个数学问题。数学上可以证明，如果两个桶容量的最大公约数可以整除目标数（即&lt;code&gt;5 % gcd(7,3) == 0&lt;/code&gt;），那么就一定存在解。只需要求 $7x+3y=5$ 的整数解即可。例如其中一组解 $x=-1,\ y=4$，代表 7 升的桶要清空一次，3 升的桶要装满 4 次。所以过程就是：&lt;strong&gt;3 升桶灌满&lt;/strong&gt;，往 7 升桶倒；&lt;strong&gt;3 升桶灌满&lt;/strong&gt;，往 7 升桶倒；&lt;strong&gt;3 升桶灌满&lt;/strong&gt;，往 7 升桶倒，这时候只能倒 1 升，7 升桶满了，3 升桶剩 2 升；把 &lt;strong&gt;7 升桶清空&lt;/strong&gt;，3 升桶剩下的 2 升往 7 升桶倒（&lt;em&gt;只有装满的桶才能清空，然后把灌水的桶中剩下来的水倒到清空的桶中&lt;/em&gt;）；&lt;strong&gt;3 升桶灌满&lt;/strong&gt;，往 7 升桶倒，这时候 7 升桶里面就是 5 升水。再例如还有一组解 $x=2,\ y=-3$，代表 7 升桶要装满 2 次，3 升桶要清空 3 次。&lt;/p&gt;
&lt;h2&gt;2 分枝限界&lt;/h2&gt;
&lt;p&gt;例：有 ABCD 四个人，1234 四个任务，要求每人选一个任务做，一个任务只能一个人做。已知不同人完成不同任务所需时间的表格，找出一个总时间最少的分配方案。&lt;/p&gt;
&lt;p&gt;| 人员  | 任务1 | 任务2 | 任务3 | 任务4 |
| :-: | :-: | :-: | :-: | :-: |
|  A  |  2  | 10  |  9  |  7  |
|  B  | 15  |  4  | 14  |  8  |
|  C  | 13  | 14  | 16  | 11  |
|  D  |  4  | 15  | 13  |  9  |&lt;/p&gt;
&lt;p&gt;朴素（暴力）地来看，直接枚举 $A_4^4$ 一定可以找到最优解。这样相当于构造一棵树，根结点出来 $n$ 条边连到第一层，第一层每个结点出来 $n-1$ 条边连到第二层，以此类推。这玩意会变得相当大，接近 $n^n$ 级别增长的。&lt;/p&gt;
&lt;p&gt;优化：在搜之前，先做一个预判。忽略掉“每人选一个任务做，一个任务只能一个人做”这一限制条件，对这个点做一个&lt;strong&gt;美好的估计&lt;/strong&gt;，求一下在目前已经选好人选的条件下，未来总用时的理论最小值。&lt;/p&gt;
&lt;h3&gt;2.1 美好的估计&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;一开始还没安排，那么已经确认的时间是 0。我们做一次美好估计，让 A 做任务 1，B 做任务 2，A 做任务 3，A 做任务 4，总时间就是 $2+4+9+7=22$。这是总用时的理论最小值，最后的实际用时一定大于等于 22。&lt;/li&gt;
&lt;li&gt;现在决定一下到底谁做任务 1。
&lt;ul&gt;
&lt;li&gt;假设 A 做任务 1，那么 A 那一行和任务 1 那一列就被占掉了，那么已经定下来的时间就是 2，剩下 BCD 做任务 234，我们还是让最快的人做，即让 B 做任务 2、D 做任务 3、B 做任务 4，这样美好的估计就是 $2+4+13+8=27$&lt;/li&gt;
&lt;li&gt;假设 B 做任务 1，那么 B 那一行和任务 1 那一列就被占掉了，那么已经定下来的时间就是 15，剩下 ACD 做任务 234，美好估计为 $15+10+9+7=41$&lt;/li&gt;
&lt;li&gt;假设 C 做任务 1，美好估计为 $13+4+9+7=33$&lt;/li&gt;
&lt;li&gt;假设 D 做任务 1，美好估计为 $4+4+9+7=24$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;这么来看，如果 D 做任务 1，美好估计的值最小。我们说真实情况一定比美好估计要大于等于，也就是“D 做任务 1”有更大概率可以通向那个解。我们就从 D 开始往下搜，决定谁做任务 2
&lt;ul&gt;
&lt;li&gt;假设 A 做任务 2，美好估计为 $4+10+14+8=36$&lt;/li&gt;
&lt;li&gt;假设 B 做任务 2，美好估计为 $4+4+9+7=24$&lt;/li&gt;
&lt;li&gt;假设 C 做任务 2，美好估计为 $4+14+9+7=34$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;于是任务 2 我们就让 B 来做。用同样的方法安排任务 3
&lt;ul&gt;
&lt;li&gt;假设 A 做任务 3，美好估计为 $4+4+9+11=28$&lt;/li&gt;
&lt;li&gt;假设 C 做任务 3，美好估计为 $4+4+16+7=31$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;所以 A 做任务 3，C 只能选剩下的任务 4，总时间的美好估计为 28&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;2.2 检验最优解&lt;/h3&gt;
&lt;p&gt;我们刚才的过程实际上给出了一个树
&lt;img src=&quot;./illus/search/9.png&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;现在有 27、41、33、36、34 这些点还没安排完。对于后面四个，已经可以不用看了，因为它们几个再安排下去只能比 41、33、36、34 要大，不可能比 28 还小。但是这些没安排完的结点里面有一个 27 是比 28 小的，也就是说这个结点下面可能会有比 28 要小的解。&lt;/p&gt;
&lt;p&gt;所以 27 这个结点要继续做安排。往下安排任务 2，得到美好估计为 28、37、39，都不比 28 小，说明 28 确实是最优解了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意区分&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;分枝限界中每个点只有一次机会，而回溯中每个点有多次机会&lt;/li&gt;
&lt;li&gt;回溯建立在深搜，分枝限界参考广搜但不是广搜，是优先队列&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;3 装载问题&lt;/h2&gt;
&lt;p&gt;例：给定 n 件货物及他们的重量 $w_i$，来了一艘容量 c 的船，给出最优装载方案。&lt;/p&gt;
&lt;p&gt;没有任何剪枝纯暴力算法，直接搜&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;//暴搜
//全局：curw为当前重量，bestw为最优重量，n为货物总数，c为船的载重量
void backtrack(int t)//t是子集树的层号（即目前正在装载第几件货物）
{
	if(t&gt;n)//触底了
	{
		if(curw&amp;#x3C;=c &amp;#x26;&amp;#x26; curw&gt;bestw)
			bestw=curw;//如果这个子集合理且更优则更新
		return;
	}
	curw+=w[t];
	backtrack(t+1);//如果放当前货物，往下尝试
	curw-=w[t];//还原，回到进入结点时的状态
	backtrack(t+1);//如果不放当前货物，往下尝试
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;暴搜的代码没有任何数据结构，但是它跑起来的时候隐含了一棵树，称为子集树（例如有三个元素，我们考虑他的所有子集，每一位代表一个元素，用 0 代表不取、1 代表取。例如 110 就是取第一个和第二个不取第三个。000、001、010、011、100、101、110、111，我称之为子集序列）。下图左边就是子集树，右边是代入具体例子得到的树。
&lt;img src=&quot;./illus/search/3.png&quot; alt=&quot;子集树&quot;&gt;&lt;/p&gt;
&lt;h3&gt;3.1 约束条件&lt;/h3&gt;
&lt;p&gt;刚才那张图上，红色部分是超过总容量的。而重量大于零，一旦超过总容量，它往后的所有点一定都是不符合条件的。这时候就可以引入&lt;strong&gt;剪枝条件&lt;/strong&gt;，当&lt;code&gt;curw+w[t]&gt;c&lt;/code&gt;的时候就不用往左分支再尝试了，即把左分支剪掉。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;//优化：约束条件
void backtrack(int t)
{
	if(t&gt;n)
	{
		if(curw&amp;#x3C;=c &amp;#x26;&amp;#x26; curw&gt;bestw)
			bestw=curw;
		return;
	}
	if(curw+w[t]&amp;#x3C;=c)//只有符合条件的才能往下尝试
	{	
		curw+=w[t];
		backtrack(t+1);
		curw-=w[t];//如果成功往下尝试了记得要还原
	}
	backtrack(t+1);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;3.2 限界条件&lt;/h3&gt;
&lt;p&gt;约束条件是题目内在的需求，而限界条件则是剪掉不可能得到最优解的子树，这个条件是要自己设计的。不过一般都是一个下界或者一个上界。&lt;/p&gt;
&lt;p&gt;在本题中，我们定义一个数&lt;code&gt;r&lt;/code&gt;表示剩余物品的总重量。如果&lt;code&gt;r&lt;/code&gt;和当前物品重量&lt;code&gt;curw&lt;/code&gt;加起来还到不了&lt;code&gt;bestw&lt;/code&gt;，那这一路往下都不可能比 &lt;code&gt;bestw&lt;/code&gt;大，可以直接剪掉。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;//优化：约束条件+限界条件
//全局：r为剩余重量，x[i]是当前子集序列（给出最优解用的），bestx[i]是最优解的子集序列
void backtrack(int t)
{
	if(t&gt;n)
	{	
		if(curw&gt;bestw)
			bestw=curw;
			bestx=x;
		return;
	}
	r-=w[t];//考虑当前物品，不管放不放入，剩余重量都要减小
	if(curw+w[t]&amp;#x3C;=c)//约束条件，判断去不去左子树
	{	
		curw+=w[t];
		x[t]=1;
		backtrack(t+1);
		curw-=w[t];
	}
	if(curw+r &gt; bestw)//限界条件，判断去不去右子树
	{	
		x[t]=0;
		backtrack(t+1);//如果不放当前货物，往下尝试
	}
	r+=w[t];//还原，表示两个子树都不去，这个情况往下不考虑了
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;本题中只有左分支有约束条件，只有右分支有限界条件。&lt;/p&gt;
&lt;h3&gt;3.3 提前更新最优解&lt;/h3&gt;
&lt;p&gt;（没听懂）&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;//优化：约束条件+限界条件+提前更新
backtrack(t)
{
	if(t&gt;n)
		if(curw&gt;bestw)
			bestw=curw;
			bestx=x;
		return;
	r-=w[t];
	int tmp=curw+w[t];
	if(tmp&amp;#x3C;=c)
		if(tmp&gt;bestw) bestw=tmp;//提前把最优解变得更优
		curw+=w[t];
		x[t]=1;
		backtrack(t+1);
		curw-=w[t];
	if(curw+r &gt; bestw)
		x[t]=0;
		backtrack(t+1);
	r+=w[t];
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;只有部分题目可以做提前更新。符号三角形问题不能做提前更新&lt;/p&gt;
&lt;h2&gt;4 回溯模型&lt;/h2&gt;
&lt;p&gt;刚才讨论的就是回溯。把回溯理解成有剪枝的深搜。回溯函数中包含的内容和深搜是一样的，即&lt;strong&gt;返回条件、设置左分支+进入左分支+还原、设置右分支+进入右分支+还原&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;4.1 子集树回溯模型&lt;/h3&gt;
&lt;p&gt;类似装载问题这种，在给定约束条件内、选择集合内某些物品使得某个量最优的问题，都可以用&lt;strong&gt;子集树回溯&lt;/strong&gt;来解。&lt;/p&gt;
&lt;p&gt;把上面的代码抽象成流程思路&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;backtrack(t)
{
	if(t&gt;n)//触底
		判断是否比当前最优解更优，更优则更新最优解
		return;
	if(满足约束条件 &amp;#x26;&amp;#x26; 满足限界条件)
		设置左分支条件;
		backtrack(t+1);
		还原左分支条件;
	if(满足约束条件 &amp;#x26;&amp;#x26; 满足限界条件)
		设置左分支条件;
		backtrack(t+1);
		还原左分支条件;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;01 背包问题&lt;/h4&gt;
&lt;p&gt;装载问题实际上就是“价值=重量”条件下的 01 背包。类比刚才的思路，可以写出 01 背包的回溯解法，只需要多一个价值数组&lt;code&gt;v[i]&lt;/code&gt;，定义&lt;code&gt;r&lt;/code&gt;为剩余物品的价值和即可&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;void backtrack(int t)
{
	if(t&gt;n)
	{
		if(curw&amp;#x3C;=c &amp;#x26;&amp;#x26; curv&gt;bestv) {bestv=curv;bestx=x;}
		return;
	}
	r-=v[t];//考虑当前物品，不管放不放入，剩余价值都要减小
	if(curw+w[t]&amp;#x3C;=c)//约束条件，判断去不去左子树
	{
		curw+=w[t];
		curv+=v[t];
		x[t]=1;
		backtrack(t+1);
		curv-=v[t];
		curw-=w[t];
	}
	if(curv+r &gt; bestv)//限界条件，判断去不去右子树
	{	
		x[t]=0;
		backtrack(t+1);//如果不放当前货物，往下尝试
	}
	r+=v[t];//还原，表示两个子树都不去，这个情况往下不考虑了
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;附：01背包问题中对限界条件的进一步优化&lt;/strong&gt;
计算一个更紧的理论界，筛掉更多不可能得到解的分支。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;计算出单价（价值除以重量）&lt;/li&gt;
&lt;li&gt;当前结点往下总价值的理论上界有三个部分：
&lt;ul&gt;
&lt;li&gt;第一部分：已经装进去的价值，这个数是根据当前结点的子集序列算出来的&lt;/li&gt;
&lt;li&gt;第二部分：还能装进去的价值。优先装剩余物品中单价高的，装完如果还能装下单价次高的就装，以此类推直到装不下&lt;/li&gt;
&lt;li&gt;第三部分：忽略“整数物品”的条件，把刚才那个刚好装不下的物品拆成小数个物品强行把背包填满&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;例如：
背包容量：50
单价：05、15、25、27、30&lt;br&gt;
价值：12、30、44、46、50&lt;br&gt;
单价排名：12435&lt;/p&gt;
&lt;p&gt;现在计算子集树中 110 结点的总价值理论上界：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一部分：已经装进去的：第一件、第二件，价值 $12+30=42$，背包剩余容量 $50-5-15=30$&lt;/li&gt;
&lt;li&gt;第二部分：还能往里装的。前三件是已经定好装不装的，现在考虑第四件第五件物品，优先从单价最高的第四件物品考虑，发现可以装下，总价值 $42+46=88$ 背包剩余容量 $30-27=3$。考虑单价次高的第五件物品，装不下了。&lt;/li&gt;
&lt;li&gt;第三部分：强行填满背包。用刚才装不下的第五件物品，填满背包剩余的 $3$，这部分价值即单价乘以重量即 $\dfrac{50}{30}\times3=5$。总价值 $88+5=93$。这个 93 就是总价值上界&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;最大团问题&lt;/h4&gt;
&lt;p&gt;对于一个无向图，选出几个点。如果这些点两两都有边直接相连，则称这些点和这些边构成一个完全子图，又称为团。几个点构成的团就叫几团。现在求任意一个无向图中最大的团是多少。&lt;/p&gt;
&lt;p&gt;还是子集树问题，就是当前点取不取的问题。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;//全局：curn当前团大小，bestn最大团大小，x当前子集序列，bestx最优子集序列
void backtrack(int t)//考虑第t个点
{
	if(t&gt;n)//触底，判断，更新，返回
	{
		if(curn&gt;bestn) bestn=curn,bestx=x;
		return;
	}
	if(/*t号点与已有的那些点都相连*/)//约束条件
	{
		x[t]=1;curn++;//设置左分支
		backtrack(t+1);
		curn--;x[t]=0;//还原
	}
	if(curn+n-t&gt;bestn)//如果加上剩余的能够超过最优解则尝试，否则剪枝
	{
		x[t]=0;
		backtrack(t+1);
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个算法是 $O(n2^n)$ 的。&lt;/p&gt;
&lt;h3&gt;4.2 排列树回溯模型&lt;/h3&gt;
&lt;p&gt;思路：对于一个序列，选一个数放到最前面，剩下的全排列。这个程序生出来的树称为排列树，最后的解即为全排列。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;//全局：x为解，n为位数
void backtrack(int t)
{
	if(t&gt;n) {print(x); return;}
	for(int i=t;i&amp;#x3C;=n;i++)//对于序列内的每一个数，这里相当于以前的几个分支
	{
		swap(x[t],x[i]);//把这个数扔到序列开头
		backtrack(t+1);
		swap(x[t],x[i]);//还原
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;游商问题&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;游商问题&lt;/strong&gt;（Traveling Salesman Problem, TSP，aka 旅行售货员问题/货郎担问题）描述如下：某游商要到若干城市推销商品，已知各个城市之间的旅费，求一条从驻地出发、经过每个城市再回到驻地的路线，使得总旅费最小。&lt;/p&gt;
&lt;p&gt;累了 先贴一下ppt
&lt;img src=&quot;./illus/search/4.png&quot; alt=&quot;TSP|500&quot;&gt;&lt;/p&gt;
&lt;h4&gt;n 皇后问题&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;n 皇后问题&lt;/strong&gt;描述如下：在一个 $n\times n$ 的棋盘上摆 $n$ 个皇后，使得他们不能互相攻击。（皇后的攻击范围：自己所在行、列、斜线）&lt;/p&gt;
&lt;p&gt;累了，先贴ppt。两种做法&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一种：重新写限界条件和约束条件
&lt;img src=&quot;./illus/search/6.png&quot; alt=&quot;n皇后分枝限界解法|500&quot;&gt;&lt;/li&gt;
&lt;li&gt;第二种：用排列树，扣除斜线重叠的部分
&lt;img src=&quot;./illus/search/5.png&quot; alt=&quot;n皇后排列解法|500&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;4.3 符号三角形&lt;/h3&gt;
&lt;p&gt;无法提前更新最优解，因为必须全部做完才出结果
&lt;img src=&quot;./illus/search/7.png&quot; alt=&quot;符号三角形|500&quot;&gt;
&lt;img src=&quot;./illus/search/8.png&quot; alt=&quot;符号三角形|500&quot;&gt;&lt;/p&gt;</content:encoded><h:img src="/_astro/nqueen.DoICsK95.jpg"/><enclosure url="/_astro/nqueen.DoICsK95.jpg"/></item><item><title>数据结构与算法设计 - 图</title><link>https://chinosan.com/blog/data-structure/graph</link><guid isPermaLink="true">https://chinosan.com/blog/data-structure/graph</guid><description>《数据结构与算法设计》期末速通笔记。</description><pubDate>Sun, 05 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;封面图源 https://www.eet-china.com/mp/a363612.html&lt;/p&gt;
&lt;h2&gt;图的定义&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;有向图：点和弧。弧：尖括号+两个点&lt;/li&gt;
&lt;li&gt;无向图：点和边。边：圆括号+两个点，相当于两个方向的弧重在一起&lt;/li&gt;
&lt;li&gt;点和顶点是一个东西&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;图的基本假设：不考虑自环、不考虑平行边（即完全一致的两条线。注意对于有向图，一个 a 到 b 一个 b 到 a，这不叫平行边，因为这是两条不同的线。如果是无向图则是平行边）&lt;/p&gt;
&lt;p&gt;弧或边带权的图称为网，有向网或无向网&lt;/p&gt;
&lt;p&gt;若两个点之间有一条边或弧，则称这两个点为邻接点，并称这条边与这两个顶点相关联。与某个点相关联的边的数目称为顶点的度。在有向图中，根据边是 to 这个点还是 from 这个点，进一步细分为入度和出度。&lt;/p&gt;
&lt;p&gt;曰（握手原理）：对于无向图，所有点的度数之和等于边数的二倍；对于有向图，出度之和等于入度之和&lt;/p&gt;
&lt;p&gt;子图：从图的边集和点集中抽一些构成的一个新图&lt;/p&gt;
&lt;p&gt;对于一个有 $n$ 顶点的图&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;含有 $C_n^2=\dfrac{n(n-1)}{2}$ 条边的无向图称为完全图，即任意两个点之间都有边&lt;/li&gt;
&lt;li&gt;含有 $A_n^2=n(n-1)$ 条弧的有向图称为完全图，即任意两个点之间都有双向边&lt;/li&gt;
&lt;li&gt;若边数 $e&amp;#x3C;n\log n$ 则称为稀疏图，否则称为稠密图&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;路径。路径上边的数目称为路径长度。简单路径：顶点不重复。简单回路：第一个顶点和最后一个顶点相同的简单路径&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;连通图：任意两个点之间存在路径相同&lt;/li&gt;
&lt;li&gt;对于非连通图，各个极大连通子图称为这个图的连通分量&lt;/li&gt;
&lt;li&gt;对于有向图，若任意两个顶点之间存在一条有向路径，则成为强连通图&lt;/li&gt;
&lt;li&gt;非强连通图也有各个极大强连通子图，称为强连通分量&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;图的存储&lt;/h2&gt;
&lt;h3&gt;邻接矩阵&lt;/h3&gt;
&lt;p&gt;无向图的邻接矩阵是对称阵，有边就是 1，没边就是 0（没有自环，所以自己和自己之间是 0）。求顶点的度，就是求对应行的和。打印图的时间复杂度 $O(n^2)$。firstneighbor 就是从左往右扫第一个非零的，$O(n)$&lt;/p&gt;
&lt;p&gt;有向图的邻接矩阵非对称，左边竖着排的 to 上面横着排的，能到就是 1，不能到就是 0。求顶点的出度，即求横行和；求顶点的出度，即求纵列和&lt;/p&gt;
&lt;h3&gt;邻接表&lt;/h3&gt;
&lt;p&gt;把邻接点串在一起放在数组里。适合稀疏图。&lt;/p&gt;
&lt;p&gt;无向图。求 firstneighbor $O(1)$，nextneighbor $O(e)$，打印图 $O(n+e)$
&lt;img src=&quot;./illus/graph/1.png&quot; alt=&quot;无向图的邻接表|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;有向图，分为出边表和入边表
&lt;img src=&quot;./illus/graph/2.png&quot; alt=&quot;有向图的出边表|500&quot;&gt;
&lt;img src=&quot;./illus/graph/3.png&quot; alt=&quot;有向图的入边表|500&quot;&gt;&lt;/p&gt;
&lt;h3&gt;邻接多重表&lt;/h3&gt;
&lt;p&gt;有向图的邻接多重表（十字链表），不仅有点结构（vbox，粉色）还有边结构（ebox，紫色）
&lt;img src=&quot;./illus/graph/4.png&quot; alt=&quot;十字链表|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;无向图的邻接多重表。path1 即与 vertex1 关联的下一条边，path2 即与 vertex2 关联的下一条边。顶点的度，就是沿着 path1 有多少个边结点。整个图一共 e 个边结点。
&lt;img src=&quot;./illus/graph/5.png&quot; alt=&quot;无向图邻接多重表|500&quot;&gt;&lt;/p&gt;
&lt;h2&gt;图的遍历&lt;/h2&gt;
&lt;h3&gt;深度优先搜索&lt;/h3&gt;
&lt;p&gt;深度优先搜索 (Depth First Search, DFS)：一直往下走，走不通回头，换条路再走，直到无路可走。&lt;/p&gt;
&lt;p&gt;选择一个起始点 u 作为当前结点，执行如下操作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;访问当前结点，并且标记该结点已被访问，然后跳转到第二步&lt;/li&gt;
&lt;li&gt;如果存在一个和当前结点相邻并且尚未被访问的结点 v，则将 v 设为当前结点，继续执行第一步&lt;/li&gt;
&lt;li&gt;如果不存在这样的 v，则进行回溯，回溯的过程就是回退当前结点&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这就是一个递归过程，生成了一棵树，称为深度优先生成树 (DFS Tree)&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;bool visited[MAXVNUM];
void DFS(Graph G,int v)//v是结点编号
{
	visit(v);//访问当前结点
	visited[v]=true;
	w=firstneighbor(G,v);
	while(w!=-1)
	{
		if(visited[w]==false) DFS(G,w);//没访问过就从这个邻接点开始DFS
		w=nextneighbor(G,v,w);
	}
}
void DFStraverse(Graph G)//入口
{
	for(int v=0;v&amp;#x3C;G.vnum;v++) visited[v]=false;//visited数组清空
	for(int v=0;v&amp;#x3C;G.vnum;v++) 
	{
		if(visited[v]==false)
			DFS(G,v);//没见过的点就做一遍DFS
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;广度优先搜索&lt;/h3&gt;
&lt;p&gt;广度优先搜索 (Breadth First Search, BFS)：每访问一个点，就把他所有没访问过的邻接点入队，然后当前点出队，访问队首。广搜得到的路径是不带边权的最短路。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;bool visited[MAXVNUM];
void BFS(Graph G,int v)
{
	queue&amp;#x3C;int&gt; q;
	visit(v);
	visited[v]=true;
	q.push(v);
	while(q.empty()==false)
	{
		u=q.front();
		q.pop();
		w=firstneighbor(G,u);
		while(w!=-1)
		{
			if(visited[w]==false)//如果没见过，那就见一下
			{
				visit(w);
				visited[w]=true;
				q.push(w);
			}
			w=nextneighbor(G,v,w);
		}
	}
}
void BFStraverse(Graph G)//入口
{
	for(int v=0;v&amp;#x3C;G.vnum;v++) visited[v]=false;//visited数组清空
	for(int v=0;v&amp;#x3C;G.vnum;v++) 
	{
		if(visited[v]==false)
			BFS(G,v);//没见过的点就做一遍BFS
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;深搜广搜的复杂度是一样的，因为相当于每一条边都要走一遍，和打印的时间复杂度是一样的&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用邻接矩阵存，$O(n^2)$&lt;/li&gt;
&lt;li&gt;用邻接表存，$O(n+e)$&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;最小生成树&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;称一张无向图是连通的，如果任意两个顶点之间存在通路。&lt;/li&gt;
&lt;li&gt;称一个没有回路的连通图为一棵树&lt;/li&gt;
&lt;li&gt;生成树是连通图的子图，它含有连通图中的全部 $n$ 个顶点，有且仅有足以构成一棵树的 $n-1$ 条边。因为既然要连通，那么每多一条边就意味着多一个点，如果存在环的话，多一条边并不会对连通起来的点数有贡献&lt;/li&gt;
&lt;li&gt;最小生成树 (Mini Span Tree)，即所有生成树中边权和最小的生成树。或者说，找到一个方案，用最小的花费连通所有点。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个典型的例子：$n$ 个城市之间要铺设光缆，使得任意两个城市之间都存在通信的链路。已知各个城市之间铺设光缆的费用，求使得总费用最低的铺设方案&lt;/p&gt;
&lt;p&gt;最小生成树有 Prim 算法和 Kruskal 算法。本质是贪心&lt;/p&gt;
&lt;h3&gt;Prim 算法（加点法）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;用一个集合存储访问过的点。选一个起始点，考虑它的所有邻边，选边权最小的邻边。将这个邻边连接的点加入集合。&lt;/li&gt;
&lt;li&gt;现在这个集合里有两个点，把这两个点的所有邻边都考虑进来，选边权最小的邻边。检查这个邻边连接的点，如果连接的点没见过，那么将这个点加入集合，并选取这条边；如果见过了，那就顺延下去选边权第二小的，类推。&lt;/li&gt;
&lt;li&gt;重复第二步直到所有顶点都加入集合。此时选择的邻边以及它们连通的顶点就构成了最小生成树&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;时间复杂度：$O(n^2)$，与边数无关，适用于稠密图&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;//采用邻接矩阵存图
int nearvex[MAXVNUM];//在最小生成树上、离i号点最近的那个点的编号
int lowcost[MAXVNUM];//i号点到刚才那个最近点的边权，-1表示已经在生成树中了
void prim(Graph G,int u)
{
	for(int j=0;j&amp;#x3C;G.vnum;j++)//初始化
	{
		lowcost[j]=G.edge[u][j];
		nearvex[j]=u;
	}
	lowcost[u]=-1;
	for(int i=0;i&amp;#x3C;G.vnum-1;i++)//依次向生成树上添加n-1个顶点（加上起点就是n个了）
	{
		v=min_index(lowcost);//在非-1的数当中找最小值，返回对应邻接点的编号
		lowcost[v]=-1;
		for(int j=0;j&amp;#x3C;G.vnum;j++)//修改其他顶点的最小边
		{
			if(lowcost[j]&gt;G.edge[u][j])
			{
				lowcost[j]=G.edge[v][j];
				nearvex[j]=v;
			}
		}
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Kruskal 算法（加边法）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;从整个连通图中最小的一条边开始做。不断往子图上加边，能用最小的边的就用，只要不成环就行。直到加了 n-1 条边，这棵树就出来了。合并操作、判断成环，用的是并查集。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;复杂度：选最小边用小根堆做，建堆 $O(e)$，筛选复杂度 $O(\log e)$，所以总的复杂度 $O(e+(e-1)\log e)=O(e\log e)$。&lt;/p&gt;
&lt;p&gt;两种都是贪心，但策略不同。Kruskal 从整个图的所有边进行贪心，所以适用于稀疏图。Prim 则无所谓。在贪心过程中，可能遇到存在两个最小边权的情况，这时候选哪个都可以，也就是说最小生成树不唯一。但是边权和一定是唯一的。&lt;/p&gt;
&lt;h2&gt;并查集&lt;/h2&gt;
&lt;p&gt;并查集是数据结构。其上有两个最基本的操作：并，即连接两个元素&lt;code&gt;void connect(a,b)&lt;/code&gt;；查，即判断两个元素之间是否存在通路&lt;code&gt;bool pd(a,b)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;我们只需要知道两个元素之间是否存在通路，不关心它们之间到底是怎么连在一起的。所以，使用传统的存图方式显然不合适（那种是 $O(n^2)$ 的）。我们换一种存储方式，&lt;strong&gt;只关心元素的集合方式&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一开始每一个元素都是一个独立的集合，一旦连接一个集合中的某个元素与另一个集合的某个元素之间，我就把这两个集合揉在一起，表示这两个孤岛被联络起来了。&lt;/li&gt;
&lt;li&gt;判断函数即判断两个元素是否属于同一个集合。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;现在问题转化为：如何记录元素的集合关系。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;尝试&lt;/em&gt;：使用一个一维数组来记录元素所属的集合。将元素进行编码，&lt;code&gt;id[i]&lt;/code&gt;即存储编码为 i 的节点所属集合的编号。这样判断是否属于一个集合，只需要判断它们的 id 是不是一样的。但是这也有问题，就是连接两个集合的时候，要对涉及连接的每一个元素的 id 都进行修改。这是一个 $O(n)$ 的操作，显然不合适。&lt;strong&gt;现在问题转化为：如何实现只改变一个值&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;尝试&lt;/em&gt;：我们不记录元素的所属的集合，&lt;strong&gt;而记录元素的父节点&lt;/strong&gt;。举个例子。对于下面这个集合组，我们可以写出 parent 数组：（-1 表示没跌）&lt;/p&gt;
&lt;p&gt;| parent | -1  |  0  |  1  | -1  |  0  |  3  | -1  |
| :----: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|  元素编码  |  0  |  1  |  2  |  3  |  4  |  5  |  6  |&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./illus/graph/bingchaji.png&quot; alt=&quot;bingchaji&quot;&gt;&lt;/p&gt;
&lt;p&gt;执行&lt;code&gt;connect(5,2)&lt;/code&gt;，相当于把 5 的根（3）和 2 的根（0）连起来。这样只需要把 3 的 parent 改成 0 就行了。但是这也有问题，这样的连接实际上是一个建树的过程。当这棵树高度很大的时候，爬树找根的过程很慢（考虑极端情况：单支树）。我们应当让生成的树的高度尽可能小。&lt;strong&gt;现在问题转化为：如何让生成的树不偏&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对于刚才这个例子，考虑：把 3 连到 0 上，最终的高度为 2；把 0 连到 3 上，最终高度为 3。可以看出，&lt;strong&gt;把小树连到大树上，可以使得最终的高度小一些&lt;/strong&gt;。至于如何量化一棵树的大小，可以使用树中元素数量，也可以用树的高度，两个都可以使得生成树尽可能平衡。&lt;/p&gt;
&lt;p&gt;因此对策就出来了：保留 parent 数组，只不过作出如下修改：原本我们用 -1 表示根节点，现在还用负数，但&lt;strong&gt;负越多代表树越大&lt;/strong&gt;。例如刚才的例子，如果用元素个数衡量树的大小，那么&lt;code&gt;parent[0]=-4&lt;/code&gt;、&lt;code&gt;parent[3]=-2&lt;/code&gt;，代表 0 这棵树大小为 4，3 这棵树大小为 2，因此把 3 连到 0 上。采用这种规则建树，最坏情况是 $O(\log n)$，够用了。&lt;/p&gt;
&lt;p&gt;还能凹。建立一个备忘录，在执行&lt;code&gt;pd&lt;/code&gt;函数遍历的过程中，直接把元素的父节点设到根上，这样路径上的每一个节点深度都是 1。这称为路径压缩(Path Compression)。这个算法可以把复杂度降低到几乎常数时间。&lt;/p&gt;
&lt;h2&gt;最短路&lt;/h2&gt;
&lt;h3&gt;Dijkstra&lt;/h3&gt;
&lt;p&gt;只能做非负边权（注意非负边权包括 0）。可以求单源点到任意点的最短路。本质是广搜+贪心。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dijkstra 是一个从起点开始按边数往外扩展最短路径的过程。设一个点列（有序），一开始里面什么都没有。设一个数组 dist，记录起始点到每一个点的最少花费。&lt;/li&gt;
&lt;li&gt;从起点开始，走一步，有的点能一步到达，有的点到不了。对于那些可以到达的点，dist 数组内则记录这一步的花费；对于那些到不了的点，花费记为无穷大。根据 dist 数组，选择花费最少的那个点加入点列。这就是到第一个点的最短路径&lt;/li&gt;
&lt;li&gt;现在这个点列里面新增了一个点，我们看看利用这个点能不能使得起点到其他点的距离更短，如果短则更新，如果比原来还长（或者到不了别的点、距离为无穷大）就别更新，保持原来的长度。这时候再根据 dist 数组，选择花费最少的那个点加入点列。这就是到第二个点的最短路径&lt;/li&gt;
&lt;li&gt;重复，得到第三个点的最短路径、第四个点……&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是 $O(n^2)$ 的。但是求任意两个点之间的话他做不了，当然你可以对每个点都做一次 Dijkstra，那样就是 $O(n^3)$，也好不到哪里去&lt;/p&gt;
&lt;p&gt;模板&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;void dijkstra(Graph &amp;#x26;G,int v,int dist[],int path[])//v起点
{
	int s[MAXVNUM];//最短路的顶点集（用子集序列表示）
	n=G.vnum;
	//初始化---------------------------------
	for(int i-0;i&amp;#x3C;n;i++)
	{
		dist[i]=G.edge[v][i];
		s[i]=0;
		if(dist[i]&amp;#x3C;INF) path[i]=v;
		else path[i]=-1;
	}
	path[v]=v;//将顶点v加入最短路路径
	s[v]=1;//顶点进入最短路顶点集
	dist[v]=0;//没有自环
	//--------------------------------------
	for(int i=0;i&amp;#x3C;n-1;i++)//求到其他点的最短路径
	{
		int u=min_index(dist);//找dist中最小值的编号
		s[u]=1;//把他加入最短路的顶点集
		for(int k=0;k&amp;#x3C;n;k++)
		{
			if(s[k]==0 &amp;#x26;&amp;#x26; dist[u]+G.edge[u][k]&amp;#x3C;dist[k])
			{//顶点没见过，并且比原来的记录小，可以更新
				dist[k]=dist[u]+G.edge[u][k];//执行更新
				path[k]=u;//记录最短路前驱
			}
		}
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Floyd&lt;/h3&gt;
&lt;p&gt;允许有负边权，不允许有负回路（否则路径可以在负回路中转圈，每转一圈花费都会变小）。可以得到任意两点之间的最短路。本质是动态规划。根据邻接矩阵，依次选择一个点作为中间点，看一下经过中间节点之后路径和会不会更小一些，如果小则更新最短路径。标路径的方法：都是记录这个点的前驱，生成路径的时候倒着回去找到起点即可&lt;/p&gt;
&lt;p&gt;下图是一个例子。其中&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$D$ 矩阵表示任意两点之间最短路径长度（左边纵列数字为起点，上方横排数字为终点）&lt;/li&gt;
&lt;li&gt;$P$ 矩阵表示“$D$ 对应的最短路径中，终点的前驱点”。-1 表示不存在前驱。例如 $P_0$ 的第二行第三列是 $0$，表示“从2到3的最短路径中，3的前驱是0”&lt;/li&gt;
&lt;li&gt;$D_{-1}$ 是起始状态&lt;/li&gt;
&lt;li&gt;$D_0$ 表示选取点 0 作为中间点后的最短路径长度矩阵，$D_1$ 表示选取点 1 作为中间点后的最短路径长度矩阵，依次类推。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;./illus/graph/6.jpg&quot; alt=&quot;Floyd图示|600&quot;&gt;&lt;/p&gt;
&lt;p&gt;最后得到 $D_3$ 和 $P_3$，已经蕴含了网络中任意两个节点最短路径的所有信息&lt;/p&gt;
&lt;p&gt;例如从 3 走到 0，根据 $D$ 矩阵，第 3 行第 0 列的值为 11，所以 3 到 0 的最短路径长度为 11。&lt;br&gt;
然后根据 $P$ 矩阵确定路径。3 到 0 的最短路径上（即 $P$ 矩阵的第三行），0 的前驱是 2，2 的前驱是 1，1 的前驱是 3（起点）。因此路径是 3 - 1 - 2 - 0。&lt;/p&gt;
&lt;p&gt;模板&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cpp&quot;&gt;void floyd(Graph G,int d[][MAXVNUM],int path[][MAXVNUM])
{//d[i][j]是顶点i到j之间的最短路径长度
	int n=G.vnum;
	for(int i=0;i&amp;#x3C;n;i++)//初始化
	{
		for(int j=0;j&amp;#x3C;n;j++)
		{
			d[i][j]=G.edge[i][j];//一开始直接复制邻接矩阵，就是图上的D_{-1}
			if(i==j) path[i][j]=-1;
			else if(d[i][j]&amp;#x3C;INF) path[i][j]=i;
			else path[i][j]=-1;
		}
	}
	for(int k=0;k&amp;#x3C;n;k++)//选取中间节点k
	{
		for(int i=0;i&amp;#x3C;n;i++)
		{
			for(int j=0;j&amp;#x3C;n;j++)
			{
				if(d[i][k]+d[k][j]&amp;#x3C;d[i][j])
				{
					d[i][j]=d[i][k]+d[k][j];
					path[i][j]=path[k][j];
				}
			}
		}
	}
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;它是 $O(n^3)$ 的&lt;/p&gt;
&lt;h3&gt;Bellman-Ford&lt;/h3&gt;
&lt;p&gt;允许有负边权，允许有负回路（算法能判断出存在负回路）。可以得到单源点到任意点的最短路。基本思路：一开始所有点的路径都是无穷大。对于一趟考察，按照某一个固定的顺序考察所有边，如果引入这条边能够使得路径变小，则引入这条边并更新路径最小值。总共做 $n-1$ 趟（因为 n 个点连通只需要 n-1 条边。当然如果中间某一趟下来一次都没有更新，就可以直接结束了），做完后得到的数组就是单源点最短路。标路径：也是记他的前驱&lt;/p&gt;
&lt;p&gt;判断负回路的方法：做完之后再做一趟考察，如果这一过程把某个数更新了，说明最短路径还能减，即存在负回路。&lt;/p&gt;
&lt;p&gt;它是 $O(ne)$ 的，但是边数一般会很大，是 $n^2$ 级别的。所以如果不是有负回路或者负边权，还是回到 Dijkstra 或者 Floyd。&lt;/p&gt;</content:encoded><h:img src="/_astro/graph.CYZ7_qKf.png"/><enclosure url="/_astro/graph.CYZ7_qKf.png"/></item><item><title>控制科学笔记 - 参数估计</title><link>https://chinosan.com/blog/control-science/parameter-estimation</link><guid isPermaLink="true">https://chinosan.com/blog/control-science/parameter-estimation</guid><description>《控制科学Ⅰ》期末速通笔记。课件太抽象了 咱来点接地气的</description><pubDate>Thu, 12 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;*Cover image generated by AI&lt;/p&gt;
&lt;p&gt;优化问题：就是求最值。涉及两类函数&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\min$ 或 $\max$，意思就是求它后面那个函数的值&lt;/li&gt;
&lt;li&gt;${\rm argmin}$ 或 ${\rm argmax}$，意思就是求“使得它后面东西最大”时自变量的值
&lt;ul&gt;
&lt;li&gt;符号下面写的东西：自变量+自变量范围&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;基本求法：令对自变量的偏导为零&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于一个方程组 $Ax=b$，定义它的最小二乘解为 $\mathrm{argmin}\ |Ax-b|^2$&lt;/p&gt;
&lt;h2&gt;偏导结论&lt;/h2&gt;
&lt;p&gt;函数对向量（或矩阵）求偏导，相当于对里头的每一个量都偏导一次，然后把偏导的结果按照&lt;strong&gt;自变量在原来矩阵中的位置&lt;/strong&gt;重新组织成矩阵&lt;/p&gt;
&lt;p&gt;约定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$x$ 为 $n$ 维列向量&lt;/li&gt;
&lt;li&gt;$y$ 为 $m$ 维列向量&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;则&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\dfrac{ {\partial}(\alpha x)}{ {\partial}x}=\alpha^{\rm T}{}$，其中 $\alpha$ 为 $n$ 维行向量&lt;/li&gt;
&lt;li&gt;$\dfrac{ {\partial}(\alpha x)}{ {\partial}x^{\rm T} }=\alpha$&lt;/li&gt;
&lt;li&gt;$\dfrac{ {\partial}(x^{\rm T}\beta)}{ {\partial}x}=\beta$，其中 $\beta$ 为 $n$ 维列向量&lt;/li&gt;
&lt;li&gt;$\dfrac{ {\partial}(x^{\rm T}Ax)}{ {\partial}x}=(A^{\rm T}+A)x$，其中 $A$ 为 $n\times n$ 方阵&lt;/li&gt;
&lt;li&gt;$\dfrac{ {\partial}(x^{\rm T}By)}{ {\partial}x}=By$，其中 $B$ 为 $n\times m$ 方阵&lt;/li&gt;
&lt;li&gt;$\dfrac{ {\partial}|Ax|^2}{ {\partial}x}=\dfrac{ {\partial}x^{\rm T}A^{\rm T}Ax}{ {\partial}x}=2A^{\rm T}Ax$，其中 $A$ 为任意矩阵，$b$ 为任意可以相加的列向量&lt;/li&gt;
&lt;li&gt;最小二乘解
$$
\begin{aligned}\dfrac{ {\partial}|Ax-b|^2}{ {\partial}x}&amp;#x26;=\dfrac{ {\partial}(x ^{\rm T}A^{\rm T}-b ^{\rm T})(Ax-b)}{ {\partial}x}=\dfrac{ {\partial}(x ^{\rm T}A ^{\rm T}Ax-x ^{\rm T}A ^{\rm T}b-b ^{\rm T}Ax+b ^{\rm T}b)}{ {\partial}x}\&amp;#x26;=2A ^{\rm T}Ax-2A ^{\rm T}b=2A ^{\rm T}(Ax-b)\end{aligned}{}
$$&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;问题描述与记号规定&lt;/h2&gt;
&lt;p&gt;想象一个黑箱系统，它里头有 $n$ 个未知量，我们打包成列向量 $\theta$，称为“参数”。我的目标是估计这个参数。&lt;/p&gt;
&lt;p&gt;现在让这个系统动起来。它会吞进去一堆东西，我们打包成列向量 $u$，称为“输入”；吐出来一堆东西，我们打包成列向量 $y$，称为“输出”。我们在 0 时刻、1 时刻、……、N-1 时刻，观测这个系统，记录这些时刻的输入，我们记为 $u(0),,u(1),,\cdots,,u(N-1)$；以及这些输入在下一时刻所产生的输出，我们记为 $y(1),,y(2),,\cdots,,y(N)$&lt;/p&gt;
&lt;p&gt;使用线性模型来拟合这个系统，也就是说，假定系统的输出关于那 $n$ 个未知参数是线性的，也即对于 $t$ 时刻的输出，存在一个系数矩阵（aka 测量向量，measurement vector）$\phi(k)$ 使得 $\phi^\mathrm T(k)\cdot\theta$ 能够拟合 $y(k+1)$，于是 $\theta$ 也就是方程组 $y(k+1)=\phi^\mathrm{T}(k)\cdot\theta$ 的数值解。（注意，$\phi$ 中可以含有过去时刻的 $y$ 和 $u$，因为对于现在时刻，过去时刻是已知的。）&lt;/p&gt;
&lt;p&gt;显然，观测的数据越多，拟合效果越好。本章后面所讲的所有方法，就是要解决：怎么利用这么多输入输出数据，具体求出这个数值解。&lt;/p&gt;
&lt;h2&gt;梯度下降法&lt;/h2&gt;
&lt;p&gt;思路：迭代之，每次利用一个新数据，更新已有的估计值&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;先验误差与后验误差&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;先验误差，即在更新参数之前，用当前的参数看看与真实情况差多少，再更新参数：
$$
\varepsilon^o(k+1)=y(k+1)-\phi^\mathrm{T}(k)\cdot\hat\theta({\color{orange}k})\quad
$$&lt;/li&gt;
&lt;li&gt;后验误差，即先更新参数，再用更新后的参数看看这一轮迭代的效果如何：
$$
\quad\varepsilon(k+1)=y(k+1)-\phi^\mathrm{T}(k)\cdot\hat\theta({\color{orange}k+1})
$$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;推导：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;(1) 先验误差情形。误差函数定为 $\dfrac12|\varepsilon^o(k+1)|^2$。令更新沿着梯度反方向
$$
\begin{aligned}
\Delta\theta&amp;#x26;= -F\dfrac{\partial,|\varepsilon^o(k+1)|^2}{2\ \partial\theta(k)}\
&amp;#x26;= -F\dfrac{\partial,|y(k+1)-\phi^\mathrm{T}(k)\theta(k)|^2}{2\ \partial\theta(k)}\
&amp;#x26;= F\phi (k)\big(y(k+1)-\phi^\mathrm{T}(k)\theta(k)\big)\
&amp;#x26;= F\phi (k)\varepsilon^o(k+1)
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;(2) 后验误差情形。这意味着误差函数要改为 $\dfrac12|\varepsilon(k+1)|^2$，取 $k!+!1$ 时刻的梯度。&lt;/p&gt;
&lt;p&gt;令 $\Delta\theta$ 沿误差函数梯度反方向。误差函数的梯度和之前类似：$\dfrac{\partial,|\varepsilon(k+1)|^2}{2\ \partial\theta(k+1)}=-\phi (k)\varepsilon(k+1)$，但是不能只用 $\Delta\theta=F\phi(k)\varepsilon(k+1)$ 来计算，因为在计算 $\varepsilon(k!+!1)$ 之前需要先知道 $\theta(k!+!1)$，相当于互为因果了。所以要把 $\varepsilon(k!+!1)$ 从 $\theta(k!+!1)$ 中剥离开：
$$
\begin{aligned}\
\varepsilon(k+1)&amp;#x26;= y(k+1)-\phi^\mathrm{T}(k)\big(\theta(k)+\Delta\theta\big)\
&amp;#x26;= y(k+1)-\phi^\mathrm{T}(k)\theta(k)-\phi^\mathrm{T}(k)\Delta\theta\
&amp;#x26;= \varepsilon^o(k+1)-\phi^\mathrm{T}(k)\Delta\theta\
&amp;#x26;= \varepsilon^o(k+1)-\phi^\mathrm{T}(k)F\phi (k)\varepsilon(k+1)\
\varepsilon(k+1)&amp;#x26;= \dfrac{\varepsilon^o(k+1)}{1+\phi^\mathrm{T}(k)F\phi (k)}
\end{aligned}
$$
这样就分开了，于是就可以说 $\Delta\theta=F\phi(k)\varepsilon(k+1)=\dfrac{F\phi(k)\varepsilon^o(k+1)}{1+\phi^\mathrm{T}(k)F\phi (k)}{}$&lt;/p&gt;
&lt;h2&gt;最小二乘法&lt;/h2&gt;
&lt;p&gt;刚才是逐个考虑，而这个方法则是同时把所有数据都考虑进来。将这些数据同时列出并写成矩阵表达式：
$$
\left{
\begin{aligned}
y(1)&amp;#x26;=\phi^\mathrm{T}(0)\cdot\theta\
y(2)&amp;#x26;=\phi^\mathrm{T}(1)\cdot\theta\
&amp;#x26;\cdots\
y(N)&amp;#x26;=\phi^\mathrm{T}(N-1)\cdot\theta
\end{aligned}
\right.\
\Rightarrow\
\begin{bmatrix}y(1)\y(2)\\vdots\y(N)\end{bmatrix}=\begin{bmatrix}\phi^\mathrm{T}(0)\\phi^\mathrm{T}(1)\\vdots\\phi^\mathrm{T}(N-1)\end{bmatrix}\cdot\theta
$$
记这个表达式为
$$
y_N=\Phi_N \cdot\theta
$$
因此 $\theta$ 就是这个方程组的数值解。这块就不用迭代了，直接最小二乘法&lt;/p&gt;
&lt;h2&gt;各种改进的最小二乘法&lt;/h2&gt;
&lt;p&gt;算那么大一个 $\Phi$ 矩阵毕竟很麻烦，且只用一条公式去推导的时候稳定性也很差，因此做出改良。赌他不考推导，死记（最后真的没考）&lt;/p&gt;
&lt;h3&gt;递归最小二乘&lt;/h3&gt;
&lt;p&gt;递归形式具有如下形式：$\Delta\theta=$ 增益 $\times$ 测量向量 $\times$ 误差
$$
\begin{aligned}
F(k+1)&amp;#x26;=  F(k) - \dfrac{F(k)\phi(k)\phi^\mathrm{T}(k) F(k)}{1 + \phi(k)^\mathrm{T} F(k)\phi(k)}\
\hat{\theta}(k+1)&amp;#x26;= \hat{\theta}(k) + F(k+1)\phi(k)\varepsilon^o(k+1)
\end{aligned}
$$&lt;/p&gt;
&lt;h3&gt;加权最小二乘&lt;/h3&gt;
&lt;p&gt;使用一个正定对称矩阵 $W_N$，规定误差函数中每个参数各自误差的权重，也即优化 $J=\varepsilon^\mathrm{T}\cdot W_N\cdot\varepsilon$&lt;/p&gt;
&lt;p&gt;非递归：
$$
\hat\theta_{WLS}=\big(\Phi_N^\mathrm{T}W_N\Phi_N\big)^{-1}\Phi_N^\mathrm{T}W_Ny_N
$$&lt;/p&gt;
&lt;p&gt;递归：
$$
\begin{aligned}
\overline{F}_W(k+1) &amp;#x26;=  F_W(k+1)\phi(k)w(k) = \dfrac{F_W(k)\phi(k)}{\frac{1}{w(k)} + \phi^\mathrm{T}(k)F_W(k)\phi(k)}\
F_W(k+1) &amp;#x26;=  \left( \boldsymbol{I} - \overline{F}_W(k+1)\phi^\mathrm{T}(k) \right) F_W(k)\
\hat{\theta}(k+1)&amp;#x26;= \hat{\theta}(k) + \overline{F}_W(k+1)\varepsilon^o(k+1)
\end{aligned}
$$&lt;/p&gt;
&lt;h3&gt;带遗忘因子的递归最小二乘&lt;/h3&gt;
&lt;p&gt;按顺序迭代
$$
\begin{aligned}
\overline F_W(k+1)&amp;#x26;=\dfrac{F_W(k)\phi(k)}{\lambda+\phi^{\rm T}(k)F_W(k)\phi(k)}\
F_W(k+1)&amp;#x26;=\big(\boldsymbol{I}-\overline F_W(k+1)\phi^{\rm T}(k)\big)F_W(k)\dfrac1\lambda\
\hat\theta(k+1)&amp;#x26;=\hat\theta(k)+\overline F_W(k+1)\varepsilon^o(k+1)
\end{aligned}
$$&lt;/p&gt;
&lt;h3&gt;带正则化的最小二乘&lt;/h3&gt;
&lt;p&gt;对于 $J=|y_N-\Phi_N\theta|^2$，引入正则项&lt;/p&gt;
&lt;p&gt;L2正则化：即最小化 $J+\lambda|\theta|^2$，结论：$\hat\theta=\left( \Phi_N^\mathrm{T} \Phi_N + \lambda I\right)^{-1} \Phi_N^\mathrm{T}y_N$&lt;/p&gt;
&lt;p&gt;Tikhonov正则化（吉洪诺夫）：即最小化 $J+\gamma\theta^\mathrm{T}\boldsymbol{K}\theta$，其中后面那项记为 $\Omega(\theta)$，$\boldsymbol{K}{}$ 一般是对称的。结论：$\hat\theta=\left( \Phi_N^\mathrm{T} \Phi_N + \gamma \boldsymbol{K} \right)^{-1} \Phi_N^\mathrm{T}y_N$&lt;/p&gt;
&lt;h3&gt;带约束的最小二乘&lt;/h3&gt;
&lt;p&gt;等式约束：例如约束 $\theta\in \mathrm{col}(U)$，做法：$\theta=Ub$，这样 $b$ 就是一个不受约束的变量，只要对 $b$ 做无约束的最小二乘，然后 $\hat\theta_{LS}=U\hat b_{LS}{}$&lt;/p&gt;
&lt;p&gt;不等式约束：递推最小二乘。如果递推过程中某一项 $\theta$ 违反了这个约束，则映射到另一个空间上：$\rho=F(k)^{-1/2}\theta$，在这个另外的空间上投影（沿着法向量）到约束边界上，然后再反向映射回原来的那个空间&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./ineq-est.png&quot; alt=&quot;不等式约束&quot;&gt;&lt;/p&gt;
&lt;p&gt;例题：
&lt;img src=&quot;./ineq-est1.png&quot; alt=&quot;不等式约束例题&quot;&gt;
&lt;img src=&quot;./ineq-est2.png&quot; alt=&quot;不等式约束例题&quot;&gt;
&lt;img src=&quot;./ineq-est3.png&quot; alt=&quot;不等式约束例题&quot;&gt;&lt;/p&gt;</content:encoded><h:img src="/_astro/parameter-estimation.B_tUsVSx.png"/><enclosure url="/_astro/parameter-estimation.B_tUsVSx.png"/></item><item><title>故湘，风 Lyrics</title><link>https://chinosan.com/blog/lyrics/guxiangfeng</link><guid isPermaLink="true">https://chinosan.com/blog/lyrics/guxiangfeng</guid><description>在前往长沙的前夜，因为《歌手》删减事件听到这首歌，陪伴了我整个湖南旅行；如今前途迷茫，才体会到其中的温暖。滚烫的雨终于在此刻相会。</description><pubDate>Thu, 24 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;原曲歌词整编自豆瓣 白头豕 的解读文章：&lt;a href=&quot;https://www.douban.com/group/topic/331376458/?_spm_id=NDI3MjYyNDE&amp;#x26;_i=3330314acxz02T&quot;&gt;科普安利｜Gai 要唱的《故湘，风》原曲歌词解析&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;live版歌词整编自《歌手2025》第10期节目播出字幕&lt;/p&gt;
&lt;h2&gt;Original version&lt;/h2&gt;
&lt;p&gt;天上的月亮诶 &lt;em&gt;--Ranzer--&lt;/em&gt;&lt;br&gt;
照进我的心里面&lt;br&gt;
如果要走冇走&lt;br&gt;
是不晓得好远&lt;/p&gt;
&lt;p&gt;天上的月亮诶&lt;br&gt;
照进湘江河里面&lt;br&gt;
流的是沙水是酒&lt;br&gt;
呷一口蔑苦的耶（意：太苦了呀）&lt;/p&gt;
&lt;p&gt;挖一瓢辣椒配点米饭&lt;br&gt;
搂出了名堂又把那个看（意：给哪个看）&lt;br&gt;
外面的世界有规矩&lt;br&gt;
从不打屋里的讲&lt;br&gt;
肚子再饿又呷得几餐&lt;br&gt;
一杯好酒它从不嫌晚&lt;br&gt;
这一世人啊&lt;br&gt;
走的路处处是坎&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;故乡的风牵着母亲河的水 &lt;em&gt;--Ranzer--&lt;/em&gt;&lt;br&gt;
心里的苦浸的是油盐的味&lt;br&gt;
滚烫的雨终究相会 长天共秋水&lt;br&gt;
咿呀咿兹哟 看鸟儿往南飞&lt;/p&gt;
&lt;p&gt;故乡的风牵着母亲河的水&lt;br&gt;
今夜抬头不见星月与我同醉&lt;br&gt;
滚烫的雨终究相会 长天共秋水&lt;br&gt;
咿呀咿兹哟 看鸟儿往南飞&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;搞了太多事成功的总是别个 &lt;em&gt;--功夫胖--&lt;/em&gt;&lt;br&gt;
这一世人总归是要有个结果&lt;br&gt;
没上过一天班但录过几个节目&lt;br&gt;
听这首歌 你又想到那个人呐&lt;/p&gt;
&lt;p&gt;那杂别 屎少屁多 &lt;em&gt;--盛宇--&lt;/em&gt;&lt;br&gt;
那杂别 是咂铁坨（意：那个人 眼高手低 是个硬茬）&lt;br&gt;
几杂别 拉帮结伙&lt;br&gt;
哪杂别又真的铁我&lt;br&gt;
你晓得登卵 人生苦短（意：你根本不懂 人生苦短）&lt;br&gt;
搞得就搞 搞不成耶卵（意：作罢）&lt;br&gt;
人情冷暖 你晓得登卵&lt;br&gt;
拌哒脚只有我爹来接我&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;你看今天晚上月亮真的圆 &lt;em&gt;--功夫胖--&lt;/em&gt;&lt;br&gt;
它把我的思念送到你跟前&lt;br&gt;
口袋铸穿还是没得一分钱&lt;br&gt;
月亮娭毑带我们回到十年前（ai1 jie3，意：祖母）&lt;/p&gt;
&lt;p&gt;讲点别的 月有阴晴圆缺 &lt;em&gt;--盛宇--&lt;/em&gt;&lt;br&gt;
看悲欢离合 身边缘起缘灭&lt;br&gt;
破镜重圆期待着那一天&lt;br&gt;
生老病死没见的那一面&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Country road take me home &lt;em&gt;--合--&lt;/em&gt;&lt;br&gt;
笑看风云尽在悲喜中&lt;br&gt;
Country road take me home&lt;br&gt;
故乡的风吹在我的心中&lt;br&gt;
Country road take me home&lt;br&gt;
笑看风云尽在悲喜中&lt;br&gt;
Country road take me home&lt;br&gt;
故乡的风吹在我的心中&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;故乡的风牵着母亲河的水 &lt;em&gt;--GAI--&lt;/em&gt;&lt;br&gt;
心里的苦浸的是油盐的味&lt;br&gt;
滚烫的雨终究相会 长天共秋水 &lt;em&gt;--Ranzer--&lt;/em&gt;&lt;br&gt;
咿呀咿兹哟 看鸟儿往南飞&lt;/p&gt;
&lt;p&gt;故乡的风牵着母亲河的水&lt;br&gt;
今夜抬头不见星月与我同醉&lt;br&gt;
滚烫的雨终究相会 长天共秋水 &lt;em&gt;--GAI--&lt;/em&gt;&lt;br&gt;
咿呀咿兹哟 看鸟儿往南飞&lt;/p&gt;
&lt;h2&gt;Live version&lt;/h2&gt;
&lt;p&gt;天上的月亮诶&lt;br&gt;
照进我的心里面&lt;br&gt;
如果要走冇走&lt;br&gt;
是不晓得有好远&lt;/p&gt;
&lt;p&gt;天上的月亮诶&lt;br&gt;
照进湘江河里面&lt;br&gt;
流的是沙水是酒&lt;br&gt;
吃一口 咩苦的哎&lt;/p&gt;
&lt;p&gt;挖一瓢辣椒配点米饭&lt;br&gt;
闯出了名堂又给哪个看&lt;br&gt;
外面的世界有规矩&lt;br&gt;
从不打屋里的讲&lt;br&gt;
肚子再饿又吃得几餐&lt;br&gt;
一杯好酒它从不嫌晚&lt;br&gt;
这一世人啊&lt;br&gt;
走的路处处是坎&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;故乡的风牵着母亲河的水&lt;br&gt;
心里的苦浸的是油盐的味&lt;br&gt;
滚烫的雨终究相会 长天共秋水&lt;br&gt;
咿呀咿兹哟 看鸟儿往南飞&lt;/p&gt;
&lt;p&gt;故乡的风牵着母亲河的水&lt;br&gt;
今夜抬头不见星月与我同醉&lt;br&gt;
滚烫的雨终究相会 长天共秋水&lt;br&gt;
咿呀咿兹哟 看鸟儿往南飞&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;雨打在青石板上&lt;br&gt;
回头快看不清家的方向&lt;br&gt;
人总像浮萍荡啊荡&lt;br&gt;
天又快黑咯&lt;br&gt;
把云都烧得滚烫&lt;/p&gt;
&lt;p&gt;（常记起）意气风发的几年风流&lt;br&gt;
（藏一缕）现在无奈的几许通透&lt;br&gt;
（蓦回首）风华正茂而未知乡愁&lt;br&gt;
（曾记否）书生意气也挥斥方遒&lt;/p&gt;
&lt;p&gt;风萧萧 雨潇潇&lt;br&gt;
行囊重 归期杳&lt;br&gt;
半生浮沉付江潮&lt;br&gt;
一瓢辣子烫寂寥&lt;/p&gt;
&lt;p&gt;月儿啊圆又缺&lt;br&gt;
念我的娘和爹&lt;br&gt;
正月里推船嘛 不想家哟&lt;br&gt;
不到远方看不见&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;浏阳河&lt;br&gt;
转过了几道弯&lt;br&gt;
几十里水路到心上&lt;/p&gt;
&lt;p&gt;水中啊有个少年在渡江&lt;br&gt;
风吹去 一首歌谣&lt;br&gt;
翻滚的浪潮对我唱&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;故乡的风牵着母亲河的水&lt;br&gt;
心里的苦浸的是油盐的味&lt;br&gt;
滚烫的雨终究相会 长天共秋水&lt;br&gt;
咿呀咿兹哟 看鸟儿往南飞&lt;/p&gt;
&lt;p&gt;故乡的风牵着母亲河的水&lt;br&gt;
今夜抬头不见星月与我同醉&lt;br&gt;
滚烫的雨终究相会 长天共秋水&lt;br&gt;
咿呀咿兹哟 看鸟儿往南飞&lt;/p&gt;
&lt;p&gt;ohh&lt;br&gt;
滚烫的雨终究相会 长天共秋水&lt;br&gt;
咿呀咿兹哟 看鸟儿往南飞&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;天上的月亮诶&lt;br&gt;
照进我的心里面&lt;br&gt;
如果要走冇走&lt;br&gt;
是不晓得有好远&lt;/p&gt;</content:encoded><h:img src="/_astro/guxiangfeng.B3pIQKlr.png"/><enclosure url="/_astro/guxiangfeng.B3pIQKlr.png"/></item><item><title>控制科学笔记 - 子空间辨识</title><link>https://chinosan.com/blog/control-science/subspace-identification</link><guid isPermaLink="true">https://chinosan.com/blog/control-science/subspace-identification</guid><description>《控制科学Ⅰ》期末速通笔记。课件太抽象了 咱来点接地气的</description><pubDate>Wed, 11 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;本章解决这样一个问题：对于一个 LTI 离散状态空间方程模型（注意与系统建模中的区别）
$$
\left{
\begin{aligned}
x_{k+1}&amp;#x26;= Ax_k+Bu_k\
y_k&amp;#x26;= Cx_k+Du_k
\end{aligned}
\right.
$$
给定系统若干个输入 $u_0,\cdots,u_{s-1}{}$ 和对应的 $s$ 个输出 $y_k$（输入为 $m$ 维列向量、输出为 $l$ 维列向量），求出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;系统的阶数 $n$&lt;/li&gt;
&lt;li&gt;四个矩阵 $A$、$B$、$C$、$D$（相似变换意义下等价即可）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;子空间方程&lt;/h2&gt;
&lt;h3&gt;推导&lt;/h3&gt;
&lt;h1&gt;假定当前时刻 $k=i$. 取 $k=0\sim (i-1)$ 这 $i$ 个下标，也就是相对于当前时刻的所有“过去状态”：
$$
\left|\
\begin{aligned}
x_1&amp;#x26;= Ax_0+Bu_0\
x_2&amp;#x26;= Ax_1+Bu_1\
&amp;#x26;= A^2x_0+ABu_0+Bu_1\
x_3&amp;#x26;= Ax_2+Bu_2\
&amp;#x26;= A^3x_0+A^2Bu_0+ABu_1+Bu_2\
&amp;#x26;\cdots\
x_i&amp;#x26;= A^ix_0+\sum\limits_{k=0}^{(i-1)}A^{(i-1)-k}Bu_k
\end{aligned}
\right.
\quad
\left|\
\begin{aligned}
y_0 &amp;#x26;= C x_0 + D u_0\
y_1 &amp;#x26;= Cx_1+Du_1\
&amp;#x26;= C A x_0 + C B u_0 + D u_1\
y_2 &amp;#x26;= Cx_2+Du_2\
&amp;#x26;= C A^2 x_0 + C A B u_0 + C B u_1 + D u_2\
&amp;#x26;\cdots\
y_{i-1} &amp;#x26;= CA^{i-1}x_0+\sum\limits_{k=0}^{(i-2)}CA^{(i-2)-k}Bu_k+Du_{i-1}
\end{aligned}
\right.
$$
把 $y$ 的部分写成矩阵形式
$$
\begin{bmatrix}
y_0\y_1\\vdots\y_{i-2}\y_{i-1}
\end{bmatrix}&lt;/h1&gt;
&lt;h1&gt;\begin{bmatrix}
C\
CA\
\vdots\
CA^{i-2}\
CA^{i-1}
\end{bmatrix}
x_0
+
\begin{bmatrix}
D &amp;#x26; 0 &amp;#x26; \cdots &amp;#x26; 0 &amp;#x26; 0\
CB &amp;#x26; D &amp;#x26; \cdots &amp;#x26; 0 &amp;#x26; 0\
\vdots &amp;#x26; \vdots &amp;#x26; \ddots &amp;#x26; \vdots &amp;#x26; \vdots \
CA^{i-3}B &amp;#x26; CA^{i-4}B &amp;#x26; \cdots &amp;#x26; D  &amp;#x26; 0\
CA^{i-2}B &amp;#x26; CA^{i-3}B &amp;#x26; \cdots &amp;#x26; CB &amp;#x26; D
\end{bmatrix}
\begin{bmatrix}
u_0\u_1\\vdots\u_{i-2}\u_{i-1}
\end{bmatrix}
$$
记 $\Gamma_i$ 为 $x_0$ 前面的那一坨大矩阵、记 $H_i$ 为 $u$ 前面的那一坨系数矩阵. 于是可将表达式压缩为
$$
\begin{bmatrix}
y_0\y_1\
\vdots\
y_{i-1}
\end{bmatrix}&lt;/h1&gt;
&lt;p&gt;\Gamma_ix_0
+
H_i
\begin{bmatrix}
u_0\u_1\\vdots\u_{i-1}
\end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;刚才我们的 $k$ 是从 $0\sim(i-1)$. 如果我们把下标整体往后移一位，即 $k$ 从 $1\sim i$，这样等号左边的 $y$ 矩阵就是 $y_1\sim y_i$，右边就是 $x_1$，$u$ 矩阵就是 $u_1\sim u_i$. 很巧妙的在于，$\Gamma_i$ 和 $H_i$ 并不会变，因为这两个系数矩阵实际上表达的是“相对于第一项的关系”，而量的个数没有变（都是 $i$），也就是说相对于 $x_1$，后面的 $i$ 个数都有相同的矩阵表示. 同理，整体移动两位、三位……，两个系数矩阵都是一样的. 因此，把多个 $y$ 矩阵横着拼到一起时，系数矩阵可以提取出来.&lt;/p&gt;
&lt;h1&gt;从 $0$ 拼到 $j-1$（$j$ 只是一个参数，表示我们将使用多少数据进行分析. 有点像以前的迭代次数）
$$
\begin{bmatrix}
y_0      &amp;#x26; y_1      &amp;#x26; \cdots &amp;#x26; y_{j-1}     \
y_1      &amp;#x26; y_2      &amp;#x26; \cdots &amp;#x26; y_{j}       \
\vdots   &amp;#x26; \vdots   &amp;#x26; \ddots &amp;#x26; \vdots      \
y_{i-1}  &amp;#x26; y_{i}    &amp;#x26; \cdots &amp;#x26; y_{i+j-2}
\end{bmatrix}&lt;/h1&gt;
&lt;p&gt;\Gamma_i
\begin{bmatrix}
x_0 &amp;#x26; x_1 &amp;#x26; \cdots &amp;#x26; x_{j-1}
\end{bmatrix}
+
H_i
\begin{bmatrix}
u_0      &amp;#x26; u_1      &amp;#x26; \cdots &amp;#x26; u_{j-1}     \
u_1      &amp;#x26; u_2      &amp;#x26; \cdots &amp;#x26; u_{j}       \
\vdots   &amp;#x26; \vdots   &amp;#x26; \ddots &amp;#x26; \vdots      \
u_{i-1}  &amp;#x26; u_{i}    &amp;#x26; \cdots &amp;#x26; u_{i+j-2}
\end{bmatrix}
$$
我们再次压缩表达式为
$$
Y_p=\Gamma_iX_p+H_iU_p
$$
这里的 $p$ 就是 past“过去状态”的意思。&lt;/p&gt;
&lt;hr&gt;
&lt;h1&gt;现在考虑“未来状态”，特别地，是未来状态相对于当前状态（即 $k=i$）的情况，因此下标又要整体移动 $i$，也即从 $i$ 拼到 $i+j-1$：
$$
\begin{bmatrix}
y_i      &amp;#x26; y_{i+1}  &amp;#x26; \cdots &amp;#x26; y_{i+j-1}     \
y_{i+1}  &amp;#x26; y_{i+2}  &amp;#x26; \cdots &amp;#x26; y_{i+j}       \
\vdots   &amp;#x26; \vdots   &amp;#x26; \ddots &amp;#x26; \vdots        \
y_{2i-1} &amp;#x26; y_{2i}   &amp;#x26; \cdots &amp;#x26; y_{2i+j-2}
\end{bmatrix}&lt;/h1&gt;
&lt;p&gt;\Gamma_i
\begin{bmatrix}
x_i &amp;#x26; x_{i+1} &amp;#x26; \cdots &amp;#x26; x_{i+j-1}
\end{bmatrix}
+
H_i
\begin{bmatrix}
u_i      &amp;#x26; u_{i+1}  &amp;#x26; \cdots &amp;#x26; u_{i+j-1}     \
u_{i+1}  &amp;#x26; u_{i+2}  &amp;#x26; \cdots &amp;#x26; u_{i+j}       \
\vdots   &amp;#x26; \vdots   &amp;#x26; \ddots &amp;#x26; \vdots        \
u_{2i-1} &amp;#x26; u_{2i}   &amp;#x26; \cdots &amp;#x26; u_{2i+j-2}
\end{bmatrix}
$$
压缩表达式为
$$
Y_f=\Gamma_iX_f+H_iU_f
$$
这里的 $f$ 就是 future 的意思。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;过去和未来的情况都有了，我们使用一开始算出来的各个 $x$ 的表达式，在过去与未来之间建立联系. 将 $i$ 时刻和 $0$ 时刻之间的关系 $x_i= A^ix_0+\sum\limits_{k=0}^{(i-1)}A^{(i-1)-k}Bu_k$ 写成矩阵形式、并压缩表达式为：
$$
x_i= A^ix_0+\begin{bmatrix}A^{i-1}B&amp;#x26;A^{i-2}B&amp;#x26;\cdots&amp;#x26;AB&amp;#x26;B\end{bmatrix}\begin{bmatrix}u_0\u_1\\vdots\u_{i-2}\u_{i-1}\end{bmatrix}=A^ix_0+\Delta_i\begin{bmatrix}u_0\u_1\\vdots\u_{i-1}\end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;同样地，依然可以把下标整体移动，而两个系数矩阵不变. 然后再把 $0$ 到 $j-1$ 拼到一起：
$$
\begin{bmatrix}x_i&amp;#x26;x_{i+1}&amp;#x26;\cdots&amp;#x26;x_{i+j-1}\end{bmatrix}=A^i\begin{bmatrix}x_0&amp;#x26;x_1&amp;#x26;\cdots&amp;#x26;x_{j-1}\end{bmatrix}+\Delta_i\begin{bmatrix}u_0&amp;#x26;u_1&amp;#x26;\cdots&amp;#x26;u_{j-1}\u_1&amp;#x26;u_2&amp;#x26;\cdots&amp;#x26;u_j\\vdots&amp;#x26;\vdots&amp;#x26;\ddots&amp;#x26;\vdots\u_{i-1}&amp;#x26;u_i&amp;#x26;\cdots&amp;#x26;u_{i+j-2}\end{bmatrix}
$$
自然地，过去与未来 $x$ 被分别打包在一起了，因此可以再次压缩表达式为
$$
X_f=A^iX_p+\Delta_iU_p
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;最后一步. 我们实际上只想知道输入 $Y$ 和输出 $U$，状态变量可以进一步消去&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第①式移项后代入第③式消 $X_p$，压缩表达式为
$$
\begin{aligned}X_f&amp;#x26;= A^i\Gamma_i^\dagger(Y_p-H_iU_p)+\Delta_iU_p\&amp;#x26;= \begin{bmatrix}A^i\Gamma_i^\dagger&amp;#x26;,&amp;#x26;\Delta_i-A^i\Gamma_i^\dagger H_i\end{bmatrix}\begin{bmatrix}Y_p\U_p\end{bmatrix}\X_f&amp;#x26;= L_pW_p\end{aligned}
$$&lt;/li&gt;
&lt;li&gt;相应地第②式改为 $Y_f=\Gamma_iX_f+H_iU_f=\Gamma_iL_pW_p+H_iU_f$&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h3&gt;小结&lt;/h3&gt;
&lt;p&gt;对一个 $m$ 维输入、$l$ 维输出的状态空间方程模型
$$
\left{
\begin{aligned}
x_{k+1}&amp;#x26;= Ax_k+Bu_k\
y_k&amp;#x26;= Cx_k+Du_k
\end{aligned}
\right.
$$
我们有三条子空间辨识方程：&lt;/p&gt;
&lt;p&gt;消去状态变量的形式：&lt;/p&gt;
&lt;h2&gt;三条假设与两条推论&lt;/h2&gt;
&lt;p&gt;为了让辨识算法有效，需要假定系统足够好，即满足：&lt;/p&gt;
&lt;p&gt;这意味着，$X_f$ 是过去数据空间和未来数据交集的一组基&lt;/p&gt;
&lt;p&gt;由于系统是可达和可观测，系统的状态 $X_f$ 可以由输入输出数据唯一确定。因此，$X_f$ 必定是 $W_p$ 和 $W_f$ 张成空间中的一个元素，所以 $X_f \in \text{span}(W_p)$ 且 $X_f \in \text{span}(W_f)$，也即
$$
\text{span}(X_f) \subseteq \text{span}(W_p) \cap \text{span}(W_f)
$$&lt;/p&gt;
&lt;p&gt;(2) 证明 $\text{span}(W_p) \cap \text{span}(W_f) \subseteq \text{span}(X_f)$&lt;/p&gt;
&lt;p&gt;$\forall,v \in \text{span}(W_p) \cap \text{span}(W_f)$，$\exists,a,,b,\ \text{s.t.}{}$
$$
v = W_p\cdot a = W_f\cdot b
$$
而 $W_p$ 和 $W_f$ 都是由 $X_f$ 以及他们自身线性组合得到的，所以交集中的向量 $v$ 必定可表示为 $X_f\cdot c$，所以 $v \in \text{span}(X_f)$，也即
$$
\text{span}(W_p) \cap \text{span}(W_f) \subseteq \text{span}(X_f)
$$&lt;/p&gt;
&lt;h2&gt;确定性子空间辨识&lt;/h2&gt;
&lt;h3&gt;N4SID&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;N&lt;/strong&gt;umerical algorithm for &lt;strong&gt;S&lt;/strong&gt;ubspace &lt;strong&gt;S&lt;/strong&gt;tate &lt;strong&gt;S&lt;/strong&gt;pace &lt;strong&gt;S&lt;/strong&gt;ystem &lt;strong&gt;ID&lt;/strong&gt;entification 子空间状态空间系统辨识的数值算法&lt;/p&gt;
&lt;p&gt;使用消去状态变量的形式 $Y_f=\Gamma_iL_pW_p+H_iU_f$，做斜交投影：
$$
\begin{aligned}
Y_f/!&lt;em&gt;{U_f}W_p&amp;#x26;= \Gamma_iL_pW_p/!&lt;/em&gt;{U_f}W_p+H_iU_f/!_{U_f}W_p\
&amp;#x26;= \Gamma_iL_pW_p\
&amp;#x26;= \Gamma_iX_f
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;对 $\mathcal{O}=Y_f/!_{U_f}W_p$ 做 SVD
$$
\mathcal{O}=\left[ U_1 \quad U_2 \right] \begin{bmatrix} \Sigma_r &amp;#x26; 0 \ 0 &amp;#x26; 0 \end{bmatrix} \begin{bmatrix} V_1^\mathrm{T} \ V_2^\mathrm{T}\end{bmatrix}=U_1\Sigma_rV_1^\mathrm{T};(,=\Gamma_iX_f)
$$
为了得到 $\Gamma_iX_f$，从 $\Sigma_r$ 中间劈成两个矩阵相乘（原因后面会解释），劈开处乘上相似变换阵：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\Gamma_i = U_1 \Sigma_r^{1/2}\color{orange}T$&lt;/li&gt;
&lt;li&gt;$X_f = {\color{orange}T^{-1} }\Sigma_r^{1/2} V_1^\mathrm{T}{}$&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;下面就可以进行辨识了。由于 $T$、$V_1$ 都满秩，得 $n=\mathrm{r}(X_f)=\mathrm{r}(\Sigma_r)$，也即系统维数为 $\mathcal O$ 矩阵非零奇异值的个数。&lt;/p&gt;
&lt;h1&gt;然后就是求 $ABCD$。我们知道 $X_f=[x_{i},,x_{i+1},,\cdots,,x_{i+j-1}]$，把所有涉及这些 $x$ 的状态空间方程都写出来，写成矩阵形式并压缩表达式为
$$
\begin{bmatrix}
X_{i+1,,j-1} \
Y_{i,,j-1}
\end{bmatrix}&lt;/h1&gt;
&lt;p&gt;\begin{bmatrix}
A &amp;#x26; B \
C &amp;#x26; D
\end{bmatrix}
\begin{bmatrix}
X_{i,,j-1} \
U_{i,,j-1}
\end{bmatrix}
$$
其中大写的 $X$、$Y$、$U$ 表示把小写打包，下角标两个数，第一个数表示打包的起点，第二个数表示打包的个数，即
$$
\begin{aligned}
X_{i+1,,j-1} &amp;#x26;= [x_{i+1},,\cdots,,x_{i+j-1}]\
Y_{i,,j-1}   &amp;#x26;= [y_{i},,y_{i+1},,\cdots,,y_{i+j-2}]\
X_{i,,j-1}   &amp;#x26;= [x_{i},,x_{i+1},,\cdots,,x_{i+j-2}]\
U_{i,,j-1}   &amp;#x26;= [u_{i},,u_{i+1},,\cdots,,u_{i+j-2}]\
\end{aligned}
$$
既然 $X_f$ 都算出来了，那刚才定义的这四个东西就都是已知的，因此 $ABCD$ 可以用最小二乘法解出（注意这里是估系数矩阵，所以和传统的最小二乘在结论上有一些区别，但推导是一样的）
$$
y= \Theta x
$$
$$
\begin{aligned}
\dfrac{ {\partial}|y-\Theta x|^2}{ {\partial}\Theta}&amp;#x26;= 2(y-\Theta x)x^\mathrm{T}=0\
\hat\Theta&amp;#x26;= yx^\mathrm{T}(xx^\mathrm{T})^{-1}
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;（至于为什么要从 $\Sigma_r$ 中间劈开：既然我们只需要求出相似意义下的解，那么理论上怎么劈开都行，但从 $\Sigma_r$ 中间劈开可以保证奇异值平均地分配给两个正交矩阵，数值尺度上比较均衡）&lt;/p&gt;
&lt;h3&gt;MOESP&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;M&lt;/strong&gt;ultivariable &lt;strong&gt;O&lt;/strong&gt;utput &lt;strong&gt;E&lt;/strong&gt;rror &lt;strong&gt;S&lt;/strong&gt;tate s&lt;strong&gt;P&lt;/strong&gt;ace 多变量输出误差状态空间&lt;/p&gt;
&lt;p&gt;做LQ分解
$$
\begin{bmatrix}U_p\Y_p\end{bmatrix}= \begin{bmatrix}L_{11}&amp;#x26;0\L_{21}&amp;#x26;L_{22}\end{bmatrix}\begin{bmatrix}Q_1^{\mathrm T}\Q_2^{\mathrm T}\end{bmatrix}
$$&lt;/p&gt;
&lt;p&gt;$$
\Rightarrow,\left{
\begin{aligned}
U_p&amp;#x26;= L_{11}Q_1^{\mathrm T}\
Y_p&amp;#x26;= L_{21}Q_1^{\mathrm T}+L_{22}Q_2^{\mathrm T}\
\end{aligned}
\right.
$$&lt;/p&gt;
&lt;p&gt;由子空间方程之“过去状态拼一起”：$Y_p=\Gamma_iX_p+H_iU_p$，把 $Y_p$ 和 $U_p$ 的 LQ 表达式代进去：
$$
\boxed{\Gamma_iX_p+H_iL_{11}Q_1^{\mathrm T}= L_{21}Q_1^{\mathrm T}+L_{22}Q_2^{\mathrm T} }\tag{1}
$$
两边右乘 $Q_2$ 得
$$
\Gamma_iX_pQ_2=L_{22}
$$
和 N4SID 类似，为了得到 $\Gamma_iX_pQ_2$，只需对 $L_{22}{}$ 做奇异值分解：
$$
L_{22}=\left[ U_1 \quad U_2 \right] \begin{bmatrix} \Sigma_r &amp;#x26; 0 \ 0 &amp;#x26; 0 \end{bmatrix} \begin{bmatrix} V_1^\mathrm{T} \ V_2^\mathrm{T}\end{bmatrix}=U_1\Sigma_rV_1^{\mathrm T}\ (,=\Gamma_iX_pQ_2)
$$
然后从 $\Sigma_r$ 中间劈开得&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\Gamma_i= U_1\Sigma_r^{1/2}{}$&lt;/li&gt;
&lt;li&gt;$X_pQ_2= \Sigma_r^{1/2}V_1^\mathrm{T}{}$&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;然后就可以开始辨识了：$n=\mathrm{r}(X_p)={\mathrm r}(\Sigma_r)$（因为 $Q_2$ 正交，即满秩）&lt;/p&gt;
&lt;p&gt;而 $\Gamma_i=\begin{bmatrix}C\CA\\vdots\CA^{i-1}\end{bmatrix}$，于是可以解 $A$ 和 $C$：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\Gamma_i$ 的开头 $l$ 行就是矩阵 $C$&lt;/li&gt;
&lt;li&gt;$(\Gamma_i$ 去掉开头 $l$ 行$)=(\Gamma_i$ 去掉最后 $l$ 行$)\times A$，解方程即得 $A$&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;至于 $B$ 和 $D$，我们再次回到 (1) 式，两边同时左乘 $U_2^\mathrm{T}{}$；因为 $\Gamma_i$ 和 $L_{22}{}$ 都是以 $U_1$ 开头的，由 $U$ 正交性得，左乘 $U_2^\mathrm{T}{}$ 时整个项都变成 0，于是
$$
\begin{aligned}
\bcancel{U_2^\mathrm{T}\Gamma_iX_p}+U_2^\mathrm{T}H_iL_{11}Q_1^{\mathrm T}= U_2^\mathrm{T}L_{21}Q_1^{\mathrm T}+\bcancel{U_2^\mathrm{T}L_{22}Q_2^{\mathrm T} }
\end{aligned}
$$
去掉 $Q_1^\mathrm{T}{}$，$L_{11}{}$ 移到右边去，把 $H_i$ 的具体表达式代入：
$$
U_2^\mathrm{T}\begin{bmatrix}
D &amp;#x26; 0 &amp;#x26; \cdots &amp;#x26; 0 &amp;#x26; 0\
CB &amp;#x26; D &amp;#x26; \cdots &amp;#x26; 0 &amp;#x26; 0\
\vdots &amp;#x26; \vdots &amp;#x26; \ddots &amp;#x26; \vdots &amp;#x26; \vdots \
CA^{i-3}B &amp;#x26; CA^{i-4}B &amp;#x26; \cdots &amp;#x26; D  &amp;#x26; 0\
CA^{i-2}B &amp;#x26; CA^{i-3}B &amp;#x26; \cdots &amp;#x26; CB &amp;#x26; D
\end{bmatrix}=U_2^\mathrm{T}L_{21}L_{11}^{-1}
$$
中间这个大矩阵 $H_i$ 就是待求的，其他东西都是已知的。我们把左边 $U_2^\mathrm{T}{}$ 每 $l$ 列分块、右边每 $m$ 列分块（以匹配 $H_i$ 的分块模式），可以分成 $i$ 块
$$
\begin{aligned}
U_2^\mathrm{T}&amp;#x26;=[\mathcal{L}_1,,\mathcal{L}&lt;em&gt;2,,\cdots,,\mathcal{L}&lt;em&gt;i]\
U_2^\mathrm{T}L&lt;/em&gt;{21}L&lt;/em&gt;{11}^{-1}&amp;#x26;=[\mathcal{M}_1,,\mathcal{M}_2,,\cdots,,\mathcal{M}_i]
\end{aligned}
$$
分块之后，实际上是阶梯型，而且 $B$ 和 $D$ 可以彻底分开
$$
\begin{aligned}
\mathcal{M}_1&amp;#x26;=\mathcal{L}_1 D + (\mathcal{L}&lt;em&gt;2 C + \cdots + \mathcal{L}&lt;/em&gt;{i-1} C A^{i-3} + \mathcal{L}_i C A^{i-2})B  \
\mathcal{M}_2&amp;#x26;=\mathcal{L}_2 D + (\mathcal{L}&lt;em&gt;3 C  + \cdots + \mathcal{L}&lt;em&gt;i C A^{i-3}) B  \
&amp;#x26;\ \ \vdots \
\mathcal{M}&lt;/em&gt;{i-1}&amp;#x26;= \mathcal{L}&lt;/em&gt;{i-1} D + (\mathcal{L}&lt;em&gt;i C )B \
\mathcal{M}&lt;/em&gt;{i}&amp;#x26;=\mathcal{L}_i D
\end{aligned}
$$
注意到括号里面很像 $\Gamma_i$，于是记 $\bar{\mathcal{L}_k}=\left[\mathcal{L}&lt;em&gt;k, \mathcal{L}&lt;/em&gt;{k+1}, \cdots, \mathcal{L}_i\right]$，就可以写成矩阵表达式
$$
\begin{bmatrix}
\mathcal{M}_1 \
\mathcal{M}&lt;em&gt;2 \
\vdots \
\mathcal{M}&lt;/em&gt;{i-1} \
\mathcal{M}_i
\end{bmatrix}&lt;/h1&gt;
&lt;p&gt;\begin{bmatrix}
\mathcal{L}_1 &amp;#x26; \bar{\mathcal{L}&lt;em&gt;2}\Gamma&lt;/em&gt;{i-1} \
\mathcal{L}&lt;em&gt;2 &amp;#x26; \bar{\mathcal{L}&lt;em&gt;3}\Gamma&lt;/em&gt;{i-2} \
\vdots &amp;#x26; \vdots \
\mathcal{L}&lt;/em&gt;{i-1} &amp;#x26; \bar{\mathcal{L}_i}\Gamma_1 \
\mathcal{L}_i &amp;#x26; 0
\end{bmatrix}
\begin{bmatrix}
D \
B
\end{bmatrix}
$$
然后只需要使用最小二乘法（传统的就行了）就能解 $B$ 和 $D$&lt;/p&gt;
&lt;p&gt;==BD这一段的构造，逻辑还是不够丝滑==&lt;/p&gt;
&lt;h2&gt;随机子空间辨识&lt;/h2&gt;
&lt;h3&gt;问题描述&lt;/h3&gt;
&lt;p&gt;在状态空间方程中引入一个随机偏移
$$
\left{
\begin{aligned}
x_{k+1}&amp;#x26;= Ax_k+Bu_k+w_k\
y_k&amp;#x26;= Cx_k+Du_k+v_k
\end{aligned}
\right.
$$
其中 $w_k$ 和 $v_k$ 是均值为 $\vec 0$ 的白噪向量，它们的协方差如下定义
$$
\begin{aligned}
Q&amp;#x26;= E[w_kw_k^\mathrm{T}]\
R&amp;#x26;= E[v_kv_k^\mathrm{T}]\
S&amp;#x26;= E[w_kv_k^\mathrm{T}]
\end{aligned}
$$
注意中括号里头，两个角标必须一致，角标不一致时协方差为零（因为白噪的意思就是不同时刻互相独立）。并且进一步假定 $E[x_kw_k^\mathrm{T}]=E[x_kv_k^\mathrm{T}]=0$&lt;/p&gt;
&lt;p&gt;考试只考没有 $B$ 和 $D$ 的情形，也即只考虑
$$
\left{
\begin{aligned}
x_{k+1}&amp;#x26;= Ax_k+w_k\
y_k&amp;#x26;= Cx_k+v_k
\end{aligned}
\right.
$$&lt;/p&gt;
&lt;h3&gt;记号&lt;/h3&gt;
&lt;p&gt;定义：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;状态协方差 $\Sigma=E[x_kx_k^\mathrm{T}]$&lt;/li&gt;
&lt;li&gt;输出协方差 $\Lambda_i=E[y_{k+i},y_k^\mathrm{T}]$（相差 $i$ 时间的）&lt;/li&gt;
&lt;li&gt;状态输出协方差 $G=E[x_{k+1}y_k^\mathrm{T}]$&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这些协方差应当与 $k$ 无关，表示系统足够稳定。于是：&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
\Sigma&amp;#x26;= E[x_{k+1}x_{k+1}^\mathrm{T}]\
&amp;#x26;= E\big[(Ax_k+w_k)(Ax_k+w_k)^\mathrm{T}\big]\
&amp;#x26;= AE[x_kx_k^\mathrm{T}]A^\mathrm{T}+E[w_kw_k^\mathrm{T}]\
&amp;#x26;= A\Sigma A^\mathrm{T}+Q
\end{aligned}
$$
$$
\begin{aligned}
G&amp;#x26;= E[x_{k+1}y_{k}^\mathrm{T}]\
&amp;#x26;= E\big[(Ax_k+w_k)(Cx_k+v_k)^\mathrm{T}\big]\
&amp;#x26;= AE[x_kx_k^\mathrm{T}]C^\mathrm{T}+E[w_kv_k^\mathrm{T}]\
&amp;#x26;= A\Sigma C^\mathrm{T}+S
\end{aligned}
$$
$$
\begin{aligned}
\Lambda_0&amp;#x26;= E[y_{k}y_{k}^\mathrm{T}]\
&amp;#x26;= E\big[(Cx_k+v_k)(Cx_k+v_k)^\mathrm{T}\big]\
&amp;#x26;= CE[x_kx_k^\mathrm{T}]C^\mathrm{T}+E[v_kv_k^\mathrm{T}]\
&amp;#x26;= C\Sigma C^\mathrm{T}+R
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;现在考虑 $\Lambda_i$，先把前面一个 $y$ 用 $Cx+v$ 转成 $x$，再用 $Ax+w$ 一直向前递归直到 $x_{k+1}{}$：
$$
\begin{aligned}
\Lambda_i&amp;#x26;= E[y_{k+i}y_{k}^\mathrm{T}]\
&amp;#x26;= E\big[(Cx_{k+i}+v_{k+i})y_{k}^\mathrm{T}\big]=CE\big[x_{k+i}y_{k}^\mathrm{T}\big]+0\
&amp;#x26;= CE\big[(Ax_{k+i-1}+w_{k+i-1})y_{k}^\mathrm{T}\big]=CAE\big[x_{k+i-1}y_{k}^\mathrm{T}\big]+0\
&amp;#x26;= CAE\big[(Ax_{k+i-2}+w_{k+i-2})y_{k}^\mathrm{T}\big]=CA^2E\big[x_{k+i-2}y_{k}^\mathrm{T}\big]+0\
&amp;#x26;=\ \ \cdots\ \ =CA^{i-1}E\big[x_{k+1}y_{k}^\mathrm{T}\big]+0\
&amp;#x26;= CA^{i-1}G
\end{aligned}
$$&lt;/p&gt;
&lt;h3&gt;核心原理&lt;/h3&gt;
&lt;p&gt;说穿了其实就是“用样本均值代替期望”。也即，只要观测的次数 $j$ 足够大，我就可以认为
$$
E[X]=\dfrac1j\sum\limits_{k=0}^{j-1}x_k
$$&lt;/p&gt;
&lt;p&gt;用这个思路，有如下观察：
$$
\begin{aligned}
\Lambda_i&amp;#x26;= E[y_{k+i}y_k^\mathrm{T}]\
&amp;#x26;= \dfrac1j\sum\limits_{k=0}^{j-1}y_{k+i}y_k^\mathrm{T}\
&amp;#x26;= \dfrac1j\begin{bmatrix}y_i&amp;#x26;y_{i+1}&amp;#x26;\cdots&amp;#x26;y_{i+j-1}\end{bmatrix}\begin{bmatrix}y_0^\mathrm{T}\y_{1}^\mathrm{T}\\vdots\y_{j-1}^\mathrm{T}\end{bmatrix}\
&amp;#x26;= \dfrac1jY_{i,,j}Y_{0,,j}^\mathrm{T}
\end{aligned}
$$
其中大写 $Y$ 的含义和 N4SID 中提到的是一样的，下角标第一个数表示打包的起点，第二个数表示打包的个数&lt;/p&gt;
&lt;p&gt;此时我定义：
$$
\Phi_{[A,,B]}=\dfrac1jAB^\mathrm{T}
$$&lt;/p&gt;
&lt;p&gt;那么
$$
\Lambda_i=\Phi_{[Y_{i,,j},,Y_{0,,j}]}
$$&lt;/p&gt;</content:encoded><h:img src="/_astro/subspace-identification.CIIDTQDX.png"/><enclosure url="/_astro/subspace-identification.CIIDTQDX.png"/></item><item><title>控制科学笔记 - 空间投影</title><link>https://chinosan.com/blog/control-science/space-projection</link><guid isPermaLink="true">https://chinosan.com/blog/control-science/space-projection</guid><description>《控制科学Ⅰ》期末速通笔记。课件太抽象了 咱来点接地气的</description><pubDate>Tue, 10 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;h2&gt;QR分解/LQ分解&lt;/h2&gt;
&lt;p&gt;即将矩阵分解为“正交矩阵$Q$ $\times$ 上三角矩阵$R$”的形式。其中 $Q$ 为&lt;strong&gt;单位正交向量组&lt;/strong&gt;拼起来的矩阵，$R$ 为&lt;strong&gt;对角线下方（不含）全零&lt;/strong&gt;的矩阵。&lt;/p&gt;
&lt;h3&gt;为什么要QR分解&lt;/h3&gt;
&lt;p&gt;我们经常需要解 $A\vec x=\vec b$。如果 $A$ 是上三角阵，相当于已经做好高斯消元了（因为上三角相当于阶梯形方程组），那么只需要从下往上回代就解完了&lt;/p&gt;
&lt;p&gt;如果不是上三角阵，那么就需要求 $\vec x=A^{-1}\vec b$，求逆太难了。但是我们知道正交矩阵的求逆非常简单：$Q^{-1}=Q^{\rm T}{}$&lt;/p&gt;
&lt;p&gt;结合二者：如果能够分解成 $A=QR$，那么 $QR,\vec x=\vec b\Rightarrow R\vec x=Q^{\rm T},\vec b$，只需要通过一次转置就可以转化为好解的阶梯形方程组&lt;/p&gt;
&lt;h3&gt;方法&lt;/h3&gt;
&lt;p&gt;将 $A$ 按列分块，把列向量组正交化。然后把这些向量模长归一，拼在一起就是 $Q$。这种求 QR 分解的方法叫做 Gram-Schmidt 正交化方法。&lt;em&gt;但是实际运用一般不用这个方法，涉及减法可能丢失精度。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Gram-Schmidt 标准正交化：每进来一个向量，就从这个向量中减去它在已有向量上的投影（投影长 $\times$ 单位方向向量），然后再归一化
例如 $A=\begin{bmatrix}\alpha_1&amp;#x26;\alpha_2&amp;#x26;\alpha_3\end{bmatrix}$。首先正交化 $\lbrace\alpha_1,\alpha_2,\alpha_3\rbrace$
$$
\begin{aligned}
\beta_1 &amp;#x26;= \alpha_1\
\beta_2 &amp;#x26;= \alpha_{2}-{(\alpha_2,u_1)}u_{1}\
\beta_3 &amp;#x26;= \alpha_{3}-{(\alpha_3,u_1)}u_{1}-{(\alpha_3,u_2)}u_2
\end{aligned}
\Longrightarrow\ \
\begin{aligned}
u_1 &amp;#x26;= \beta_1,/,||\beta_1||\
u_2 &amp;#x26;= \beta_2,/,||\beta_2||\
u_3 &amp;#x26;= \beta_3,/,||\beta_3||
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;然后把减号项移到左边，即用 $u$ 表示 $w$，写成矩阵形式自然就是 QR 分解了
$$
A=[\alpha_1,\alpha_2,\alpha_3]=[u_1, u_2, u_3]
\begin{bmatrix}
||\beta_1|| &amp;#x26; {(\alpha_2,u_1)} &amp;#x26; {(\alpha_3,u_1)}\
0 &amp;#x26; ||\beta_2|| &amp;#x26; {(\alpha_3,u_2)}\
0 &amp;#x26; 0 &amp;#x26; ||\beta_3||
\end{bmatrix}
$$&lt;/p&gt;
&lt;h3&gt;约化QR和完全QR&lt;/h3&gt;
&lt;p&gt;$u$ 不一定是3列的，因此 $Q$ 也不一定是方阵，但是不影响 $Q^{\rm T} Q=I$ 这个事。因此所有计算都是对的，只是公式上需要把“逆”改成“伪逆”。这种叫做&lt;strong&gt;约化QR分解&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;伪逆矩阵 $A^\dagger$ 满足以下四个 Penrose 条件：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;$A A^\dagger A = A$&lt;/li&gt;
&lt;li&gt;$A^\dagger A A^\dagger = A^\dagger$&lt;/li&gt;
&lt;li&gt;$(A A^\dagger)^{\rm T} = A A^\dagger$&lt;/li&gt;
&lt;li&gt;$(A^\dagger A)^{\rm T} = A^\dagger A$&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;当矩阵 $A$ 是方阵且可逆时：其伪逆 $A^\dagger$ 就是它的逆矩阵 $A^{-1}$，并且此时 $A^{-1}$ 既是左逆也是右逆。&lt;/li&gt;
&lt;li&gt;当矩阵 $A$ 是列满秩矩阵（$A$ 是 $m \times n$ 矩阵且秩为 $n$，$m \geq n$）时：伪逆矩阵 $A^\dagger$ 就是它的左逆 $A^L$，满足 $A^L A = I_n$。因为在这种情况下，$A^{\rm T} A$ 是可逆的，伪逆矩阵可以表示为 $A^\dagger = (A^{\rm T} A)^{-1} A^{\rm T}$。&lt;/li&gt;
&lt;li&gt;当矩阵 $A$ 是行满秩矩阵（$A$ 是 $m \times n$ 矩阵且秩为 $m$，$m \leq n$）时：伪逆矩阵 $A^\dagger$ 就是它的右逆 $A^R$，满足 $A A^R = I_m$。此时，伪逆矩阵可以表示为 $A^\dagger = A^{\rm T} (A A^{\rm T})^{-1}$。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果仍然想要 $Q$ 是方阵，就再多引入几个正交基补成方阵即可，这叫做&lt;strong&gt;完全QR分解&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;LQ分解&lt;/h3&gt;
&lt;p&gt;即对 $A^{\rm T}$ 进行 QR 分解。$L$ 表示下三角矩阵。假定 $A$ 的 QR 分解为 $A=QR$，则 $A^{\rm T}=R^{\rm T} Q^{\rm T}$。记 $L=R^{\rm T}$，这是一个下三角矩阵，也即 LQ 分解的结果表示为
$$
A^{\rm T}=LQ^{\rm T}
$$&lt;/p&gt;
&lt;p&gt;这里写 $Q^{\rm T}$ 而不写 $Q$，可以不用管，这些都是记号上的琐碎。$Q^{\rm T}$ 只是为了表示“行向量正交化”，而以前的 $Q$ 则表示“列向量正交化”。&lt;/p&gt;
&lt;p&gt;总之操作上只需要记住，LQ分解就是“对行向量组正交化”&lt;/p&gt;
&lt;h2&gt;正交投影/斜交投影&lt;/h2&gt;
&lt;p&gt;首先，什么是空间的正交：我们说两个空间正交，就是说在两个空间中各取一任意向量，这两个向量都是正交的。曰：若两空间正交，则各自的正交基也正交&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./4space.png&quot; alt=&quot;四个空间的正交性|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;投影的概念和之前是一样的。理解上你先假设空间是一维的，用向量当中的投影概念来理解。&lt;/p&gt;
&lt;p&gt;我们这里考虑的空间是&lt;strong&gt;矩阵行空间&lt;/strong&gt;。$A/B$，表示求 $A$ 的行空间在 $B$ 的行空间上的投影。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./ortho_proj.png&quot; alt=&quot;正交投影|500&quot;&gt;&lt;/p&gt;
&lt;h3&gt;投影矩阵&lt;/h3&gt;
&lt;p&gt;例如我要将某个东西投影到 $B$ 的行空间，我希望“投影”这个操作可以使用一个矩阵来表示，记为 $\Pi_B$。也即，如果我要求向量 $x$ 在 ${\rm row}(B)$ 上的投影，只需要左乘投影矩阵即可：$\Pi_Bx$&lt;/p&gt;
&lt;p&gt;投影后的向量应当满足：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;首先它肯定得先 $\in{\rm row}(B)$，不然怎么叫“在 ${\rm row}(B)$”上的投影呢？所以肯定是 $B$ 每一行的线性组合，即存在某列向量 $y$ 使得 $\Pi_Bx=B^{\rm T} y$&lt;/li&gt;
&lt;li&gt;减掉投影结果之后，剩下的东西应该垂直于投影面，这是投影“正交性”的内涵。即 $x-\Pi_Bx$ 应垂直于 ${\rm row}(B)$，也就是垂直于 $B$ 的每一行，即 $B(x-\Pi_Bx)=\vec 0$&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;先消 $\Pi_B$，解得 $y=(BB^{\rm T})^{-1}Bx$，于是 $\Pi_Bx=B^{\rm T} y=B^{\rm T} (BB^{\rm T})^{-1}Bx$，也即投影矩阵
$$
\Pi_B=B^{\rm T} (BB^{\rm T})^{-1}B
$$&lt;/p&gt;
&lt;p&gt;曰：投影矩阵是对称的。这很好证：外面两个 $B$ 没变，而对于中间那个 $(BB^{\rm T})^{-1}$，只需要证明求逆（或伪逆）和转置可以交换：
$$
\begin{aligned}
MM^{-1}=I\ \ {\xRightarrow{\rm T}}\ (MM^{-1})^{\rm T}&amp;#x26;=I^{\rm T}=I\
(M^{-1})^{\rm T} {\color{orange}M^{\rm T}}&amp;#x26;=I\
(M^{-1})^{\rm T}=(&amp;#x26;{\color{orange}M^{\rm T}})^{-1}
\end{aligned}
$$&lt;/p&gt;
&lt;h3&gt;正交投影&lt;/h3&gt;
&lt;p&gt;以前使用投影我们得到了“正交分解”，这里也希望做类似操作，即将空间拆成“平行分量”与“垂直分量”，即
$$
A=A/B+A/B^\perp
$$&lt;/p&gt;
&lt;p&gt;$A/B$，也即“$A$ 的行空间投影到 $B$ 的行空间”，只需要把它的每一行都投影过去即可。只不过投影矩阵要作用在列向量上、且返回一个列向量，因此乘投影矩阵之前要先把 $A$ 转置一下，最后还得转回来：
$$
A/B=(\Pi_BA^{\rm T})^{\rm T}=A\Pi_B^{\rm T}=A\Pi_B=AB^{\rm T} (BB^{\rm T})^{-1}B
$$
这个就是 ${\rm row}(A)$ 在 ${\rm row}(B)$ 上的分量（投影）。进一步推得，垂直方向的分量
$$
A/B^\perp=A-A\Pi_B=A(I-\Pi_B)
$$&lt;/p&gt;
&lt;h3&gt;使用LQ分解求正交投影&lt;/h3&gt;
&lt;p&gt;一个用于数值计算的方法。&lt;/p&gt;
&lt;p&gt;我们说“正交分解”，就是把一个向量根据“某一给定向量”拆成平行与垂直两部分。对应到正交投影，就是要把 ${\rm row}(A)$ 以某种方式“组合进” ${\rm row}(B)$ 中。而正交化正是其中一种方法。&lt;/p&gt;
&lt;p&gt;考虑 $M=\begin{bmatrix}B\A\end{bmatrix}$，对它的行做正交化。这样当做完矩阵 $B$ 的部分时，$B$ 的正交基就出来了。接下来开始做矩阵 $A$ 的部分，它把 $A$ 行空间中“平行于 $B$”的部分全部抹掉了，只剩下“垂直于 $B$”的部分。&lt;/p&gt;
&lt;p&gt;做完之后，把正交矩阵按 $B$ 和 $A$ 分成上下两块
$$
M=\begin{bmatrix}B\A\end{bmatrix}=LQ^{\rm T}=\begin{bmatrix}L_{11}&amp;#x26;\boldsymbol0 \ L_{21}&amp;#x26;L_{22}\end{bmatrix}\begin{bmatrix}Q_1^{\rm T}\ Q_2^{\rm T}\end{bmatrix}
$$
这上下两块，上面一块是 ${\rm row}(B)$ 的正交基，下面一块是 ${\rm row}(A)$ 中垂直于 ${\rm row}(B)$ （也即 $B^\perp$）的那一部分的正交基。&lt;/p&gt;
&lt;p&gt;单独提取 $A$ 的部分：$A=L_{21}Q_1^{\rm T}+L_{22}Q_2^{\rm T}$，前一项就是 $B$ 基线性组合，后一项就是 $B^\perp$ 基线性组合，所以前一项就是落在 ${\rm row}(B)$ 里的 $A/B$，后一项就是落在 ${\rm row}(B)^\perp$ 里的 $A/B^\perp$。也即&lt;/p&gt;
&lt;p&gt;$$
\begin{aligned}
A/B&amp;#x26;= L_{21}Q_1^{\rm T}\
A/B^\perp&amp;#x26;= L_{22}Q_2^{\rm T}
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;这种理解其实不太准确，之后LQ分解求斜交投影时会细说。如果要严谨，应该这样写：&lt;/p&gt;
&lt;h3&gt;斜交投影&lt;/h3&gt;
&lt;p&gt;引入第二个投影空间 ${\rm row}(C)$，构建联合投影空间。垂直分量和之前类似，即 $A\big/\begin{bmatrix}B\C\end{bmatrix}^\perp$。平行分量 $A\big/\begin{bmatrix}B\C\end{bmatrix}$ 进一步拆到两个投影空间上，斜杠后面是投影空间、角标是&lt;strong&gt;另一个投影空间&lt;/strong&gt;。于是
$$A=A/!_CB+A/!_BC+A\big/\begin{bmatrix}B\C\end{bmatrix}^\perp$$&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./obli_proj.png&quot; alt=&quot;斜交投影|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;下面考虑怎么求 $A/!_CB$。&lt;/p&gt;
&lt;p&gt;之前是 $A/B=AB^{\rm T} (BB^{\rm T})^{-1}B$，把 $B$ 换成 $\begin{bmatrix}B\C\end{bmatrix}$：
$$
\begin{aligned}
A/\begin{bmatrix}B\C\end{bmatrix}&amp;#x26;= A\begin{bmatrix}B\C\end{bmatrix}^{\rm T} \left(\begin{bmatrix}B\C\end{bmatrix}\begin{bmatrix}B\C\end{bmatrix}^{\rm T}\right)^{-1}\begin{bmatrix}B\C\end{bmatrix}\
&amp;#x26;= A\left[B^{\rm T},,C^{\rm T}\right]\left(\begin{bmatrix}B\C\end{bmatrix}\left[B^{\rm T},,C^{\rm T}\right]\right)^{-1}\begin{bmatrix}B\C\end{bmatrix}
\end{aligned}
$$
这个式子仍然可以看作是 $A\Pi$ 的形式，即投到 $BC$ 的联合行空间上。&lt;/p&gt;
&lt;p&gt;我们想要的 $A/!_CB$ 只是 ${\rm row}(B)$ 上的分量，所以只需要取 $B$ 那一部分的基，也就是说只需要提取前几行 $B$ 的部分、最后 $C$ 的部分直接去掉。因此
$$
\begin{aligned}
A/!_CB&amp;#x26;= \left(A\big/\begin{bmatrix}B\C\end{bmatrix}\right)\begin{bmatrix}I&amp;#x26;{\boldsymbol0}\{\boldsymbol0}&amp;#x26;{\boldsymbol0}\end{bmatrix}\
&amp;#x26;= A\left[B^{\rm T},,C^{\rm T}\right]\left(\begin{bmatrix}B\C\end{bmatrix}\left[B^{\rm T},,C^{\rm T}\right]\right)^{-1}\begin{bmatrix}B\C\end{bmatrix}\begin{bmatrix}I&amp;#x26;{\boldsymbol0}\{\boldsymbol0}&amp;#x26;{\boldsymbol0}\end{bmatrix}\
&amp;#x26;= A\left[B^{\rm T},,C^{\rm T}\right]\left(\begin{bmatrix}B\C\end{bmatrix}\left[B^{\rm T},,C^{\rm T}\right]\right)^{-1}\begin{bmatrix}B\{\boldsymbol0}\end{bmatrix}
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;对于 $A/!_BC$，不能简单地提取后几行。因为 $C$ 在联合空间的下面，做正交化的时候 ${\rm row}(C)$ 的基向量中平行于 ${\rm row}(B)$ 的部分都被抹掉了，因此后几行根本不是 ${\rm row}(C)$ 原来的基。正确的做法是，在构造联合空间时把 $C$ 放在上面：
$$
\begin{aligned}
A/!_BC&amp;#x26;= \left(A\big/\begin{bmatrix}C\B\end{bmatrix}\right)\begin{bmatrix}I&amp;#x26;{\boldsymbol0}\{\boldsymbol0}&amp;#x26;{\boldsymbol0}\end{bmatrix}\
&amp;#x26;= A\left[C^{\rm T},,B^{\rm T}\right]\left(\begin{bmatrix}C\B\end{bmatrix}\left[C^{\rm T},,B^{\rm T}\right]\right)^{-1}\begin{bmatrix}C\B\end{bmatrix}\begin{bmatrix}I&amp;#x26;{\boldsymbol0}\{\boldsymbol0}&amp;#x26;{\boldsymbol0}\end{bmatrix}\
&amp;#x26;= A\left[C^{\rm T},,B^{\rm T}\right]\left(\begin{bmatrix}C\B\end{bmatrix}\left[C^{\rm T},,B^{\rm T}\right]\right)^{-1}\begin{bmatrix}C\{\boldsymbol0}\end{bmatrix}
\end{aligned}
$$&lt;/p&gt;
&lt;h3&gt;使用LQ分解求斜交投影&lt;/h3&gt;
&lt;p&gt;思路和正交是一样的，投影空间放上面、被投影空间放到下面，即
$$
M=\begin{bmatrix}B\C\A\end{bmatrix}
$$
LQ 分解之，$Q^{\rm T}$ 矩阵按 $B$、$C$、$A$ 分成上中下三块
$$
M=\begin{bmatrix}B\C\A\end{bmatrix}=
\begin{bmatrix}
L_{11} &amp;#x26; 0 &amp;#x26; 0 \
L_{21} &amp;#x26; L_{22} &amp;#x26; 0 \
L_{31} &amp;#x26; L_{32} &amp;#x26; L_{33}
\end{bmatrix}
\begin{bmatrix}
Q_1^{\rm T} \
Q_2^{\rm T} \
Q_3^{\rm T}
\end{bmatrix}
$$
从中提取 $A=L_{31}Q_1^{\rm T}+L_{32}Q_2^{\rm T}+L_{33}Q_3^{\mathrm{T}}$&lt;/p&gt;
&lt;p&gt;这时候，&lt;strong&gt;不能像之前正交投影一样直接对应分解式&lt;/strong&gt;。$L_{33}Q_3^{\rm T}$ 的确对应 $A\big/\begin{bmatrix}B;C\end{bmatrix}^\perp$，但是不能说 $L_{31}Q_1^{\rm T}=A/!&lt;em&gt;CB$，也不能说 $L&lt;/em&gt;{32}Q_2^{\rm T}=A/!_BC$，因为 $B$ 和 $C$ &lt;strong&gt;不一定正交&lt;/strong&gt;。&lt;em&gt;见下图，注意这是平面图而非立体图，${\rm row}(C)$ 是斜交轴&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./space-projection.jpg&quot; alt=&quot;斜交投影的LQ分解示意图|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;$Q_1^{\rm T}$ 的确是 ${\rm row}(B)$ 的基，但是 $Q_2^{\rm T}$ 不是 ${\rm row}(C)$ 的基，只是 ${\rm row}(C)$ 垂直于 ${\rm row}(B)$ 的部分。因此为了表达 ${\rm row}(C)$ 的基，我们从 LQ 分解中写出 $C$ 的提取式
$$
C=L_{21}Q_1^{\rm T}+L_{22}Q_2^{\rm T}
$$
解得 $Q_2^{\rm T}=L_{22}^{-1}(C-L_{21}Q_1^{\rm T})$，我们把这个东西往 $L_{32}Q_2^{\rm T}$ 里面代：
$$
\begin{aligned}
A&amp;#x26;= L_{31}Q_1^{\rm T}+L_{32}Q_2^{\rm T}+L_{33}Q_3^{\rm T}\
&amp;#x26;= L_{31}Q_1^{\rm T}+L_{32}L_{22}^{-1}(C-L_{21}Q_1^{\rm T})+L_{33}Q_3^{\rm T}\
&amp;#x26;= (L_{31}-L_{32}L_{22}^{-1}L_{21})Q_1^{\rm T}+L_{32}L_{22}^{-1}C+L_{33}Q_3^{\rm T}
\end{aligned}
$$
这三个基就出来了。因此
$$
\begin{aligned}
A/!&lt;em&gt;CB&amp;#x26;= (L&lt;/em&gt;{31}-L_{32}L_{22}^{-1}L_{21})Q_1^{\rm T}\
A/!&lt;em&gt;BC&amp;#x26;= L&lt;/em&gt;{32}L_{22}^{-1}C\
&amp;#x26;= L_{32}L_{22}^{-1}\begin{bmatrix}L_{21}&amp;#x26;L_{22}\end{bmatrix}\begin{bmatrix}Q_1^{\rm T}\Q_2^{\rm T}\end{bmatrix}\
A\big/\begin{bmatrix}B\C\end{bmatrix}^\perp&amp;#x26;= L_{33}Q_3^{\rm T}
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;推论（用公式或看图立即可得）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$A/!_AC=0$&lt;/li&gt;
&lt;li&gt;$A/!_CA=A$&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="/_astro/space-projection.DwIy0EY6.jpg"/><enclosure url="/_astro/space-projection.DwIy0EY6.jpg"/></item><item><title>数学分析 记忆佛脚（下）</title><link>https://chinosan.com/blog/math-analysis/fojiao2</link><guid isPermaLink="true">https://chinosan.com/blog/math-analysis/fojiao2</guid><description>数学分析（二）考前重点速通。多元函数微积分、重积分、曲线积分与曲面积分、级数、广义积分、傅里叶级数</description><pubDate>Sun, 23 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;目录（点击章节名称跳转到原始笔记）&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;./fojiao1&quot;&gt;（数学分析 记忆佛脚 上）↗&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主线第一篇：极限论
&lt;ul&gt;
&lt;li&gt;Chapter 1 函数与极限&lt;/li&gt;
&lt;li&gt;Chapter 2 导数与微分&lt;/li&gt;
&lt;li&gt;Chapter 3 函数与极限二周目&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;主线第二篇：积分学
&lt;ul&gt;
&lt;li&gt;Chapter 4 不定积分&lt;/li&gt;
&lt;li&gt;Chapter 5 定积分&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;支线 1：Chapter 6 线性空间理论概述&lt;/li&gt;
&lt;li&gt;支线 2：Chapter 7 常微分方程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;./fojiao2&quot;&gt;（数学分析 记忆佛脚 下）↗&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主线第三篇：多元微积分
&lt;ul&gt;
&lt;li&gt;Chapter 8 欧氏空间上的函数与极限&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;./chapter9&quot;&gt;Chapter 9 多元函数微分学 ↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Chapter 10 重积分&lt;/li&gt;
&lt;li&gt;Chapter 11 曲线积分与曲面积分&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;主线第四篇：级数与广义积分
&lt;ul&gt;
&lt;li&gt;Chapter 12 数项级数&lt;/li&gt;
&lt;li&gt;Chapter 13 函数项级数&lt;/li&gt;
&lt;li&gt;Chapter 14 广义积分与含参变量积分&lt;/li&gt;
&lt;li&gt;Chapter 15 Fourier级数与Fourier积分&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Chapter 8 欧氏空间上的函数与极限&lt;/h2&gt;
&lt;h3&gt;8.1 欧氏空间与解析几何&lt;/h3&gt;
&lt;p&gt;（这一节最终放到第六章中）&lt;br&gt;
点列的极限&lt;/p&gt;
&lt;h3&gt;8.2 开集与闭集&lt;/h3&gt;
&lt;p&gt;补集、内点、外点、边界点、孤立点、聚点；聚点三个等价定义：点的任一邻域都有集合中无穷多个点；点的任一邻域都有集合中不同于这个点的点；集合中可以构造出一个点列（无穷多项不为零）收敛于这个点&lt;/p&gt;
&lt;p&gt;开集、闭集（单点集为闭集）；开集之补为闭，闭集之补为开；开集之并为开集，闭集之交为闭集，开集之有限交为开集，闭集之有限并为闭集&lt;/p&gt;
&lt;h3&gt;8.3 完备性等价表述&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;矩形套定理. 推广：Cantor 闭区域套定理&lt;/li&gt;
&lt;li&gt;BW 定理，有界点列必有收敛子列. 推广：聚点原理：有界无穷点集必有聚点&lt;/li&gt;
&lt;li&gt;Cauchy 收敛准则，点列收敛 $\Leftrightarrow\forall\varepsilon&gt;0,\exists N \ \text{s.t.}\ k,l&gt;N$ 时 $|\vec{x_k}-\vec{x_l}|&amp;#x3C;\varepsilon$&lt;/li&gt;
&lt;li&gt;Heine-Borel 定理，紧集等价于有界闭集. 紧集：任意开覆盖必有有限子覆盖的集合&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;8.4 多元函数的极限与连续&lt;/h3&gt;
&lt;p&gt;多元函数，多元函数在某点的极限，多元函数的连续. 多元初等函数在定义域内连续. 连续的复合还是连续&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;存在极限（全面极限）：不管怎么趋向都有极限且极限相同.&lt;/li&gt;
&lt;li&gt;累次极限：先 x 取极限后 y 取极限或者先 y 后 x.&lt;/li&gt;
&lt;li&gt;关系：
&lt;ul&gt;
&lt;li&gt;累次极限与全面极限无关，累次极限之间也无关.&lt;/li&gt;
&lt;li&gt;如果全面极限存在，累次极限中先取的极限也存在，则累次极限必存在，且等于全面极限.&lt;/li&gt;
&lt;li&gt;如果全面极限存在且两个累次极限都存在，则它们都相等&lt;/li&gt;
&lt;li&gt;函数在连续点上的累次极限与全面极限均存在且相等&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;8.5 向量值函数&lt;/h3&gt;
&lt;p&gt;向量值函数连续，等价于每一个分函数在这个点都连续&lt;/p&gt;
&lt;h3&gt;8.6 有界闭集上的连续函数&lt;/h3&gt;
&lt;p&gt;边界点的邻域：邻域与集合相交的部分. 以此定义紧集上的连续. “有界闭集上的连续函数”，以下简称“闭连函数”&lt;/p&gt;
&lt;p&gt;连续映射将紧集映射到紧集. 由此推出有界性定理（闭连函数必有界）、最值定理（闭连函数的值域存在最大最小值）.&lt;/p&gt;
&lt;p&gt;连通集. 连通有界闭集才是闭区间的推广. 连续映射把连通集映射到连通集（特别地，连续函数将连通紧集集映射到闭区间）. 由此推出介值定理.&lt;/p&gt;
&lt;p&gt;一致连续：存在一个与点的选取无关的 $\varepsilon$. Cantor 定理：闭连必一致连&lt;/p&gt;
&lt;h2&gt;Chapter 9 多元函数微分学&lt;/h2&gt;
&lt;p&gt;分为五个副章节：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Section 1: 9.1~9.6 偏导与全微分：偏导，全微分，高阶偏导，高阶微分，向量值函数导数微分，复合函数微分&lt;/li&gt;
&lt;li&gt;Section 2: 9.7~9.8 多元中值定理：中值定理，Taylor 公式&lt;/li&gt;
&lt;li&gt;Section 3: 9.9~9.10 隐函数：隐函数存在定理，逆映射存在定理&lt;/li&gt;
&lt;li&gt;Section 4: 9.11~9.12 切线法平面、法线切平面&lt;/li&gt;
&lt;li&gt;Section 5: 9.13~9.14 多元函数极值：无条件极值，条件极值&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9.1 偏导&lt;/h3&gt;
&lt;p&gt;偏导的定义，方向导数的定义. 注意方向导数要求除以的方向向量要是单位向量. 方向向量可以表示为 $(\cos\alpha,\cos\beta,\cos\gamma,\cdots)$. 当方向与坐标轴相同时等于偏导，相反时等于偏导的负数. 对多元函数而言，可导即是可偏导.&lt;/p&gt;
&lt;p&gt;“可导必连续”不成立，原因：偏导只考虑导的那个方向的性质，而连续要所有方向的性质&lt;/p&gt;
&lt;h3&gt;9.2 全微分&lt;/h3&gt;
&lt;p&gt;定义：$\exists A,B \ \text{s.t.}{}$ 某一点处 $\Delta f=A\Delta x+B\Delta y+o(\sqrt{(\Delta x)^2+(\Delta y)^2})$，则 $f$ 可微，${\rm d}f=A {\rm d}x+B {\rm d}y$ 称为 $f$ 在该点的全微分&lt;/p&gt;
&lt;p&gt;可微是一个很强的条件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可微 $\Rightarrow$ 可导，$A=f_x(x_0,y_0)$，$B=f_y(x_0,y_0)$&lt;/li&gt;
&lt;li&gt;可微 $\Rightarrow$ 方向导数存在，且对于 $\vec v=(\cos\alpha,\cos\beta,\cdots)$，$\dfrac{\partial f}{\partial\vec v}=f_x(x_0,y_0,\cdots)\cdot\cos\alpha+f_y(x_0,y_0,\cdots)\cdot\cos\beta+\cdots$&lt;/li&gt;
&lt;li&gt;可微 $\Rightarrow$ 连续&lt;/li&gt;
&lt;li&gt;可导 $\xcancel{\Rightarrow}{}$ 可微，可导都推不出连续了当然推不出可微&lt;/li&gt;
&lt;li&gt;可导+连续+任一方向导数都存在 $\xcancel{\Rightarrow}{}$ 可微&lt;/li&gt;
&lt;li&gt;可微唯一充分条件：偏导均连续 $\Rightarrow$ 可微&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9.3 高阶偏导&lt;/h3&gt;
&lt;p&gt;两种表示方法：$\dfrac{\partial^2f}{\partial x\partial y}{}$，$f_{xy}{}$. 注意两个的顺序，第一种是先 y 后 x，第二种是先 x 后 y. 混合偏导之间不一定相等.&lt;/p&gt;
&lt;p&gt;混合偏导连续 $\Rightarrow$ 混合偏导相等. 若函数有 $n$ 阶连续偏导，导的次数 $\leqslant n$，则混合偏导的顺序不影响结果. 注：反过来则不行，即混合偏导相等 $\xcancel\Rightarrow$ 混合偏导连续&lt;/p&gt;
&lt;p&gt;Leibniz 二项展开仍然可以用&lt;/p&gt;
&lt;h3&gt;9.4 高阶微分&lt;/h3&gt;
&lt;p&gt;${\rm d}f=\dfrac{\partial f}{\partial x}{\rm d}x+\dfrac{\partial f}{\partial y}{\rm d}y$，若 $f_x$、$f_y$ 可微、$f_{xy}{}$、$f_{yx}{}$ 连续，则可以再微分，${\rm d}^2f=({\rm d}x\dfrac{\partial}{\partial x}+{\rm d}y\dfrac{\partial}{\partial y})^2f$. 类推：${\rm d}^kf=({\rm d}x\dfrac{\partial}{\partial x}+{\rm d}y\dfrac{\partial}{\partial y})^kf$.&lt;/p&gt;
&lt;p&gt;对 $n$ 元函数：${\rm d}^kf=({\rm d}x_1\dfrac{\partial}{\partial x_1}+{\rm d}x_2\dfrac{\partial}{\partial x_2}+\cdots+{\rm d}x_n\dfrac{\partial}{\partial x_n})^kf$.&lt;/p&gt;
&lt;h3&gt;9.5 向量值函数的导数与微分&lt;/h3&gt;
&lt;p&gt;向量值函数：许多数量值函数的组合.&lt;/p&gt;
&lt;p&gt;导数 $\vec{f}&apos;(\vec{x_0})$ 为 Jacobi 矩阵，同一行为同一分函数，同一列为同一自变量.&lt;/p&gt;
&lt;p&gt;若存在矩阵 $A \ \text{s.t.}\ \Delta\vec f=\vec f(\vec{x_0}+\Delta \vec{x})-f(\vec{x_0})=A\Delta \vec{x}+o(\Delta\vec{ x})$ 则称 $f$ 在 $\vec{x_0}{}$ 可微，${\rm d}\vec f=A {\rm d}\vec{x}{}$.&lt;/p&gt;
&lt;p&gt;若可微则 $A=\vec{f}&apos;(\vec{x_0})$&lt;/p&gt;
&lt;p&gt;可微等价于每个分函数都可微&lt;/p&gt;
&lt;h3&gt;9.6 复合函数微分&lt;/h3&gt;
&lt;p&gt;链式法则：外层导一下 $\times$ 内层导一下，中间的乘号是矩阵相乘. $z=f(u,v),\vec g=\left{\begin{matrix}u=u(x,y)\v=v(x,y)\end{matrix}\right.$，则 $\dfrac{\partial z}{\partial x}=\dfrac{\partial f}{\partial u} \dfrac{\partial u}{\partial x}+\dfrac{\partial f}{\partial v} \dfrac{\partial v}{\partial x}{}$，$\dfrac{\partial z}{\partial y}=\dfrac{\partial f}{\partial u} \dfrac{\partial u}{\partial y}+\dfrac{\partial f}{\partial v}\dfrac{\partial v}{\partial y}{}$&lt;/p&gt;
&lt;p&gt;链式法则成立条件：外层函数可微&lt;/p&gt;
&lt;p&gt;一阶全微分有形式不变性：函数自变量不管是否是中间变量，其微分的公式是一样的.&lt;/p&gt;
&lt;p&gt;高阶微分不具有形式不变性，除非中间变量是线性变量&lt;/p&gt;
&lt;h3&gt;9.7 中值定理&lt;/h3&gt;
&lt;p&gt;$f(x_0+\Delta x,y_0+\Delta y)-f(x_0,y_0)=f_x(x_0+\theta\Delta x,y_0+\theta\Delta y)\Delta x+f_y(x_0+\theta\Delta x,y_0+\theta\Delta y)\Delta y$，$0&amp;#x3C;\theta&amp;#x3C;1$，四个 $\theta$ 是一样的. 由这个式子可知，两个点的连线必须在集合内. 这里引出凸区域和星形域.&lt;/p&gt;
&lt;p&gt;推论：函数在区域上偏导恒为零，则函数为常函数&lt;/p&gt;
&lt;h3&gt;9.8 Taylor 公式&lt;/h3&gt;
&lt;p&gt;$$
\begin{aligned}
f(x_0+\Delta x,y_0+\Delta y)=f&amp;#x26;(x_0,y_0)\
+&amp;#x26;(\Delta{x}\dfrac { {\rm d} } { {\rm d}x}+\Delta{y}\dfrac { {\rm d} } { {\rm d}y})f(x_0,y_0)\
+&amp;#x26;\dfrac{1}{2!}(\Delta{x}\dfrac{ {\rm d} } { {\rm d}x}+\Delta{y}\dfrac{ {\rm d} } { {\rm d}y})^2f(x_0,y_0)\
+&amp;#x26;\cdots\
+&amp;#x26;\dfrac{1}{k!}(\Delta{x}\dfrac{ {\rm d} } { {\rm d}x}+\Delta{y}\dfrac{ {\rm d} } { {\rm d}y})^kf(x_0,y_0)\
+&amp;#x26;\dfrac{1}{(k+1)!}(\Delta{x}\dfrac{ {\rm d} } { {\rm d}x}+\Delta{y}\dfrac{ {\rm d} } { {\rm d}y})^{k+1}f(x_0+\theta\Delta x,y_0+\theta\Delta y)
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;经常展开到两次：
$$
\begin{aligned}
f(x_0+\Delta x,y_0+\Delta y)=f&amp;#x26;(x_0,y_0)\
+&amp;#x26;f_x(x_0,y_0)\Delta x+f_y(x_0,y_0)\Delta y\
+&amp;#x26;f_{xx}(x,y)(\Delta x)^2+2f_{xy}(x,y)(\Delta x\Delta y)+f_{yy}(x,y)(\Delta y)^2
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;其中 $(x,y)=(x_0+\theta\Delta x,y_0+\theta\Delta y)$&lt;/p&gt;
&lt;p&gt;注意，用 Taylor 算高阶导数，&lt;strong&gt;除了要乘以 $k!$，还要除以 $C_k^m$（二项式系数）!!!&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;9.9 隐函数存在定理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;若
&lt;ol&gt;
&lt;li&gt;原方程（组）有零点&lt;/li&gt;
&lt;li&gt;各方程偏导连续&lt;/li&gt;
&lt;li&gt;对因变量求导不为零（Jacobi 行列式不为零）&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;则
&lt;ul&gt;
&lt;li&gt;存在隐函数&lt;/li&gt;
&lt;li&gt;隐函数连续&lt;/li&gt;
&lt;li&gt;隐函数可导，$\dfrac{\partial 因}{\partial 自}=-\dfrac{把分母中的因换成自}{第三条件的式子}{}$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如 $F(x_1,\cdots,x_n,y)=0$，若 $\dfrac{\partial F}{\partial y}\neq0$，则 $\dfrac{\partial y}{\partial x_i}=-\dfrac{\dfrac{\partial F}{\partial x_i} }{\dfrac{\partial F}{\partial y} }{}$&lt;/p&gt;
&lt;p&gt;例如 $F_j(x_1,\cdots,x_n,y_1,\cdots,y_m)=0$，若 $\dfrac{\partial(F_1,\cdots,F_j,\cdots,F_m)}{\partial(y_1,\cdots,y_j,\cdots,y_m)}\neq0$，则 $\dfrac{\partial y_j}{\partial x_i}=-\dfrac{\dfrac{\partial(F_1,\cdots,F_j,\cdots,F_m)}{\partial(y_1,\cdots,x_i,\cdots,y_m)} }{\dfrac{\partial(F_1,\cdots,F_j,\cdots,F_m)}{\partial(y_1,\cdots,y_j,\cdots,y_m)} }{}$&lt;/p&gt;
&lt;h3&gt;9.10 逆映射存在定理&lt;/h3&gt;
&lt;p&gt;$\vec f=\left{\begin{matrix}u=u(x,y)\v=v(x,y)\end{matrix}\right.$，把 $\vec f$ 作为隐函数塞进方程组 $\left{\begin{matrix}F(x,y,u,v)=u-u(x,y)=0\G(x,y,u,v)=v-v(x,y)=0\end{matrix}\right.$，当 $\vec f$ 行列式不为零时 $\dfrac{\partial(F,G)}{\partial(x,y)}\neq0$，唯一确定 $\vec g=\left{\begin{matrix}x=x(u,v)\y=y(u,v)\end{matrix}\right.$，就是 $\vec f$ 的逆映射，$\vec g$ 有连续导数，导数矩阵是 $\vec f$ 导数矩阵的逆矩阵&lt;/p&gt;
&lt;h3&gt;9.11 曲线的切线与法平面&lt;/h3&gt;
&lt;p&gt;曲线 $\left{\begin{matrix}x=x(t)\y=y(t)\z=z(t)\end{matrix}\right.$，$x_0=x(t_0)$，类推. 曲线在 $P_0(x_0,y_0,z_0)$ 处的切向量：$\vec\tau=(x&apos;(t_0),y&apos;(t_0),z&apos;(t_0))$&lt;/p&gt;
&lt;p&gt;曲线 $\left{\begin{matrix}F(x,y,z)=0\G(x,y,z)=0\end{matrix}\right.$. 曲线在 $P_0(x_0,y_0,z_0)$ 处的切向量：$\vec\tau=\left(\dfrac{\partial(F,G)}{\partial(y,z)},\dfrac{\partial(F,G)}{\partial(z,x)},\dfrac{\partial(F,G)}{\partial(x,y)}\right)$&lt;/p&gt;
&lt;p&gt;在 $P_0(x_0,y_0,z_0)$ 处的切向量 $\vec\tau=(a,b,c)$，则&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;切线 $\dfrac{x-x_0}{a}=\dfrac{y-y_0}{b}=\dfrac{z-z_0}{c}{}$，若分母是 $0$ 则分子恒为 $0$ 且这一项剥出连等式.&lt;/li&gt;
&lt;li&gt;法平面 $(x-x_0)a+(y-y_0)b+(z-z_0)c=0$&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9.12 曲面的法线与切平面&lt;/h3&gt;
&lt;p&gt;曲面 $F(x,y,z)=0$. 曲面在 $P_0(x_0,y_0,z_0)$ 处的法向量： $\vec n=(F_x,F_y,F_z)\big|_{(x_0,y_0,z_0)}{}$&lt;/p&gt;
&lt;p&gt;曲面 $z=f(x,y)$，改写为 $f(x,y)-z=0$. 曲面在 $P_0(x_0,y_0,z_0)$ 处的法向量： $\vec n=(f_x,f_y,-1)\big|_{(x_0,y_0)}{}$&lt;/p&gt;
&lt;p&gt;曲面 $\left{\begin{matrix}x=x(u,v)\y=y(u,v)\z=z(u,v)\end{matrix}\right.$. 曲面在 $P_0(x_0,y_0,z_0)$ 处的法向量： $\vec n=\left(\dfrac{\partial(y,z)}{\partial(u,v)},\dfrac{\partial(z,x)}{\partial(u,v)},\dfrac{\partial(x,y)}{\partial(u,v)}\right)\big|_{(u_0,v_0)}{}$&lt;/p&gt;
&lt;p&gt;在 $P_0(x_0,y_0,z_0)$ 处的法向量 $\vec n=(a,b,c)$，则&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;法线 $\dfrac{x-x_0}{a}=\dfrac{y-y_0}{b}=\dfrac{z-z_0}{c}{}$，若分母是 $0$ 则分子恒为 $0$ 且这一项剥出连等式.&lt;/li&gt;
&lt;li&gt;切平面 $(x-x_0)a+(y-y_0)b+(z-z_0)c=0$&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9.13 无条件极值&lt;/h3&gt;
&lt;p&gt;极值点必要条件：若可偏导则偏导必为零，对每个自变量偏导都是零&lt;/p&gt;
&lt;p&gt;极值判定定理：对某一点，泰展到二次，考虑二次项系数构成的二次型矩阵的定性，正定则为该点极小值点，负定则该点为极大值点，不定则不是极值点.&lt;/p&gt;
&lt;p&gt;注：正定：任意阶主子式行列式为正；负定：奇数阶主子式行列式为负，偶数阶主子式行列式为正.&lt;/p&gt;
&lt;p&gt;二元情形具体化为：令 $A=f_{xx}(x_0,y_0)$，$B=f_{xy}(x_0,y_0)$，$C=f_{yy}(x_0,y_0)$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$AC-B^2&gt;0$，$A&gt;0$，则正定，为极小值点&lt;/li&gt;
&lt;li&gt;$AC-B^2&gt;0$，$A&amp;#x3C;0$，则负定，为极大值点&lt;/li&gt;
&lt;li&gt;$AC-B^2&amp;#x3C;0$，不是极值点&lt;/li&gt;
&lt;li&gt;$AC-B^2=0$，情况不定&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;9.14 条件极值&lt;/h3&gt;
&lt;p&gt;条件极值点必要条件：Lagrange 乘数法，即将条件塞进同一个函数（Lagrange 函数 $L(x_1,\cdots,x_n,\lambda_1,\cdots,\lambda_m)$）求这个函数的无条件极值&lt;/p&gt;
&lt;p&gt;条件极值判定定理：对某一点，把 Lagrange 函数泰展到二次，考虑&lt;strong&gt;只含 $x$ 的&lt;/strong&gt;二次项系数构成的二次型矩阵的定性（因为作为限制条件，$\lambda$ 取值是固定的，在泰展中取值只能是本身，不存在变数），正定则为该点极小值点，负定则该点为极大值点，不定则&lt;strong&gt;情况不定&lt;/strong&gt;（限制条件内可能恒正或恒负）.&lt;/p&gt;
&lt;h2&gt;Chapter 10 重积分&lt;/h2&gt;
&lt;h3&gt;10.1 重积分的概念与性质&lt;/h3&gt;
&lt;p&gt;平面点集的面积，二重积分的概念，多重积分的概念&lt;/p&gt;
&lt;p&gt;性质：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;闭连必可积（闭连：有界闭集上的连续函数）&lt;/li&gt;
&lt;li&gt;可积必有界&lt;/li&gt;
&lt;li&gt;可积之线性组合也可积，积分值也线性组合&lt;/li&gt;
&lt;li&gt;可积相乘也可积，但积分值无关&lt;/li&gt;
&lt;li&gt;可积则绝对可积，$|\int f {\rm d}V|\leqslant\int|f|{\rm d}V$&lt;/li&gt;
&lt;li&gt;区域可加性&lt;/li&gt;
&lt;li&gt;保序性（$f\leqslant g\Rightarrow \int f {\rm d}V\leqslant\int g {\rm d}V$）&lt;/li&gt;
&lt;li&gt;介值性（$\inf f\cdot V\leqslant\int f {\rm d}V\leqslant \sup f\cdot V$）&lt;/li&gt;
&lt;li&gt;典中典：$f$ 闭连，非负，积分值为 $0$，则 $f\equiv0$（证明：假设不恒为零，则存在保号区域，其上积分大于零，又非负故整个积分区域上积分值必大于零，矛盾）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;10.2 累次积分&lt;/h3&gt;
&lt;p&gt;把重积分拆成多个定积分计算. 前提：函数可重积分、对某一个变量可定积分.&lt;/p&gt;
&lt;p&gt;交换次序：先化成重积分，找出积分区域的表达式，再拆成累次&lt;/p&gt;
&lt;h3&gt;10.3 重积分换元法则&lt;/h3&gt;
&lt;p&gt;${\displaystyle\iint}_{T(D)}f(x,y){\rm d}x {\rm d}y={\displaystyle\iint}_Df(x(u,v),y(u,v))\left|\dfrac{\partial(x,y)}{\partial(u,v)}\right|{\rm d}u {\rm d}v$，其中 $T:\left{\begin{matrix}x=x(u,v)\y=y(u,v)\end{matrix}\right.$.&lt;/p&gt;
&lt;p&gt;$\left|\dfrac{\partial(x,y)}{\partial(u,v)}\right|$ 即为 $T$ 的 Jacobi 行列式. Jacobi 行列式是变换前后面积微元变化的倍数，即 ${\rm d}u {\rm d}v$ 作变换 $T$ 之后 ${\rm d}x {\rm d}y=\left|\dfrac{\partial(x,y)}{\partial(u,v)}\right|{\rm d}u {\rm d}v$&lt;/p&gt;
&lt;p&gt;有时候已知的是 $T^{-1}{}$ 的 Jacobi 行列式，这时候不用反解，$\dfrac{\partial(x,y)}{\partial(u,v)}\cdot\dfrac{\partial(u,v)}{\partial(x,y)}=1$，即 $T$ 的 Jacobi 行列式就是 $T^{-1}{}$ Jacobi 行列式的倒数.&lt;/p&gt;
&lt;p&gt;（二重）极坐标变换&lt;br&gt;
$\left{\begin{matrix}x=r\cos\theta\y=r\sin\theta\end{matrix}\right.$，Jacobi $=r$&lt;/p&gt;
&lt;p&gt;（二重）广义极坐标变换&lt;br&gt;
$\left{\begin{matrix}x=ar\cos\theta\y=br\sin\theta\end{matrix}\right.$，Jacobi $=abr$&lt;/p&gt;
&lt;p&gt;（三重）柱坐标变换&lt;br&gt;
$\left{\begin{aligned}x&amp;#x26;=r\cos\theta\y&amp;#x26;=r\sin\theta\z&amp;#x26;=z\end{aligned}\right.$，Jacobi $=r$&lt;/p&gt;
&lt;p&gt;（三重）球坐标变换&lt;br&gt;
$\left{\begin{aligned}x&amp;#x26;=r\sin\varphi\cos\theta\y&amp;#x26;=r\sin\varphi\sin\theta\z&amp;#x26;=r\cos\varphi\end{aligned}\right.$，Jacobi $=r^2\sin\varphi$.&lt;br&gt;
其中 $\varphi$ 是向径与 $+z$ 的夹角，$0\leqslant\varphi\leqslant\pi$，$0\leqslant\theta&amp;#x3C;2\pi$. $(\frac12\pi-\varphi)$ 才是仰角&lt;/p&gt;
&lt;p&gt;（$n$ 重）球坐标变换&lt;br&gt;
$\left{\begin{aligned}x_1&amp;#x26;=r\cos\varphi_1\x_2&amp;#x26;=r\ {\color{orange}\sin\varphi_1}\cos\varphi_2\x_3&amp;#x26;=r\ {\color{orange}\sin\varphi_1}\ {\color{orange}\sin\varphi_2}\cos\varphi_3\x_4&amp;#x26;=r\ {\color{orange}\sin\varphi_1}\ {\color{orange}\sin\varphi_2}\ {\color{orange}\sin\varphi_3}\cos\varphi_4\\vdots\x_{n-1}&amp;#x26;=r\ {\color{orange}\sin\varphi_1}\ {\color{orange}\sin\varphi_2}\ {\color{orange}\sin\varphi_3}\cdots\ {\color{orange}\sin\varphi_{n-2} }\cos\varphi_{n-1}\x_n&amp;#x26;=r\ {\color{orange}\sin\varphi_1}\ {\color{orange}\sin\varphi_2}\ {\color{orange}\sin\varphi_3}\cdots\ {\color{orange}\sin\varphi_{n-2} }\ {\color{orange}\sin\varphi_{n-1} }\end{aligned}\right.$&lt;br&gt;
Jacobi $=r^{n-1}\sin^{n-2}\varphi_1\sin^{n-3}\varphi_2\cdots\sin\varphi_{n-2}{}$.&lt;br&gt;
把三元球坐标变换的 $z$ 提前，就和这个形式一样了. 各个角度的理解：要把 $n$ 维空间想象成一个平面+ $(n-2)$ 个竖直轴. $\varphi_{n-1}{}$ 是平面指向角，相当于以前的 $\theta\in[0,2\pi)$，这个角是不出现在 Jacobi 里头的. 其他就是相对于各个竖直轴正向的夹角 $\in [0,\pi]$&lt;/p&gt;
&lt;h2&gt;Chapter 11 曲线积分与曲面积分&lt;/h2&gt;
&lt;h3&gt;11.1 &amp;#x26; 11.3 曲线积分&lt;/h3&gt;
&lt;p&gt;对于曲线 $\left{\begin{matrix}x=x(t)\y=y(t)\z=z(t)\end{matrix}\right.$，记字母头上一点为对 $t$ 求导，则由弧长公式 $\overset{\frown}{s}={\displaystyle\int}_a^b\sqrt{(\dot x)^2+(\dot y)^2+(\dot z)^2}\rm{d}t$ 得到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一类曲线积分
&lt;ul&gt;
&lt;li&gt;${\rm d}s=\sqrt{(\dot x)^2+(\dot y)^2+(\dot z)^2}\rm{d}t$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;第二类曲线积分
&lt;ul&gt;
&lt;li&gt;${\rm d}\vec s=(\dot x,\dot y,\dot z){\rm d}t$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;11.2 &amp;#x26; 11.4 曲面积分&lt;/h3&gt;
&lt;p&gt;对于曲面 $\left{\begin{matrix}x=x(u,v)\y=y(u,v)\z=z(u,v)\end{matrix}\right.$：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一类曲面积分
&lt;ul&gt;
&lt;li&gt;${\rm d}S=|\vec{r_u}\times\vec{r_v}|{\rm d}u{\rm d}v$&lt;/li&gt;
&lt;li&gt;${\rm d}S=\sqrt{EG-F^2}{\rm d}u {\rm d}v$，其中 $E=\vec{r_u}\cdot\vec{r_u}{}$，$G=\vec{r_v}\cdot\vec{r_v}{}$，$F=\vec{r_u}\cdot\vec{r_v}{}$&lt;/li&gt;
&lt;li&gt;${\rm d}S=\sqrt{J_1^2+J_2^2+J_3^2}{\rm d}u {\rm d}v$，其中 $(J_1,J_2,J_3)=\left(\dfrac{\partial(y,z)}{\partial(u,v)},\dfrac{\partial(z,x)}{\partial(u,v)},\dfrac{\partial(x,y)}{\partial(u,v)}\right)$，与 $\vec n$ 的方向一致.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;第二类曲面积分
&lt;ul&gt;
&lt;li&gt;${\rm d}\vec{S}=({\rm d}y{\rm d}z,{\rm d}z {\rm d}x,{\rm d}x{\rm d}y)$&lt;/li&gt;
&lt;li&gt;${\rm d}\vec{S}=\dfrac{\vec n}{|\vec n|}{\rm d}S=(\cos\alpha,\cos\beta,\cos\gamma){\rm d}S$，代入上面合适的 ${\rm d}S$ 计算公式即可. 特别地，选择第三个公式时 ${\rm d}\vec S=\left(\dfrac{\partial(y,z)}{\partial(u,v)},\dfrac{\partial(z,x)}{\partial(u,v)},\dfrac{\partial(x,y)}{\partial(u,v)}\right){\rm d}u{\rm d}v$&lt;/li&gt;
&lt;li&gt;计算时，先用第一条把 ${\rm d}\vec S$ 分出来，写成一个向量点乘形式（$(P,Q,R)\cdot{\rm d}\vec S$），再用第二条把 ${\rm d}\vec S$ 变成向量数乘以 ${\rm d}S$，化成第一类曲面积分.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于曲面 $z=z(x,y)$，$\vec r=(x,y,z(z,y))$，取自变量为 $x$ 和 $y$：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$\vec{r_x}=(1,0,z_x)$，$\vec{r_y}=(0,1,z_y)$，$\sqrt{EG-F^2}=\sqrt{1+z_x^2+z_y^2}{}$，$(J_1,J_2,J_3)=(-z_x,-z_y,1)$.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;11.5 第二类积分与重积分的关系&lt;/h3&gt;
&lt;p&gt;诱导定向：“左边”&lt;/p&gt;
&lt;p&gt;Green 公式：${\displaystyle\int}_{\partial D} P {\rm d}x+Q {\rm d}y={\displaystyle\iint}_D(Q_x-P_y){\rm d}{x}{\rm d}{y}{}$.&lt;/p&gt;
&lt;p&gt;要求 $D$ 为单连通区域，若有有限个洞可以割开算&lt;/p&gt;
&lt;p&gt;Green 定理：下列四个命题等价&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;对 $D$ 内任一闭曲线 $L$，${\displaystyle\oint}_LP{\rm d}x+Q {\rm d}y=0$&lt;/li&gt;
&lt;li&gt;${\displaystyle\int}_LP{\rm d}x+Q {\rm d}y$ 与路径无关，只与起点终点有关&lt;/li&gt;
&lt;li&gt;存在 $D$ 上可微函数 $U(x,y)\ \text{s.t.}\ {\rm d}U=P {\rm d}x+Q {\rm d}y$，即 1-形式 $P {\rm d}x+Q {\rm d}y$ 存在原函数&lt;/li&gt;
&lt;li&gt;$D$ 上 $Q_x\equiv P_y$&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;循环常数：一条曲线包围了一个瑕点，包围区域内所有点除了瑕点都满足 $Q_x\equiv P_y$. 这时候找一个逆时针闭合曲线围住瑕点，计算它上面的积分，其值称为循环常数. 则曲线上的积分值 $=$ 环绕瑕点的圈数（带正负，逆时针为正，顺时针为负）$\times$ 循环常数&lt;/p&gt;
&lt;p&gt;Gauss 公式：${\displaystyle\iint}&lt;em&gt;{\partial\Omega}P{\rm d}y{\rm d}z+Q{\rm d}z{\rm d}x+R{\rm d}x{\rm d}y={\displaystyle\iiint}&lt;/em&gt;\Omega(P_x+Q_y+R_z){\rm d}x{\rm d}y{\rm d}z$&lt;/p&gt;
&lt;p&gt;要求 $\Omega$ 为单连通区域，若有有限个洞可以割开算.&lt;/p&gt;
&lt;p&gt;Stokes 公式：${\displaystyle\int}&lt;em&gt;{\partial\Sigma}P{\rm d}x+Q{\rm d}y+R{\rm d}z={\displaystyle\iint}&lt;/em&gt;{\Sigma}(R_y-Q_z){\rm d}y{\rm d}z+(P_z-R_x){\rm d}z{\rm d}x+(Q_x-P_y){\rm d}x{\rm d}y$&lt;/p&gt;
&lt;p&gt;行列式形式：${\displaystyle\int}&lt;em&gt;{\partial\Sigma}P{\rm d}x+Q{\rm d}y+R{\rm d}z={\displaystyle\iint}&lt;/em&gt;{\Sigma}\begin{vmatrix}{\rm d}y{\rm d}z &amp;#x26; {\rm d}z{\rm d}x &amp;#x26; {\rm d}x{\rm d}y\\frac{\partial}{\partial x}&amp;#x26;\frac{\partial}{\partial y}&amp;#x26;\frac{\partial}{\partial z}\P&amp;#x26;Q&amp;#x26;R\end{vmatrix}={\displaystyle\iint}_{\Sigma}\begin{vmatrix}\cos\alpha&amp;#x26;\cos\beta&amp;#x26;\cos\gamma\\frac{\partial}{\partial x}&amp;#x26;\frac{\partial}{\partial y}&amp;#x26;\frac{\partial}{\partial z}\P&amp;#x26;Q&amp;#x26;R\end{vmatrix}{\rm d}S$&lt;/p&gt;
&lt;h3&gt;11.6 场论初步&lt;/h3&gt;
&lt;p&gt;这段并不在考点中，是后来学了大物之后才补的。懒得打成文档了，直接放图&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./changlun1.png&quot; alt=&quot;场论初步1&quot;&gt;
&lt;img src=&quot;./changlun2.png&quot; alt=&quot;场论初步2&quot;&gt;
&lt;img src=&quot;./changlun3.png&quot; alt=&quot;场论初步3&quot;&gt;
&lt;img src=&quot;./changlun4.png&quot; alt=&quot;场论初步4&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Chapter 12 数项级数&lt;/h2&gt;
&lt;h3&gt;12.1 级数收敛&lt;/h3&gt;
&lt;p&gt;级数收敛定义；几何级数 $\sum\limits x^n$，$|x|\geqslant1$ 时发散，$|x|&amp;#x3C;1$ 时收敛，$\sum\limits_{n=1}^\infty x^n=\dfrac{x}{1-x}{}$；p-级数 $\sum\limits \dfrac{1}{n^p}{}$，$p&gt;1$ 时收敛，$p\leqslant1$ 时发散&lt;/p&gt;
&lt;p&gt;级数收敛 $\Rightarrow$ 通项趋于零，用于证明级数发散&lt;/p&gt;
&lt;p&gt;收敛级数线性组合也收敛，收敛值也是线性组合&lt;/p&gt;
&lt;p&gt;结合律，收敛 $\Rightarrow$ 加括号收敛且和不变，加括号发散 $\Rightarrow$ 发散&lt;/p&gt;
&lt;p&gt;积化和差：$\forall x$，$\sum\limits\sin nx$ 有界. $\sum\limits\cos nx$，$x\neq 2k\pi$ 时有界，$x=2k\pi$ 时发散.&lt;/p&gt;
&lt;h3&gt;12.2 正项级数敛散性判断&lt;/h3&gt;
&lt;p&gt;部分和判别法：正项级数部分和有界则收敛，无界则发散&lt;/p&gt;
&lt;p&gt;比较判别法：正项级数，通项 $a_n\leqslant Ab_n$，则 $\sum\limits b_n$ 敛则 $\sum\limits a_n$ 敛，$\sum\limits a_n$ 散则 $\sum\limits b_n$ 散.&lt;/p&gt;
&lt;p&gt;比较判别法极限形式：$\sum\limits a_n$ 与 $\sum\limits b_n$ 为正项级数. 记 $\lim\limits_{n\to\infty}\dfrac{a_n}{b_n}=l$（未知比已知之极限为 $l$），则&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$0&amp;#x3C;l&amp;#x3C;+\infty$ 时，分子分母同敛散&lt;/li&gt;
&lt;li&gt;$l=0$ 时，分母敛则分子敛&lt;/li&gt;
&lt;li&gt;$l=+\infty$ 时，分母散则分子散&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;比较判别法迫敛形式：$\sum\limits a_n$、$\sum\limits b_n$ 收敛，若 $a_n\leqslant u_n\leqslant b_n$，则 $\sum\limits u_n$ 收敛.&lt;/p&gt;
&lt;p&gt;Cauchy 判别法：正项级数，$\limsup\limits_{n\to\infty}\sqrt[n]{x_n}=r$，则&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$r&amp;#x3C;1$ 时级数收敛&lt;/li&gt;
&lt;li&gt;$r&gt;1$ 时级数发散&lt;/li&gt;
&lt;li&gt;$r=1$ 时不定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;d&apos;Alembert 判别法：正项级数，$\lim\limits_{n\to\infty}\dfrac{a_{n+1} }{a_n}=r$，则&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$r&amp;#x3C;1$ 时级数收敛&lt;/li&gt;
&lt;li&gt;$r&gt;1$ 时级数发散&lt;/li&gt;
&lt;li&gt;$r=1$ 时不定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Raabe 判别法：正项级数，$\lim\limits_{n\to\infty}n(\dfrac{a_n}{a_{n+1} }-1)=r$，则&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$r&gt;1$ 时级数收敛&lt;/li&gt;
&lt;li&gt;$r&amp;#x3C;1$ 时级数发散&lt;/li&gt;
&lt;li&gt;$r=1$ 时不定&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;积分判别法：$f(x)$ 在 $[a,+\infty)$ 非负单减，任意区间 $[a,A]$ 可积，则 $\sum\limits_{n=N}^\infty f(n)$ 与 ${\displaystyle\int}_a^{+\infty}f(x){\rm d}x$ 同敛散&lt;/p&gt;
&lt;h3&gt;12.3 任意项级数敛散性判断&lt;/h3&gt;
&lt;p&gt;Cauchy 收敛原理：部分和收敛的 Cauchy 收敛原理&lt;/p&gt;
&lt;p&gt;Leibniz 判别法：一正一负，绝对值单减趋零&lt;/p&gt;
&lt;p&gt;Abel 变换：$\sum\limits_{n=1}^p a_nb_n=B_pa_p-\sum\limits_{n=1}^{p-1}B_n(a_{n+1}-a_n)$，几何直观：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;./abel-trans.png&quot; alt=&quot;Abel变换的几何直观|500&quot;&gt;&lt;/p&gt;
&lt;p&gt;Abel 引理：${a_n}{}$ 单调，${B_n}{}$ 有界（$|B_n|\leqslant M$），则 $|\sum\limits_1^pa_kb_k|\leqslant M(|a_1|+2|a_p|)$&lt;/p&gt;
&lt;p&gt;A-D 判别法&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abel 判别法：单调有界 $\times$ 部分和收敛&lt;/li&gt;
&lt;li&gt;Dirichlet 判别法：单调趋零 $\times$ 部分和有界&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;12.4 绝对收敛与条件收敛&lt;/h3&gt;
&lt;p&gt;绝对收敛 $\Rightarrow$ 收敛&lt;/p&gt;
&lt;p&gt;绝对发散 $\xcancel\Rightarrow$ 发散，但 Cauchy 判出来绝对发散或 d&apos;Alembert 判出来绝对发散的，原级数必发散&lt;/p&gt;
&lt;p&gt;正负部拆分：$x_n^+=\left{\begin{matrix}x_n,\ x_n&gt;0\0, \ x_n\leqslant0\end{matrix}\right.$，$x_n^-=\left{\begin{matrix}-x_n,\ x_n&amp;#x3C;0\0, \ x_n\geqslant0\end{matrix}\right.$. 有两个等式：$|x_n|=x_n^++x_n^-$，$x_n=x_n^+-x_n^-$&lt;/p&gt;
&lt;p&gt;重排级数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对绝对收敛的级数，任一重排级数都绝对收敛，收敛值不变&lt;/li&gt;
&lt;li&gt;对条件收敛的级数，存在重排级数收敛于任意一个给定实数，或者发散到无穷（Riemann 定理）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;级数相乘&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;两个收敛级数 $\sum\limits a_n=A$ 和 $\sum\limits b_n=B$ 按正方形排列的乘积，收敛于 $AB$&lt;/li&gt;
&lt;li&gt;两个绝对收敛级数 $\sum\limits a_n=A$ 和 $\sum\limits b_n=B$ 相乘，不论怎么排序都收敛且收敛于 $AB$&lt;/li&gt;
&lt;li&gt;Cauchy 乘积 $c_n=\sum\limits_{i+j=n+1}a_ib_j$，若 $\sum\limits a_n$、$\sum\limits b_n$ 、$\sum\limits c_n$ 都收敛，那么 $\sum\limits c_n=AB$（这个的证明在 13.5）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;12.5 无穷乘积&lt;/h3&gt;
&lt;p&gt;代换，$p_n=1+a_n$&lt;/p&gt;
&lt;p&gt;$\prod\limits p_n$ 与 $\sum\limits\ln p_n$ 同敛散&lt;/p&gt;
&lt;p&gt;$a_n$ 不变号时 $\prod\limits(1+a_n)$ 与 $\sum\limits a_n$ 同敛散. 等价形式：$p_n$ 不跨过 1 的分界线时 $\prod\limits p_n$ 与 $\sum\limits(p_n-1)$ 同敛散.&lt;/p&gt;
&lt;p&gt;$\sum\limits a_n$ 收敛，则 $\sum\limits a_n^2$ 与 $\prod\limits(1+a_n)$ 同敛散&lt;/p&gt;
&lt;p&gt;$\prod\limits p_n$ 绝对收敛，即 $\sum\limits\ln p_n$ 绝对收敛. 绝对收敛的无穷乘积可以换序.&lt;/p&gt;
&lt;p&gt;$\prod\limits(1+a_n)$ 绝对收敛、$\prod\limits(1+|a_n|)$ 收敛、$\sum\limits|a_n|$ 收敛，三者等价&lt;/p&gt;
&lt;p&gt;Wallis 公式：$\dfrac {2}{\pi}=\dfrac{1\cdot1\cdot3\cdot3\cdot5\cdot5\cdots}{2\cdot2\cdot4\cdot4\cdot6\cdot6\cdots}{}$&lt;/p&gt;
&lt;p&gt;Viète 公式：$\dfrac{2}{\pi}=\cos\dfrac{\pi}{4}\cdot\cos\dfrac{\pi}{8}\cdot\cos\dfrac{\pi}{16}\cdot\cdots$&lt;/p&gt;
&lt;p&gt;Stirling 公式：$n!\sim\sqrt{2\pi n}\cdot(\dfrac ne)^n\ ,n\to+\infty$. 这使得 $n!$ 有了一个含 $n$ 次方的等价逼近. 极限形式：$\lim\limits_{n\to\infty}\dfrac{n!e^n}{n^{n+\frac12} }=\sqrt{2\pi}{}$&lt;/p&gt;
&lt;h2&gt;Chapter 13 函数项级数&lt;/h2&gt;
&lt;h3&gt;13.1 点态收敛&lt;/h3&gt;
&lt;p&gt;点态收敛，收敛域，部分和函数，和函数，对偶性&lt;/p&gt;
&lt;h3&gt;13.2 一致收敛&lt;/h3&gt;
&lt;p&gt;一致收敛，内闭一致收敛&lt;/p&gt;
&lt;p&gt;一致收敛 $\Leftrightarrow$ 部分和函数与和函数的距离趋于零，距离即 $\sup\limits_{x\in D}|f(x)-g(x)|$&lt;/p&gt;
&lt;h3&gt;13.3 一致收敛判别法&lt;/h3&gt;
&lt;p&gt;想判断不一致收敛：证明 sup&gt;0 且可被达到，这样 sup 不趋于零，不一致收敛&lt;/p&gt;
&lt;p&gt;Cauchy 收敛原理：部分和函数收敛的 Cauchy 收敛原理&lt;/p&gt;
&lt;p&gt;Weierstrass 判别法/ M 判别法：若 $\forall x\in D$，成立 $|u_n(x)|\leqslant a_n$ 且 $\sum\limits a_n$ 收敛，则 $\sum\limits u_n(x)$ 在 $D$ 上一致收敛，而且绝对一致收敛&lt;/p&gt;
&lt;p&gt;A-D 判别法&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abel 判别法：单调一致有界 $\times$ 部分和函数一致收敛&lt;/li&gt;
&lt;li&gt;Dirichlet 判别法：单调一致趋零 $\times$ 部分和函数一致有界&lt;/li&gt;
&lt;li&gt;注：其中“单调”指的是对任意&lt;strong&gt;固定的 $x_0$&lt;/strong&gt;，数列 ${a_n(x_0)}{}$ &lt;strong&gt;随 $n$ 单调&lt;/strong&gt;；“一致有界”指的是对一切 $n$，函数值域有一个一致的界；“一致趋零”指的是随着 $n\to 0$，函数通项趋于 $f(x)\equiv 0$.&lt;/li&gt;
&lt;li&gt;注：$\sum\limits\cos kx$、$\sum\limits\sin kx$ 在 $(0,2\pi)$ 内闭一致有界.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;13.4 一致收敛的性质&lt;/h3&gt;
&lt;p&gt;一致收敛的函数项级数，可逐项求极限、可逐项积分.&lt;/p&gt;
&lt;p&gt;逐项求导定理：若① $u_n(x)$ 导数连续、② $\sum\limits u_n(x)$ 点态收敛、③ $\sum\limits u_n&apos;(x)$ 一致收敛，则可逐项求导. 条件③实际上可以推得 $\sum\limits u_n(x)$ 一致收敛&lt;/p&gt;
&lt;p&gt;可逐项推不出一致收敛.&lt;/p&gt;
&lt;p&gt;Dini 定理：若①闭区间上 $u_n(x)$ 连续、② $\sum\limits u_n(x)$ 点态收敛、③部分和函数对任意&lt;strong&gt;固定的 $x_0$ 随 $n$ 单调&lt;/strong&gt;（对任意固定的 $x_0$，$\sum\limits u_n(x_0)$ 是定号级数，要么正项要么负项），则 $\sum\limits u_n(x)$ 一致收敛.&lt;/p&gt;
&lt;h3&gt;13.5 幂级数及其性质&lt;/h3&gt;
&lt;p&gt;形式：$\sum\limits a_n(x-x_0)^n$&lt;/p&gt;
&lt;p&gt;收敛域：是以 $x_0$ 为中心的区间（Abel 第一定理），&lt;strong&gt;端点收敛情况不一定，需要单独判断&lt;/strong&gt;. 区间长度的一半称为收敛半径，收敛半径 $R=+\infty$ 表示对一切 $x$ 幂级数都收敛，收敛半径 $R=0$ 表示只有 $x_0$ 点处幂级数收敛.&lt;/p&gt;
&lt;p&gt;收敛半径计算公式：$R=\dfrac1A$，$A=0$ 时 $R=+\infty$，$A=+\infty$ 时 $R=0$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cauchy-Hadamard 公式：$A=\limsup\limits_{n\to\infty}\sqrt[n]{|a_n|}{}$&lt;/li&gt;
&lt;li&gt;d&apos;Alembert 公式：$A=\lim\limits_{n\to\infty}\left|\dfrac{a_{n+1} }{a_n}\right|$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;幂级数在收敛域的内闭区间上一致收敛（Abel 第二定理）. 据此推出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;幂级数的和函数在收敛域上连续，端点开则开连，闭则闭连.&lt;/li&gt;
&lt;li&gt;幂级数在收敛域的内闭区间上可逐项积分，积分后收敛半径不变. &lt;strong&gt;注意积完之后求和从哪里开始&lt;/strong&gt;. 一般可以由连续性将这一性质推广到开区间上.&lt;/li&gt;
&lt;li&gt;幂级数在收敛域内可逐项求导，求导后收敛半径不变. &lt;strong&gt;注意导完之后求和从哪里开始&lt;/strong&gt;. &lt;strong&gt;注意闭端点不是收敛域的内部&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;13.6 函数的幂级数展开&lt;/h3&gt;
&lt;p&gt;说一个函数可以展开成级数，就是说级数一致收敛于这个函数，函数和级数之间可以画等号.&lt;/p&gt;
&lt;p&gt;逻辑：（之后三角级数展开也是这个逻辑）&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;假设某个函数可以被展开成幂级数，发现幂级数被函数唯一确定，$a_n=\dfrac{f^{(n)}(x_0)}{n!}{}$&lt;/li&gt;
&lt;li&gt;据此，任意给一个函数，都按上面的规则构造出一个级数，称为这个函数的 Taylor 级数. 这个 Taylor 级数收不收敛、收敛的话收不收敛到 $f(x)$、是不是一致收敛，这都是后话. 所以这里函数和级数之间只能画波浪号而不能画等号.&lt;/li&gt;
&lt;li&gt;可以证明，当 $f$ 在 $x_0$ 处任意阶可导时，余项一致趋零，$f$ 的 Taylor 级数一致收敛于 $f$，就是说 $f$ 可以展开成幂级数，这时候 Taylor 级数就可以叫 Taylor 展开式了.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当 $x_0=0$ 时也称为 Maclaurin 级数&lt;/p&gt;
&lt;p&gt;Taylor 级数的余项：Peano、Lagrange，补充一个积分形式余项，$r_n(x)=\dfrac{1}{n!}{\displaystyle\int}_{x_0}^xf^{(n+1)}(t)(x-t)^n{\rm d}t$.&lt;/p&gt;
&lt;p&gt;对于积分形式余项，运用积分第二中值定理（见 Chapter 14）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;把 $f^{(n+1)}(t)$ 移出积分，得 $r_n(x)=\dfrac{1}{n!}f^{(n+1)}(\xi){\displaystyle\int}_{x_0}^x(x-t)^n{\rm d}t=\dfrac{1}{(n+1)!}f^{(n+1)}(\xi)(x-x_0)^{n+1}{}$，即 Lagrange 余项.&lt;/li&gt;
&lt;li&gt;把 $f^{(n+1)}(t)(x-t)^n$ 移出积分，得 $r_n(x)=\dfrac{1}{n!}f^{(n+1)}(\xi)(x-\xi)^n(x-x_0)$，令 $\xi=x_0+\theta(x-x_0)$ 得 $r_n(x)=\dfrac{1}{n!}f^{(n+1)}(\xi)(1-\theta)^n(x-x_0)^{n+1}{}$，称为 Cauchy 余项.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;初等函数 Taylor 表（在 $x_0=0$ 处展开，注意求和从哪里开始）.  $(1+x)^\alpha$ 收敛域，$\alpha&gt;0$ 时两端闭 $\alpha&amp;#x3C; -1$ 时两端开，$-1&amp;#x3C;\alpha&amp;#x3C;0$ 时左开右闭）&lt;/p&gt;
&lt;p&gt;|       初等函数       | Taylor 展开式                                                               |      收敛域      |
| :--------------: | :-----------------------------------------------------------------------: | :-----------: |
| $\dfrac{1}{1+x}{}$ | $\sum\limits_{n=0}^\infty (-1)^nx^n$                                     |   $(-1,1)$    |
|      $e^x$       | $\sum\limits_{n=0}^\infty \dfrac{x^n}{n!}{}$                               |  $\mathbb R$  |
|     $\sin x$     | $\sum\limits_{n=0}^\infty \dfrac{(-1)^{n} }{(2n+1)!}x^{2n+1}{}$             |  $\mathbb R$  |
|     $\cos x$     | $\sum\limits_{n=0}^\infty \dfrac{(-1)^{n} }{(2n)!}x^{2n}{}$                 |  $\mathbb R$  |
|   $\arctan x$    | $\sum\limits_{n=0}^\infty \dfrac{(-1)^{n} }{2n+1}x^{2n+1}{}$                |   $[-1,1]$    |
|    $\ln(1+x)$    | $\sum\limits_{n=1}^\infty\dfrac{(-1)^{n+1} }{n}x^n$                       |   $(-1,1]$    |
|  $(1+x)^\alpha$  | $\sum\limits_{n=0}^\infty\begin{pmatrix}n\\alpha\end{pmatrix}x^n$       | $(-1,1)$，开闭见上 |
|   $\arcsin x$    | $\sum\limits_{n=1}^\infty\dfrac{(2n-1)!!}{(2n)!!}\dfrac{x^{2n+1} }{2n+1}{}$ |   $[-1,1]$    |&lt;/p&gt;
&lt;p&gt;求 Taylor 展开式的思路&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;思路一，对已知的展开式求导. 例如计算 $\dfrac{1}{x^2}{}$ 在 $x_0=1$ 的泰展，$\dfrac1x=\dfrac{1}{1+(x-1)}=\sum\limits_{n=0}^\infty(-1)^n(x-1)^n$，逐项求导即可&lt;/li&gt;
&lt;li&gt;思路二，线性拆分. 例如计算 $\dfrac{1}{3+5x-2x^2}{}$ 在 $x_0=0$ 的泰展，原式 $=\dfrac17(\dfrac{1}{3-x}+\dfrac{2}{1+2x})$，两个都有现成的公式&lt;/li&gt;
&lt;li&gt;思路三，运用 Cauchy 乘积
&lt;ul&gt;
&lt;li&gt;对于乘法，合并次数相同的项&lt;/li&gt;
&lt;li&gt;对于除法，设 $\dfrac{f(x)}{g(x)}=\sum\limits c_n(x-x_0)^n$，得 $\sum\limits a_n(x-x_0)^n=(\sum\limits b_n(x-x_0)^n)(\sum\limits c_n(x-x_0)^n)$，待定系数解 $c_n$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;思路四，整体代入. 例如计算 $\ln\dfrac{\sin x}{x}{}$ 在 $x_0=0$ 的泰展，$\dfrac{\sin x}{x}=1-(\dfrac16x^2-\dfrac{1}{120}x^4+\cdots)$，令括号里面为 $u$，则 $\ln\dfrac{\sin x}{x}=\ln(1-u)=-(u-\dfrac12u^2+\dfrac13u^3-\cdots)$&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Chapter 14 广义积分&lt;/h2&gt;
&lt;p&gt;（含参变量积分不考）&lt;/p&gt;
&lt;h3&gt;14.1 &amp;#x26; 14.3 无穷积分/瑕积分&lt;/h3&gt;
&lt;p&gt;瑕点：无穷远点/函数值为无穷大的点. 把被积区间划分成若干只含一个或不含瑕点的部分，每段单独看.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于不含瑕点的，直接积分即可&lt;/li&gt;
&lt;li&gt;对于无穷远瑕点，若  $\lim\limits_{A\to\infty}{\displaystyle\int}_a^Af(x){\rm d}x$ 存在则收敛. p-积分 ${\displaystyle\int}_1^{+\infty}\dfrac{1}{x^p}{\rm d}x$，$p&gt;1$ 收敛，$p\leqslant1$ 发散.&lt;/li&gt;
&lt;li&gt;对于无穷大瑕点，若  $\lim\limits_{\eta\to0^+}{\displaystyle\int}_{a+\eta}^bf(x){\rm d}x$ 存在则收敛. p-瑕积分 ${\displaystyle\int}_a^b\dfrac{1}{(x-a)^p}{\rm d}x$，$0&amp;#x3C;p&amp;#x3C;1$ 收敛，$p\geqslant1$ 发散. &lt;strong&gt;这与 p-积分结论相反&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;如果两个端点都是瑕点，则两个极限过程都收敛整体才收敛，且极限过程都是独立的&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;14.2 无穷积分敛散性判断&lt;/h3&gt;
&lt;p&gt;Cauchy 收敛准则（假设瑕点是正无穷）：$\forall\varepsilon&gt;0,\exists N \ \text{s.t.}\ A,A&apos;&gt;N$ 时 $\left|{\displaystyle\int}_{A}^{A&apos;}f(x){\rm d}x\right|&amp;#x3C;\varepsilon$&lt;/p&gt;
&lt;p&gt;比较判别法，要求函数非负. 结论与级数的比较判别法相同. 也有极限形式，是让 $x$ 趋向瑕点（正无穷或负无穷）&lt;/p&gt;
&lt;p&gt;Cauchy 判别法，本质是与 p-积分比较，不如直接用比较判别法&lt;/p&gt;
&lt;p&gt;级数判别法（级数的积分判别法逆用）&lt;/p&gt;
&lt;p&gt;A-D 判别法&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;积分第二中值定理：单调的提前，代入端点，代哪端积分靠哪侧. $f$、$g$ 在 $[a,b]$ 可积，$f$ 在 $[a,b]$ 单调，则 $\exists\xi\in[a,b] \ \text{s.t.}\ {\displaystyle\int}_a^bf(x)g(x){\rm d}x=f(a){\displaystyle\int}&lt;em&gt;a^\xi g(x){\rm d}x+f(b){\displaystyle\int}&lt;/em&gt;\xi^bg(x){\rm d}x$&lt;/li&gt;
&lt;li&gt;Abel 判别法：单调有界（&lt;strong&gt;这回是关于 $x$ 单调，注意与函数项级数区分&lt;/strong&gt;）$\times$ 无穷积分收敛&lt;/li&gt;
&lt;li&gt;Dirichlet 判别法：单调趋零 $\times$ 无穷积分有界（指任给积分上界，积分值有界）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;绝对收敛必收敛，积分绝对值 $\leqslant$ 绝对值积分. 同样有绝对可积和条件可积&lt;/p&gt;
&lt;h3&gt;14.4 瑕积分敛散性判断&lt;/h3&gt;
&lt;p&gt;Cauchy 收敛准则（假设瑕点是区间下界）：$\forall\varepsilon&gt;0,\exists\delta \ \text{s.t.}\ 0&amp;#x3C;\eta&amp;#x3C;\eta&apos;&amp;#x3C;\delta$ 时 $\left|{\displaystyle\int}_{a+\eta}^{a+\eta&apos;}f(x){\rm d}x\right|&amp;#x3C;\varepsilon$&lt;/p&gt;
&lt;p&gt;比较判别法，要求函数非负. 结论与级数的比较判别法相同. 也有极限形式，是让 $x$ 趋向瑕点（上界或下界）.&lt;/p&gt;
&lt;p&gt;Cauchy 判别法，本质是与 p-瑕积分比较，不如直接用比较判别法&lt;/p&gt;
&lt;p&gt;A-D 判别法（假设下界为瑕点）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abel 判别法：单调有界 $\times$ 瑕积分收敛&lt;/li&gt;
&lt;li&gt;Dirichlet 判别法：单调趋零（当自变量趋于下界）$\times$ 瑕积分有界&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;化为无穷积分判别：设 $a$ 为瑕点，作变量替换 $x=a+\dfrac1t$，则 ${\displaystyle\int}&lt;em&gt;a^bf(x){\rm d}x={\displaystyle\int}&lt;/em&gt;{\frac{1}{b-a} }^{+\infty}f(a+\dfrac1t)\dfrac{1}{t^2}{\rm d}t$&lt;/p&gt;
&lt;h3&gt;14.5 Cauchy 主值&lt;/h3&gt;
&lt;p&gt;Cauchy Principal Value&lt;/p&gt;
&lt;p&gt;即对于某个瑕点，有两个极限过程（或是负无穷到正无穷积分），让这两个极限过程的趋向速度相同，若这样的极限存在，则称在 Cauchy 主值意义下收敛，Cauchy 主值即为极限值，记为 $({\rm cpv}){\displaystyle\int}_a^bf(x){\rm d}x$&lt;/p&gt;
&lt;p&gt;cpv 意义下的瑕积分称为奇异积分&lt;/p&gt;
&lt;p&gt;普通意义下收敛，则 cpv 意义下收敛，反过来不定&lt;/p&gt;
&lt;h3&gt;14.6 Euler 积分&lt;/h3&gt;
&lt;p&gt;（应该也不考）&lt;/p&gt;
&lt;p&gt;$\Gamma$ 函数，aka 第二类 Euler 积分：$\Gamma(\alpha)={\displaystyle\int}_0^{+\infty}x^{\alpha-1}e^{-x}{\rm d}x$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;定义域（右边积分的收敛域）：$(0,+\infty)$&lt;/li&gt;
&lt;li&gt;$\Gamma(\alpha)$ 连续&lt;/li&gt;
&lt;li&gt;$\Gamma(\alpha)$ 任意阶可导，$\Gamma^{(n)}(\alpha)={\displaystyle\int}_0^{+\infty}x^{\alpha-1}e^{-x}(\ln x)^n{\rm d}x$&lt;/li&gt;
&lt;li&gt;$\Gamma(\alpha+1)=\alpha\Gamma(\alpha)$，$\alpha&gt;0$，取正整数得 $\Gamma(n+1)=n!$&lt;/li&gt;
&lt;li&gt;$\Gamma(\alpha)$ 在 $(1,2)$ 取得唯一最小值，$0^+$ 和 $+\infty$ 处函数趋于正无穷&lt;/li&gt;
&lt;li&gt;Legendre 公式：$\Gamma(s)\Gamma(s+\dfrac12)=\dfrac{\sqrt{\pi} }{2^{2s-1} }\Gamma(2s)$，$s&gt;0$&lt;/li&gt;
&lt;li&gt;余元公式：$\Gamma(s)\Gamma(1-s)=\dfrac{\pi}{\sin s\pi}{}$，$0&amp;#x3C;s&amp;#x3C;1$
&lt;ul&gt;
&lt;li&gt;引理：$\dfrac{\pi}{\sin s\pi}=\dfrac1x+\sum\limits_{n=1}^\infty(-1)^n(\dfrac{1}{x+n}+\dfrac{1}{x-n})$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;${\rm B}{}$ 函数，aka 第一类 Euler 积分：${\rm B}(p,q)={\displaystyle\int}_0^1x^{p-1}(1-x)^{q-1}{\rm d}x$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;定义在第一象限，连续，任意阶可导且导数连续&lt;/li&gt;
&lt;li&gt;递归式
&lt;ul&gt;
&lt;li&gt;${\rm B}(p,q)=\dfrac{(q-1)}{p+(q-1)}{\rm B}(p,q-1)$，$p&gt;0$，$q&gt;1$&lt;/li&gt;
&lt;li&gt;${\rm B}(p,q)=\dfrac{(p-1)}{(p-1)+q}{\rm B}(p-1,q)$，$p&gt;1$，$q&gt;0$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;关系：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;${\rm B}(p,q)=\dfrac{\Gamma(p)\Gamma(q)}{\Gamma(p+q)}{}$，$p,q&gt;0$，代入正整数得 ${\rm B}(m,n)=\dfrac{(m-1)!(n-1)!}{(m+n-1)!}{}$&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Chapter 15 Fourier 级数&lt;/h2&gt;
&lt;p&gt;（Fourier 积分不考）&lt;/p&gt;
&lt;h3&gt;15.1 &amp;#x26; 15.2 三角级数与 Fourier 级数&lt;/h3&gt;
&lt;p&gt;三角级数：$\dfrac12a_0+\sum\limits_{n=1}^\infty(a_n\cos nx+b_n\sin nx)$&lt;/p&gt;
&lt;p&gt;逻辑：（和幂级数是一个逻辑）&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;假设某个 $T=2\pi$ 的周期函数可以被展开成三角级数，发现三角级数被函数唯一确定，$a_n=\dfrac{1}{\pi}{\displaystyle\int}&lt;em&gt;{-\pi}^\pi f(x)\cos nx{\rm d}x$，$b_n=\dfrac{1}{\pi}{\displaystyle\int}&lt;/em&gt;{-\pi}^\pi f(x)\sin nx{\rm d}x$&lt;/li&gt;
&lt;li&gt;据此，任意给一个函数，都按上面的规则构造出一个级数，称为这个函数的 Fourier 级数. 这个 Fourier 级数收不收敛、收敛的话收不收敛到 $f(x)$、是不是一致收敛，这都是后话. 所以这里函数和级数之间只能画波浪号而不能画等号.&lt;/li&gt;
&lt;li&gt;可以证明，当 $f(x)$ 满足下面两个条件之一时，$f(x)$ 的 Fourier 级数点态收敛于 $\sigma(x)=\dfrac{f(x^+)+f(x^-)}{2}{}$：
&lt;ul&gt;
&lt;li&gt;Dirichlet-Jordan 判别法：$x$ 的邻域内分段单调且有界&lt;/li&gt;
&lt;li&gt;Dini-Lipschitz 判别法：$x$ 处满足 α-Holder 条件（$\forall\varepsilon&gt;0$，$\exists L&gt;0$、$\exists\alpha\in(0,1] \ \text{s.t.}\ 0&amp;#x3C;u&amp;#x3C;\delta$ 时，$|f(x\pm u)-f(x^\pm)|&amp;#x3C;Lu^\alpha$，$\alpha=1$ 时称为 Lipschitz 条件）. α-Holder 条件中 α 越大条件越强. 可导一定收敛于 $\sigma(x)=f(x)$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;对于 $T=2l$ 的，设辅助函数 $g(x)=f\left(\dfrac l\pi t\right)$，把 $g$ 傅展后代入 $t=\dfrac{\pi x}{l}{}$ 即可&lt;/p&gt;
&lt;p&gt;偶延拓，奇延拓，周期延拓&lt;/p&gt;
&lt;p&gt;偶函数的傅展只含 cos，奇函数的傅展只含 sin.&lt;/p&gt;
&lt;h3&gt;15.3 Fourier 级数的性质&lt;/h3&gt;
&lt;p&gt;（针对 $T=2\pi$）&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Fourier 系数趋于零&lt;/li&gt;
&lt;li&gt;可逐项积分&lt;/li&gt;
&lt;li&gt;逐项微分：周期内连续、周期头尾相接、导数处处存在或只有有限个点不存在、导数可积或绝对可积，四个条件推出导函数的 Fourier 级数为（函数的 Fourier 级数）的导数，并不知道收敛性&lt;/li&gt;
&lt;li&gt;是所有三角级数中的最佳均方逼近&lt;/li&gt;
&lt;li&gt;Parseval 等式：$\dfrac12a_0^2+\sum\limits(a_n^2+b_n^2)=\dfrac{1}{\pi}\displaystyle\int_{-\pi}^{\pi}f^2(x){\rm d}x$&lt;br&gt;
(Bessel 不等式：上面等号改成 $\leqslant$)&lt;/li&gt;
&lt;/ol&gt;</content:encoded><h:img src="/_astro/math_analysis_cover_2.mFnaY7qs.png"/><enclosure url="/_astro/math_analysis_cover_2.mFnaY7qs.png"/></item><item><title>随机过程作业 Chapter5 连续时间Markov链</title><link>https://chinosan.com/blog/stochastic-processes/chapter5</link><guid isPermaLink="true">https://chinosan.com/blog/stochastic-processes/chapter5</guid><description>Sheldon M. Ross《随机过程》第二版 习题作业</description><pubDate>Mon, 05 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;Sheldon M. Ross &quot;Stochastic Processes&quot; 2nd Edition
随机过程（第二版）习题&lt;/p&gt;
&lt;h2&gt;5.10&lt;/h2&gt;
&lt;p&gt;(1) Kolmogorov 微分方程的引理1即为题所求. 只需证明该引理的前提条件，即“$t$ 时间内转移一次以上的概率为 $o(t)$”.&lt;/p&gt;
&lt;p&gt;记 $T_1$ 为第一次转移的时间，$T_1\sim E(v_0)$，假设转移到状态 $k$；记 $T_2$ 为第二次转移的时间，$T_2&apos;=T_2-T_1\sim E(v_k)$. 两次转移都发生在 $t$ 时间内的概率 $P_{\ge2}(t)=P(T_1+T_2&apos;\leq t)$&lt;/p&gt;
&lt;p&gt;$T_1$ 与 $T_2&apos;$ 独立，于是卷积之得
$$
\begin{aligned}
P_{\geq2}(t)&amp;#x26;= \displaystyle\int_0^t f_{T_1}(x)\cdot P(T_2&apos;\le t-x),{\rm d}x\
&amp;#x26;= \displaystyle\int_0^t v_0{\rm e}^{-v_0 x} (1-{\rm e}^{-v_k(t-x)}),{\rm d}x\
&amp;#x26;= \int_0^t v_0 {\rm e}^{-v_0 x},{\rm d}x-\int_0^t v_0 e^{-v_0 x} {\rm e}^{-v_k(t-x)},{\rm d}x\
&amp;#x26;= 1-{\rm e}^{-v_0t}-v_0{\rm e}^{-v_kt} \displaystyle\int_0^t {\rm e}^{-(v_0-v_k)x} {\rm d}x\
&amp;#x26;= 1-{\rm e}^{-v_0t}-v_0{\rm e}^{-v_k t} \cdot\dfrac{1-{\rm e}^{-(v_0-v_k)t} }{v_0-v_k}
\end{aligned}
$$
（其中当 $v_0-v_k=0$ 时后项积分为 $0$，不影响结论）&lt;/p&gt;
&lt;p&gt;令 $t\to0$，作一阶无穷小近似得
$$
P_{\geq 2}(t)\sim v_0t-\dfrac{v_0t}{v_0-v_k} + o(t) = o(t),
$$&lt;/p&gt;
&lt;p&gt;于是 $\lim\limits_{t\to0}\dfrac{1-P(t)}{t}=\lim\limits_{t\to0}\dfrac{1-P_{00}(t)}{t}=v_0$.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) &lt;strong&gt;左边&lt;/strong&gt;：
$$
P(s+t)=\sum\limits_{k=0}^\infty P_{0k}(s)P_{k0}(t)\geq P_{00}(s)P_{00}(t)=P(s)P(t)
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;右边&lt;/strong&gt;：
$$
\begin{aligned}
P(s+t)&amp;#x26;=\sum\limits_{k=0}^\infty P_{0k}(s)P_{k0}(t)\
&amp;#x26;= P(s)P(t)+\sum\limits_{k=1}^\infty P_{0k}(s)P_{k0}(t)\
&amp;#x26;\leq P(s)P(t)+\sum\limits_{k=1}^\infty P_{0k}(s)\
&amp;#x26;= P(s)P(t)+1-P(s)
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) 将 (2) 中的 $t$ 替换为 $t-s$
$$
P(s)P(t-s)\leq P(s+t-s)\leq 1-P(t-s)+P(s)P(t-s)
$$
同减 $P(s)$
$$
\begin{aligned}
P(s)\big[P(t-s)-1\big]\leq P(t)-P(s)&amp;#x26;\leq 1-P(t-s)+P(s)P(t-s)-P(s)\
&amp;#x26;= \big[1-P(t-s)\big]\big[1-P(s)\big]
\end{aligned}
$$
又概率 $P\in[0,1]$，
$$
\begin{aligned}
P(t-s)-1\leq P(s)\big[P(t-s)-1\big]\leq P(t)-P(s)&amp;#x26;\leq\big[1-P(t-s)\big]\big[1-P(s)\big]\leq1-P(t-s)
\end{aligned}
$$
左、中、右取绝对值即得 $|P(t)-P(s)|\leq1-P(t-s)$.&lt;/p&gt;
&lt;p&gt;进一步地，令 $t=s+\varepsilon$，得  $|P(s+\varepsilon)-P(s)|\leq1-P(\varepsilon)$. $P(t)$ 表示 $t$ 时间内不发生转移的概率，即
$$
P(t)=P(T_1&gt;t)={\rm e}^{-v_0t}&gt;1-v_0t
$$
于是 $\forall\ \varepsilon&gt;0$，存在 $\delta=v_0\varepsilon$ 使得
$$
|P(s+\varepsilon)-P(s)|&amp;#x3C;v_0\varepsilon=\delta
$$
故 $P$ 连续.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;5.11&lt;/h2&gt;
&lt;p&gt;(1) 在 Yule 生灭过程中，记 $v_i=i\lambda$，则 $q_{ij}=\begin{cases}i \lambda&amp;#x26;,j=i+1\0&amp;#x26;,j \neq i+1\end{cases}$. 于是
$$
\begin{aligned}
P_{ij}&apos;(t)&amp;#x26;= \binom{j-1}{i-1}\big(-i\lambda{\rm e}^{-i\lambda t}(1-{\rm e}^{-\lambda t})^{j-i}+(j-i)(1-{\rm e}^{-\lambda t})^{j-i-1}\lambda{\rm e}^{-\lambda t}{\rm e}^{-i\lambda t}\big)\
&amp;#x26;= \binom{j-1}{i-1}\lambda {\rm e}^{-i\lambda t}(1-{\rm e}^{\lambda t})^{j-i-1}(j {\rm e}^{-\lambda t}-i)
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;向后方程组&lt;/strong&gt;：
$$
\begin{aligned}
\sum_{k\neq i} q_{ik}P_{kj}(t)-v_iP_{ij}(t)&amp;#x26;=q_{i,i+1}P_{i+1,j}(t)-i \lambda P_{ij}(t)\
&amp;#x26;= i\lambda \binom{j-1}{i} {\rm e}^{-(i+1) \lambda t}\left(1-{\rm e}^{-\lambda t}\right)^{j-i-1}-i \lambda P_{ij}(t)\
&amp;#x26;= \lambda\binom{j-1}{i-1}(j-i){\rm e}^{-i\lambda t}{\rm e}^{-\lambda t}\left(1-{\rm e}^{-\lambda t}\right)^{j-i-1}-i\lambda\binom{j-1}{i-1}{\rm e}^{-i \lambda t}(1-{\rm e}^{-\lambda t})^{j-i}\
&amp;#x26;= \binom{j-1}{i-1}\lambda{\rm e}^{-i \lambda t}\left(1-{\rm e}^{-\lambda t}\right)^{j-i-1}(j {\rm e}^{-\lambda t}-i{\rm e}^{-\lambda t}-i+i{\rm e}^{-\lambda t})\
&amp;#x26;= \binom{j-1}{i-1}\lambda {\rm e}^{-i\lambda t}(1-{\rm e}^{\lambda t})^{j-i-1}(j {\rm e}^{-\lambda t}-i)\
&amp;#x26;= P_{ij}&apos;(t)
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;向前方程组&lt;/strong&gt;：
$$
\begin{aligned}
\sum_{k\neq j} q_{kj}P_{ik}(t)-v_jP_{ij}(t)&amp;#x26;=q_{j-1,j}P_{i,j-1}(t)-j \lambda P_{ij}(t)\
&amp;#x26;= (j-1)\lambda \binom{j-2}{i-1} {\rm e}^{-i\lambda t}\left(1-{\rm e}^{-\lambda t}\right)^{j-i-1}-j \lambda P_{ij}(t)\
&amp;#x26;= \lambda\binom{j-1}{i-1}(j-i){\rm e}^{-i\lambda t}\left(1-{\rm e}^{-\lambda t}\right)^{j-i-1}-j\lambda\binom{j-1}{i-1}{\rm e}^{-i \lambda t}(1-{\rm e}^{-\lambda t})^{j-i}\
&amp;#x26;= \binom{j-1}{i-1}\lambda{\rm e}^{-i \lambda t}\left(1-{\rm e}^{-\lambda t}\right)^{j-i-1}(j-i-j+j {\rm e}^{-\lambda t})\
&amp;#x26;= \binom{j-1}{i-1}\lambda {\rm e}^{-i\lambda t}(1-{\rm e}^{\lambda t})^{j-i-1}(j {\rm e}^{-\lambda t}-i)\
&amp;#x26;= P_{ij}&apos;(t)
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 取条件于 Yule 过程停止时的人口数 $X(T)=n$. 考虑 $\tau$ 时间内流失 $n$ 人，相当于求第 $n$ 个人离开所需时间为 $t$ 的概率，故密度函数
$$
\begin{aligned}
f(t)&amp;#x26;= \sum\limits_{n=1}^\infty P(S_n=t)\cdot P(X(T)=n)\
&amp;#x26;= \sum\limits_{n=1}^\infty\dfrac{\mu {\rm e}^{-\mu t}(\mu t)^{n-1} }{(n-1)!}\cdot P(X(T)=n)\
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;令 $P_n(t)=P(X(t)=n)$，由出生率定义可得
$$
\begin{cases}
P_1&apos;(t)=-\lambda P(t)\
P_n&apos;(t)=(n-1)\lambda P_{n-1}(t)-n \lambda P_n(t)
\end{cases}
$$
归纳之证得 $P_n(t)={\rm e}^{-\lambda t}(1-{\rm e}^{-\lambda t})^{n-1}$. 于是
$$
\begin{aligned}
f(t)&amp;#x26;= \sum\limits_{n=1}^\infty\dfrac{\mu {\rm e}^{-\mu t}(\mu t)^{n-1} }{(n-1)!}\cdot {\rm e}^{-\lambda T}(1-{\rm e}^{-\lambda T})^{n-1}\
&amp;#x26;= \mu {\rm e}^{-\mu t}{\rm e}^{-\lambda T}\sum\limits_{n=0}^\infty\dfrac{\big(\mu t(1-{\rm e}^{-\lambda T})\big)^n}{n!}\
&amp;#x26;= \mu{\rm e}^{-\lambda T} \cdot{\rm exp}\big(-\mu t+\mu t(1-{\rm e}^{-\lambda T})\big)\
&amp;#x26;= \mu{\rm e}^{-\lambda T} \cdot{\rm exp}(-\mu {\rm e}^{-\lambda T}t)
\end{aligned}
$$
这是一个以 $\mu{\rm e}^{-\lambda T}$ 为参数的指数分布，因此
$$
E[\tau]=\dfrac{1}{\mu{\rm e}^{-\lambda T} }=\dfrac{ {\rm e}^{-\lambda T} }{\mu}
$$&lt;/p&gt;</content:encoded><h:img src="/_astro/markov-rickroll.DOIM5OYi.jpg"/><enclosure url="/_astro/markov-rickroll.DOIM5OYi.jpg"/></item><item><title>随机过程作业 Chapter4 Markov链</title><link>https://chinosan.com/blog/stochastic-processes/chapter4</link><guid isPermaLink="true">https://chinosan.com/blog/stochastic-processes/chapter4</guid><description>Sheldon M. Ross《随机过程》第二版 习题作业</description><pubDate>Tue, 15 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;Sheldon M. Ross &quot;Stochastic Processes&quot; 2nd Edition
随机过程（第二版）习题&lt;/p&gt;
&lt;h2&gt;4.2&lt;/h2&gt;
&lt;p&gt;归纳法证之.&lt;/p&gt;
&lt;p&gt;① 当 $n=n_k+1$ 时，由 Markov 性立即得
$$
P(X_{n_k+1}=j\mid X_{n_1}=i_1,\cdots,X_{n_k}=i_k)=P(X_{n_k+1}=j\mid X_{n_k}=i_k)
$$&lt;/p&gt;
&lt;p&gt;② 假设 $n=m&gt;n_k+1$ 时成立 $P(X_m=s\mid X_{n_1}=i_1,\cdots,X_{n_k}=i_k)=P(X_m=s\mid X_{n_k}=i_k)$. 考虑 $n=m+1$，取条件于 $X_m$ 的取值，由 Markov 性及归纳假设得
$$
\begin{aligned}
&amp;#x26;P(X_{m+1}=j\mid X_{n_1}=i_1,\cdots,X_{n_k}=i_k)\
=,&amp;#x26;\textstyle\sum_{s}
P(X_{m+1}=j\mid X_m=s,X_{n_1}=i_1,\cdots,X_{n_k}=i_k)\cdot
P(X_m=s\mid X_{n_1}=i_1,\cdots,X_{n_k}=i_k)\
=,&amp;#x26;\textstyle\sum_{s}
P(X_{m+1}=j\mid X_m=s)\cdot
P(X_m=s\mid X_{n_k}=i_k)\
=,&amp;#x26;P(X_{m+1}=j\mid X_{n_k}=i_k)\quad(\text{Chapman-Kolmogorov})
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;于是原命题成立.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4.8&lt;/h2&gt;
&lt;p&gt;(1) 用 $n_{k}$ 表示第 $k$ 次记录产生的时刻，则 $X_{n_k}=R_k$. 于是 $R_k=r$ 即等价于“$n_k$ 时刻取值为 $r$，且比上一个记录值要大，且两次记录时刻之间的取值均不比上一个记录值大”. 记第 $k$ 次记录与第 $k+1$ 次记录之间间隔 $n_{k+1}-n_k=t$（也即两个记录中间夹 $t-1$ 个值），则取条件于 $t$：
$$
\begin{aligned}
P\left(R_{k+1}=r\mid R_k=r_0\right)&amp;#x26;= \textstyle\sum\limits_{t=1}^\infty P\left(X_{n_{k+1} }=r,,X_{n_{k+1} }&gt;r_0,;,X_{1+{n_k} }\leq r_0,,X_{2+{n_k} }\leq r_0,,\cdots,,X_{t-1+n_{k} }\leq r_0\right)\
&amp;#x26;= \textstyle\sum\limits_{t=1}^\infty P\left(X_l=r,,X_{l}&gt;r_0\right)\cdot\big[P\left(X_n\leq r_0\right)\big]^{t-1}
\end{aligned}
$$
当 $r\leq r_0$ 时，显然有 $P\left(X_l=r,,X_l&gt;r_0\right)=0$；&lt;br&gt;
当 $r&gt;r_0$ 时，原式 $=\textstyle\sum\limits_{t=0}^\infty P\left(X_l=r\right)\cdot\big[P\left(X_n\leq r_0\right)\big]^{t}=P\left(X_l=r\right)\cdot\dfrac{1}{1-P(X_n\leq r_0)}=\dfrac{\alpha_j}{\sum_{m=r_0+1}^{\infty}\alpha_m}$&lt;/p&gt;
&lt;p&gt;因此 $\left{R_k\right}$ 是 Markov 链，转移概率
$$
P\left(R_{k+1}=r\mid R_k=r_0\right)=\begin{cases}0&amp;#x26;,,r\leq r_0\\dfrac{\alpha_r}{\sum_{m=r_0+1}^{\infty}\alpha_m}&amp;#x26;,,r&gt;r_0\end{cases}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 第 $k+1$ 次记录至第 $k+2$ 次记录的时间间隔显然与且只与第 $k+1$ 次记录的值有关，因此 $\left{T_k\right}$ 不是 Markov 链。结合 $\left{R_k\right}$ 的 Markov 性可得
$$
\begin{aligned}
&amp;#x26;\quad,,P\left(R_{k+1}=r,,T_{k+1}=t\mid R_k=r_0,,T_k=t_0\right)\
&amp;#x26;= P\left(R_{k+1}=r,,T_{k+1}=t\mid R_k=r_0\right)\
&amp;#x26;= \dfrac{P\left(R_{k+1}=r,,T_{k+1}=t,,T_k=t_0\mid R_k=r_0\right)\bcancel{P(R_k=r_0)} }{P\left(T_k=t_0\mid R_k=r_0\right)\bcancel{P(R_k=r_0)} }\
&amp;#x26;= \dfrac{P((t!-!1)个X\leq r,,X_l=r&gt;r_0,,(t_0!-!1)个X\leq r_0)}{P((t_0!-!1)个X\leq r_0)}\
&amp;#x26;= P((t!-!1)个X\leq r,,X_l=r&gt;r_0)
\end{aligned}
$$
于是由 (1) 的结论，当 $r \leq r_0$ 时为 $0$，当 $r&gt;r_0$ 时 $=P\left(X_l=r\right)\cdot\big[P\left(X_n\leq r_0\right)\big]^{t-1}=\alpha_r\left(\sum\limits_{m=0}^{r}\alpha_m\right)^{t-1}{}$&lt;/p&gt;
&lt;p&gt;因此 $\left{(R_k,,T_k)\right}$ 是 Markov 链，转移概率
$$
P\left(R_{k+1}=r,,T_{k+1}=t\mid R_k=r_0,,T_k=t_0\right)=\begin{cases}0&amp;#x26;,,r\leq r_0\\alpha_r\left(\sum\limits_{m=0}^{r}\alpha_m\right)^{t-1}&amp;#x26;,,r&gt;r_0\end{cases}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) 由题意，$S_k$ 即第 $k$ 个记录出现的时刻. 欲求 $P(S_{k+1}=s\mid S_k=s_0)$，这个事相当于：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;$X_1,\cdots,X_{s-1}$ 的最大值出现在前 $s_0$ 个中，即 $\max(X_1,\dots,X_{s-1})=\max(X_1,\dots,X_{s_0})$. 参考习题1.6可得，当变量为连续型时，右侧max括号内每一个数成为左侧最大值的可能性相同，均为 $\dfrac{1}{s-1}$，因此这部分的概率为 $\dfrac{s_0}{s-1}$；&lt;/li&gt;
&lt;li&gt;$X_s$ 是新的记录值，即 $X_s=\max(X_1,\dots,X_s)$，这里的概率为 $\dfrac1s$.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;以上两事件独立，故 $P(S_{k+1}=s\mid S_k=s_0)=\dfrac{s_0}{s-1}\dfrac1s\ (s&gt;s_0)$.&lt;/p&gt;
&lt;p&gt;于是 $\left{S_n\right}$ 是 Markov 链，转移概率
$$
P(S_{k+1}=s\mid S_k=s_0)=\begin{cases}0&amp;#x26;,s\leq s_0 \
\dfrac{s_0}{s(s-1)}&amp;#x26;,s&gt;s_0
\end{cases}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4.18&lt;/h2&gt;
&lt;p&gt;(1) $X_n$ 可能的取值只能为 $\left[0,N\right]$ 中的整数. 计算 $P(X_{n+1}=x\mid X_n=x_0)$ 时，假设两次统计之间来了 $k$ 个工作（概率为 $\dfrac{ {\rm e}^{-\lambda}\lambda^k}{\lambda!}$），按 $x_0$ 分两类讨论：&lt;br&gt;
① $x_0=0$ 时，当 $0\leq k&amp;#x3C;N$ 时 $X_{n+1}$ 的取值 $x=k$，当 $k\geq N$ 时 $x=N$；&lt;br&gt;
② $0&amp;#x3C; x_0\leq N$ 时，先从队列中扣除一个工作进行处理，当 $0\leq k &amp;#x3C; N-x_0$ 时 $X_{n+1}$ 的取值 $x=x_0+k-1$，当 $k\geq N-x_0+1$ 时 $x=N$&lt;/p&gt;
&lt;p&gt;将参数由 $k$ 代换为 $x$ 即得转移概率表达式
$$
P(X_{n+1}=x\mid X_n=x_0)=
\begin{cases}
{\dfrac{ {\rm e}^{-\lambda}\lambda^x}{x!} } &amp;#x26; x_0=0,,\quad\quad\ 0\leq x&amp;#x3C;N \ \sum\limits_{k=N}^{\infty} {\dfrac{ {\rm e}^{-\lambda}\lambda^k}{k!} } &amp;#x26; x_0=0,,\quad\quad\
x=N \ {\dfrac{ {\rm e}^{-\lambda}\lambda^{x-x_0+1} }{(x-x_0+1)!} } &amp;#x26; 0&amp;#x3C; x_0\leq N,, x_0-1\leq x&amp;#x3C;N \ \sum\limits_{k=N-x_0+1}^{\infty}  \dfrac{ {\rm e}^{-\lambda}\lambda^k}{k!} &amp;#x26; 0&amp;#x3C; x_0\leq N,, x=N
\end{cases}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 先证明该链不可约且正常返：&lt;/p&gt;
&lt;p&gt;若 $X_n=0$，则新到达 $k$ 个工作后，$X_{n+1}=\min(k,N)$，由于 Poisson 分布对任意 $k\in \mathbb{N}$ 都有正概率，故对任意 $0\leq x\leq N$，$P(X_{n+1}=x\mid X_n=0)&gt;0$，即状态 $0$ 可以到达所有状态. 另一方面，对任意 $x_0&gt;0$，每天加工一个工作，新到达 $k$ 个工作后，状态转移为$X_{n+1}=\min(x_0-1+k,N)$，特别地若连续有限天 $k=0$，工作数会递减到达状态 $0$. 因此该链不可约，且状态间是正常返的.&lt;/p&gt;
&lt;p&gt;再证明该链非周期：&lt;/p&gt;
&lt;p&gt;$P(X_{n+1}=0\mid X_n=0)={\rm e}^{-\lambda}&gt;0$，即状态 $0$ 可以在一步内返回自身，因此周期为 1. 由互通状态周期一致，该链周期为 1，故该链非周期.&lt;/p&gt;
&lt;p&gt;因此该链是遍历的.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) 平稳概率方程 $\left{\begin{aligned}\pi_j= \sum\limits_i&amp;#x26;\pi_iP_{ij}\\sum\limits_{i=0}^N \pi_i=&amp;#x26;,1\end{aligned}\right.$. 由 (1) 中的分类，当 $j&amp;#x3C;N$ 时
$$
\begin{aligned}
\pi_j=\sum\limits_{i=0}^N \pi_i P_{ij}&amp;#x26;= \pi_0 \cdot  \frac{ {\rm e}^{-\lambda}\lambda^j}{j!}+\sum\limits_{i=1}^N \pi_i P_{ij} \
&amp;#x26;= \pi_0\cdot{ \frac{ {\rm e}^{-\lambda}\lambda^j}{j!}+\sum\limits_{i=1}^{j+1} \pi_i P_{ij} }\
&amp;#x26; =\pi_0 \cdot\frac{ {\rm e}^{-\lambda}\lambda^j}{j!}+\sum\limits_{i=1}^{j+1}\pi_i\cdot\frac{ {\rm e}^{-\lambda}\lambda^{j-i+1} }{(j-i+1)!}
\end{aligned}
$$
当 $j=N$ 时，$\pi_N=\sum\limits_{i=0}^N \pi_i P_{i N}=\pi_0 \sum\limits_{i=N}^{\infty}\dfrac{ {\rm e}^{-\lambda}\lambda^i}{i!}+\sum\limits_{i=1}^N \pi_i\left(\sum\limits_{i=N-i+1}^{\infty} \dfrac{ {\rm e}^{-\lambda} \lambda^i}{i!}\right)$&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4.23&lt;/h2&gt;
&lt;p&gt;由例题4.4A，从本金 $i$ 出发最终赢到 $N$ 的概率 $f_i=\begin{cases}\dfrac{1-(q/p)^i}{1-(q/p)^N}&amp;#x26;,p\neq\dfrac12\\dfrac iN&amp;#x26;,p=\dfrac12\end{cases}{}$&lt;/p&gt;
&lt;p&gt;于是
$$
\begin{aligned}
P(\text{下一局赢} \mid 从\ i\ 开始赢到\ N)&amp;#x26;= \dfrac{P(从\ i\ 开始赢到\ N\mid\text{下一局赢})\cdot P(下一局赢)}{P(从\ i\ 开始赢到\ N)}\
&amp;#x26;= \dfrac{P(从\ i+1\ 开始赢到\ N)\cdot P(下一局赢)}{P(从\ i\ 开始赢到\ N)}\
&amp;#x26;= \dfrac{p\cdot f_{i+1} }{f_i}\
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;因此当 $p\neq\dfrac12$ 时，$\dfrac{p\cdot f_{i+1} }{f_i}= \dfrac{p{(1-(q/p)^{i+1})} }{ {1-(q/p)^i} }$；当 $p=\dfrac12$ 时，$\dfrac{p\cdot f_{i+1} }{f_i}= \dfrac12\dfrac{i+1}{i}=\dfrac{i+1}{2i}{}$&lt;/p&gt;
&lt;hr&gt;</content:encoded><h:img src="/_astro/markov-rickroll.DOIM5OYi.jpg"/><enclosure url="/_astro/markov-rickroll.DOIM5OYi.jpg"/></item><item><title>随机过程作业 Chapter3 更新理论</title><link>https://chinosan.com/blog/stochastic-processes/chapter3</link><guid isPermaLink="true">https://chinosan.com/blog/stochastic-processes/chapter3</guid><description>Sheldon M. Ross《随机过程》第二版 习题作业</description><pubDate>Sat, 12 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;Sheldon M. Ross &quot;Stochastic Processes&quot; 2nd Edition
随机过程（第二版）习题&lt;/p&gt;
&lt;h2&gt;3.4&lt;/h2&gt;
&lt;p&gt;取条件于首次更新的等待时间 $S_1$（也即 $X_1$），并假定积分与求和可交换. 则
$$
\begin{aligned}
m(t)&amp;#x26;=\sum\limits_{n=1}^{\infty}F_n(t)=F(t)+\sum\limits_{n=2}^{\infty}F_n(t)\
&amp;#x26;=F(t)+\sum\limits_{n=2}^{\infty}P(S_n\leqslant t)\
&amp;#x26;=F(t)+\sum\limits_{n=2}^{\infty}\displaystyle\int_0^tP(S_n\leqslant t\mid X_1=x),{\rm d}F(x)\
&amp;#x26;=F(t)+\sum\limits_{n=2}^{\infty}\displaystyle\int_0^tP(X_1+X_2+\cdots+X_n\leqslant t\mid X_1=x),{\rm d}F(x)\
&amp;#x26;=F(t)+\sum\limits_{n=2}^{\infty}\displaystyle\int_0^tP(X_2+\cdots+X_n\leqslant t-x),{\rm d}F(x)\
&amp;#x26;=F(t)+\sum\limits_{n=2}^{\infty}\displaystyle\int_0^tF_{n-1}(t-x),{\rm d}F(x)\
&amp;#x26;=F(t)+\displaystyle\int_0^t\sum\limits_{n=1}^{\infty}F_{n}(t-x),{\rm d}F(x)\
&amp;#x26;=F(t)+\displaystyle\int_0^tm(t-x),{\rm d}F(x)
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3.7&lt;/h2&gt;
&lt;p&gt;将 $F(x)=x,,0\leqslant t\leqslant1$ 代入习题3.4所证结论有
$$
\begin{aligned}
m(t)&amp;#x26;=t+\displaystyle\int_0^tm(t-x){\rm d}x\
&amp;#x26;=t+\displaystyle\int_0^tm(x){\rm d}x\
\end{aligned}
$$
两边对 $t$ 求导得
$$
m&apos;(t)=1+m(t)
$$
解微分方程即可. 令 $g(t)=1+m(t)$，则有 $g&apos;(t)=g(t)$ 即 $\dfrac{ {\rm d}g}{g}={\rm d}t$. 于是
$$
\begin{aligned}
\ln g(t)&amp;#x26;=t+C\
g(t)&amp;#x26;=C {\rm e}^t
\end{aligned}
$$
代入 $g(0)=1+m(0)=1$ 得 $C=1$，即 $g(t)={\rm e}^t$. 于是 $m(t)=g(t)-1={\rm e}^t-1$&lt;/p&gt;
&lt;p&gt;在 $(0,1]$ 上发生的事件数为 $N(1)$，那么第 $N(1)+1$ 个事件发生的时刻即“第一个在1之后发生的事件”，或者说即“使得间隔之和大于1所需的更新数目”. 于是题目所求即为
$$
E[N(1)+1]=m(1)+1={\rm e}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3.10&lt;/h2&gt;
&lt;p&gt;(1) 事实上 $\sum\limits_{i=1}^m S_i=\sum\limits_{n=1}^{\sum_1^m N_i}X_n=S_{\sum_1^m N_i}$. 令 $k=\sum_1^m N_i$，则当 $m\to\infty$ 时，$k\to\infty$. 于是由强大数定律
$$
\lim\limits_{m\to\infty}\dfrac{\sum_1^m S_i}{\sum_1^m N_i}=\lim\limits_{k\to\infty}\dfrac{S_k}{k}=\mu_X=E[X]
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) $\dfrac{\sum_1^m S_i}{\sum_1^m N_i}=\dfrac{\sum_1^m S_i/m}{\sum_1^m N_i/m}$. 由 $S_i$ 的定义可知，$S_i$ 之间独立同分布. 故当 $m\to\infty$ 时，由强大数定律，分子分母极限都存在
$$
\begin{aligned}
\lim\limits_{m\to\infty}\dfrac{\sum_1^m S_i}{m}&amp;#x26;=\mu_S=E[S]\
\lim\limits_{m\to\infty}\dfrac{\sum_1^m N_i}{m}&amp;#x26;=\mu_N=E[N]\
\end{aligned}
$$
代入即得
$$
\lim\limits_{m\to\infty}\dfrac{\sum_1^m S_i}{\sum_1^m N_i}=\dfrac{\lim\limits_{m\to\infty}\sum_1^m S_i/m}{\lim\limits_{m\to\infty}\sum_1^m N_i/m}=\dfrac{E[S]}{E[N]}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) 于是 $E[X]=\dfrac{E[S]}{E[N]}$，即 $E[S]=E[X]{E[N]}$. 此即为 Wald 方程.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3.17&lt;/h2&gt;
&lt;p&gt;对 $g(t)$ 的更新型方程得自取条件于过程按概率意义上重新开始的时刻，对下列函数建立更新型方程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一个交替更新过程在时刻 $t$ 处于开状态的概率 $P(t)$&lt;/li&gt;
&lt;li&gt;更新过程在时刻 $t$ 的期望年龄 $g(t)=E[A(t)]$&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;使用题示结论给出更新型方程的解，并运用关键更新定理得到上述两题中的极限值.&lt;/p&gt;
&lt;p&gt;对更新型方程作 Laplace 变换，由卷积定理得
$$
\begin{aligned}
{\mathcal L}[g]&amp;#x26;={\mathcal L}[h]+{\mathcal L}[g]{\mathcal L}[F]\
{\mathcal L}[g]&amp;#x26;=\dfrac{ {\mathcal L}[h]}{1-{\mathcal L}[F]}
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;考虑更新函数的 Laplace 变换
$$
\begin{aligned}
m(t)&amp;#x26;=\sum\limits_{n=1}^{\infty}F_n(t)\
{\mathcal L}[m]&amp;#x26;=\sum\limits_{n=1}^{\infty}({\mathcal L}[F])^n\
&amp;#x26;=\dfrac{ {\mathcal L}[F]}{1-{\mathcal L}[F]}\
\end{aligned}
$$
于是 ${\mathcal L}[F]=\dfrac{ {\mathcal L}[m]}{1+{\mathcal L}[m]}$. 代入 Laplace 变换后的式子得
$$
\begin{aligned}
{\mathcal L}[g]&amp;#x26;=\dfrac{ {\mathcal L}[h]}{1-{\mathcal L}[F]}=\dfrac{ {\mathcal L}[h]}{1-\dfrac{ {\mathcal L}[m]}{1+{\mathcal L}[m]} }\
&amp;#x26;={\mathcal L}[h](1+{\mathcal L}[m])\
&amp;#x26;={\mathcal L}[h]+{\mathcal L}[h]\times{\mathcal L}[m]
\end{aligned}
$$
最后做 Laplace 逆变换得
$$
g(t)=h(t)+&lt;a href=&quot;t&quot;&gt;h*m&lt;/a&gt;=h(t)+\displaystyle\int_0^th(t-x),{\rm d}m(x)
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(1) 称“从关到开”为一次更新，开状态时间序列 $\left{Z_n\right}$ 独立同分布 $H$、关状态时间序列 $\left{Y_n\right}$ 独立同分布 $G$，$X_i=Z_i+Y_i$. 取条件于事件从概率意义上重新开始（即首次更新）的时刻
$$
\begin{aligned}
P(t)&amp;#x26;=\displaystyle\int_0^{+\infty}P(,t时刻为开\mid X_1=s){\rm d}F(s)\
\end{aligned}
$$
对于 $s\leqslant t$，那么条件概率相当于从 $s$ 时刻重新开始，$\displaystyle\int_0^tP(t-s){\rm d}F(s)$；&lt;br&gt;
对于 $s&gt;t$，“$t$ 时刻处于开状态”等价于“$t&amp;#x3C;Z_1$”，而 $s$ 从 $t$ 积到正无穷也即所有可能的条件的总和.&lt;/p&gt;
&lt;p&gt;于是更新型方程为
$$
\begin{aligned}
P(t)&amp;#x26;=\displaystyle\int_0^tP(t-s){\rm d}F(s)+\displaystyle\int_t^{+\infty}P(t&amp;#x3C;Z_1\mid X_1=s){\rm d}F(s)\
&amp;#x26;=P(Z_1&gt;t)+\displaystyle\int_0^tP(t-s){\rm d}F(s)\
&amp;#x26;=\overline H(t)+\displaystyle\int_0^tP(t-s){\rm d}F(s)\
\end{aligned}
$$
进而
$$
\lim\limits_{t\to {\infty} }P(t)=\dfrac{\int_0^{\infty}\overline H(t){\rm d}t}{\mu_X}=\dfrac{E(Z)}{E(X)}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 取条件于事件从概率意义上重新开始（即首次更新）的时刻，拆积分区间，得更新型方程
$$
\begin{aligned}
g(t)=E[A(t)]&amp;#x26;=\displaystyle\int_0^{\infty}E[A(t)\mid X_1=s]{\rm d}F(s)\
&amp;#x26;=\displaystyle\int_t^{+\infty}E(t\mid X_1=s){\rm d}F(s)+\displaystyle\int_9^tE[A(t-s)]{\rm d}F(s)\
&amp;#x26;=\displaystyle\int_t^{+\infty}t{\rm d}F(s)+\displaystyle\int_0^tg(t-s){\rm d}F(s)\
&amp;#x26;=t\overline F(t)+\displaystyle\int_0^tg(t-s){\rm d}F(s)
\end{aligned}
$$
进而
$$
\begin{aligned}
\lim\limits_{t\to {\infty} }g(t)&amp;#x26;=\dfrac{\int_0^\infty t\overline F(t){\rm d}t}{\mu_X}\
&amp;#x26;=\dfrac{\int_0^\infty\overline F(t){\rm d}(\frac12t^2)}{E[X]}\
&amp;#x26;=\dfrac{\dfrac12t^2\overline F(t)\bigg|_0^\infty-\displaystyle\int_0^\infty\dfrac12t^2{\rm d}\overline F(t)}{E[X]}\
&amp;#x26;=\dfrac{0+\dfrac12\displaystyle\int_0^\infty t^2{\rm d} F(t)}{E[X]}\
&amp;#x26;=\dfrac{E[X^2]}{2E[X]}
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3.27&lt;/h2&gt;
&lt;p&gt;假定 $X_i$ 的分布不是格点的，而有关的任何函数都是直接 Riemann 可积的，当循环的报酬定义为等于循环的长度时，上式导致
$$
\lim\limits_{t\to\infty}E[X_{N(t)+1}]=\dfrac{E[X^2]}{E[X]}
$$
请说明：它总是大于 $E[X]$，除非 $X$ 以概率1地是常数.&lt;/p&gt;
&lt;p&gt;取条件于 $S_{N(t)}$ 的值，将报酬转化到第一个更新区间内. 参考交替更新中处于开状态的概率的极限，需要对 $S_{N(t)}=0$ 单独讨论，注意到此时 $N(t)=0$.
$$
\begin{aligned}
E[R_{N(t)+1}]&amp;#x26;=E[R_{N(t)+1}\mid S_{N(t)}=0],\overline F(t){\rm d}m(0)+\displaystyle\int_0^{t} E[R_{N(t)+1}\mid S_{N(t)}=s]P(S_{N(t)}=s)\
&amp;#x26;=E[R_1\mid X_1&gt;t],\overline F(t)+\displaystyle\int_0^{t} E[R_1\mid X_1&gt;t-s],\overline F(t-s){\rm d}m(s)\
\end{aligned}
$$
令 $t\to {+\infty}$，前项中 $\overline F(\infty)=0$，后项使用关键更新定理
$$
\begin{aligned}
\lim\limits_{t\to \infty}E[R_{N(t)+1}]&amp;#x26;=\dfrac1{\mu_X}\displaystyle\int_0^{+\infty}E[R_1\mid X_1=\tau]\overline F(\tau){\rm d}\tau\quad(\tau 换成 x)\
&amp;#x26;=\dfrac{1}{E(X_1)}\displaystyle\int_0^{+\infty}\overline F(x){\rm d}x\displaystyle\int_0^{+\infty}rP(R_1=r\mid X_1=x)\
&amp;#x26;=\dfrac{1}{E(X_1)}\displaystyle\int_0^{+\infty}\displaystyle\int_0^{+\infty}xP(X_1=x)rP(R_1=r\mid X_1=x)\
&amp;#x26;=\dfrac{1}{E(X_1)}\displaystyle\int_0^{+\infty}\displaystyle\int_0^{+\infty}rxP(R_1=r,,X_1=x)\
&amp;#x26;=\dfrac{E(R_1X_1)}{E(X_1)}
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;而 $D(X)=E(X^2)-E^2(X)\geqslant0$，故$E(X^2)\geqslant E^2(X)$，即
$$
\lim\limits_{t\to\infty}E[X_{N(t)+1}]=\dfrac{E[X^2]}{E[X]}\geqslant\dfrac{E^2(X)}{E(X)}=E(X)
$$
上式取等号当且仅当 $D(X)=0$，即 $X$ 为常数.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3.32&lt;/h2&gt;
&lt;p&gt;(1) 在首个顾客到达时开始计时. 每当顾客发现系统为空的时候，这个过程相当于在概率意义上重新开始. 进一步定义 $t$ 时刻系统的状态数 $j$ 等于系统中的顾客数 $Y(t)$，那么 ${Y(t),t&gt;0}$ 是一个再现过程. 于是所求比例即为状态0的时间的长程比.&lt;br&gt;
假设一个循环中服务的顾客数为 $N_i$，单个顾客的服务时间为 $T_j$，则
$$
\begin{aligned}
\lim\limits_{t\to\infty}\dfrac{处于状态0的总时间}{t}&amp;#x26;=\dfrac{E[单循环中系统内系统顾客为0的时间]}{E[循环周期]}\
&amp;#x26;=\dfrac{E\left[\sum\limits_1^{N_i}X_j-\sum\limits_1^{N_i}T_j\right]}{E\left[\sum\limits_1^{N_i}X_j\right]}\
&amp;#x26;=\dfrac{E&lt;a href=&quot;E%5BX%5D-E%5BT%5D&quot;&gt;N&lt;/a&gt;}{E[N]E[X]}\quad(\text{Wald})\
&amp;#x26;=\dfrac{\mu_X-\mu_G}{\mu_X}\
&amp;#x26;=1-\dfrac{\mu_G}{\mu_X}
\end{aligned}
$$
也即 $P_0=1-\dfrac{\mu_G}{1/\lambda}=1-\lambda\mu_G$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2)
$$
\lim\limits_{t\to \infty}P(t时刻在忙期内)=\dfrac{E[忙期时间]}{E[忙期时间]+E[空闲时间]}=1-P_0=\lambda\mu_G
$$
空闲时间即为“单循环中最后一位顾客离开、到下一个顾客到来”的这段时间，其分布即到达间隔分布，即
$$
E[空闲时间]=E[X]=\dfrac1\lambda
$$
于是
$$
\begin{aligned}
\dfrac{E[忙期时间]}{E[忙期时间]+E[空闲时间]}&amp;#x26;=\lambda\mu_G\
E[忙期]=\dfrac{\lambda\mu_GE[空闲时间]}{1-\lambda\mu_G}&amp;#x26;=\frac{\mu_G}{1-\lambda\mu_G}
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) 设一个忙期内共 $N$ 人接受了服务，则由 Wald
$$
\begin{aligned}
E[B]&amp;#x26;=E\left[\sum\limits_1^NT_i\right]=E[N]E[T_i]\
E[N]&amp;#x26;=\dfrac{E[B]}{E[T_i]}=\dfrac{1}{1-\lambda\mu_G}
\end{aligned}
$$&lt;/p&gt;</content:encoded><h:img src="/_astro/markov-rickroll.DOIM5OYi.jpg"/><enclosure url="/_astro/markov-rickroll.DOIM5OYi.jpg"/></item><item><title>随机过程作业 Chapter2 Poisson过程</title><link>https://chinosan.com/blog/stochastic-processes/chapter2</link><guid isPermaLink="true">https://chinosan.com/blog/stochastic-processes/chapter2</guid><description>Sheldon M. Ross《随机过程》第二版 习题作业</description><pubDate>Sat, 29 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;Sheldon M. Ross &quot;Stochastic Processes&quot; 2nd Edition
随机过程（第二版）习题&lt;/p&gt;
&lt;h2&gt;2.2&lt;/h2&gt;
&lt;p&gt;(1) 令 $P_n(t)=P(N(t)=n)$. 于是
$$
\begin{aligned}
P_0(t+s)&amp;#x26;=P\left(N(t+s)=0\right)\
&amp;#x26;=P(N(t)=0, , N(t+s)-N(t)=0)\
&amp;#x26;=P(N(t)=0)\cdot P(N(t+s)-N(t)=0)\quad(独立性)\
&amp;#x26;=P(N(t)=0)\cdot P(N(s)=0)\quad(平稳性)\
&amp;#x26;=P_0(t)P_0(s)
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 由 $P_0(s+t)=P_0(s)P_0(t)$ 得 $P_0$ 为指数函数. 设 $P_0(t)={\rm e}^{\alpha t}{}$.&lt;/p&gt;
&lt;p&gt;由第二定义有，
$$
P_0(t)=P(N(t)=0)=1-P(N(t)=1)-P(N(t)\geqslant2)\
=1-\lambda t+o(t)
$$&lt;/p&gt;
&lt;p&gt;将 $P_0$ 指数函数形式 Taylor 展开到1阶
$$
\begin{aligned}P_0(t)={\rm e}^{\alpha t}&amp;#x26;=1+\alpha t+o(t)\&amp;#x26;=1-\lambda t+o(t)\end{aligned}{}
$$&lt;/p&gt;
&lt;p&gt;于是 $\alpha=-\lambda$，$P_0(t)={\rm e}^{-\lambda t}{}$&lt;/p&gt;
&lt;p&gt;故：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$P(X_1&gt;t)=P(N(t)=0)={\rm e}^{-\lambda t}{}$&lt;/li&gt;
&lt;li&gt;$\begin{aligned}P(X_2&gt;t\mid X_1=s)&amp;#x26;=P\big(在区间(s,s+t]上0个事件\mid X_1=t\big)\&amp;#x26;=P\big(N(t)=0\big)\quad(独立平稳)\&amp;#x26;={\rm e}^{-\lambda t}\end{aligned}{}$&lt;/li&gt;
&lt;li&gt;以此类推可得 $P(X_i&gt;t)={\rm e}^{-\lambda t}{}$，即 $X_1,X_2,\cdots$ 独立同分布，服从速率为 $\lambda$ 的指数分布.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;(3) 到达时间 $S_n$ 服从参数为 $k$ 与 $\lambda$ 的 gamma 分布. 于是
$$
\begin{aligned}
P\big(N(t)=k\big)&amp;#x26;=P(S_{k+1}&gt;t)-P(S_k\leqslant t)\
&amp;#x26;=\int_t^{+\infty}\dfrac{\lambda {\rm e}^{-\lambda \tau}(\lambda\tau)^k}{k!}{\rm d}\tau-\int_t^{+\infty}\dfrac{\lambda {\rm e}^{-\lambda \tau}(\lambda\tau)^{k-1} }{(k-1)!}{\rm d}\tau\
&amp;#x26;=\dfrac{1}{k!}\int_{\lambda t}^{+\infty}{\rm e}^{-u}u^k{\rm d}u-\dfrac{1}{(k-1)!}\int_{\lambda t}^{+\infty}{\rm e}^{-u}u^{k-1}{\rm d}u\
&amp;#x26;=\dfrac{1}{k!}\left(-{\rm e}^{-u}u^k\bigg|^{+\infty}&lt;em&gt;{\lambda t}+\int&lt;/em&gt;{\lambda t}^{+\infty}{\rm e}^{-u}ku^{k-1}{\rm d}u\right)-\dfrac{1}{(k-1)!}\int_{\lambda t}^{+\infty}{\rm e}^{-u}u^{k-1}{\rm d}u\
&amp;#x26;=\dfrac{ {\rm e}^{-\lambda t}(\lambda t)^k}{k!}+减号后面的积分-减号后面的积分\
&amp;#x26;=\dfrac{ {\rm e}^{-\lambda t}(\lambda t)^k}{k!}
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;即 $N(t)$ 服从均值为 $\lambda t$ 的 Poisson 分布.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2.5&lt;/h2&gt;
&lt;p&gt;(1) 令 $N(t)=N_1(t)+N_2(t)$. 使用第二定义证明 ${N(t)}{}$ 是速率为 $\lambda_1+\lambda_2$ 的 Poisson 过程.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;条件一：$N(0)=N_1(0)+N_2(0)=0$，满足.&lt;/li&gt;
&lt;li&gt;条件二：$N(s+t)-N(s)=\big[N_1(s+t)-N_1(s)\big]+\big[N_2(s+t)-N_2(s)\big]$，由 ${N_1(t)}{}$ 和 ${N_2(t)}{}$ 的独立平稳增量可推得 $N(t)$ 也具有独立平稳增量.&lt;/li&gt;
&lt;li&gt;条件三：
$$
\begin{aligned}P\left(N(h)=1\right)&amp;#x26;=P\left(N_1(h)=1,,N_2(h)=0\right)+P\left(N_1(h)=1,,N_2(h)=0\right)\&amp;#x26;=(\lambda_1h+o(h))(1-\lambda_2h+o(h))+(\lambda_2h+o(h))(1-\lambda_1h+o(h))\&amp;#x26;=\lambda_1h-\lambda_1\lambda_2h^2+\lambda_2h-\lambda_1\lambda_2h^2+o(h)\&amp;#x26;=(\lambda_1+\lambda_2)h+o(h)\end{aligned}{}
$$&lt;/li&gt;
&lt;li&gt;条件四：
$$
\begin{aligned}P\left(N(h)=0\right)&amp;#x26;=P\left(N_1(h)=0,,N_2(h)=0\right)\&amp;#x26;=(1-\lambda_1h+o(h))(1-\lambda_1h+o(h))\&amp;#x26;=1-(\lambda_1+\lambda_2)h+o(h)\P\left(N(h)\geqslant 2\right)&amp;#x26;=1-P_0-P_1=o(h)\end{aligned}{}
$$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是 $\left{N(t)\right}{}$ 是速率 $\lambda=\lambda_1+\lambda_2$ 的 Poisson 过程.&lt;/p&gt;
&lt;p&gt;(2)
$$
\begin{aligned}
P\big(第一个事件来自{N_1(t)}\big)&amp;#x26;=\dfrac{P\big(N_1(t)=1,,N_2(t)=0\big)}{P(N(t)=1)}\
&amp;#x26;=\frac{ {\rm e}^{-\lambda_1t}(\lambda_1t)\cdot {\rm e}^{-\lambda_2t} }{ {\rm e}^{-\lambda t}(\lambda t)}\
&amp;#x26;=\dfrac{\lambda_1}{\lambda_1+\lambda_2}
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2.13&lt;/h2&gt;
&lt;p&gt;记原始冲击过程为 $\left{N(t)\right}{}$. 若一次冲击使得系统失效，则称该冲击是Ⅰ类的，否则称为Ⅱ类的. 由分类定律有，Ⅰ类冲击过程 $\left{N_1(t)\right}{}$ 是速率为 $\lambda p$ 的 Poisson 过程，Ⅱ类冲击过程 $\left{N_2(t)\right}{}$ 是速率为 $\lambda (1-p)$ 的 Poisson 过程.&lt;/p&gt;
&lt;p&gt;$P(N=n\mid T=t)=\dfrac{P(N=n,,T=t)}{P(T=t)}{}$. 分母即“Ⅰ类冲击首次发生的时刻为 $t$”，分子即“时刻 $t$ 及以前共 $n$ 次冲击，其中时刻 $t$ 发生Ⅰ类冲击、其他 $n-1$ 次为Ⅱ类冲击”.&lt;/p&gt;
&lt;p&gt;使用到达时间刻画事件发生的时刻. 记Ⅰ类冲击过程的到达时间序列为 $\left{S_n^{(1)}\right}{}$. 则
$$
\begin{aligned}
P(N=n\mid T=t)&amp;#x26;=\dfrac{P(N=n,,T=t)}{P(T=t)}\
&amp;#x26;=\dfrac{P(N_2(t)=n-1,S_1^{(1)}=t)}{P(S_1^{(1)}=t)}\
&amp;#x26;=\dfrac{P(N_2(t)=n-1)\cdot P(S_1^{(1)}=t)}{P(S_1^{(1)}=t)}\quad(N_1,N_2 两过程相独立)\
&amp;#x26;=P(N_2(t)=n-1)={\rm e}^{-\lambda t(1-p)}\dfrac{(\lambda t(1-p))^{n-1} }{(n-1)!}\
\end{aligned}
$$&lt;/p&gt;
&lt;h2&gt;2.15&lt;/h2&gt;
&lt;p&gt;假设投掷按速率为 $\lambda=1$ 的 Poisson 过程执行，以 $T_i$ 记第 $n_i$ 次出现面 $i$ 时的投掷数. 令 $T=\min T_i$.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;求 $T_i$ 的分布&lt;/li&gt;
&lt;li&gt;判断 $T_i$ 之间是否独立&lt;/li&gt;
&lt;li&gt;推导 $E[T_i]$ 的一个表达式&lt;/li&gt;
&lt;li&gt;进一步地，推导 $E[N]$ 的一个表达式&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;(1) 题目描述的就是负二项分布的定义，其所指的变量为 Bernoulli 试验中恰好成功 $n_i$ 次时的试验次数，其中试验成功的概率为 $P_i$.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 不独立. 假定只有 1 和 2 两面，投出 1 面的概率为 $p$，$n_1=n_2=2$. 由负二项分布或者直接推理，事件 $N_1=k$ 发生，iff 第 $k$ 次投掷为面1、前 $k-1$ 次投掷中有一个面1、其余都是面2. 即
$$
P(N_1=k)=\binom{k-1}{1}p^2(1-p)^{k-2}
$$
而若给定 $N_2=k$，事件 $N_1=k \mid N_2=k$ 不可能发生，因为第 $k$ 次投掷结果只可能是1或2的其中一个，不可能恰好同时满足 $N_1=n_1$、$N_2=n_2$，必然有一个面是先达成所需次数 $n_i$、而另一个面未达成. 即
$$
P(N_1=k \mid N_2=k)=0\neq P(N_1=k)
$$
于是不独立.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) 假设投出面 $i$ 的事件为第 $i$ 类. 由 $\left{N(t)\right}{}$ 为 Poisson 过程可知，${N_i(t)}{}$ 是相互独立的、速率为 $\lambda P_i=P_i$ 的 Poisson 过程. 而 $T_i$ 则是过程 $\left{N_i(t)\right}{}$ 第 $n_i$ 个事件发生的到达时间，故 $T_i$ 服从参数为 $n_i$ 和 $P_i$ 的 gamma 分布.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(4) 独立. 一方面，事件的归类是独立的；另一方面，$T_i$ 的分布参数只与它自己的 $n_i$ 和 $P_i$ 有关.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(5) 以 $\left{Y_{i,1},,Y_{i,2},,\cdots\right}{}$ 表示过程 $\left{N_i(t)\right}{}$ 的到达间隔时间序列，可知 $Y_{i,j}{}$ 服从速率为 $P_i$ 的指数分布，即 $E[Y_{i,j}]=\dfrac{1}{P_i}{}$. 于是
$$
E[T_i]=E[\sum\limits_{j=1}^{n_i}Y_{i,j}]=\sum\limits_{j=1}^{n_i}E[Y_{i,j}]=\dfrac{n_i}{P_i}{}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(6) 题目隐含了一个意思，即通过一个特殊的连续的投掷过程，可以得到 $N$ 的期望. 于是可以猜想 $T$ 与 $N$ 的期望存在某种直接关联.&lt;/p&gt;
&lt;p&gt;于是首先计算 $T$ 的期望. $T_i$ 是参数为 $n_i$ 和 $P_i$ 的 gamma 分布，其分布函数
$$
F(t)=\displaystyle\int_0^tf(\tau){\rm d}\tau=\displaystyle\int_0^t\dfrac{P_i {\rm e}^{-P_i\tau}(P_i\tau)^{n-1} }{(n-1)!}{\rm d}\tau
$$
$T$ 是 $T_i$ 的最小值，故 $T$ 的分布函数 $G(t)=1-\prod\limits_{i=1}^r(1-F(t))$. 于是
$$
\begin{aligned}
E[T]&amp;#x26;=\displaystyle\int_0^{+\infty}P(T&gt;t){\rm d}t\
&amp;#x26;=\displaystyle\int_0^{+\infty}(1-G(t)){\rm d}t\
&amp;#x26;=\displaystyle\int_0^{+\infty}\prod\limits_{i=1}^r(1-F(t)){\rm d}t\
&amp;#x26;=\displaystyle\int_0^{+\infty}\prod\limits_{i=1}^r\left(\displaystyle\int_t^{+\infty}\dfrac{P_i {\rm e}^{-P_i\tau}(P_i\tau)^{n_i-1} }{(n_i-1)!}{\rm d}\tau\right){\rm d}t\
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;由题意，投掷次数到达 $N$ 的时刻为 $t=T$，于是 $T=\sum\limits_1^NX_i$，其中 $X_i$ 为投掷的到达间隔时间序列. 对上式取期望得
$$
E[T]=E\left[\sum\limits_{j=1}^NX_i\right]
$$
取条件于 $N$ 的值，
$$
\begin{aligned}
E[T]&amp;#x26;=E\left[E\left[\sum\limits_{j=1}^NX_i,\bigg|, N\right]\right]\
&amp;#x26;=E\left[\sum\limits_{j=1}^NE\left[X_i\right]\right]\
&amp;#x26;=E\left[NE(X_i)\right]=E[N\lambda]\quad(X_i\sim E(\lambda))\
&amp;#x26;=E[N]
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;于是 $E[N]=E[T]=\displaystyle\int_0^{+\infty}\prod\limits_{i=1}^r\left(\displaystyle\int_t^{+\infty}\dfrac{P_i {\rm e}^{-P_i\tau}(P_i\tau)^{n_i-1} }{(n_i-1)!}{\rm d}\tau\right){\rm d}t$&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2.25&lt;/h2&gt;
&lt;p&gt;用 $Y_i$ 表示第 $i$ 个事件的贡献值. 由题意，它的分布依赖于该事件发生的时间，即
$$
P(Y_i&amp;#x3C;y\mid S_i=s)=F_s(y)
$$&lt;/p&gt;
&lt;p&gt;故取条件于该事件发生的时间. 记该事件发生的时间的PDF为 $g$，则贡献值的分布函数
$$
\begin{aligned}
P(Y_i&amp;#x3C;y)&amp;#x26;=\sum\limits_tP(Y_i&amp;#x3C;y\mid S_i=s)P(S_i=s)\
&amp;#x26;=\displaystyle\int_0^tP(Y_i&amp;#x3C;y\mid S_i=s)g(s){\rm d}s\
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;而当 $N(t)$ 给定时，由均匀分布定律，$S_i\sim U[0,t]$，故 $g(s)=\dfrac1t$. 故贡献值的分布函数
$$
P(Y_i&amp;#x3C;y)=\dfrac1t\displaystyle\int_0^tF_s(y){\rm d}s
$$&lt;/p&gt;
&lt;p&gt;该式与 $i$ 无关，于是各个 $Y_i$ 之间独立同分布. 又 $\left{N(t)\right}{}$ 为 Poisson 过程，故贡献和 $W=\sum\limits_{i=1}^{N(t)}Y_i$ 是一个复合 Poisson 变量，分量分布函数即 $P(Y_i&amp;#x3C;y)=\dfrac1t\displaystyle\int_0^tF_s(y){\rm d}s$，均值即 $N(t)$ 的均值 $\lambda t$.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;2.41&lt;/h2&gt;
&lt;p&gt;(1) 取条件于 $\Lambda$ 的分布 $G$，于是增量的分布为
$$
P\big(N(t+s)-N(s)=n\big)=\displaystyle\int_{0}^{+\infty}{\rm e}^{-\lambda t}\frac{(\lambda t)^{n} }{n!}{\rm d}G(\lambda)
$$
该式不含区间起点 $s$，说明相同长度 $t$ 的时间区间上增量的分布一致，即该过程有平稳增量.&lt;/p&gt;
&lt;p&gt;不满足独立性. 考虑下面这一情形
$$
\begin{aligned}
P(N(2t)-N(t)=0)&amp;#x26;=\displaystyle\int_{0}^{+\infty}{\rm e}^{-\lambda t}{\rm d}G(\lambda)\
P(N(2t)-N(t)=0\mid N(t)=0)&amp;#x26;=P(N(2t)=0)=\displaystyle\int_0^{+\infty}{\rm e}^{-\lambda2t}{\rm d}G(\lambda)
\end{aligned}
$$
对于一般的 $G$ 均不能使得二者相等，故没有独立性.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 已知历史，即已知 $[0,t]$ 上所有事件的到达间隔时间. 取条件于这些历史
$$
\begin{aligned}
&amp;#x26;\quad\ P(\Lambda=\lambda\mid X_1=x_1,,X_2=x_2,,\cdots,,X_{N(t)}=x_{N(t)})\
&amp;#x26;=\dfrac{P\big(X_1=x_1,,X_2=x_2,,\cdots,,X_{N(t)}=x_{N(t)}\mid \Lambda=\lambda\big)\cdot P(\Lambda=\lambda)}{P\big(X_1=x_1,,X_2=x_2,,\cdots,,X_{N(t)}=x_{N(t)}\big)}\
&amp;#x26;=\dfrac{\prod_{1}^{N(t)}\lambda{\rm e}^{-\lambda x_i}\cdot{\rm d}G(\lambda)}{分子对\lambda在0到\infty积分}\
&amp;#x26;=\dfrac{\lambda^{N(t)}{\rm e}^{-\lambda\sum x_i}\cdot{\rm d}G(\lambda)}{分子对\lambda在0到\infty积分}\
&amp;#x26;=\dfrac{\lambda^{N(t)}{\rm e}^{-\lambda t}\cdot{\rm d}G(\lambda)}{分子对\lambda在0到\infty积分}\
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;于是 $\Lambda$ 的分布
$$
\begin{aligned}
&amp;#x26;\quad\ P(\Lambda&amp;#x3C;\lambda\mid X_1=x_1,,X_2=x_2,,\cdots,,X_{N(t)}=x_{N(t)})\
&amp;#x26;=\int_0^\lambda\dfrac{\lambda^{N(t)}{\rm e}^{-\lambda t}\cdot{\rm d}G(\lambda)}{\int_0^{+\infty}\lambda^{N(t)}{\rm e}^{-\lambda t}\cdot{\rm d}G(\lambda)}\
&amp;#x26;=\dfrac{\int_0^\lambda\lambda^{N(t)}{\rm e}^{-\lambda t}\cdot{\rm d}G(\lambda)}{\int_0^{+\infty}\lambda^{N(t)}{\rm e}^{-\lambda t}\cdot{\rm d}G(\lambda)}\
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;可以看到，$\Lambda$ 基于历史的分布仅依赖于 $N(t)$，与 $N(s)\ (0&amp;#x3C;s&amp;#x3C;t)$ 无关. 这是合理的，因为当 $N(t)$ 已知时，由均匀分布定律，此前的到达时间序列为 $[0,t]$ 上 $n$ 个独立均匀分布的顺序统计量，这与 $\Lambda$ 的取值无关.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) $t$ 后首个事件即为第 $n+1$ 个事件. 设过了 $s$ 发生这个事件，则其发生时间分布
$$
\begin{aligned}
P(S_{n+1}&gt;t+s \mid N(t)=n)&amp;#x26;=\dfrac{P(N(t+s)=n,,N(t)=n)}{P(N(t)=n)}\
&amp;#x26;=\dfrac{P(N(t+s)-N(t)=0,,N(t)=n)}{P(N(t)=n)}\
&amp;#x26;=\dfrac{P(N(s)=0,,N(t)=n)}{P(N(t)=n)}\
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;对分子取条件于 $\Lambda$，这样可以利用独立性，有
$$
\begin{aligned}
P(N(s)=0,,N(t)=n)&amp;#x26;=\displaystyle\int_0^{+\infty}P(N(s)=0,,N(t)=n\mid \Lambda=\lambda)\cdot{\rm d}G(\lambda)\
&amp;#x26;=\displaystyle\int_0^{+\infty}P(N(s)=0\mid \Lambda=\lambda)\cdot P(N(t)=n\mid \Lambda=\lambda)\cdot {\rm d}G(\lambda)\
&amp;#x26;=\displaystyle\int_0^{+\infty}{\rm e}^{-\lambda s}{\rm e}^{-\lambda t}\dfrac{(\lambda t)^n}{n!}{\rm d}G(\lambda)
\end{aligned}
$$
分母事实上是分子计算步骤的一部分
$$
\begin{aligned}
P(N(t)=n)&amp;#x26;=\displaystyle\int_0^{+\infty}P(N(t)=n\mid \Lambda=\lambda)\cdot{\rm d}G(\lambda)\
&amp;#x26;=\displaystyle\int_0^{+\infty}{\rm e}^{-\lambda t}\dfrac{(\lambda t)^n}{n!}{\rm d}G(\lambda)
\end{aligned}
$$
代入表达式即可
$$
\begin{aligned}
P(S_{n+1}&gt;t+s \mid N(t)=n)&amp;#x26;=\dfrac{P(N(s)=0,,N(t)=n)}{P(N(t)=n)}\
&amp;#x26;=\dfrac{\int_0^{+\infty}{\rm e}^{-\lambda s}{\rm e}^{-\lambda t}\frac{(\lambda t)^n}{n!}{\rm d}G(\lambda)}{\int_0^{+\infty}{\rm e}^{-\lambda t}\frac{(\lambda t)^n}{n!}{\rm d}G(\lambda)}\
&amp;#x26;=\dfrac{\int_0^{+\infty}{\rm e}^{-\lambda s}{\rm e}^{-\lambda t}{\lambda^n}{\rm d}G(\lambda)}{\int_0^{+\infty}{\rm e}^{-\lambda t}\lambda^n{\rm d}G(\lambda)}
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(4) 取条件于 $\Lambda$ 的分布 $G$
$$
\begin{aligned}
&amp;#x26;\quad\lim\limits_{h\to0}\dfrac{P(N(h)\geqslant1)}{h}\
&amp;#x26;=\lim\limits_{h\to0}\dfrac{\sum_\lambda P(N(h)\geqslant1\mid \Lambda=\lambda)\cdot P(\Lambda=\lambda)}{h}\
&amp;#x26;=\lim\limits_{h\to0}\dfrac{\int_{0}^{+\infty}(1-P(N(h)=0))\cdot {\rm d}G(\lambda)}{h}\
&amp;#x26;=\lim\limits_{h\to0}\dfrac{\int_{0}^{+\infty}(1-{\rm e}^{-\lambda h})\cdot {\rm d}G(\lambda)}{h}\
&amp;#x26;=\int_{0}^{+\infty}\lim\limits_{h\to0}\dfrac{(1-{\rm e}^{-\lambda h})}{h}\cdot {\rm d}G(\lambda)\
&amp;#x26;=\int_{0}^{+\infty}\lambda\cdot {\rm d}G(\lambda)\
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(5) 取条件于 $\Lambda$ 的值，计算 $X_i$ 的分布
$$
\begin{aligned}
P(X_i&amp;#x3C;x)&amp;#x26;=\displaystyle\int_0^{+\infty}P(X_i&amp;#x3C;x\mid \Lambda=\lambda)\cdot {\rm d}G(\lambda)\
&amp;#x26;=\displaystyle\int_0^{+\infty}(1-{\rm e}^{=\lambda x}),{\rm d}G(\lambda)
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;故它们同分布（因为在 $\Lambda=\lambda$ 的条件下，到达间隔时间都服从 $E(\lambda)$）.&lt;/p&gt;
&lt;p&gt;而 $\text{Cov}(X_i,,X_j)=\text{Cov}(X_i,,X_i)=\text{Var}(X_i)=\dfrac{1}{\lambda^2}\neq0$，说明 $X_i$ 与 $X_j$ 相关，即不独立.&lt;/p&gt;
&lt;hr&gt;</content:encoded><h:img src="/_astro/markov-rickroll.DOIM5OYi.jpg"/><enclosure url="/_astro/markov-rickroll.DOIM5OYi.jpg"/></item><item><title>随机过程作业 Chapter1 再论概率</title><link>https://chinosan.com/blog/stochastic-processes/chapter1</link><guid isPermaLink="true">https://chinosan.com/blog/stochastic-processes/chapter1</guid><description>Sheldon M. Ross《随机过程》第二版 习题作业</description><pubDate>Wed, 19 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;Sheldon M. Ross &quot;Stochastic Processes&quot; 2nd Edition
随机过程（第二版）习题&lt;/p&gt;
&lt;h2&gt;1.5&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;$N_1,\cdots,N_r$ 之联合分布&lt;/li&gt;
&lt;li&gt;$\mathrm{Cov}(,N_{i},,,N_{j},)$&lt;/li&gt;
&lt;li&gt;出现次数为 0 的个数之均值与方差&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;解：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;(1) 先按乘法公式给出单个情形的概率，再乘以重复个数. 于是有
$$
\begin{aligned}
P,{N_1=n_1,,,N_2=n_2,,\cdots,N_r=n_r}&amp;#x26;=p_1^{n_1}p_2^{n_2}\cdots p_r^{n_r}\cdot{n\choose n_1}{n-n_1\choose n_2}{n-n_1-n_2\choose n_3}\&amp;#x26;\quad\ \cdots{n_{r-1}+n_r\choose n_r}{n_r\choose n_r}
\end{aligned}
$$
组合数的乘积，分母是 $\prod\limits_{j=1}^r\left(n_j!\right)$，分子是 $n$ 乘到 $n-n_1$、再从 $n-n_1$ 乘到 $n-n_1-n_2$，一直下去全乘一起就是 $n!$. 于是所求联合分布
$$
P,{N_1=n_1,,,N_2=n_2,,\cdots,N_r=n_r}=p_1^{n_1}p_2^{n_2}\cdots\times\frac{n!}{\prod\limits_{j=1}^r(n_j!)}=n!\times\prod\limits_{j=1}^r\dfrac{p_j^{r_j}}{n_j!}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 依题意易知 $N_i\sim B\left(n,,p_i\right)$、$N_j\sim B\left(n,,p_j\right)$，于是由二项分布的性质立即有
$$
\begin{matrix}{\mathrm{Var}}\left(N_i\right)=np_i\left(1-p_i\right)\{\mathrm{Var}}\left(N_j\right)=np_j\left(1-p_j\right)\end{matrix}
$$&lt;/p&gt;
&lt;p&gt;使用公式 ${\mathrm{Var}}\left(N_i+N_j\right)={\mathrm{Var}}\left(N_i\right)+{\mathrm{Var}}\left(N_j\right)+2{\mathrm{\ Cov}}\left(N_i,N_j\right)$ 计算所求值. 由
$$
\begin{aligned}
P\left(N_i+N_j=k\right)&amp;#x26;=\sum\limits_{m=0}^kp_i^mp_j^{k-m}\left(1-p_i-p_j\right)^{n-k}\dfrac{n!}{m!(k-m)!(n-k)!} \
&amp;#x26;=\left(1-p_i-p_j\right)^{n-k}\dfrac{n!}{(n-k)!k!}\sum\limits_{m=0}^kp_i^mp_j^{k-m}\dfrac{k!}{m!(k-m)!} \
&amp;#x26;=\left(1-p_i-p_j\right)^{n-k}{n\choose k}\sum\limits_{m=0}^kp_i^mp_j^{k-m}{k\choose m}\
&amp;#x26;=\left(1-p_i-p_j\right)^{n-k}{n\choose k}\left(p_i+p_j\right)^k\
&amp;#x26;=\left(p_i+p_j\right)^k\left(1-p_i-p_j\right)^{n-k}{n\choose k}\
\end{aligned}
$$
得，该分布具有二项分布形式，$N_i+N_j\sim B\left(n, ,p_i+p_j\right)$. 于是
$$
\begin{aligned}
{\mathrm{Var}}\left(N_i+N_j\right)&amp;#x26;=np_i\left(1-p_i\right)+np_j\left(1-p_j\right)+2{\mathrm{\ Cov}}\left(N_i,N_j\right)\&amp;#x26;=n(p_i+p_j)(1-p_i-p_j)
\end{aligned}
$$
移项展开，一次项和平方项恰好消去，解得 ${\mathrm{Cov}}\left(N_i,,N_j\right)=-np_ip_j$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) 由二项分布有 $P\left(N_j=0\right)=(1-p_j)^n$. 令 $I_j=\begin{cases}1,,N_j=0\0,,\text{ohters}\end{cases}$，则出现次数为 0 的个数 $V=\sum\limits I_j$，于是
$$
\begin{aligned}
E\left(V\right)&amp;#x26;=\sum\limits E\left(I_j\right)=\sum\limits_{i=1}^r(1-p_j)^n \ \
D\left(V\right)&amp;#x26;=\sum\limits D\left(I_j\right)+2,\mathop{\sum\sum}\limits_{i&amp;#x3C;j}{\rm ,Cov}\left(I_i, ,I_j\right) \
&amp;#x26;=\sum\limits_{i=1}^rn(1-p_j)^n(1-(1-p_j)^n)+2,\mathop{\sum\sum}\limits_{i&amp;#x3C;j}\left(E(I_iI_j)-E(I_i)E(I_j)\right)
\end{aligned}
$$
其中 $E(I_i)=(1-p_i)^n$、$E(I_j)=(1-p_j)^n$&lt;/p&gt;
&lt;p&gt;事件 $I_iI_j=1$ 表示 $N_i=0$ 且 $N_j=0$，于是$E(I_iI_j)=P(N_i=0,,N_j=0)=(1-p_i-p_j)^n$，代入 $D(V)$ 式即得解.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1.6&lt;/h2&gt;
&lt;p&gt;(1) 记 $X_i$ 的分布函数为 $F(x_i)$、其PDF为 $f(x_i)$. 由独立性可求得各个时刻产生记录的概率：
$$
\begin{aligned}
P\left(X_2&gt;X_1\right)
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}\displaystyle\int_{-\infty}^{x_2}f(x_1)f(x_2)\ {\mathrm d}x_1{\mathrm d}x_2 \
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}f(x_2)\displaystyle\int_{-\infty}^{x_1}f(x_1)\ {\mathrm d}x_1{\mathrm d}x_2 \
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}f(x_2)F(x_2)\ {\mathrm d}x_2 \
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}F(x_2)\ {\mathrm d}F(x_2) \
&amp;#x26;=\displaystyle\int_0^1t\  {\mathrm d}t=\frac12
\end{aligned}
$$
$$
\begin{aligned}
P\left(X_3&gt;X_1,,X_3&gt;X_2\right)
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}\displaystyle\int_{-\infty}^{x_3}\displaystyle\int_{-\infty}^{x_3}f(x_1)f(x_2)f(x_3)\ {\mathrm d}x_1{\mathrm d}x_2{\mathrm d}x_3 \
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}\displaystyle\int_{-\infty}^{x_3}f(x_2)f(x_3)\displaystyle\int_{-\infty}^{x_3}f(x_1)\ {\mathrm d}x_1{\mathrm d}x_2{\mathrm d}x_3 \
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}f(x_3)\displaystyle\int_{-\infty}^{x_3}f(x_2)F(x_3)\ {\mathrm d}x_2{\mathrm d}x_3 \
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}f(x_3)F(x_3)\displaystyle\int_{-\infty}^{x_3}f(x_2)\ {\mathrm d}x_2{\mathrm d}x_3 \
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}f(x_3)F^2(x_3)\ {\mathrm d}x_3 \
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}F^2(x_3)\ {\mathrm d}F(x_3) \
&amp;#x26;=\displaystyle\int_0^1t^2\  {\mathrm d}t=\frac13
\end{aligned}
$$&lt;br&gt;
同理可依次推得 $P\left(X_n&gt;\max\left(X_1,\cdots,X_{n-1}\right)\right)=\dfrac1n$&lt;/p&gt;
&lt;p&gt;令 $I_n=\begin{cases}1,,n时产生记录\0,,\text{ohters}\end{cases}$，显然他们相互独立. 于是 $N_n=\sum_1^n I_j$，于是
$$
\begin{matrix}
E\left(N_n\right)=\sum\limits_{j=1}^nE\left(I_j\right)=\sum\limits_{j=1}^nE\left(I_j\right)=\sum\limits_{j=1}^n\dfrac1j\
D\left(N_n\right)=\sum\limits_{j=1}^nD\left(I_j\right)=\sum\limits_{j=1}^n\dfrac1j\left(1-\dfrac1j\right)
\end{matrix}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 第一次产生记录是在 $n$ 时刻之后，说明在 $n$ 及之前均没有产生记录，即都不比 $X_1$ 大.
$$
P(T&gt;n)=P(X_1&gt;X_2,,X_1&gt;X_3,,\cdots,,X_1&gt;X_{n})=\frac1n
$$
于是 $P(T&amp;#x3C;\infty)=\lim\limits_{n\to\infty}P(T&amp;#x3C;n)=1-\lim\limits_{n\to\infty}P(T\geq n)=1-0=1$&lt;/p&gt;
&lt;p&gt;而 $E(T)=\sum_1^{+\infty} nP(T=n)=\sum_1^{+\infty} P(T&gt;n)=\sum_1^{+\infty} 1/n$，调和级数趋无穷，故 $E(T)=\infty$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) 假设 $T_y=n$ 时产生记录，则该条件下记录值的分布为
$$
\begin{aligned}
P\left(X_{T_y}&amp;#x3C;k\mid T_y=n\right)&amp;#x26;=P\left(X_n&amp;#x3C;k\mid X_n&gt;y,,X_1&amp;#x3C;y,,\cdots,X_{n-1}&amp;#x3C;y\right)\
&amp;#x26;=\frac{P\left(y&amp;#x3C;X_n&amp;#x3C;k\right)}{P(X_n&gt;y)}\quad(由各个X_j的独立性)\
&amp;#x26;=\dfrac{F(k)-F(y)}{1-F(y)}\quad(k\leq y\ 时取\ 0)
\end{aligned}
$$
说明 $X_{T_y}$ 的分布与 $T_y$ 的取值 $n$ 无关，于是二者独立&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1.11&lt;/h2&gt;
&lt;p&gt;(1) 幂级数在其收敛域内可逐项求导，于是
$$
\begin{aligned}
\dfrac{\mathrm{d}^{k}}{\mathrm{d}z^{k}}P(z)&amp;#x26;=\sum\limits_{j=0}^\infty\dfrac{\mathrm{d}^{k}z^j}{\mathrm{d}z^{k}}P\left(X=j\right)\
&amp;#x26;=\sum\limits_{j=k}^\infty\dfrac{\mathrm{d}^{k}z^j}{\mathrm{d}z^{k}}P\left(X=j\right)\
&amp;#x26;=\dfrac{\mathrm{d}^{k}z^k}{\mathrm{d}z^{k}}P\left(X=k\right)+\sum\limits_{j=k+1}^\infty a_jz^{j-k}\quad(a_j\in\mathbb{R})\
&amp;#x26;=k,!,P\left(X=k\right)+\sum\limits_{j=k+1}^\infty a_jz^{j-k}\quad(a_j\in\mathbb{R})
\end{aligned}
$$
代入 $z=0$ 后求和项为 0，原式得证.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 从右往左证.
$$
\begin{aligned}
\dfrac{P(-1)+P(1)}{2}&amp;#x26;=\frac12\left(\sum\limits_{j=0}^\infty (-1)^jP\left(X=j\right)+\sum\limits_{j=0}^\infty (-1)^jP\left(X=j\right)\right)\
&amp;#x26;=\frac12\left(\sum\limits_{j=0}^\infty \left(1+(-1)^j\right)P\left(X=j\right)\right)\
&amp;#x26;=\frac12\left(\sum\limits_{j=0}^\infty ,2P\left(X=2j\right)\right)\
&amp;#x26;=\sum\limits_{j=0}^\infty P\left(X=2j\right)\
&amp;#x26;=P\lbrace X 是偶数\rbrace
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) 由二项分布，$P\left(X=j\right)=\displaystyle\binom{n}{j}p^j(1-p)^{n-j}$，于是
$$
P(z)=\sum\limits_{j=0}^n z^j\binom{n}{j}p^j(1-p)^{n-j}=\sum\limits_{j=0}^n \binom{n}{j}(zp)^j(1-p)^{n-j}=\left(zp+1-p\right)^n
$$
于是 $P(-1)=(1-2p)^n$、$P(1)=1$，代入 (2) 所得结论即得 $P\lbrace X 是偶数\rbrace ={\dfrac{1+(1-2p)^{n}}{2}}$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(4) 由 Poisson 分布，$P\left(X=j\right)=\dfrac{\lambda^j,{\mathrm e}^{-\lambda}}{j,!}$，于是
$$
P(z)=\sum\limits_{j=0}^\infty z^j\dfrac{\lambda^j,{\mathrm e}^{-\lambda}}{j,!}={\mathrm e}^{z\lambda-\lambda}\sum\limits_{j=0}^\infty\dfrac{(z\lambda)^j,{\mathrm e}^{-z\lambda}}{j,!}={\mathrm e}^{z\lambda-\lambda}
$$
于是 $P(-1)={\mathrm e}^{-2\lambda}$、$P(1)=1$，代入 (2) 所得结论即得 $P\lbrace X 是偶数\rbrace ={\dfrac{1+{\mathrm e}^{-2\lambda}}{2}}$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(5) 由几何分布，$P\left(X=j\right)=\begin{cases}(1-p)^{j-1}p,,j&gt;0\0\quad\quad\quad\quad,,,j=0\end{cases}$，于是
$$
P(z)=\sum\limits_{j=1}^\infty z^j(1-p)^{j-1}p=\dfrac{p}{1-p}\sum\limits_{j=1}^\infty (z-zp)^j=\dfrac{p(z-zp)}{(1-p)(1-z+zp)}=\dfrac{zp}{1-z+zp}
$$
于是 $P(-1)=\dfrac{-p}{2-p}$、$P(1)=\dfrac{p}{p}=1$，代入 (2) 所得结论即得 $P\left{X是偶数\right}=\dfrac{2-p-p}{2(2-p)}=\dfrac{1-p}{2-p}{}$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(6) 由负二项分布，$P\left(X=j\right)=\displaystyle\binom{j-1}{r-1}p^r(1-p)^{j-r},,j\geq r$，于是
$$
\begin{aligned}
P(z)&amp;#x26;=\sum\limits_{j=r}^\infty z^j\displaystyle\binom{j-1}{r-1}p^r(1-p)^{j-r}\
&amp;#x26;=\left(\dfrac{zp}{1-z+zp}\right)^r\sum\limits_{j=r}^\infty\binom{j-1}{r-1}\left(1-z+zp\right)^r(z-zp)^{j-r}\
&amp;#x26;=\left(\dfrac{zp}{1-z+zp}\right)^r
\end{aligned}
$$&lt;br&gt;
于是 $P(-1)=\left(\dfrac{-p}{2-p}\right)^r$、$P(1)=\left(\dfrac{p}{p}\right)^r=1$，代入 (2) 所得结论即得 $P\lbrace X 是偶数\rbrace =\dfrac12\left[1+(-1)^r\left(\dfrac{p}{2-p}\right)^r\right]$&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1.17&lt;/h2&gt;
&lt;p&gt;(1) 取条件于是否有 $X_n\leq x$.
$$
P(X_{i,n}&amp;#x3C;x)=P(X_{i,n}&amp;#x3C;x\mid X_n\leq x)P(X_n\leq x)+P(X_{i,n}&amp;#x3C;x\mid X_n&gt;x)P(X_n&gt;x)
$$
对于“$n$ 个数中选第 $i$ 小值比 $x$ 小”这个事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;若 $X_n\leq x$，那么相当于剔除占位的 $X_n$、在余下的 $n-1$ 个数选第 $i-1$ 小值比 $x$ 小；&lt;/li&gt;
&lt;li&gt;若 $X_n&gt;x$，那么剔除这个很大的 $X_n$ 不影响第 $i$ 小的位置，相当于在余下的 $n-1$ 个数选第 $i$ 小值比 $x$ 小.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是
$$
\begin{aligned}
F_{i,n}(x)=P(X_{i,n}&amp;#x3C;x)&amp;#x26;=P(X_{i-1,n-1}&amp;#x3C;x)P(X_n\leq x)+P(X_{i,n-1}&amp;#x3C;x)P(X_n&gt;x)\
&amp;#x26;=F_{i-1,n-1}(x)F(x)+F_{i,n-1}(x)\overline{F}(x)
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 取条件于 $X_n$ 是否比第 $i$ 小值大（即 $X_n$ 插入增序列的位置在第 $i$ 名之后还是之前. 是否取等并不重要，因为连续型变量取等概率为0）.
$$
P(X_{i,n-1}&amp;#x3C;x)=P(X_{i,n-1}&amp;#x3C;x\mid X_n&gt;X_{i,n})P(X_n&gt;X_{i,n})+P(X_{i,n-1}&amp;#x3C;x\mid X_n\leq X_{i,n})P(X_n\leq X_{i,n})
$$
对于“$n-1$ 个数中选第 $i$ 小值比 $x$ 小”这个事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;若 $X_n$ 插在 $i$ 之后，则这个很大的 $X_n$ 不会影响第 $i$ 小元素的位置，因此 $P=P(X_{i,n}&amp;#x3C;x)$；&lt;/li&gt;
&lt;li&gt;若 $X_n$ 插在 $i$ 之前，则第 $i$ 小值变为第 $i+1$ 小值，因此 $P=P(X_{i+1,n}&amp;#x3C;x)$.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;由独立同分布，每个人有均等的机会成为第 $i$ 小，故 $P(X_n&gt;X_{i,n})=\dfrac{n-i}{n}$、$P(X_n\leq X_{i,n})=\dfrac{i}{n}$. 于是
$$
\begin{aligned}
F_{i,n-1}(x)=P(X_{i,n-1}&amp;#x3C;x)&amp;#x26;=P(X_{i,n}&amp;#x3C;x)\dfrac{n-i}{n}+P(X_{i+1,n}&amp;#x3C;x)\dfrac{i}{n}\
&amp;#x26;=F_{i,n}(x)\dfrac{n-i}{n}+F_{i+1,n}(x)\dfrac in
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1.20&lt;/h2&gt;
&lt;p&gt;$x&amp;#x3C;1$ 时填不下任何一个区间，显然有 $N(x)=0\Rightarrow E(N(x))=0$.&lt;/p&gt;
&lt;p&gt;$x&gt;1$ 时. 只有第一次是没有空间限制的、且其位置分布已知，故取条件于 $I_1$ 左端点的位置 $y$. 填入 $I_1$ 后，将区间分成两个子区间，左侧长度 $y$、右侧长度 $x-(y+1)$，于是原问题分解为两个子问题
$$
E(N(x)\mid Y=y)=E(1+N(y)+N(x-y-1))=1+E(N(y))+E(N(x-y-1))
$$
于是
$$
\begin{aligned}
E(N(x))&amp;#x26;=E\big[E(N(x)\mid Y)\big]=\displaystyle\int_0^{x-1}\big[1+E(N(y))+E(N(x-y-1))\big]f(x){\mathrm d}y\
&amp;#x26;=\dfrac{1}{x-1}\displaystyle\int_0^{x-1}1+E(N(y))+E(N(x-y-1)), {\mathrm d}y\
M(x)&amp;#x26;=\dfrac{x-1}{x-1}+\dfrac{1}{x-1}\displaystyle\int_0^{x-1}M(y),{\mathrm d}y+\dfrac{1}{x-1}\displaystyle\int_0^{x-1}M(x-y-1), {\mathrm d}y\
&amp;#x26;=1+\dfrac{1}{x-1}\displaystyle\int_0^{x-1}M(y),{\mathrm d}y+\dfrac{1}{x-1}\displaystyle\int_0^{x-1}M(t),{\mathrm d}t\quad(令,t=x-y-1)\
&amp;#x26;=1+\dfrac{2}{x-1}\displaystyle\int_0^{x-1}M(y),{\mathrm d}y
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1.22&lt;/h2&gt;
&lt;p&gt;$$
\begin{aligned}
\text{RHS}&amp;#x26;=E\big[E[\left(X-E(X\mid Y)\right)^2\mid Y],\big]+\mathrm{Var}(E[X\mid Y])\
&amp;#x26;=E\big[E[X^2\mid Y]-E[,2XE(X\mid Y)\mid Y]+E[E^2(X\mid Y)\mid Y]\big]+E\big[E^2(X\mid Y)\big]-E^2\big[E[X\mid Y]\big]\
&amp;#x26;=E\big[E[X^2\mid Y]\big]-E\big[E[,2XE(X\mid Y)\mid Y]\big]+E\big[E[E^2(X\mid Y)\mid Y]\big]+同上-同上\
&amp;#x26;=E[X^2]-E\big[2E(X\mid Y)E[X\mid Y]\big]+E[E^2(X\mid Y)\mid Y]+同上-同上\
&amp;#x26;=E[X^2]-2E\big[E^2(X\mid Y)\big]+E\big[E^2(X\mid Y)\big]+E\big[E^2(X\mid Y)\big]-E^2[X]\
&amp;#x26;=E[X^2]-E^2[X]\
&amp;#x26;=\mathrm{Var}(X)
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;使用此公式计算例1.5B的方差.
$$
\left.\begin{aligned}
\mathrm{Var}(X\mid Y=1)&amp;#x26;=0\
\mathrm{Var}(X\mid Y=2)&amp;#x26;=\mathrm{Var}(X)\
\mathrm{Var}(X\mid Y=3)&amp;#x26;=\mathrm{Var}(X)\
\end{aligned}\right}
\Rightarrow E\big[\mathrm{Var}(X\mid Y)\big]=\dfrac23\mathrm{Var}(X)
$$
$$
\left.
\begin{aligned}
E(X\mid Y=1)&amp;#x26;=2\
E(X\mid Y=2)&amp;#x26;=3+E(X)\
E(X\mid Y=3)&amp;#x26;=5+E(X)\
\end{aligned}
\right}
\Rightarrow\mathrm{Var}(E[X\mid Y])=\dfrac{1}{9}\big(2E^2(X)+8E(X)+14\big)
$$
代入 $E(X)=M&apos;(0)=10$，得 $\mathrm{Var}(E[X\mid Y])=\dfrac{294}{9}$，于是 $\mathrm{Var}(X)=\dfrac23\mathrm{Var}(X)+\dfrac{294}{9}$，解得
$$
\mathrm{Var}(X)=\dfrac{294}{3}=98
$$&lt;/p&gt;
&lt;p&gt;验证：$E(X^2)=M&apos;&apos;(0)=198$，$\mathrm{Var}(X)=E(X^2)-E^2(X)=198-10^2=98$.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1.29&lt;/h2&gt;
&lt;p&gt;$X_i$ 的矩母函数 $\psi_i(t)=\dfrac{\lambda}{\lambda-t}$. 则 $\sum\limits X_i$ 的矩母函数
$$
\begin{aligned}
\psi_s(t)=E({\mathrm e}^{t\sum\limits X_i})&amp;#x26;=E({\mathrm e}^{tX_1}\cdot{\mathrm e}^{tX_2}\cdots{\mathrm e}^{tX_n})\
&amp;#x26;=E({\mathrm e}^{tX_1})\cdot E({\mathrm e}^{tX_2})\cdots E({\mathrm e}^{tX_n})\
&amp;#x26;=\psi_1(t)\psi_2(t)\cdots\psi_n(t)\
&amp;#x26;=\left(\dfrac{\lambda}{\lambda-t}\right)^n\
\end{aligned}
$$
题示密度函数对应的矩母函数为
$$
\begin{aligned}
\displaystyle\int_0^{+\infty}{\mathrm e}^{tx}f(x),{\mathrm d}x&amp;#x26;=\dfrac{\lambda^n}{(n-1)!}\displaystyle\int_0^{+\infty}{\mathrm e}^{(t-\lambda)x}x^{n-1},{\mathrm d}x\
&amp;#x26;=\dfrac{\lambda^n}{(n-1)!}\displaystyle\int_0^{+\infty}\dfrac{1}{\lambda-t}{\mathrm e}^{(t-\lambda)x}(n-1)x^{n-2},{\mathrm d}x\
&amp;#x26;=\dfrac{\lambda^n}{(n-1)!}\dfrac{n-1}{\lambda-t}\displaystyle\int_0^{+\infty}\dfrac{1}{\lambda-t}{\mathrm e}^{(t-\lambda)x}(n-2)x^{n-3},{\mathrm d}x\
&amp;#x26;=\cdots \ &amp;#x26;=\dfrac{\lambda^n}{(n-1)!}\dfrac{(n-1)!}{(\lambda-t)^{n-1}}\displaystyle\int_0^{+\infty}{\mathrm e}^{(t-\lambda)x},{\mathrm d}x\
&amp;#x26;=\left(\dfrac{\lambda}{\lambda-t}\right)^n
\end{aligned}
$$
由矩母函数唯一性即得证.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1.34&lt;/h2&gt;
&lt;p&gt;$$
\begin{aligned}
\text{LHS}&amp;#x26;=\dfrac{P(X_1=t,,X_2&gt;t)}{P(\min(X_1,X_2)=t)}\
&amp;#x26;=\dfrac{P(X_1=t)\cdot P(X_2&gt;t)}{P(X_1=t)P(X_2&gt;t)+P(X_2=t)P(X_1&gt;t)}\
&amp;#x26;=\dfrac{f_1(t)\mathrm{d}t\cdot\overline{F_2}(t)}{f_1(t)\mathrm{d}t\cdot\overline{F_2}(t)+f_2(t)\mathrm{d}t\cdot\overline{F_1}(t)}\
&amp;#x26;=\dfrac{f_1(t)/\overline{F_1}(t)}{f_1(t)/\overline{F_1}(t)+f_2(t)/\overline{F_2}(t)}\
&amp;#x26;=\dfrac{\lambda_1(t)}{\lambda_1(t)+\lambda_2(t)}
\end{aligned}
$$&lt;/p&gt;
&lt;h2&gt;1.35&lt;/h2&gt;
&lt;p&gt;(1)
$$
\begin{aligned}
E(h(X))&amp;#x26;=\displaystyle\int_{-\infty}^{+infty}h(x)f(x),{\rm d}x\
&amp;#x26;=\displaystyle\int_{-\infty}^{+\infty}h(x)M(t)f_t(x){\rm e}^{-tx},{\rm d}x\
&amp;#x26;=M(t)\displaystyle\int_{-\infty}^{+\infty}{\rm e}^{-tx}h(x)f_t(x),{\rm d}x
\end{aligned}
$$
而 $E({\rm e}^{-tX_t}h(X_t))=\displaystyle\int_{-\infty}^{+\infty}{\rm e}^{-tx}h(x)f_t(x),{\rm d}x$，代入即得证.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2)
$$
\begin{aligned}
P(X_t&gt;a)&amp;#x26;=\displaystyle\int_a^{+\infty}\dfrac{ {\rm e}^{tx}f(x)}{M(t)},{\rm d}x\
{\rm e}^{-ta}M(t)P(X_t&gt;a)&amp;#x26;=\displaystyle\int_a^{+\infty}{\rm e}^{t(x-a)}f(x),{\rm d}x\
&amp;#x26;\geqslant\displaystyle\int_a^{+\infty}f(x),{\rm d}x\quad(因为,t&gt;0, x&gt;a\Rightarrow{\rm e}^{t(x-a)}&gt;1)\
&amp;#x26;=P(X&gt;a)
\end{aligned}
$$&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(3) 令 $g(t)=M(t){\rm e}^{-ta}$，原命题即证 $\min g(t)$ 在 $t=t^\star$ 时取得.&lt;br&gt;
$$
\begin{aligned}
g&apos;(t)&amp;#x26;=-aM(t){\rm e}^{-ta}+{\rm e}^{-ta}M&apos;(t)\
&amp;#x26;=-aM(t){\rm e}^{-ta}+{\rm e}^{-ta}\displaystyle\int_{-\infty}^{+\infty}x {\rm e}^{tx}f(x),{\rm d}x\
&amp;#x26;={\rm e}^{-ta}\left(-aM(t)+M(t)\displaystyle\int_{-\infty}^{+\infty}\dfrac{x{\rm e}^{tx}f(x)}{M(t)},{\rm d}x\right)\
&amp;#x26;=M(t){\rm e}^{-ta}\big(E(X_t)-a\big)
\end{aligned}
$$
观察 $X_t$ 的密度函数，分母是分子对 $x$ 的积分，于是 $E(X_t)$ 随 $t$ 单增、$M(t){\rm e}^{-ta}&gt;0$，故 $g(t)$ 先减后增，在 $E(X_t)=a$ 时取得最小值. 而 $E(X_{t^\star })=a$，于是此时 $t=t^\star$，原命题得证.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1.37&lt;/h2&gt;
&lt;p&gt;对某个固定的 $k$，由习题1.6.1，$P(,k,是峰值)=P(X_{k-1}&amp;#x3C;X_k&gt;X_{k+1})=\dfrac13$.&lt;/p&gt;
&lt;p&gt;令 $I_i=\begin{cases}1,\ i,时刻出现峰值 \ 0,\ i,时刻不是峰值\end{cases}$，再假设共有 $n$ 个这样的随机变量. 记 $N_n=\sum_1^nI_i$，即峰值个数.&lt;/p&gt;
&lt;p&gt;若 $I_1,\cdots,I_n$ 独立，则由 Chebyshev 大数定律，$\dfrac{N_n}{n}$ 以概率1地收敛到 $E[I_i]=P(,i,是峰值)=\dfrac13$，即峰值出现的时间比例等于 $\dfrac13$. 但此处它们并不独立，因为显然当 $k$ 为峰值时，$k+1$、$k-1$一定不为峰值.&lt;/p&gt;
&lt;p&gt;但是 $I_1,I_4,I_7,\cdots$ 是独立的，可使用 Chebyshev 大数定律，即 $\dfrac{I_1+I_4+\cdots+I_{3n-2}}{n}$ 依概率收敛到 $\dfrac13$，即
$$
P\left(\lim\limits_{n\to\infty}\dfrac{I_1+I_4+\cdots+I_{3n-2}}{n}=1/3\right)=1
$$&lt;/p&gt;
&lt;p&gt;同理，$I_2,I_5,I_8,\cdots$、$I_3,I_6,I_9,\cdots$ 是独立的，即
$$
\begin{aligned}
P\left(\lim\limits_{n\to\infty}\dfrac{I_2+I_5+\cdots+I_{3n-1}}{n}=1/3\right)&amp;#x26;=1\
P\left(\lim\limits_{n\to\infty}\dfrac{I_3+I_6+\cdots+I_{3n}}{n}=1/3\right)&amp;#x26;=1
\end{aligned}
$$&lt;/p&gt;
&lt;p&gt;三式相加即得 $P\left(\lim\limits_{n\to\infty}\dfrac{I_1+I_2+\cdots+I_{n}}{n}=1/3\right)=1$，即峰值出现的时间比例依概率收敛到 $1/3$.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1.39&lt;/h2&gt;
&lt;p&gt;考虑质点从 $k$ 出发，到达 $n$ 的步数之期望 $E(k)$. 显然 $E(n)=0$. 欲求 $E(0)$.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于 $0$，它下一步只能移动到 $1$，于是 $E(0)=1+E(1)$；&lt;/li&gt;
&lt;li&gt;对于 $1\leqslant k\leqslant n-1$，它有 1/2 概率移动到其左侧、1/2概率移动到其右侧，然后步数加一，即
$$
E(k)=\dfrac12\big(E(k-1)+1\big)+\dfrac12\big(E(k+1)+1\big)=\dfrac12E(k-1)+\dfrac12E(k+1)+1
$$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;配凑前后项.
$$
\begin{aligned}
\dfrac12\big(E(k)-E(k-1)\big)&amp;#x26;=\dfrac12\big(E(k+1)-E(k)\big)+1\
\big(E(k)-E(k-1)\big)&amp;#x26;=\big(E(k+1)-E(k)\big)+2
\end{aligned}
$$
即 $E(k)-E(k-1)$ 为公差为 $-2$ 的等差数列，故设 $E(k)-E(k-1)=-2k+a$. 由 $E(1)-E(0)=-1=-2\times1+a$ 得 $a=1$. 取 $k=1,2,\cdots,n$ 累加上述递推式得
$$
E(n)-E(0)=-2\cdot\dfrac{(1+n)n}{2}+na=-n-n^2+n=-n^2
$$
于是 $E(0)=E(n)+n^2=n^2$.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1.41&lt;/h2&gt;
&lt;p&gt;记由 $m$ 个顶点组成的射线为 $m$ 线，其上的叶子为点 $A$；由 $n$ 个顶点组成的射线为 $n$ 线，其上的叶子为点 $B_i\ (1\leqslant i\leqslant r-1)$&lt;/p&gt;
&lt;p&gt;(1) 记事件“在访问 $A$ 前访问 $B$ 并返回 0”为事件 $S$，则 $P_2=P(S)$
$$
\begin{aligned}
P(S\mid 先访问m线)&amp;#x26;=\left(1-\dfrac1m\right)P(S)\
P(S\mid 先访问n线)&amp;#x26;=\dfrac1n+\left(1-\dfrac1n\right)P(S)
\end{aligned}
$$
于是
$$
\begin{aligned}
P(S)&amp;#x26;=\dfrac12\left(\left(1-\dfrac1m\right)P(S)+\dfrac1n+\left(1-\dfrac1n\right)P(S)\right)\
2P(S)&amp;#x26;=P(S)-\left(\dfrac1m+\dfrac1n\right)P(S)+\dfrac1n+P(S)\
P(S)&amp;#x26;=\dfrac{1}{n\left(1/m+1/n\right)}=\dfrac{m}{n+m}
\end{aligned}
$$
也即 $P_2=\dfrac{m}{n+m}$.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;(2) 记事件“在访问 $A$ 前访问完所有 $B_i\ (1\leqslant i\leqslant r-1)$ 并返回 0”为事件 $S_r$，则 $P_{r}=P(S_r)$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;若先访问 $m$ 线，则和上述情况一致，$P(S_r\mid 先访问m线)=\left(1-\dfrac1m\right)P(S_r)$；&lt;/li&gt;
&lt;li&gt;若先访问 $r-1$ 条 $n$ 线之一，记这条线为 $n_0$ 线
&lt;ul&gt;
&lt;li&gt;若在返回 0 之前已经走到了 $n_0$ 线的叶子，那么下一步就是“在访问 $A$ 前访问完 $B_i\ (1\leqslant i\leqslant r-2)$ 并返回 0”，概率为 $\dfrac1nP_{r-1}$；&lt;/li&gt;
&lt;li&gt;若在返回 0 时没走到 $n_0$ 线的叶子，那么相等于没有执行任何操作、回到起始情形，概率为 $\left(1-\dfrac1n\right)P(S_r)$&lt;/li&gt;
&lt;li&gt;于是 $P(S_r\mid 先访问n线)=\dfrac1nP_{r-1}+\left(1-\dfrac1n\right)P(S_r)$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;于是
$$
\begin{aligned}
P(S_r)&amp;#x26;=\dfrac1r\left(\left(1-\dfrac1m\right)P(S_r)\right)+\dfrac{r-1}{r}\left(\dfrac1nP_{r-1}+\left(1-\dfrac1n\right)P(S_r)\right)\
rP(S_r)&amp;#x26;=P(S_r)-\left(\dfrac1m+\dfrac{r-1}{n}\right)P(S_r)+\dfrac{r-1}{n}P_{r-1}+(r-1)P(S_r)\
P(S_r)&amp;#x26;=\dfrac{(r-1)P_{r-1} }{n\big(1/m+(r-1)/n\big)}=\dfrac{m(r-1)P_{r-1} }{n+m(r-1)}
\end{aligned}
$$
也即 $P_r=\dfrac{m(r-1)P_{r-1} }{n+m(r-1)}$.&lt;/p&gt;
&lt;hr&gt;</content:encoded><h:img src="/_astro/markov-rickroll.DOIM5OYi.jpg"/><enclosure url="/_astro/markov-rickroll.DOIM5OYi.jpg"/></item><item><title>握紧你的锄头——黄执中</title><link>https://chinosan.com/blog/default/never-put-down-your-hammer</link><guid isPermaLink="true">https://chinosan.com/blog/default/never-put-down-your-hammer</guid><description>Never put down your hammer.</description><pubDate>Mon, 20 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2025新国辩哲理辩 &lt;a href=&quot;https://www.bilibili.com/video/BV17fw6ekE4h&quot;&gt;当今时代，我们更需要意义的解构/建构&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;我小时候听人说，锄头是农夫最好的朋友。我以前曾经困惑过，我小时候觉得农夫最好的朋友不应该是他种出来的那些农作物吗？怎么锄头才是好朋友呢？后来我才知道，因为&lt;strong&gt;只有当锄头松开了坚硬的地面，所有的生长才会成为可能&lt;/strong&gt;。甚至有些时候你有心栽花花不发，无心插柳柳成荫，但前提是要先松开大地。就像“事实胜于雄辩”，我们刚才对它一个小小的拆解，是我今天送给辩论圈的一点小小的礼物。我把这一块地给锄松了之后，你们以后会往这里头种下什么样的种子、会长出什么样的作物，我不知道，灵芝或荔枝都可以。可是只有先松开了，成长才会成为可能。而在座的各位，在座的各位，我唯一要跟你们说的一句话就是，握紧你的锄头。你们是少数拥有锄头的人，少数还在意锄头价值的人。&lt;/p&gt;
&lt;p&gt;千万要小心那些告诉你锄头是负担的人；&lt;br&gt;
千万要小心那些告诉你锄头是帮凶的人；&lt;br&gt;
千万要小心那些叫你放下锄头的人。&lt;br&gt;
小心那些面色凝重的告诉你说，锄头只会带来毁坏的人；&lt;br&gt;
小心那些试图去诱惑你，拿着某颗甜美的果实，试图换走你手中锄头的人；&lt;br&gt;
小心那些试图宣称，我们所有该种的作物都已经种出来了，所以我们再也不需要锄头的人。&lt;/p&gt;
&lt;p&gt;无论三年后、五年后、事过境迁后，你再看到这段文字，记住，&lt;strong&gt;握紧你的锄头，握紧你的锄头&lt;/strong&gt;。他们想栽种的事物什么时候会出现我不知道，可是我告诉你：所有握锄头的人，将会亲自为开辟前路！&lt;/p&gt;</content:encoded><h:img src="/_astro/hammer.D5JIjpwx.png"/><enclosure url="/_astro/hammer.D5JIjpwx.png"/></item><item><title>大学物理 - 狭义相对论</title><link>https://chinosan.com/blog/physics/relativity</link><guid isPermaLink="true">https://chinosan.com/blog/physics/relativity</guid><description>大物期末笔记系列。自认为是相对论这一块最好理解的思路，只需要记住 1 个事实、2 个公式、3 个模型。</description><pubDate>Sun, 05 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;看起来很抽象很难。但是，如果只是想把考试题做对，只需要知道&lt;strong&gt;1 个事实&lt;/strong&gt;、&lt;strong&gt;2 个公式&lt;/strong&gt;、&lt;strong&gt;3 个模型&lt;/strong&gt;。&lt;/p&gt;
&lt;h2&gt;1 钟慢与尺缩&lt;/h2&gt;
&lt;p&gt;只给结论和理解方式。推导很简单，这里不写了，任何一本近代物理课本中都应该会有。&lt;/p&gt;
&lt;p&gt;这里我忽略掉了固有时和运动时的概念，事实上这种理解是错误的。但我这里不提这个事，是因为容易把自己绕进去。不影响做题。&lt;/p&gt;
&lt;p&gt;同样的，这里其实也有一个固有长度和运动长度的概念，同样不提这个事，不影响做题。&lt;/p&gt;
&lt;h2&gt;2 同时性的相对性&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;“光速不变”在我这里并不算一个“事实”。因为光知道一个光速不变，对做题没什么帮助。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;同时性的相对性主要包括两个事情。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;同一个参考系内可以定义同步钟，只有同一参考系的同时才是真正意义的同时&lt;/strong&gt;。我们在坐标的每一个刻度处都放一个钟，而且全部调成同步，称为一列同步钟。例如地面系，它是一个参考系，在这个参考系中，我们定义了“北京时间”。将全国的钟都按照北京时间调准，那么当授时中心的钟指向 11:45:14 的这一刻，全国的钟都会指向 11:45:14 的这一刻；一个火箭于北京时间 11:45:14 这一刻在海南发射，一列火车于北京时间 11:45:14 这一刻在上海发车，这两个事件在地面系看来，就是同时发生的。这个同时是真正的同时，和一般认知是一致的。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;观察相对于我运动的参考系中的同步钟，运动前方的钟滞后，运动后方的钟超前，简称“前滞后超”&lt;/strong&gt;。也即坐标系相对于我运动起来之后，我看到的同步钟不再同步。怎么个不同步法呢，前滞后超。&lt;br&gt;
例如，飞机从上海飞往海南，那么从飞机参考系来看，地面系从海南往上海运动，因此上海是运动前方、海南是运动后方，于是上海的钟滞后了、海南的钟超前了。也就是说，虽然两个事件在地面系上同时发生，但是在飞机的视角看来，“海南火箭发射”先发生、“上海火车发车”后发生。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;同时性的相对性，说的就是这个事情，也即&lt;strong&gt;我的同时和你的同时是不一样的&lt;/strong&gt;。如何直观理解这个事：&lt;/p&gt;
&lt;p&gt;一列长 $l$ 的火车以速度 $u$ 往前动。在火车中点同时向车头尾各发送一个光子，这样在火车参考系下，就构造出了“光子到达车头 (记为事件 H, head)”和“光子到达车尾 (记为事件 T, tail)”两件同时发生的事件。&lt;/p&gt;
&lt;p&gt;但是在地面参考系的我看来，向车头发送的光子与车头同向运动、向车尾发送的光子与车尾相向运动。由于光速不变，事件 H 发生所需的时间就长了一些、事件 T 发生所需的时间就短了一些。这就是“前滞后超”的原因。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;那么具体相差了多少时间呢：首先，由于尺缩，从地面系看火车长度为 $l&apos;=l \cdot \sqrt{1-u^2/c^2}$，于是在我地面系看来，两件事发生的时间分别为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;对于往车头发送的光子有 $l&apos;/2=ct_H-ut_H \Rightarrow t_H=\dfrac{l&apos;/2}{c-u}$&lt;/li&gt;
&lt;li&gt;对于往车尾发送的光子有 $l&apos;/2=ct_T+ut_T \Rightarrow t_T=\dfrac{l&apos;/2}{c+u}$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此在&lt;strong&gt;我&lt;/strong&gt;看来，这两个事件时间差为 $t_H-t_T=\dfrac{l&apos;u}{c^2-u^2}=\dfrac{lu\cdot \sqrt{1-u^2/c^2}}{c^2-u^2}=\dfrac{lu/c^2}{\sqrt{1-u^2/c^2}}$。&lt;/p&gt;
&lt;p&gt;这两个事件在&lt;strong&gt;你&lt;/strong&gt;那里是同时发生的，但由于两件事间隔了 $l$ 长度，在&lt;strong&gt;我&lt;/strong&gt;这里产生了 $\dfrac{lu/c^2}{\sqrt{1-u^2/c^2}}$ 的时间差，也即&lt;strong&gt;你&lt;/strong&gt;那里 $lu/c^2$ 的时间差。这就是同时性的相对性。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;Simultaneity.png&quot; alt=&quot;同时性的相对性示意图|600&quot;&gt;&lt;/p&gt;
&lt;h2&gt;3 三个模型&lt;/h2&gt;
&lt;h3&gt;3.1 飞翔米尺问题&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;答&lt;/strong&gt;： $l\cdot\sqrt{1-u^2/c^2}$。&lt;em&gt;我都不好意思管这玩意叫一个模型，因为这只不过是把尺缩重新说了一遍&lt;/em&gt;。&lt;/p&gt;
&lt;p&gt;同类题：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;答&lt;/strong&gt;：我看火车，火车相当于一个飞翔米尺，那么我看到火车的长度变成 $l\cdot\sqrt{1-u^2/c^2}$，那么求通过我的时间，只需要除以速度即可，即 $\dfrac lu\cdot\sqrt{1-u^2/c^2}$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;答&lt;/strong&gt;：想象地球上伸出去一根长 $l$ 的大棒子，飞船沿着这根大棒子往前飞。视角切换到飞船上，就是一根大棒子反方向以 $u$ 往回飞。飞船上看这根大棒子，由于尺缩，会变成 $l\cdot\sqrt{1-u^2/c^2}$，那么求飞船飞完这根棒子的时间，只需要除以速度即可，即 $\dfrac lu\cdot\sqrt{1-u^2/c^2}$。这就是飞船上认为要飞的时间。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;答&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;先说&lt;strong&gt;正确的理解&lt;/strong&gt;：以 $l=52\rm{,m}$，$u=0.6c$ 为例。实验室有一把尺子，一粒子从尺子旁边飞过去。飞到实验室系刻度 $52\rm{,m}$ 处时候两眼一黑噶了，在粒子视角下噶的那一刻就是粒子寿命。于是转化为线段过点的问题，实验室系的 $52\rm{,m}$ 尺子，在粒子的参考系中长 $l\times\sqrt{1-u^2/c^2}=52\times0.8=41.6\rm{,m}$，因此在粒子看来寿命就是 $\dfrac lu \cdot\sqrt{1-u^2/c^2}$&lt;/p&gt;
&lt;p&gt;然后再谈谈&lt;strong&gt;错误的理解&lt;/strong&gt;：飞行了 $l&apos;$ 被我量，我量你的长度会比你自己的长度短，所以你实际飞行的长度 $l&apos;=\dfrac{l}{\sqrt{1-u^2/c^2}}$，所以飞行时间 $\dfrac{l/u}{\sqrt{1-u^2/c^2}}$。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;错因&lt;/strong&gt;：“我看你的长度”，必须是你那里一个实际的尺子给我看，也就是说“尺子的头”和“尺子的尾”在我的视角下是同时看到的。我的视角的某一瞬间，尺子的头在它自己参考系下的坐标为 $x_1$、在我的参考系下坐标为 $y_1$，尺子的尾在它自己参考系下的坐标为 $x_2$、在我的参考系下坐标为 $y_2$，那么我看你的长度就是 $y_2-y_1$；这个长度和尺子原长 $x_2-x_1$ 之间满足尺缩关系式，$x_1$、$y_1$、$x_2$、$y_2$ 这四个数在我的参考系下是同时读出的。而在本题中，这 $52\rm{,m}$ 并不是粒子系一把尺子给我量的结果，而是粒子产生时刻在我坐标系下的位置和粒子消失时刻在我坐标系下的位置，这两个事件在粒子参考系中的坐标是一致的。&lt;/p&gt;
&lt;p&gt;基于这个错解，&lt;strong&gt;错误的辩解方式是&lt;/strong&gt;：既然没有实际的尺子，我就用大棒子的思想，也即一个粒子后面拖着一个 $l_0=\dfrac{52 \rm{,m}}{\sqrt{1-u^2/c^2}}$ 的大棒子往前飞，粒子死掉那一刻在我的参考系量一下发现是 $52\rm{,m}$ 不行吗？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;答案是否定的&lt;/strong&gt;。因为这相当于用大棒子前端的钟标记出生时间、用大棒子末端的钟标记死亡时间。由于前滞后超，出生时间偏早、死亡时间偏迟，减一下肯定时间偏长。偏长了多少呢：$\dfrac{l_0u}{c^2}=\dfrac{lu/c^2}{\sqrt{1-u^2/c^2}}$。而这个时间差，正好是刚才那个错解和正确答案之间的差。&lt;/p&gt;
&lt;h3&gt;3.2 火车刻刀问题&lt;/h3&gt;
&lt;p&gt;一句话：同时发生的事件，事件之间的空间间隔就是运动长度&lt;/p&gt;
&lt;h3&gt;3.3 追光问题&lt;/h3&gt;
&lt;p&gt;刚才提到的问题，都是两个坐标系贴在一起相对滑动、问坐标重合处之间的关系。而追光问题，则要考虑光在两个参考系之间传播需要的时间。实际上就是反映同时性的相对性的题。&lt;/p&gt;
&lt;p&gt;飞船以速度 $u=0.6c$ 飞离地球，它发射一个无线电信号，经过地球的反射，$40\rm{,s}$ 后信号回到飞船，求飞船发射信号、地球反射信号、飞船接收信号的时候，分别在地球系和飞船系测量，飞船和地球的距离是多少？&lt;/p&gt;
&lt;p&gt;一颗星以 $0.6c$ 的速度远离地球，地球上测得星球的闪光周期为 $5\rm{,s}$，求星球实际的闪光周期&lt;/p&gt;
&lt;h2&gt;4 Lorentz 变换&lt;/h2&gt;
&lt;p&gt;做题的时候，全部想象成刚才的三个模型来做题，不建议背公式。&lt;/p&gt;
&lt;h2&gt;5 速度变换式&lt;/h2&gt;
&lt;h2&gt;6 相对论质能关系&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;看一个动起来的东西质量会变大。$m=\dfrac{m_0}{\sqrt{1-u^2/c^2}}$，其中 $m_0$ 称为静止质量，$m$ 称为运动质量&lt;/li&gt;
&lt;li&gt;动量公式 $p=mu$，$m$ 要用运动质量代进去&lt;/li&gt;
&lt;li&gt;一个有质量的物体本身就具有能量，$E=mc^2$，这个式子是与参考系无关的。我们说能量守恒，说的是 $E=mc^2$ 守恒
&lt;ul&gt;
&lt;li&gt;当这个东西与我没有相对运动时，$E_0=m_0c^2$&lt;/li&gt;
&lt;li&gt;当这个东西与我有相对运动时，它不仅有因质量带来得能量 $E_0=m_0c^2$，还有一个动能，所以 $E=mc^2+E_k$，即 $E_k=mc^2-m_0c^2$。这个动能不是传统意义上只和速度有关的东西，因为它动起来导致的质量增加也算在里面了，所以这个 $E_k$ 叫做相对论动能&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;能量与动量的关系：$E$ 做斜边，$m_0c^2$ 与 $pc$ 做直角边，满足勾股：$E^2=\left(m_0c^2\right)^2+\left(pc\right)^2$&lt;/li&gt;
&lt;li&gt;动能与动量的关系：$E_k^2+2m_0c^2E_k=p^2c^2$&lt;/li&gt;
&lt;li&gt;一些常见的数据要记的
&lt;ul&gt;
&lt;li&gt;$1 \text{ eV}=1.6\times10^{-19}\text{ J}$&lt;/li&gt;
&lt;li&gt;电子的静止质量 $9.1\times10^{-31}\text{ kg}$&lt;/li&gt;
&lt;li&gt;电子的静止能量 $0.51\text{ MeV}$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="/_astro/relativity-cover.DxKE8lQG.png"/><enclosure url="/_astro/relativity-cover.DxKE8lQG.png"/></item><item><title>《共产党宣言》全文</title><link>https://chinosan.com/blog/reading/the-communist-manifesto</link><guid isPermaLink="true">https://chinosan.com/blog/reading/the-communist-manifesto</guid><description>无产者在这个革命中失去的只是锁链。他们获得的将是整个世界。</description><pubDate>Tue, 26 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;一个幽灵，共产主义的幽灵，在欧洲游荡。为了对这个幽灵进行神圣的围剿，旧欧洲的一切势力，教皇和沙皇、梅特涅和基佐、法国的激进派和德国的警察，都联合起来了。&lt;/p&gt;
&lt;p&gt;有哪一个反对党不被它的当政的敌人骂为共产党呢？又有哪一个反对党不拿共产主义这个罪名去回敬更进步的反对党人和自己的反动敌人呢？&lt;/p&gt;
&lt;p&gt;从这一事实中可以得出两个结论：&lt;/p&gt;
&lt;p&gt;共产主义已经被欧洲的一切势力公认为一种势力；&lt;/p&gt;
&lt;p&gt;现在是共产党人向全世界公开说明自己的观点、自己的目的、自己的意图并且拿党自己的宣言来反驳关于共产主义幽灵的神话的时候了。&lt;/p&gt;
&lt;p&gt;为了这个目的，各国共产党人集会于伦敦，拟定了如下的宣言，用英文、法文、德文、意大利文、佛拉芒文和丹麦文公布于世。&lt;/p&gt;
&lt;h2&gt;1 资产者和无产者&lt;/h2&gt;
&lt;p&gt;〔注：恩格斯在1888年英文版上加了一个注：“资产阶级是指占有社会生产资料并使用雇佣劳动的现代资本家阶级。无产阶级是指没有自己的生产资料，因而不得不靠出卖劳动力来维持生活的现代雇佣工人阶级。”——编者注〕&lt;/p&gt;
&lt;p&gt;至今一切社会的历史〔注：恩格斯在1888年英文版上加了一个注：“这是指有文字记载的全部历史。在1847年，社会的史前史、成文史以前的社会组织，几乎还没有人知道。后来，哈克斯特豪森发现了俄国的土地公有制，毛勒证明了这种公有制是一切条顿族的历史起源的社会基础，而且人们逐渐发现，农村公社是或者曾经是从印度到爱尔兰的各地社会的原始形态。最后，摩尔根发现了氏族的真正本质及其对部落的关系，这一卓绝发现把这种原始共产主义社会的内部组织的典型形式揭示出来了。随着这种原始公社的解体，社会开始分裂为各个独特的、终于彼此对立的阶级。关于这个解体过程，我曾经试图在《家庭、私有制和国家的起源》（1886年斯图加特第2版）中加以探讨。”——编者注〕都是阶级斗争的历史。&lt;/p&gt;
&lt;p&gt;自由民和奴隶、贵族和平民、领主和农奴、行会师傅〔注：恩格斯在1888年英文版上加了一个注：“行会师傅就是在行会中享有全权的会员，是行会内部的师傅，而不是行会的首领。”——编者注〕和帮工，一句话，压迫者和被压迫者，始终处于相互对立的地位，进行不断的、有时隐蔽有时公开的斗争，而每一次斗争的结局都是整个社会受到革命改造或者斗争的各阶级同归于尽。&lt;/p&gt;
&lt;p&gt;在过去的各个历史时代，我们几乎到处都可以看到社会完全划分为各个不同的等级，看到社会地位分成的多种多样的层次。在古罗马，有贵族、骑士、平民、奴隶，在中世纪，有封建主、臣仆、行会师傅、帮工、农奴，而且几乎在每一个阶级内部又有一些特殊的阶层。&lt;/p&gt;
&lt;p&gt;从封建社会的灭亡中产生出来的现代资产阶级社会并没有消灭阶级对立。它只是用新的阶级、新的压迫条件、新的斗争形式代替了旧的。&lt;/p&gt;
&lt;p&gt;但是，我们的时代，资产阶级时代，却有一个特点：它使阶级对立简单化了。整个社会日益分裂为两大敌对的阵营，分裂为两大相互直接对立的阶级：资产阶级和无产阶级。&lt;/p&gt;
&lt;p&gt;从中世纪的农奴中产生了初期城市的城关市民；从这个市民等级中发展出最初的资产阶级分子。&lt;/p&gt;
&lt;p&gt;美洲的发现、绕过非洲的航行，给新兴的资产阶级开辟了新天地。东印度和中国的市场、美洲的殖民化、对殖民地的贸易、交换手段和一般商品的增加，使商业、航海业和工业空前高涨，因而使正在崩溃的封建社会内部的革命因素迅速发展。&lt;/p&gt;
&lt;p&gt;以前那种封建的或行会的工业经营方式已经不能满足随着新市场的出现而增加的需求了。工场手工业代替了这种经营方式。行会师傅被工业的中间等级排挤掉了；各种行业组织之间的分工随着各个作坊内部的分工的出现而消失了。&lt;/p&gt;
&lt;p&gt;但是，市场总是在扩大，需求总是在增加。甚至工场手工业也不再能满足需要了。于是，蒸汽和机器引起了工业生产的革命。现代大工业代替了工场手工业；工业中的百万富翁、一支一支产业大军的首领、现代资产者，代替了工业的中间等级。&lt;/p&gt;
&lt;p&gt;大工业建立了由美洲的发现所准备好的世界市场。世界市场使商业、航海业和陆路交通得到了巨大的发展。这种发展又反过来促进了工业的扩展，同时，随着工业、商业、航海业和铁路的扩展，资产阶级也在同一程度上发展起来，增加自己的资本，把中世纪遗留下来的一切阶级排挤到后面去。&lt;/p&gt;
&lt;p&gt;由此可见，现代资产阶级本身是一个长期发展过程的产物，是生产方式和交换方式的一系列变革的产物。&lt;/p&gt;
&lt;p&gt;资产阶级的这种发展的每一个阶段，都伴随着相应的政治上的进展〔注：“相应的政治上的进展”在1888年英文版中是“这个阶级的相应的政治上的进展”。——编者注〕。它在封建主统治下是被压迫的等级，在公社〔注：恩格斯在1888年英文版上加了一个注：“法国的新兴城市，甚至在它们从封建主手里争得地方自治和‘第三等级’的政治权利以前，就已经称为‘公社’了。一般说来，这里是把英国当做资产阶级经济发展的典型国家，而把法国当做资产阶级政治发展的典型国家。”恩格斯在1890年德文版上加了一个注：“意大利和法国的市民，从他们的封建主手中买得或争得最初的自治权以后，就把自己的城市共同体称为‘公社’。”——编者注〕里是武装的和自治的团体，在一些地方组成独立的城市共和国〔注：在1888年英文版中这里加上了“（例如在意大利和德国）”。——编者注〕，在另一些地方组成君主国中的纳税的第三等级〔注：在1888年英文版中这里加上了“（例如在法国）”。——编者注〕；后来，在工场手工业时期，它是等级君主国〔注：“等级君主国”在1888年英文版中是“半封建君主国”。——编者注〕或专制君主国中同贵族抗衡的势力，而且是大君主国的主要基础；最后，从大工业和世界市场建立的时候起，它在现代的代议制国家里夺得了独占的政治统治。现代的国家政权不过是管理整个资产阶级的共同事务的委员会罢了。&lt;/p&gt;
&lt;p&gt;资产阶级在历史上曾经起过非常革命的作用。&lt;/p&gt;
&lt;p&gt;资产阶级在它已经取得了统治的地方把一切封建的、宗法的和田园诗般的关系都破坏了。它无情地斩断了把人们束缚于天然尊长的形形色色的封建羁绊，它使人和人之间除了赤裸裸的利害关系，除了冷酷无情的“现金交易”，就再也没有任何别的联系了。它把宗教虔诚、骑士热忱、小市民伤感这些情感的神圣发作，淹没在利己主义打算的冰水之中。它把人的尊严变成了交换价值，用一种没有良心的贸易自由代替了无数特许的和自力挣得的自由。总而言之，它用公开的、无耻的、直接的、露骨的剥削代替了由宗教幻想和政治幻想掩盖着的剥削。&lt;/p&gt;
&lt;p&gt;资产阶级抹去了一切向来受人尊崇和令人敬畏的职业的神圣光环。它把医生、律师、教士、诗人和学者变成了它出钱招雇的雇佣劳动者。&lt;/p&gt;
&lt;p&gt;资产阶级撕下了罩在家庭关系上的温情脉脉的面纱，把这种关系变成了纯粹的金钱关系。&lt;/p&gt;
&lt;p&gt;资产阶级揭示了，在中世纪深受反动派称许的那种人力的野蛮使用，是以极端怠惰作为相应补充的。它第一个证明了，人的活动能够取得什么样的成就。它创造了完全不同于埃及金字塔、罗马水道和哥特式教堂的奇迹；它完成了完全不同于民族大迁徙&lt;a href=&quot;%E6%B0%91%E6%97%8F%E5%A4%A7%E8%BF%81%E5%BE%99%E6%8C%87%E5%85%AC%E5%85%833-7%E4%B8%96%E7%BA%AA%E6%97%A5%E8%80%B3%E6%9B%BC%E3%80%81%E6%96%AF%E6%8B%89%E5%A4%AB%E5%8F%8A%E5%85%B6%E4%BB%96%E9%83%A8%E8%90%BD%E5%90%91%E7%BD%97%E9%A9%AC%E5%B8%9D%E5%9B%BD%E7%9A%84%E5%A4%A7%E8%A7%84%E6%A8%A1%E8%BF%81%E5%BE%99%E3%80%824%E4%B8%96%E7%BA%AA%E4%B8%8A%E5%8D%8A%E5%8F%B6%EF%BC%8C%E6%97%A5%E8%80%B3%E6%9B%BC%E9%83%A8%E8%90%BD%E4%B8%AD%E7%9A%84%E8%A5%BF%E5%93%A5%E7%89%B9%E4%BA%BA%E5%9B%A0%E9%81%AD%E5%88%B0%E5%8C%88%E5%A5%B4%E4%BA%BA%E7%9A%84%E8%BF%9B%E6%94%BB%E4%BE%B5%E5%85%A5%E7%BD%97%E9%A9%AC%E5%B8%9D%E5%9B%BD%E3%80%82%E7%BB%8F%E8%BF%87%E9%95%BF%E6%9C%9F%E7%9A%84%E6%88%98%E4%BA%89%EF%BC%8C%E8%A5%BF%E5%93%A5%E7%89%B9%E4%BA%BA%E4%BA%8E5%E4%B8%96%E7%BA%AA%E5%9C%A8%E8%A5%BF%E7%BD%97%E9%A9%AC%E5%B8%9D%E5%9B%BD%E5%A2%83%E5%86%85%E5%AE%9A%E5%B1%85%E4%B8%8B%E6%9D%A5%EF%BC%8C%E5%BB%BA%E7%AB%8B%E4%BA%86%E8%87%AA%E5%B7%B1%E7%9A%84%E5%9B%BD%E5%AE%B6%E3%80%82%E6%97%A5%E8%80%B3%E6%9B%BC%E4%BA%BA%E7%9A%84%E5%85%B6%E4%BB%96%E9%83%A8%E8%90%BD%E4%B9%9F%E7%9B%B8%E7%BB%A7%E5%9C%A8%E6%AC%A7%E6%B4%B2%E5%92%8C%E5%8C%97%E9%9D%9E%E5%BB%BA%E7%AB%8B%E4%BA%86%E7%8B%AC%E7%AB%8B%E7%9A%84%E5%9B%BD%E5%AE%B6%E3%80%82%E6%B0%91%E6%97%8F%E5%A4%A7%E8%BF%81%E5%BE%99%E5%AF%B9%E6%91%A7%E6%AF%81%E7%BD%97%E9%A9%AC%E5%B8%9D%E5%9B%BD%E7%9A%84%E5%A5%B4%E9%9A%B6%E5%88%B6%E5%BA%A6%E5%92%8C%E6%8E%A8%E5%8A%A8%E8%A5%BF%E6%AC%A7%E5%B0%81%E5%BB%BA%E5%88%B6%E5%BA%A6%E7%9A%84%E4%BA%A7%E7%94%9F%E8%B5%B7%E4%BA%86%E9%87%8D%E8%A6%81%E7%9A%84%E4%BD%9C%E7%94%A8%E3%80%82%E2%80%94%E2%80%9430%E3%80%82&quot;&gt;^37&lt;/a&gt;和十字军征讨&lt;a href=&quot;%E5%8D%81%E5%AD%97%E5%86%9B%E5%BE%81%E8%AE%A8%E6%8C%8711-13%E4%B8%96%E7%BA%AA%E8%A5%BF%E6%AC%A7%E5%A4%A9%E4%B8%BB%E6%95%99%E4%BC%9A%E3%80%81%E5%B0%81%E5%BB%BA%E4%B8%BB%E5%92%8C%E5%A4%A7%E5%95%86%E4%BA%BA%E6%89%93%E7%9D%80%E4%BB%8E%E4%BC%8A%E6%96%AF%E5%85%B0%E6%95%99%E5%BE%92%E6%89%8B%E4%B8%AD%E8%A7%A3%E6%94%BE%E5%9C%A3%E5%9C%B0%E8%80%B6%E8%B7%AF%E6%92%92%E5%86%B7%E7%9A%84%E5%AE%97%E6%95%99%E6%97%97%E5%B8%9C%EF%BC%8C%E4%B8%BB%E8%A6%81%E5%AF%B9%E4%B8%9C%E5%9C%B0%E4%B8%AD%E6%B5%B7%E6%B2%BF%E5%B2%B8%E4%BC%8A%E6%96%AF%E5%85%B0%E6%95%99%E5%9B%BD%E5%AE%B6%E5%8F%91%E5%8A%A8%E7%9A%84%E4%BE%B5%E7%95%A5%E6%88%98%E4%BA%89%E3%80%82%E5%9B%A0%E5%8F%82%E5%8A%A0%E8%80%85%E7%9A%84%E8%A1%A3%E6%9C%8D%E4%B8%8A%E7%BC%9D%E6%9C%89%E7%BA%A2%E5%8D%81%E5%AD%97%EF%BC%8C%E6%95%85%E7%A7%B0%E2%80%9C%E5%8D%81%E5%AD%97%E5%86%9B%E2%80%9D%E3%80%82%E5%8D%81%E5%AD%97%E5%86%9B%E5%BE%81%E8%AE%A8%E5%89%8D%E5%90%8E%E5%85%B1%E5%85%AB%E6%AC%A1%EF%BC%8C%E5%8E%86%E6%97%B6%E8%BF%91200%E5%B9%B4%EF%BC%8C%E6%9C%80%E5%90%8E%E4%BB%A5%E5%A4%B1%E8%B4%A5%E8%80%8C%E5%91%8A%E7%BB%88%E3%80%82%E5%8D%81%E5%AD%97%E5%86%9B%E5%BE%81%E8%AE%A8%E7%BB%99%E4%B8%9C%E6%96%B9%E5%9B%BD%E5%AE%B6%E7%9A%84%E4%BA%BA%E6%B0%91%E5%B8%A6%E6%9D%A5%E4%BA%86%E6%B7%B1%E9%87%8D%E7%9A%84%E7%81%BE%E9%9A%BE%EF%BC%8C%E4%B9%9F%E4%BD%BF%E8%A5%BF%E6%AC%A7%E5%9B%BD%E5%AE%B6%E7%9A%84%E4%BA%BA%E6%B0%91%E9%81%AD%E5%8F%97%E6%83%A8%E9%87%8D%E7%9A%84%E7%89%BA%E7%89%B2%EF%BC%8C%E4%BD%86%E6%98%AF%EF%BC%8C%E5%AE%83%E5%9C%A8%E5%AE%A2%E8%A7%82%E4%B8%8A%E4%B9%9F%E5%AF%B9%E4%B8%9C%E8%A5%BF%E6%96%B9%E7%9A%84%E7%BB%8F%E6%B5%8E%E5%92%8C%E6%96%87%E5%8C%96%E4%BA%A4%E6%B5%81%E8%B5%B7%E5%88%B0%E4%BA%86%E4%B8%80%E5%AE%9A%E7%9A%84%E4%BF%83%E8%BF%9B%E4%BD%9C%E7%94%A8%E3%80%82%E2%80%94%E2%80%9430%E3%80%82&quot;&gt;^38&lt;/a&gt;的远征。&lt;/p&gt;
&lt;p&gt;资产阶级除非对生产工具，从而对生产关系，从而对全部社会关系不断地进行革命，否则就不能生存下去。反之，原封不动地保持旧的生产方式，却是过去的一切工业阶级生存的首要条件。生产的不断变革，一切社会状况不停的动荡，永远的不安定和变动，这就是资产阶级时代不同于过去一切时代的地方。一切固定的僵化的关系以及与之相适应的素被尊崇的观念和见解都被消除了，一切新形成的关系等不到固定下来就陈旧了。一切等级的和固定的东西都烟消云散了，一切神圣的东西都被亵渎了。人们终于不得不用冷静的眼光来看他们的生活地位、他们的相互关系。&lt;/p&gt;
&lt;p&gt;不断扩大产品销路的需要，驱使资产阶级奔走于全球各地。它必须到处落户，到处开发，到处建立联系。&lt;/p&gt;
&lt;p&gt;资产阶级，由于开拓了世界市场，使一切国家的生产和消费都成为世界性的了。使反动派大为惋惜的是，资产阶级挖掉了工业脚下的民族基础。古老的民族工业被消灭了，并且每天都还在被消灭。它们被新的工业排挤掉了，新的工业的建立已经成为一切文明民族的生命攸关的问题；这些工业所加工的，已经不是本地的原料，而是来自极其遥远的地区的原料；它们的产品不仅供本国消费，而且同时供世界各地消费。旧的、靠本国产品来满足的需要，被新的、要靠极其遥远的国家和地带的产品来满足的需要所代替了。过去那种地方的和民族的自给自足和闭关自守状态，被各民族的各方面的互相往来和各方面的互相依赖所代替了。物质的生产是如此，精神的生产也是如此。各民族的精神产品成了公共的财产。民族的片面性和局限性日益成为不可能，于是由许多种民族的和地方的文学形成了一种世界的文学〔注：“文学”一词德文是“Literatur”，这里泛指科学、艺术、哲学、政治等等方面的著作。——编者注〕。&lt;/p&gt;
&lt;p&gt;资产阶级，由于一切生产工具的迅速改进，由于交通的极其便利，把一切民族甚至最野蛮的民族都卷到文明中来了。它的商品的低廉价格，是它用来摧毁一切万里长城、征服野蛮人最顽强的仇外心理的重炮。它迫使一切民族——如果它们不想灭亡的话——采用资产阶级的生产方式；它迫使它们在自己那里推行所谓的文明，即变成资产者。一句话，它按照自己的面貌为自己创造出一个世界。&lt;/p&gt;
&lt;p&gt;资产阶级使农村屈服于城市的统治。它创立了巨大的城市，使城市人口比农村人口大大增加起来，因而使很大一部分居民脱离了农村生活的愚昧状态。正像它使农村从属于城市一样，它使未开化和半开化的国家从属于文明的国家，使农民的民族从属于资产阶级的民族，使东方从属于西方。&lt;/p&gt;
&lt;p&gt;资产阶级日甚一日地消灭生产资料、财产和人口的分散状态。它使人口密集起来，使生产资料集中起来，使财产聚集在少数人的手里。由此必然产生的结果就是政治的集中。各自独立的、几乎只有同盟关系的、各有不同利益、不同法律、不同政府、不同关税的各个地区，现在已经结合为一个拥有统一的政府、统一的法律、统一的民族阶级利益和统一的关税的统一的民族。&lt;/p&gt;
&lt;p&gt;资产阶级在它的不到一百年的阶级统治中所创造的生产力，比过去一切世代创造的全部生产力还要多，还要大。自然力的征服，机器的采用，化学在工业和农业中的应用，轮船的行驶，铁路的通行，电报的使用，整个整个大陆的开垦，河川的通航，仿佛用法术从地下呼唤出来的大量人口——过去哪一个世纪料想到在社会劳动里蕴藏有这样的生产力呢？&lt;/p&gt;
&lt;p&gt;由此可见，资产阶级赖以形成的生产资料和交换手段，是在封建社会里造成的。在这些生产资料和交换手段发展的一定阶段上，封建社会的生产和交换在其中进行的关系，封建的农业和工场手工业组织，一句话，封建的所有制关系，就不再适应已经发展的生产力了。这种关系已经在阻碍生产而不是促进生产了。它变成了束缚生产的桎梏。它必须被炸毁，它已经被炸毁了。&lt;/p&gt;
&lt;p&gt;起而代之的是自由竞争以及与自由竞争相适应的社会制度和政治制度、资产阶级的经济统治和政治统治。&lt;/p&gt;
&lt;p&gt;现在，我们眼前又进行着类似的运动。资产阶级的生产关系和交换关系，资产阶级的所有制关系，这个曾经仿佛用法术创造了如此庞大的生产资料和交换手段的现代资产阶级社会，现在像一个魔法师一样不能再支配自己用法术呼唤出来的魔鬼了。几十年来的工业和商业的历史，只不过是现代生产力反抗现代生产关系、反抗作为资产阶级及其统治的存在条件的所有制关系的历史。只要指出在周期性的重复中越来越危及整个资产阶级社会生存的商业危机就够了。在商业危机期间，总是不仅有很大一部分制成的产品被毁灭掉，而且有很大一部分已经造成的生产力被毁灭掉。在危机期间，发生一种在过去一切时代看来都好像是荒唐现象的社会瘟疫，即生产过剩的瘟疫。社会突然发现自己回到了一时的野蛮状态；仿佛是一次饥荒、一场普遍的毁灭性战争，使社会失去了全部生活资料；仿佛是工业和商业全被毁灭了。这是什么缘故呢？因为社会上文明过度，生活资料太多，工业和商业太发达。社会所拥有的生产力已经不能再促进资产阶级文明和资产阶级所有制关系的发展；相反，生产力已经强大到这种关系所不能适应的地步，它已经受到这种关系的阻碍；而它一着手克服这种障碍，就使整个资产阶级社会陷入混乱，就使资产阶级所有制的存在受到威胁。资产阶级的关系已经太狭窄了，再容纳不了它本身所造成的财富了。资产阶级用什么办法来克服这种危机呢？一方面不得不消灭大量生产力，另一方面夺取新的市场，更加彻底地利用旧的市场。这究竟是怎样的一种办法呢？这不过是资产阶级准备更全面更猛烈的危机的办法，不过是使防止危机的手段越来越少的办法。&lt;/p&gt;
&lt;p&gt;资产阶级用来推翻封建制度的武器，现在却对准资产阶级自己了。&lt;/p&gt;
&lt;p&gt;但是，资产阶级不仅锻造了置自身于死地的武器；它还产生了将要运用这种武器的人——现代的工人，即无产者。&lt;/p&gt;
&lt;p&gt;随着资产阶级即资本的发展，无产阶级即现代工人阶级也在同一程度上得到发展；现代的工人只有当他们找到工作的时候才能生存，而且只有当他们的劳动增殖资本的时候才能找到工作。这些不得不把自己零星出卖的工人，像其他任何货物一样，也是一种商品，所以他们同样地受到竞争的一切变化、市场的一切波动的影响。&lt;/p&gt;
&lt;p&gt;由于推广机器和分工，无产者的劳动已经失去了任何独立的性质，因而对工人也失去了任何吸引力。工人变成了机器的单纯的附属品，要求他做的只是极其简单、极其单调和极容易学会的操作。因此，花在工人身上的费用，几乎只限于维持工人生活和延续工人后代所必需的生活资料。但是，商品的价格，从而劳动的价格&lt;a href=&quot;%E9%A9%AC%E5%85%8B%E6%80%9D%E5%92%8C%E6%81%A9%E6%A0%BC%E6%96%AF%E5%9C%A819%E4%B8%96%E7%BA%AA40-50%E5%B9%B4%E4%BB%A3%EF%BC%8C%E5%8D%B3%E9%A9%AC%E5%85%8B%E6%80%9D%E5%88%B6%E5%AE%9A%E5%87%BA%E5%89%A9%E4%BD%99%E4%BB%B7%E5%80%BC%E7%90%86%E8%AE%BA%E4%BB%A5%E5%89%8D%E6%89%80%E5%86%99%E7%9A%84%E8%91%97%E4%BD%9C%E4%B8%AD%E4%BD%BF%E7%94%A8%E8%BF%87%E2%80%9C%E5%8A%B3%E5%8A%A8%E4%BB%B7%E5%80%BC%E2%80%9D%E3%80%81%E2%80%9C%E5%8A%B3%E5%8A%A8%E4%BB%B7%E6%A0%BC%E2%80%9D%E3%80%81%E2%80%9C%E5%87%BA%E5%8D%96%E5%8A%B3%E5%8A%A8%E2%80%9D%E8%BF%99%E6%A0%B7%E7%9A%84%E6%A6%82%E5%BF%B5%E3%80%821891%E5%B9%B4%EF%BC%8C%E6%81%A9%E6%A0%BC%E6%96%AF%E5%9C%A8%E4%B8%BA%E9%A9%AC%E5%85%8B%E6%80%9D%E7%9A%84%E3%80%8A%E9%9B%87%E4%BD%A3%E5%8A%B3%E5%8A%A8%E4%B8%8E%E8%B5%84%E6%9C%AC%E3%80%8B%E8%BF%99%E6%9C%AC%E5%B0%8F%E5%86%8C%E5%AD%90%E6%89%80%E5%86%99%E7%9A%84%E5%AF%BC%E8%A8%80%E4%B8%AD%E6%8C%87%E5%87%BA%EF%BC%9A%E2%80%9C%E7%94%A8%E5%90%8E%E6%9D%A5%E7%9A%84%E8%91%97%E4%BD%9C%E4%B8%AD%E7%9A%84%E8%A7%82%E7%82%B9%E6%9D%A5%E8%A1%A1%E9%87%8F%E2%80%9D%EF%BC%8C%E8%BF%99%E4%BA%9B%E6%A6%82%E5%BF%B5%E2%80%9C%E6%98%AF%E4%B8%8D%E5%A6%A5%E5%BD%93%E7%9A%84%EF%BC%8C%E7%94%9A%E8%87%B3%E6%98%AF%E4%B8%8D%E6%AD%A3%E7%A1%AE%E7%9A%84%E2%80%9D%EF%BC%88%E8%A7%81%E3%80%8A%E9%A9%AC%E5%85%8B%E6%80%9D%E6%81%A9%E6%A0%BC%E6%96%AF%E9%80%89%E9%9B%86%E3%80%8B%E7%AC%AC3%E7%89%88%E7%AC%AC1%E5%8D%B7%E7%AC%AC318%E9%A1%B5%EF%BC%89%E3%80%82%E9%A9%AC%E5%85%8B%E6%80%9D%E5%92%8C%E6%81%A9%E6%A0%BC%E6%96%AF%E5%9C%A8%E5%90%8E%E6%9D%A5%E7%9A%84%E8%91%97%E4%BD%9C%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%E2%80%9C%E5%8A%B3%E5%8A%A8%E5%8A%9B%E4%BB%B7%E5%80%BC%E2%80%9D%E5%92%8C%E2%80%9C%E5%8A%B3%E5%8A%A8%E5%8A%9B%E4%BB%B7%E6%A0%BC%E2%80%9D%E3%80%81%E2%80%9C%E5%87%BA%E5%8D%96%E5%8A%B3%E5%8A%A8%E5%8A%9B%E2%80%9D%E7%AD%89%E6%A6%82%E5%BF%B5%E3%80%82%E2%80%94%E2%80%9434%E3%80%8170%E3%80%8176%E3%80%82&quot;&gt;^39&lt;/a&gt;，是同它的生产费用相等的。因此，劳动越使人感到厌恶，工资也就越减少。不仅如此，机器越推广，分工越细致，劳动量〔注：“劳动量”在1888年英文版中是“劳动负担”。——编者注〕也就越增加，这或者是由于工作时间的延长，或者是由于在一定时间内所要求的劳动的增加，机器运转的加速，等等。&lt;/p&gt;
&lt;p&gt;现代工业已经把家长式的师傅的小作坊变成了工业资本家的大工厂。挤在工厂里的工人群众就像士兵一样被组织起来。他们是产业军的普通士兵，受着各级军士和军官的层层监视。他们不仅仅是资产阶级的、资产阶级国家的奴隶，他们每日每时都受机器、受监工、首先是受各个经营工厂的资产者本人的奴役。这种专制制度越是公开地把营利宣布为自己的最终目的，它就越是可鄙、可恨和可恶。&lt;/p&gt;
&lt;p&gt;手的操作所要求的技巧和气力越少，换句话说，现代工业越发达，男工也就越受到女工和童工的排挤。对工人阶级来说，性别和年龄的差别再没有什么社会意义了。他们都只是劳动工具，不过因为年龄和性别的不同而需要不同的费用罢了。&lt;/p&gt;
&lt;p&gt;当厂主对工人的剥削告一段落，工人领到了用现钱支付的工资的时候，马上就有资产阶级中的另一部分人——房东、小店主、当铺老板等等向他们扑来。&lt;/p&gt;
&lt;p&gt;以前的中间等级的下层，即小工业家、小商人和小食利者，手工业者和农民——所有这些阶级都降落到无产阶级的队伍里来了，有的是因为他们的小资本不足以经营大工业，经不起较大的资本家的竞争；有的是因为他们的手艺已经被新的生产方法弄得不值钱了。无产阶级就是这样从居民的所有阶级中得到补充的。&lt;/p&gt;
&lt;p&gt;无产阶级经历了各个不同的发展阶段。它反对资产阶级的斗争是和它的存在同时开始的。&lt;/p&gt;
&lt;p&gt;最初是单个的工人，然后是某一工厂的工人，然后是某一地方的某一劳动部门的工人，同直接剥削他们的单个资产者作斗争。他们不仅仅攻击资产阶级的生产关系，而且攻击生产工具本身〔注：这句话在1888年英文版中是“他们不是攻击资产阶级的生产关系，而是攻击生产工具本身”。——编者注〕；他们毁坏那些来竞争的外国商品，捣毁机器，烧毁工厂，力图恢复已经失去的中世纪工人的地位。&lt;/p&gt;
&lt;p&gt;在这个阶段上，工人们是分散在全国各地并为竞争所分裂的群众。工人的大规模集结，还不是他们自己联合的结果，而是资产阶级联合的结果，当时资产阶级为了达到自己的政治目的必须而且暂时还能够把整个无产阶级发动起来。因此，在这个阶段上，无产者不是同自己的敌人作斗争，而是同自己的敌人的敌人作斗争，即同专制君主制的残余、地主、非工业资产者和小资产者作斗争。因此，整个历史运动都集中在资产阶级手里；在这种条件下取得的每一个胜利都是资产阶级的胜利。&lt;/p&gt;
&lt;p&gt;但是，随着工业的发展，无产阶级不仅人数增加了，而且结合成更大的集体，它的力量日益增长，而且它越来越感觉到自己的力量。机器使劳动的差别越来越小，使工资几乎到处都降到同样低的水平，因而无产阶级内部的利益、生活状况也越来越趋于一致。资产者彼此间日益加剧的竞争以及由此引起的商业危机，使工人的工资越来越不稳定；机器的日益迅速的和继续不断的改良，使工人的整个生活地位越来越没有保障；单个工人和单个资产者之间的冲突越来越具有两个阶级的冲突的性质。工人开始成立反对资产者的同盟〔注：在1888年英文版中这里加上了“（工联）”。——编者注〕；他们联合起来保卫自己的工资。他们甚至建立了经常性的团体，以便为可能发生的反抗准备食品。有些地方，斗争爆发为起义。&lt;/p&gt;
&lt;p&gt;工人有时也得到胜利，但这种胜利只是暂时的。他们斗争的真正成果并不是直接取得的成功，而是工人的越来越扩大的联合。这种联合由于大工业所造成的日益发达的交通工具而得到发展，这种交通工具把各地的工人彼此联系起来。只要有了这种联系，就能把许多性质相同的地方性的斗争汇合成全国性的斗争，汇合成阶级斗争。而一切阶级斗争都是政治斗争。中世纪的市民靠乡间小道需要几百年才能达到的联合，现代的无产者利用铁路只要几年就可以达到了。&lt;/p&gt;
&lt;p&gt;无产者组织成为阶级，从而组织成为政党这件事，不断地由于工人的自相竞争而受到破坏。但是，这种组织总是重新产生，并且一次比一次更强大、更坚固、更有力。它利用资产阶级内部的分裂，迫使他们用法律形式承认工人的个别利益。英国的十小时工作日法案&lt;a href=&quot;%E8%8B%B1%E5%9B%BD%E5%B7%A5%E4%BA%BA%E9%98%B6%E7%BA%A7%E4%BB%8E18%E4%B8%96%E7%BA%AA%E6%9C%AB%E5%BC%80%E5%A7%8B%E4%BA%89%E5%8F%96%E7%94%A8%E7%AB%8B%E6%B3%95%E6%89%8B%E6%AE%B5%E9%99%90%E5%88%B6%E5%B7%A5%E4%BD%9C%E6%97%A5%EF%BC%8C%E4%BB%8E19%E4%B8%96%E7%BA%AA30%E5%B9%B4%E4%BB%A3%E8%B5%B7%EF%BC%8C%E5%B9%BF%E5%A4%A7%E6%97%A0%E4%BA%A7%E9%98%B6%E7%BA%A7%E7%BE%A4%E4%BC%97%E6%8A%95%E5%85%A5%E4%BA%89%E5%8F%96%E5%8D%81%E5%B0%8F%E6%97%B6%E5%B7%A5%E4%BD%9C%E6%97%A5%E7%9A%84%E6%96%97%E4%BA%89%E3%80%82%E5%8D%81%E5%B0%8F%E6%97%B6%E5%B7%A5%E4%BD%9C%E6%97%A5%E6%B3%95%E6%A1%88%E6%98%AF%E8%8B%B1%E5%9B%BD%E8%AE%AE%E4%BC%9A%E5%9C%A81847%E5%B9%B46%E6%9C%888%E6%97%A5%E9%80%9A%E8%BF%87%E7%9A%84%EF%BC%8C%E4%BD%9C%E4%B8%BA%E6%B3%95%E5%BE%8B%E4%BA%8E1848%E5%B9%B45%E6%9C%881%E6%97%A5%E8%B5%B7%E7%94%9F%E6%95%88%E3%80%82%E8%AF%A5%E6%B3%95%E5%BE%8B%E5%B0%86%E5%A6%87%E5%A5%B3%E5%92%8C%E5%84%BF%E7%AB%A5%E7%9A%84%E6%97%A5%E5%8A%B3%E5%8A%A8%E6%97%B6%E9%97%B4%E9%99%90%E5%88%B6%E4%B8%BA10%E5%B0%8F%E6%97%B6%E3%80%82%E4%BD%86%E6%98%AF%EF%BC%8C%E8%AE%B8%E5%A4%9A%E8%8B%B1%E5%9B%BD%E5%B7%A5%E5%8E%82%E4%B8%BB%E5%B9%B6%E4%B8%8D%E9%81%B5%E5%AE%88%E8%BF%99%E9%A1%B9%E6%B3%95%E5%BE%8B%EF%BC%8C%E4%BB%96%E4%BB%AC%E5%AF%BB%E6%89%BE%E7%A7%8D%E7%A7%8D%E5%80%9F%E5%8F%A3%E6%8A%8A%E5%B7%A5%E4%BD%9C%E6%97%A5%E4%BB%8E%E6%97%A9%E6%99%A85%E6%97%B6%E5%8D%8A%E5%BB%B6%E7%BB%AD%E5%88%B0%E6%99%9A%E4%B8%8A8%E6%97%B6%E5%8D%8A%E3%80%82%E5%B7%A5%E5%8E%82%E8%A7%86%E5%AF%9F%E5%91%98%E4%BC%A6%C2%B7%E9%9C%8D%E7%BA%B3%E7%9A%84%E6%8A%A5%E5%91%8A%E5%B0%B1%E6%98%AF%E5%BE%88%E5%A5%BD%E7%9A%84%E8%AF%81%E6%98%8E%EF%BC%88%E5%8F%82%E7%9C%8B%E3%80%8A%E9%A9%AC%E5%85%8B%E6%80%9D%E6%81%A9%E6%A0%BC%E6%96%AF%E6%96%87%E9%9B%86%E3%80%8B%E7%AC%AC5%E5%8D%B7%E7%AC%AC335%E9%A1%B5%EF%BC%89%E3%80%82//%E6%81%A9%E6%A0%BC%E6%96%AF%E5%9C%A8%E3%80%8A%E5%8D%81%E5%B0%8F%E6%97%B6%E5%B7%A5%E4%BD%9C%E6%97%A5%E9%97%AE%E9%A2%98%E3%80%8B%E5%92%8C%E3%80%8A%E8%8B%B1%E5%9B%BD%E7%9A%84%E5%8D%81%E5%B0%8F%E6%97%B6%E5%B7%A5%E4%BD%9C%E6%97%A5%E6%B3%95%E3%80%8B%EF%BC%88%E8%A7%81%E3%80%8A%E9%A9%AC%E5%85%8B%E6%80%9D%E6%81%A9%E6%A0%BC%E6%96%AF%E5%85%A8%E9%9B%86%E3%80%8B%E4%B8%AD%E6%96%87%E7%AC%AC2%E7%89%88%E7%AC%AC10%E5%8D%B7%EF%BC%89%E4%B8%AD%E5%AF%B9%E8%AF%A5%E6%B3%95%E6%A1%88%E4%BD%9C%E4%BA%86%E8%AF%A6%E7%BB%86%E7%9A%84%E5%88%86%E6%9E%90%E3%80%82%E5%85%B3%E4%BA%8E%E8%8B%B1%E5%9B%BD%E5%B7%A5%E4%BA%BA%E9%98%B6%E7%BA%A7%E4%BA%89%E5%8F%96%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%E6%97%A5%E7%9A%84%E6%96%97%E4%BA%89%EF%BC%8C%E9%A9%AC%E5%85%8B%E6%80%9D%E5%9C%A8%E3%80%8A%E8%B5%84%E6%9C%AC%E8%AE%BA%E3%80%8B%E7%AC%AC%E4%B8%80%E5%8D%B7%E7%AC%AC%E5%85%AB%E7%AB%A0%EF%BC%88%E8%A7%81%E3%80%8A%E9%A9%AC%E5%85%8B%E6%80%9D%E6%81%A9%E6%A0%BC%E6%96%AF%E6%96%87%E9%9B%86%E3%80%8B%E7%AC%AC5%E5%8D%B7%E7%AC%AC267-350%E9%A1%B5%EF%BC%89%E4%B8%AD%E4%BD%9C%E4%BA%86%E8%AF%A6%E7%BB%86%E8%80%83%E5%AF%9F%E3%80%82%E2%80%94%E2%80%9437%E3%80%82&quot;&gt;^40&lt;/a&gt;就是一个例子。&lt;/p&gt;
&lt;p&gt;旧社会内部的所有冲突在许多方面都促进了无产阶级的发展。资产阶级处于不断的斗争中：最初反对贵族；后来反对同工业进步有利害冲突的那部分资产阶级；经常反对一切外国的资产阶级。在这一切斗争中，资产阶级都不得不向无产阶级呼吁，要求无产阶级援助，这样就把无产阶级卷进了政治运动。于是，资产阶级自己就把自己的教育因素〔注：“教育因素”在1888年英文版中是“政治教育和普通教育的因素”。——编者注〕即反对自身的武器给予了无产阶级。&lt;/p&gt;
&lt;p&gt;其次，我们已经看到，工业的进步把统治阶级的整批成员拋到无产阶级队伍里去，或者至少也使他们的生活条件受到威胁。他们也给无产阶级带来了大量的教育因素〔注：“大量的教育因素”在1888年英文版中是“启蒙和进步的新因素”。——编者注〕。&lt;/p&gt;
&lt;p&gt;最后，在阶级斗争接近决战的时期，统治阶级内部的、整个旧社会内部的瓦解过程，就达到非常强烈、非常尖锐的程度，甚至使得统治阶级中的一小部分人脱离统治阶级而归附于革命的阶级，即掌握着未来的阶级。所以，正像过去贵族中有一部分人转到资产阶级方面一样，现在资产阶级中也有一部分人，特别是已经提高到能从理论上认识整个历史运动的一部分资产阶级思想家，转到无产阶级方面来了。&lt;/p&gt;
&lt;p&gt;在当前同资产阶级对立的一切阶级中，只有无产阶级是真正革命的阶级。其余的阶级都随着大工业的发展而日趋没落和灭亡，无产阶级却是大工业本身的产物。&lt;/p&gt;
&lt;p&gt;中间等级，即小工业家、小商人、手工业者、农民，他们同资产阶级作斗争，都是为了维护他们这种中间等级的生存，以免于灭亡。所以，他们不是革命的，而是保守的。不仅如此，他们甚至是反动的，因为他们力图使历史的车轮倒转。如果说他们是革命的，那是鉴于他们行将转入无产阶级的队伍，这样，他们就不是维护他们目前的利益，而是维护他们将来的利益，他们就离开自己原来的立场，而站到无产阶级的立场上来。&lt;/p&gt;
&lt;p&gt;流氓无产阶级是旧社会最下层中消极的腐化的部分，他们在一些地方也被无产阶级革命卷到运动里来，但是，由于他们的整个生活状况，他们更甘心于被人收买，去干反动的勾当。&lt;/p&gt;
&lt;p&gt;在无产阶级的生活条件中，旧社会的生活条件已经被消灭了。无产者是没有财产的；他们和妻子儿女的关系同资产阶级的家庭关系再没有任何共同之处了；现代的工业劳动，现代的资本压迫，无论在英国或法国，无论在美国或德国，都是一样的，都使无产者失去了任何民族性。法律、道德、宗教在他们看来全都是资产阶级偏见，隐藏在这些偏见后面的全都是资产阶级利益。&lt;/p&gt;
&lt;p&gt;过去一切阶级在争得统治之后，总是使整个社会服从于它们发财致富的条件，企图以此来巩固它们已经获得的生活地位。无产者只有废除自己的现存的占有方式，从而废除全部现存的占有方式，才能取得社会生产力。无产者没有什么自己的东西必须加以保护，他们必须摧毁至今保护和保障私有财产的一切。&lt;/p&gt;
&lt;p&gt;过去的一切运动都是少数人的，或者为少数人谋利益的运动。无产阶级的运动是绝大多数人的，为绝大多数人谋利益的独立的运动。无产阶级，现今社会的最下层，如果不炸毁构成官方社会的整个上层，就不能抬起头来，挺起胸来。&lt;/p&gt;
&lt;p&gt;如果不就内容而就形式来说，无产阶级反对资产阶级的斗争首先是一国范围内的斗争。每一个国家的无产阶级当然首先应该打倒本国的资产阶级。&lt;/p&gt;
&lt;p&gt;在叙述无产阶级发展的最一般的阶段的时候，我们循序探讨了现存社会内部或多或少隐蔽着的国内战争，直到这个战争爆发为公开的革命，无产阶级用暴力推翻资产阶级而建立自己的统治。&lt;/p&gt;
&lt;p&gt;我们已经看到，至今的一切社会都是建立在压迫阶级和被压迫阶级的对立之上的。但是，为了有可能压迫一个阶级，就必须保证这个阶级至少有能够勉强维持它的奴隶般的生存的条件。农奴曾经在农奴制度下挣扎到公社成员的地位，小资产者曾经在封建专制制度的束缚下挣扎到资产者的地位。现代的工人却相反，他们并不是随着工业的进步而上升，而是越来越降到本阶级的生存条件以下。工人变成赤贫者，贫困比人口和财富增长得还要快。由此可以明显地看出，资产阶级再不能做社会的统治阶级了，再不能把自己阶级的生存条件当做支配一切的规律强加于社会了。资产阶级不能统治下去了，因为它甚至不能保证自己的奴隶维持奴隶的生活，因为它不得不让自己的奴隶落到不能养活它反而要它来养活的地步。社会再不能在它统治下生存下去了，就是说，它的生存不再同社会相容了。&lt;/p&gt;
&lt;p&gt;资产阶级生存和统治的根本条件，是财富在私人手里的积累，是资本的形成和增殖；资本的条件是雇佣劳动。雇佣劳动完全是建立在工人的自相竞争之上的。资产阶级无意中造成而又无力抵抗的工业进步，使工人通过结社而达到的革命联合代替了他们由于竞争而造成的分散状态。于是，随着大工业的发展，资产阶级赖以生产和占有产品的基础本身也就从它的脚下被挖掉了。它首先生产的是它自身的掘墓人。资产阶级的灭亡和无产阶级的胜利是同样不可避免的。&lt;/p&gt;
&lt;h2&gt;2 无产者和共产党人&lt;/h2&gt;
&lt;p&gt;共产党人同全体无产者的关系是怎样的呢？&lt;/p&gt;
&lt;p&gt;共产党人不是同其它工人政党相对立的特殊政党。&lt;/p&gt;
&lt;p&gt;他们没有任何同整个无产阶级的利益不同的利益。&lt;/p&gt;
&lt;p&gt;他们不提出任何特殊的〔注：“特殊的”在1888年英文版中是“宗派的”。——编者注〕原则，用以塑造无产阶级的运动。&lt;/p&gt;
&lt;p&gt;共产党人同其它无产阶级政党不同的地方只是：一方面，在无产者不同的民族的斗争中，共产党人强调和坚持整个无产阶级共同的不分民族的利益；另一方面，在无产阶级和资产阶级的斗争所经历的各个发展阶段上，共产党人始终代表整个运动的利益。&lt;/p&gt;
&lt;p&gt;因此，在实践方面，共产党人是各国工人政党中最坚决的、始终起推动作用的部分〔注：“最坚决的、始终起推动作用的部分”在1888年英文版中是“最先进的和最坚决的部分，推动所有其他部分前进的部分”。——编者注〕；在理论方面，他们胜过其余无产阶级群众的地方在于他们了解无产阶级运动的条件、进程和一般结果。&lt;/p&gt;
&lt;p&gt;共产党人的最近目的是和其他一切无产阶级政党的最近目的一样的：使无产阶级形成为阶级，推翻资产阶级的统治，由无产阶级夺取政权。&lt;/p&gt;
&lt;p&gt;共产党人的理论原理，决不是以这个或那个世界改革家所发明或发现的思想、原则为根据的。&lt;/p&gt;
&lt;p&gt;这些原理不过是现存的阶级斗争、我们眼前的历史运动的真实关系的一般表述。废除先前存在的所有制关系，并不是共产主义所独具的特征。&lt;/p&gt;
&lt;p&gt;一切所有制关系都经历了经常的历史更替、经常的历史变更。&lt;/p&gt;
&lt;p&gt;例如，法国革命废除了封建的所有制，代之以资产阶级的所有制。&lt;/p&gt;
&lt;p&gt;共产主义的特征并不是要废除一般的所有制，而是要废除资产阶级的所有制。&lt;/p&gt;
&lt;p&gt;但是，现代的资产阶级私有制是建立在阶级对立上面、建立在一些人对另一些人的剥削〔注：“一些人对另一些人的剥削”在1888年英文版中是“少数人对多数人的剥削”。——编者注〕上面的产品生产和占有的最后而又最完备的表现。&lt;/p&gt;
&lt;p&gt;从这个意义上说，共产党人可以把自己的理论概括为一句话：消灭私有制。&lt;/p&gt;
&lt;p&gt;有人责备我们共产党人，说我们要消灭个人挣得的、自己劳动得来的财产，要消灭构成个人的一切自由、活动和独立的基础的财产。&lt;/p&gt;
&lt;p&gt;好一个劳动得来的、自己挣得的、自己赚来的财产！你们说的是资产阶级财产出现以前的那种小资产阶级的、小农的财产吗？那种财产用不着我们去消灭，工业的发展已经把它消灭了，而且每天都在消灭它。&lt;/p&gt;
&lt;p&gt;或者，你们说的是现代的资产阶级的私有财产吧？&lt;/p&gt;
&lt;p&gt;但是，难道雇佣劳动、无产者的劳动，会给无产者创造出财产来吗？没有的事。这种劳动所创造的是资本，即剥削雇佣劳动的财产，只有在不断产生出新的雇佣劳动来重新加以剥削的条件下才能增殖的财产。现今的这种财产是在资本和雇佣劳动的对立中运动的。让我们来看看这种对立的两个方面吧。&lt;/p&gt;
&lt;p&gt;做一个资本家，这就是说，他在生产中不仅占有一种纯粹个人的地位，而且占有一种社会的地位。资本是集体的产物，它只有通过社会许多成员的共同活动，而且归根到底只有通过社会全体成员的共同活动，才能运动起来。&lt;/p&gt;
&lt;p&gt;因此，资本不是一种个人力量，而是一种社会力量。&lt;/p&gt;
&lt;p&gt;因此，把资本变为公共的、属于社会全体成员的财产，这并不是把个人财产变为社会财产。这里所改变的只是财产的社会性质。它将失掉它的阶级性质。&lt;/p&gt;
&lt;p&gt;现在，我们来看看雇佣劳动。&lt;/p&gt;
&lt;p&gt;雇佣劳动的平均价格是最低限度的工资，即工人为维持其工人的生活所必需的生活资料的数额。因此，雇佣工人靠自己的劳动所占有的东西，只够勉强维持他的生命的再生产。我们决不打算消灭这种供直接生命再生产用的劳动产品的个人占有，这种占有并不会留下任何剩余的东西使人们有可能支配别人的劳动。我们要消灭的只是这种占有的可怜的性质，在这种占有下，工人仅仅为增殖资本而活着，只有在统治阶级的利益需要他活着的时候才能活着。&lt;/p&gt;
&lt;p&gt;在资产阶级社会里，活的劳动只是增殖已经积累起来的劳动的一种手段。在共产主义社会里，已经积累起来的劳动只是扩大、丰富和提高工人的生活的一种手段。&lt;/p&gt;
&lt;p&gt;因此，在资产阶级社会里是过去支配现在，在共产主义社会里是现在支配过去。在资产阶级社会里，资本具有独立性和个性，而活动着的个人却没有独立性和个性。&lt;/p&gt;
&lt;p&gt;而资产阶级却把消灭这种关系说成是消灭个性和自由！说对了。的确，正是要消灭资产者的个性、独立性和自由。&lt;/p&gt;
&lt;p&gt;在现今的资产阶级生产关系的范围内，所谓自由就是自由贸易、自由买卖。&lt;/p&gt;
&lt;p&gt;但是，买卖一消失，自由买卖也就会消失。关于自由买卖的言论，也像我们的资产者的其他一切关于自由的大话一样，仅仅对于不自由的买卖来说，对于中世纪被奴役的市民来说，才是有意义的，而对于共产主义要消灭买卖、消灭资产阶级生产关系和资产阶级本身这一点来说，却是毫无意义的。&lt;/p&gt;
&lt;p&gt;我们要消灭私有制，你们就惊慌起来。但是，在你们的现存社会里，私有财产对十分之九的成员来说已经被消灭了；这种私有制之所以存在，正是因为私有财产对十分之九的成员来说已经不存在。可见，你们责备我们，是说我们要消灭那种以社会上的绝大多数人没有财产为必要条件的所有制。&lt;/p&gt;
&lt;p&gt;总而言之，你们责备我们，是说我们要消灭你们的那种所有制。的确，我们是要这样做的。&lt;/p&gt;
&lt;p&gt;从劳动不再能变为资本、货币、地租，一句话，不再能变为可以垄断的社会力量的时候起，就是说，从个人财产不再能变为资产阶级财产〔注：在1888年英文版中这里加上了“变为资本”。——编者注〕的时候起，你们说，个性被消灭了。&lt;/p&gt;
&lt;p&gt;由此可见，你们是承认，你们所理解的个性，不外是资产者、资产阶级私有者。这样的个性确实应当被消灭。&lt;/p&gt;
&lt;p&gt;共产主义并不剥夺任何人占有社会产品的权力，它只剥夺利用这种占有去奴役他人劳动的权力。&lt;/p&gt;
&lt;p&gt;有人反驳说，私有制一消灭，一切活动就会停止，懒惰之风就会兴起。&lt;/p&gt;
&lt;p&gt;这样说来，资产阶级社会早就应该因懒惰而灭亡了，因为在这个社会里劳者不获，获者不劳。所有这些顾虑，都可以归结为这样一个同义反复：一旦没有资本，也就不再有雇佣劳动了。&lt;/p&gt;
&lt;p&gt;所有这些对共产主义的物质产品的占有方式和生产方式的责备，也被扩展到精神产品的占有和生产方面。正如阶级的所有制的终止在资产者看来是生产本身的终止一样，阶级的教育的终止在他们看来就等于一切教育的终止。&lt;/p&gt;
&lt;p&gt;资产者唯恐失去的那种教育，对绝大多数人来说是把人训练成机器。&lt;/p&gt;
&lt;p&gt;但是，你们既然用你们资产阶级关于自由、教育、法等等的观念来衡量废除资产阶级所有制的主张，那就请你们不要同我们争论了。你们的观念本身是资产阶级的生产关系和所有制关系的产物，正像你们的法不过是被奉为法律的你们这个阶级的意志一样，而这种意志的内容是由你们这个阶级的物质生活条件来决定的。&lt;/p&gt;
&lt;p&gt;你们的利己观念使你们把自己的生产关系和所有制关系从历史的、在生产过程中是暂时的关系变成永恒的自然规律和理性规律，这种利己观念是你们和一切灭亡了的统治阶级所共有的。谈到古代所有制的时候你们所能理解的，谈到封建所有制的时候你们所能理解的，一谈到资产阶级所有制你们就再也不能理解了。&lt;/p&gt;
&lt;p&gt;消灭家庭！连极端的激进派也对共产党人的这种可耻的意图表示愤慨。&lt;/p&gt;
&lt;p&gt;现代的、资产阶级的家庭是建立在什么基础上的呢？是建立在资本上面，建立在私人发财上面的。这种家庭只是在资产阶级那里才以充分发展的形式存在着，而无产者的被迫独居和公开的卖淫则是它的补充。&lt;/p&gt;
&lt;p&gt;资产者的家庭自然会随着它的这种补充的消失而消失，两者都要随着资本的消失而消失。&lt;/p&gt;
&lt;p&gt;你们是责备我们要消灭父母对子女的剥削吗？我们承认这种罪状。&lt;/p&gt;
&lt;p&gt;但是，你们说，我们用社会教育代替家庭教育，就是要消灭人们最亲密的关系。&lt;/p&gt;
&lt;p&gt;而你们的教育不也是由社会决定的吗？不也是由你们进行教育时所处的那种社会关系决定的吗？不也是由社会通过学校等等进行的直接的或间接的干涉决定的吗？共产党人并没有发明社会对教育的作用；他们仅仅是要改变这种作用的性质，要使教育摆脱统治阶级的影响。&lt;/p&gt;
&lt;p&gt;无产者的一切家庭联系越是由于大工业的发展而被破坏，他们的子女越是由于这种发展而被变成单纯的商品和劳动工具，资产阶级关于家庭和教育、关于父母和子女的亲密关系的空话就越是令人作呕。&lt;/p&gt;
&lt;p&gt;但是，你们共产党人是要实行公妻制的啊。整个资产阶级异口同声地向我们这样叫喊。&lt;/p&gt;
&lt;p&gt;资产者是把自己的妻子看作单纯的生产工具的。他们听说生产工具将要公共使用，自然就不能不想到妇女也会遭到同样的命运。&lt;/p&gt;
&lt;p&gt;他们想也没有想到，问题正在于使妇女不再处于单纯生产工具的地位。&lt;/p&gt;
&lt;p&gt;其实，我们的资产者装得道貌岸然，对所谓的共产党人的正式公妻制表示惊讶，那是再可笑不过了。公妻制无需共产党人来实行，它差不多是一向就有的。&lt;/p&gt;
&lt;p&gt;我们的资产者不以他们的无产者的妻子和女儿受他们支配为满足，正式的卖淫更不必说了，他们还以互相诱奸妻子为最大的享乐。&lt;/p&gt;
&lt;p&gt;资产阶级的婚姻实际上是公妻制。人们至多只能责备共产党人，说他们想用正式的、公开的公妻制来代替伪善地掩蔽着的公妻制。其实，不言而喻，随着现在的生产关系的消灭，从这种关系中产生的公妻制，即正式的和非正式的卖淫，也就消失了。&lt;/p&gt;
&lt;p&gt;还有人责备共产党人，说他们要取消祖国，取消民族。&lt;/p&gt;
&lt;p&gt;工人没有祖国。决不能剥夺他们所没有的东西。因为无产阶级首先必须取得政治统治，上升为民族的阶级〔注：“民族的阶级”在1888年英文版中是“民族的领导阶级”。——编者注〕，把自身组织成为民族，所以它本身还是民族的，虽然完全不是资产阶级所理解的那种意思。&lt;/p&gt;
&lt;p&gt;随着资产阶级的发展，随着贸易自由的实现和世界市场的建立，随着工业生产以及与之相适应的生活条件的趋于一致，各国人民之间的民族隔绝和对立日益消失。&lt;/p&gt;
&lt;p&gt;无产阶级的统治将使它们更快地消失。联合的行动，至少是各文明国家的联合的行动，是无产阶级获得解放的首要条件之一。&lt;/p&gt;
&lt;p&gt;人对人的剥削一消灭，民族对民族的剥削就会随之消灭。&lt;/p&gt;
&lt;p&gt;民族内部的阶级对立一消失，民族之间的敌对关系就会随之消失。&lt;/p&gt;
&lt;p&gt;从宗教的、哲学的和一切意识形态的观点对共产主义提出的种种责难，都不值得详细讨论了。&lt;/p&gt;
&lt;p&gt;人们的观念、观点和概念，一句话，人们的意识，随着人们的生活条件、人们的社会关系、人们的社会存在的改变而改变，这难道需要经过深思才能了解吗？&lt;/p&gt;
&lt;p&gt;思想的历史除了证明精神生产随着物质生产的改造而改造，还证明了什么呢？任何一个时代的统治思想始终都不过是统治阶级的思想。&lt;/p&gt;
&lt;p&gt;当人们谈到使整个社会革命化的思想时，他们只是表明了一个事实：在旧社会内部已经形成了新社会的因素，旧思想的瓦解是同旧生活条件的瓦解步调一致的。&lt;/p&gt;
&lt;p&gt;当古代世界走向灭亡的时候，古代的各种宗教就被基督教战胜了。当基督教思想在18世纪被启蒙思想击败的时候，封建社会正在同当时革命的资产阶级进行殊死的斗争。信仰自由和宗教自由的思想，不过表明自由竞争在信仰领域〔注：“信仰领域”在1872、1883和1890年德文版中是“知识领域”。——编者注〕里占统治地位罢了。&lt;/p&gt;
&lt;p&gt;“但是”，有人会说，“宗教的、道德的、哲学的、政治的、法的观念等等在历史发展的进程中固然是不断改变的，而宗教、道德、哲学、政治和法在这种变化中却始终保存着。&lt;/p&gt;
&lt;p&gt;此外，还存在着一切社会状态所共有的永恒的真理，如自由、正义等等。但是共产主义要废除永恒真理，它要废除宗教、道德，而不是加以革新，所以共产主义是同至今的全部历史发展相矛盾的。”&lt;/p&gt;
&lt;p&gt;这种责难归结为什么呢？至今的一切社会的历史都是在阶级对立中运动的，而这种对立在不同的时代具有不同的形式。&lt;/p&gt;
&lt;p&gt;但是，不管阶级对立具有什么样的形式，社会上一部分人对另一部分人的剥削却是过去各个世纪所共有的事实。因此，毫不奇怪，各个世纪的社会意识，尽管形形色色、千差万别，总是在某些共同的形式中运动的，这些形式，这些意识形式，只有当阶级对立完全消失的时候才会完全消失。&lt;/p&gt;
&lt;p&gt;共产主义革命就是同传统的所有制关系实行最彻底的决裂；毫不奇怪，它在自己的发展进程中要同传统的观念实行最彻底的决裂。&lt;/p&gt;
&lt;p&gt;不过，我们还是把资产阶级对共产主义的种种责难撇开吧。&lt;/p&gt;
&lt;p&gt;前面我们已经看到，工人革命的第一步就是使无产阶级上升为统治阶级，争得民主。&lt;/p&gt;
&lt;p&gt;无产阶级将利用自己的政治统治，一步一步地夺取资产阶级的全部资本，把一切生产工具集中在国家即组织成为统治阶级的无产阶级手里，并且尽可能快地增加生产力的总量。&lt;/p&gt;
&lt;p&gt;要做到这一点，当然首先必须对所有权和资产阶级生产关系实行强制性的干涉，也就是采取这样一些措施，这些措施在经济上似乎是不够充分的和无法持续的，但是在运动进程中它们会越出本身，〔注：在1888年英文版中这里加上了“使进一步向旧的社会制度进攻成为必要”。——编者注〕而且作为变革全部生产方式的手段是必不可少的。&lt;/p&gt;
&lt;p&gt;这些措施在不同的国家里当然会是不同的。&lt;/p&gt;
&lt;p&gt;但是，最先进的国家几乎都可以采取下面的措施：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;剥夺地产，把地租用于国家支出。&lt;/li&gt;
&lt;li&gt;征收高额累进税。&lt;/li&gt;
&lt;li&gt;废除继承权。&lt;/li&gt;
&lt;li&gt;没收一切流亡分子和叛乱分子的财产。&lt;/li&gt;
&lt;li&gt;通过拥有国家资本和独享垄断权的国家银行，把信贷集中在国家手里。&lt;/li&gt;
&lt;li&gt;把全部运输业集中在国家手里。&lt;/li&gt;
&lt;li&gt;按照共同的计划增加国家工厂和生产工具，开垦荒地和改良土壤。&lt;/li&gt;
&lt;li&gt;实行普遍劳动义务制，成立产业军，特别是在农业方面。&lt;/li&gt;
&lt;li&gt;把农业和工业结合起来，促使城乡对立〔注：“对立”在1872、1883和1890年德文版中是“差别”。——编者注〕逐步消灭。〔注：在1888年英文版中这一条是：“把农业和工业结合起来；通过把人口更平均地分布于全国的办法逐步消灭城乡差别。”——编者注〕&lt;/li&gt;
&lt;li&gt;对所有儿童实行公共的和免费的教育。取消现在这种形式的儿童的工厂劳动。把教育同物质生产结合起来，等等。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当阶级差别在发展进程中已经消失而全部生产集中在联合起来的个人〔注：“联合起来的个人”在1888年英文版中是“巨大的全国联合体”。——编者注〕的手里的时候，公共权力就失去政治性质。原来意义上的政治权力，是一个阶级用以压迫另一个阶级的有组织的暴力。如果说无产阶级在反对资产阶级的斗争中一定要联合为阶级，通过革命使自己成为统治阶级，并以统治阶级的资格用暴力消灭旧的生产关系，那么它在消灭这种生产关系的同时，也就消灭了阶级对立的存在条件，消灭了阶级本身的存在条件〔注：“消灭了阶级本身的存在条件”在1872、1883和1890年德文版中是“消灭了阶级本身”。——编者注〕，从而消灭了它自己这个阶级的统治。&lt;/p&gt;
&lt;p&gt;代替那存在着阶级和阶级对立的资产阶级旧社会的，将是这样一个联合体，在那里，每个人的自由发展是一切人的自由发展的条件。&lt;/p&gt;
&lt;h2&gt;3 社会主义的和共产主义的文献&lt;/h2&gt;
&lt;h3&gt;3.1 反动的社会主义&lt;/h3&gt;
&lt;h4&gt;3.1.1 封建的社会主义&lt;/h4&gt;
&lt;p&gt;法国和英国的贵族，按照他们的历史地位所负的使命，就是写一些抨击现代资产阶级社会的作品。在法国的1830年七月革命&lt;a href=&quot;%E4%B8%83%E6%9C%88%E9%9D%A9%E5%91%BD%E5%8D%B31830%E5%B9%B47%E6%9C%88%E7%88%86%E5%8F%91%E7%9A%84%E6%B3%95%E5%9B%BD%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E9%9D%A9%E5%91%BD%E3%80%821814%E5%B9%B4%E6%8B%BF%E7%A0%B4%E4%BB%91%E7%AC%AC%E4%B8%80%E5%B8%9D%E5%9B%BD%E5%9E%AE%E5%8F%B0%E5%90%8E%EF%BC%8C%E4%BB%A3%E8%A1%A8%E5%A4%A7%E5%9C%9F%E5%9C%B0%E8%B4%B5%E6%97%8F%E5%88%A9%E7%9B%8A%E7%9A%84%E6%B3%A2%E6%97%81%E7%8E%8B%E6%9C%9D%E5%A4%8D%E8%BE%9F%EF%BC%8C%E7%AB%AD%E5%8A%9B%E6%81%A2%E5%A4%8D%E5%B0%81%E5%BB%BA%E4%B8%93%E5%88%B6%E7%BB%9F%E6%B2%BB%EF%BC%8C%E5%8E%8B%E5%88%B6%E8%B5%84%E6%9C%AC%E4%B8%BB%E4%B9%89%E5%8F%91%E5%B1%95%EF%BC%8C%E9%99%90%E5%88%B6%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%E5%92%8C%E6%96%B0%E9%97%BB%E5%87%BA%E7%89%88%E8%87%AA%E7%94%B1%EF%BC%8C%E5%8A%A0%E5%89%A7%E4%BA%86%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E5%90%8C%E8%B4%B5%E6%97%8F%E5%9C%B0%E4%B8%BB%E7%9A%84%E7%9F%9B%E7%9B%BE%EF%BC%8C%E6%BF%80%E8%B5%B7%E4%BA%86%E4%BA%BA%E6%B0%91%E7%9A%84%E5%8F%8D%E6%8A%97%E3%80%821830%E5%B9%B47%E6%9C%8827-29%E6%97%A5%E5%B7%B4%E9%BB%8E%E7%88%86%E5%8F%91%E9%9D%A9%E5%91%BD%EF%BC%8C%E6%8E%A8%E7%BF%BB%E4%BA%86%E6%B3%A2%E6%97%81%E7%8E%8B%E6%9C%9D%E3%80%82%E9%87%91%E8%9E%8D%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E6%94%AB%E5%8F%96%E4%BA%86%E9%9D%A9%E5%91%BD%E6%9E%9C%E5%AE%9E%EF%BC%8C%E5%BB%BA%E7%AB%8B%E4%BA%86%E4%BB%A5%E5%A5%A5%E5%B0%94%E8%89%AF%E5%85%AC%E7%88%B5%E8%B7%AF%E6%98%93-%E8%8F%B2%E5%8A%9B%E6%B5%A6%E4%B8%BA%E9%A6%96%E7%9A%84%E4%BB%A3%E8%A1%A8%E9%87%91%E8%9E%8D%E8%B4%B5%E6%97%8F%E5%92%8C%E5%A4%A7%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E5%88%A9%E7%9B%8A%E7%9A%84%E2%80%9C%E4%B8%83%E6%9C%88%E7%8E%8B%E6%9C%9D%E2%80%9D%E3%80%82%E2%80%94%E2%80%9452%E3%80%82&quot;&gt;^41&lt;/a&gt;和英国的改革运动&lt;a href=&quot;%E6%94%B9%E9%9D%A9%E8%BF%90%E5%8A%A8%E6%8C%87%E8%8B%B1%E5%9B%BD%E5%B7%A5%E4%B8%9A%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E5%8F%91%E5%8A%A8%E7%9A%84%E8%AE%AE%E4%BC%9A%E6%94%B9%E9%9D%A9%E8%BF%90%E5%8A%A8%E3%80%82%E8%8B%B1%E5%9B%BD%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E4%B8%BA%E4%BA%86%E5%90%8C%E5%9C%9F%E5%9C%B0%E8%B4%B5%E6%97%8F%E4%BA%89%E5%A4%BA%E6%94%BF%E6%B2%BB%E6%9D%83%E5%8A%9B%EF%BC%8C%E5%9C%A819%E4%B8%96%E7%BA%AA20%E5%B9%B4%E4%BB%A3%E6%9C%AB%E6%8F%90%E5%87%BA%E4%BA%86%E6%94%B9%E9%9D%A9%E8%AE%AE%E4%BC%9A%E9%80%89%E4%B8%BE%E5%88%B6%E5%BA%A6%E7%9A%84%E8%A6%81%E6%B1%82%EF%BC%8C%E7%BB%8F%E8%BF%87%E5%87%A0%E5%B9%B4%E6%96%97%E4%BA%89%EF%BC%8C%E5%9C%A8%E4%BA%BA%E6%B0%91%E7%BE%A4%E4%BC%97%E7%9A%84%E6%94%AF%E6%8C%81%E4%B8%8B%EF%BC%8C%E8%BF%AB%E4%BD%BF%E8%8B%B1%E5%9B%BD%E8%AE%AE%E4%BC%9A%E4%BA%8E1832%E5%B9%B46%E6%9C%88%E9%80%9A%E8%BF%87%E4%BA%86%E9%80%89%E4%B8%BE%E6%B3%95%E6%94%B9%E9%9D%A9%E6%B3%95%E6%A1%88%E3%80%82%E8%BF%99%E6%AC%A1%E6%94%B9%E9%9D%A9%E5%89%8A%E5%BC%B1%E4%BA%86%E5%9C%9F%E5%9C%B0%E8%B4%B5%E6%97%8F%E5%92%8C%E9%87%91%E8%9E%8D%E8%B4%B5%E6%97%8F%E7%9A%84%E6%94%BF%E6%B2%BB%E5%9E%84%E6%96%AD%EF%BC%8C%E5%8A%A0%E5%BC%BA%E4%BA%86%E5%B7%A5%E4%B8%9A%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E5%9C%A8%E8%AE%AE%E4%BC%9A%E4%B8%AD%E7%9A%84%E5%9C%B0%E4%BD%8D%E3%80%82%E4%BD%86%E6%98%AF%EF%BC%8C%E7%94%B1%E4%BA%8E%E8%B4%A2%E4%BA%A7%E8%B5%84%E6%A0%BC%E7%9A%84%E9%99%90%E5%88%B6%EF%BC%8C%E4%B8%BA%E4%BA%89%E5%8F%96%E9%80%89%E4%B8%BE%E5%88%B6%E5%BA%A6%E6%94%B9%E9%9D%A9%E8%80%8C%E6%96%97%E4%BA%89%E7%9A%84%E4%B8%BB%E5%8A%9B%E5%86%9B%E5%B7%A5%E4%BA%BA%E5%92%8C%E6%89%8B%E5%B7%A5%E4%B8%9A%E8%80%85%E4%BB%8D%E6%9C%AA%E8%8E%B7%E5%BE%97%E9%80%89%E4%B8%BE%E6%9D%83%E3%80%82%E2%80%94%E2%80%9452%E3%80%82&quot;&gt;^42&lt;/a&gt;中，他们再一次被可恨的暴发户打败了。从此就再谈不上严重的政治斗争了。他们还能进行的只是文字斗争。但是，即使在文字方面也不可能重弹复辟时期〔注：恩格斯在1888年英文版上加了一个注：“这里所指的不是1660-1689年英国的复辟时期，而是1814-1830年法国的复辟时期。”——编者注〕的老调了。为了激起同情，贵族们不得不装模做样，似乎他们已经不关心自身的利益，只是为了被剥削的工人阶级的利益才去写对资产阶级的控诉书。他们用来泄愤的手段是：唱唱诅咒他们的新统治者的歌，并向他叽叽咕咕地说一些或多或少凶险的预言。&lt;/p&gt;
&lt;p&gt;这样就产生了封建的社会主义，半是挽歌，半是谤文，半是过去的回音，半是未来的恫吓；它有时也能用辛辣、俏皮而尖刻的评论刺中资产阶级的心，但是它由于完全不能理解现代历史的进程而总是令人感到可笑。&lt;/p&gt;
&lt;p&gt;为了拉拢人民，贵族们把无产阶级的乞食袋当做旗帜来挥舞。但是，每当人民跟着他们走的时候，都发现他们的臀部带有旧的封建纹章，于是就哈哈大笑，一哄而散。&lt;/p&gt;
&lt;p&gt;一部分法国正统派&lt;a href=&quot;%E6%AD%A3%E7%BB%9F%E6%B4%BE%E6%98%AF%E6%B3%95%E5%9B%BD%E4%BB%A3%E8%A1%A8%E5%A4%A7%E5%9C%9F%E5%9C%B0%E8%B4%B5%E6%97%8F%E5%92%8C%E9%AB%98%E7%BA%A7%E5%83%A7%E4%BE%A3%E5%88%A9%E7%9B%8A%E7%9A%84%E6%B3%A2%E6%97%81%E7%8E%8B%E6%9C%9D%EF%BC%881589-1792%E5%B9%B4%E5%92%8C1814-1830%E5%B9%B4%EF%BC%89%E9%95%BF%E7%B3%BB%E7%9A%84%E6%8B%A5%E6%8A%A4%E8%80%85%E3%80%821830%E5%B9%B4%E6%B3%A2%E6%97%81%E7%8E%8B%E6%9C%9D%E7%AC%AC%E4%BA%8C%E6%AC%A1%E8%A2%AB%E6%8E%A8%E7%BF%BB%E4%BB%A5%E5%90%8E%EF%BC%8C%E6%AD%A3%E7%BB%9F%E6%B4%BE%E7%BB%93%E6%88%90%E6%94%BF%E5%85%9A%E3%80%82%E5%9C%A8%E5%8F%8D%E5%AF%B9%E4%BB%A5%E9%87%91%E8%9E%8D%E8%B4%B5%E6%97%8F%E5%92%8C%E5%A4%A7%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E4%B8%BA%E6%94%AF%E6%9F%B1%E7%9A%84%E5%BD%93%E6%94%BF%E7%9A%84%E5%A5%A5%E5%B0%94%E8%89%AF%E7%8E%8B%E6%9C%9D%E6%97%B6%EF%BC%8C%E4%B8%80%E9%83%A8%E5%88%86%E6%AD%A3%E7%BB%9F%E6%B4%BE%E5%B8%B8%E5%B8%B8%E6%8A%93%E4%BD%8F%E7%A4%BE%E4%BC%9A%E9%97%AE%E9%A2%98%E8%BF%9B%E8%A1%8C%E8%9B%8A%E6%83%91%E5%AE%A3%E4%BC%A0%EF%BC%8C%E6%A0%87%E6%A6%9C%E8%87%AA%E5%B7%B1%E7%BB%B4%E6%8A%A4%E5%8A%B3%E5%8A%A8%E8%80%85%E7%9A%84%E5%88%A9%E7%9B%8A%EF%BC%8C%E4%BD%BF%E4%BB%96%E4%BB%AC%E4%B8%8D%E5%8F%97%E8%B5%84%E4%BA%A7%E8%80%85%E7%9A%84%E5%89%A5%E5%89%8A%E3%80%82%E2%80%94%E2%80%9453%E3%80%82&quot;&gt;^43&lt;/a&gt;和“青年英国”&lt;a href=&quot;%E2%80%9C%E9%9D%92%E5%B9%B4%E8%8B%B1%E5%9B%BD%E2%80%9D%E6%98%AF%E7%94%B1%E8%8B%B1%E5%9B%BD%E6%89%98%E5%88%A9%E5%85%9A%E4%B8%AD%E7%9A%84%E4%B8%80%E4%BA%9B%E6%94%BF%E6%B2%BB%E6%B4%BB%E5%8A%A8%E5%AE%B6%E5%92%8C%E8%91%97%E4%BD%9C%E5%AE%B6%E7%BB%84%E6%88%90%E7%9A%84%E9%9B%86%E5%9B%A2%EF%BC%8C%E6%88%90%E7%AB%8B%E4%BA%8E19%E4%B8%96%E7%BA%AA40%E5%B9%B4%E4%BB%A3%E5%88%9D%EF%BC%8C%E4%B8%BB%E8%A6%81%E4%BB%A3%E8%A1%A8%E4%BA%BA%E7%89%A9%E6%98%AF%E6%9C%AC%C2%B7%E8%BF%AA%E6%96%AF%E7%B4%AF%E9%87%8C%E5%8F%8A%E6%89%98%C2%B7%E5%8D%A1%E8%8E%B1%E5%B0%94%E7%AD%89%E3%80%82%E4%BB%96%E4%BB%AC%E7%BB%B4%E6%8A%A4%E5%9C%9F%E5%9C%B0%E8%B4%B5%E6%97%8F%E7%9A%84%E5%88%A9%E7%9B%8A%EF%BC%8C%E5%AF%B9%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E6%97%A5%E7%9B%8A%E5%A2%9E%E9%95%BF%E7%9A%84%E7%BB%8F%E6%B5%8E%E5%8A%BF%E5%8A%9B%E5%92%8C%E6%94%BF%E6%B2%BB%E5%8A%BF%E5%8A%9B%E4%B8%8D%E6%BB%A1%EF%BC%8C%E4%BC%81%E5%9B%BE%E7%94%A8%E8%9B%8A%E6%83%91%E6%89%8B%E6%AE%B5%E6%8A%8A%E5%B7%A5%E4%BA%BA%E9%98%B6%E7%BA%A7%E7%BD%AE%E4%BA%8E%E8%87%AA%E5%B7%B1%E7%9A%84%E5%BD%B1%E5%93%8D%E4%B9%8B%E4%B8%8B%EF%BC%8C%E5%B9%B6%E5%88%A9%E7%94%A8%E4%BB%96%E4%BB%AC%E5%8F%8D%E5%AF%B9%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E3%80%82%E2%80%94%E2%80%9453%E3%80%82&quot;&gt;^44&lt;/a&gt;，都演过这出戏。&lt;/p&gt;
&lt;p&gt;封建主说，他们的剥削方式和资产阶级的剥削不同，那他们只是忘记了，他们是在完全不同的、目前已经过时的情况和条件下进行剥削的。他们说，在他们的统治下并没有出现过现代的无产阶级，那他们只是忘记了，现代的资产阶级正是他们的社会制度的必然产物。&lt;/p&gt;
&lt;p&gt;不过，他们毫不掩饰自己的批评的反动性质，他们控告资产阶级的主要罪状正是在于：在资产阶级的统治下有一个将把整个旧社会制度炸毁的阶级发展起来。&lt;/p&gt;
&lt;p&gt;他们责备资产阶级，与其说是因为它产生了无产阶级，不如说是因为它产生了革命的无产阶级。&lt;/p&gt;
&lt;p&gt;因此，在政治实践中，他们参与对工人阶级采取的一切暴力措施，在日常生活中，他们违背自己的那一套冠冕堂皇的言辞，屈尊拾取金苹果〔注：“金苹果”在1888年英文版中是“工业树上掉下来的金苹果”。——编者注〕，不顾信义、仁爱和名誉去做羊毛、甜菜和烧酒的买卖。〔注：恩格斯在1888年英文版上加了一个注：“这里主要是指德国，那里的土地贵族和容克通过管事自行经营自己的很大一部分土地，他们还开设大规模的甜菜糖厂和土豆酒厂。较富有的英国贵族还没有落到这种地步；但是，他们也知道怎样让人家用他们的名义创办颇为可疑的股份公司，以补偿地租的下降。”——编者注〕&lt;/p&gt;
&lt;p&gt;正如僧侣总是同封建主携手同行一样，僧侣的社会主义也总是同封建的社会主义携手同行的。&lt;/p&gt;
&lt;p&gt;要给基督教禁欲主义涂上一层社会主义的色彩，是再容易不过了。基督教不是也激烈反对私有制，反对婚姻，反对国家吗？它不是提倡用行善和求乞、独身和禁欲、修道和礼拜来代替这一切吗？基督教的社会主义，只不过是僧侣用来使贵族的怨愤神圣化的圣水罢了。&lt;/p&gt;
&lt;h4&gt;3.1.2 小资产阶级的社会主义&lt;/h4&gt;
&lt;p&gt;封建贵族并不是被资产阶级所推翻的、其生活条件在现代资产阶级社会里日益恶化和消失的唯一阶级。中世纪的城关市民和小农等级是现代资产阶级的前身。在工商业不很发达的国家里，这个阶级还在新兴的资产阶级身旁勉强生存着。&lt;/p&gt;
&lt;p&gt;在现代文明已经发展的国家里，形成了一个新的小资产阶级，它摇摆于无产阶级和资产阶级之间，并且作为资产阶级社会的补充部分不断地重新组成。但是，这一阶级的成员经常被竞争拋到无产阶级队伍里去，而且，随着大工业的发展，他们甚至觉察到，他们很快就会完全失去他们作为现代社会中一个独立部分的地位，在商业、工场手工业和农业中很快就会被监工和雇员所代替。&lt;/p&gt;
&lt;p&gt;在农民阶级远远超过人口半数的国家，例如在法国，那些站在无产阶级方面反对资产阶级的著作家，自然是用小资产阶级和小农的尺度去批判资产阶级制度的，是从小资产阶级的立场出发替工人说话的。这样就形成了小资产阶级的社会主义。西斯蒙第不仅对法国而且对英国来说都是这类著作家的首领。&lt;/p&gt;
&lt;p&gt;这种社会主义非常透彻地分析了现代生产关系中的矛盾。它揭穿了经济学家的虚伪的粉饰。它确凿地证明了机器和分工的破坏作用、资本和地产的积聚、生产过剩、危机、小资产者和小农的必然没落、无产阶级的贫困、生产的无政府状态、财富分配的极不平均、各民族之间的毁灭性的工业战争，以及旧风尚、旧家庭关系和旧民族性的解体。&lt;/p&gt;
&lt;p&gt;但是，这种社会主义按其实际内容来说，或者是企图恢复旧的生产资料和交换手段，从而恢复旧的所有制关系和旧的社会，或者是企图重新把现代的生产资料和交换手段硬塞到已被它们突破而且必然被突破的旧的所有制关系的框子里去。它在这两种场合都是反动的，同时又是空想的。&lt;/p&gt;
&lt;p&gt;工场手工业中的行会制度，农业中的宗法经济。这就是它的结论。&lt;/p&gt;
&lt;p&gt;这一思潮在它以后的发展中变成了一种怯懦的悲叹。〔注：在1888年英文版中这一句是：“最后，当顽强的历史事实把自我欺骗的一切醉梦驱散的时候，这种形式的社会主义就化为一种可怜的哀愁。”——编者注〕&lt;/p&gt;
&lt;h4&gt;3.1.3 德国的或“真正的”社会主义&lt;/h4&gt;
&lt;p&gt;法国的社会主义和共产主义的文献是在居于统治地位的资产阶级的压迫下产生的，并且是同这种统治作斗争的文字表现，这种文献被搬到德国的时候，那里的资产阶级才刚刚开始进行反对封建专制制度的斗争。&lt;/p&gt;
&lt;p&gt;德国的哲学家、半哲学家和美文学家，贪婪地抓住了这种文献，不过他们忘记了：在这种著作从法国搬到德国的时候，法国的生活条件却没有同时搬过去。在德国的条件下，法国的文献完全失去了直接实践的意义，而只具有纯粹文献的形式。它必然表现为关于真正的社会、关于实现人的本质的无谓思辨。这样，第一次法国革命的要求，在18世纪的德国哲学家看来，不过是一般“实践理性”的要求，而革命的法国资产阶级的意志的表现，在他们心目中就是纯粹意志、本来的意志、真正人的意志的规律。&lt;/p&gt;
&lt;p&gt;德国著作家的唯一工作，就是把新的法国的思想同他们的旧的哲学信仰调和起来，或者毋宁说，就是从他们的哲学观点出发去掌握法国的思想。&lt;/p&gt;
&lt;p&gt;这种掌握，就像掌握外国语一样，是通过翻译的。&lt;/p&gt;
&lt;p&gt;大家知道，僧侣们曾经在古代异教经典的手抄本上面写上荒诞的天主教圣徒传。德国著作家对世俗的法国文献采取相反的做法。他们在法国的原著下面写上自己的哲学胡说。例如，他们在法国人对货币关系的批判下面写上“人的本质的外化”，在法国人对资产阶级国家的批判下面写上所谓“抽象普遍物的统治的扬弃”，等等。&lt;/p&gt;
&lt;p&gt;这种在法国人的论述下面塞进自己哲学词句的做法，他们称之为“行动的哲学”、“真正的社会主义”、“德国的社会主义科学”、“社会主义的哲学论证”，等等。&lt;/p&gt;
&lt;p&gt;法国的社会主义和共产主义的文献就这样被完全阉割了。既然这种文献在德国人手里已不再表现一个阶级反对另一个阶级的斗争，于是德国人就认为：他们克服了“法国人的片面性”，他们不代表真实的要求，而代表真理的要求，不代表无产者的利益，而代表人的本质的利益，即一般人的利益，这种人不属于任何阶级，根本不存在于现实界，而只存在于云雾弥漫的哲学幻想的太空。&lt;/p&gt;
&lt;p&gt;这种曾经郑重其事地看待自己那一套拙劣的小学生作业并且大言不惭地加以吹嘘的德国社会主义，现在渐渐失去了它的自炫博学的天真。&lt;/p&gt;
&lt;p&gt;德国的特别是普鲁士的资产阶级反对封建主和专制王朝的斗争，一句话，自由主义运动，越来越严重了。&lt;/p&gt;
&lt;p&gt;于是，“真正的”社会主义就得到了一个好机会，把社会主义的要求同政治运动对立起来，用诅咒异端邪说的传统办法诅咒自由主义，诅咒代议制国家，诅咒资产阶级的竞争、资产阶级的新闻出版自由、资产阶级的法、资产阶级的自由和平等，并且向人民群众大肆宣扬，说什么在这个资产阶级运动中，人民群众非但一无所得，反而会失去一切。德国的社会主义恰好忘记了，法国的批判（德国的社会主义是这种批判的可怜的回声）是以现代的资产阶级社会以及相应的物质生活条件和相当的政治制度为前提的，而这一切前提当时在德国正是尚待争取的。&lt;/p&gt;
&lt;p&gt;这种社会主义成了德意志各邦专制政府及其随从——僧侣、教员、容克和官僚求之不得的、吓唬来势汹汹的资产阶级的稻草人。&lt;/p&gt;
&lt;p&gt;这种社会主义是这些政府用来镇压德国工人起义的毒辣的皮鞭和枪弹的甜蜜的补充。&lt;/p&gt;
&lt;p&gt;既然“真正的”社会主义就这样成了这些政府对付德国资产阶级的武器，那么它也就直接代表了一种反动的利益，即德国小市民的利益。在德国，16世纪遗留下来的、从那时起经常以不同形式重新出现的小资产阶级，是现存制度的真实的社会基础。&lt;/p&gt;
&lt;p&gt;保存这个小资产阶级，就是保存德国的现存制度。这个阶级胆战心惊地从资产阶级的工业统治和政治统治那里等候着无可幸免的灭亡，这一方面是由于资本的积聚，另一方面是由于革命无产阶级的兴起。在它看来，“真正的”社会主义能起一箭双雕的作用。“真正的”社会主义像瘟疫一样流行起来了。&lt;/p&gt;
&lt;p&gt;德国的社会主义者给自己的那几条干瘪的“永恒真理”披上一件用思辨的蛛丝织成的、绣满华丽辞藻的花朵和浸透甜情蜜意的甘露的外衣，这件光彩夺目的外衣只是使他们的货物在这些顾客中间增加销路罢了。&lt;/p&gt;
&lt;p&gt;同时，德国的社会主义也越来越认识到自己的使命就是充当这种小市民的夸夸其谈的代言人。&lt;/p&gt;
&lt;p&gt;它宣布德意志民族是模范的民族，德国小市民是模范的人。它给这些小市民的每一种丑行都加上奥秘的、高尚的、社会主义的意义，使之变成完全相反的东西。它发展到最后，就直接反对共产主义的“野蛮破坏的”倾向，并且宣布自己是不偏不倚地超乎任何阶级斗争之上的。现今在德国流行的一切所谓社会主义和共产主义的著作，除了极少数的例外，都属于这一类卑鄙龌龊的、令人委靡的文献。〔注：恩格斯在1890年德文版上加了一个注：“1848年的革命风暴已经把这个可恶的流派一扫而光，并且使这一流派的代表人物再也没有兴趣搞社会主义了。这一流派的主要代表和典型人物是卡尔·格律恩先生。”——编者注〕&lt;/p&gt;
&lt;h3&gt;3.2 保守的或资产阶级的社会主义&lt;/h3&gt;
&lt;p&gt;资产阶级中的一部分人想要消除社会的弊病，以便保障资产阶级社会的生存。&lt;/p&gt;
&lt;p&gt;这一部分人包括：经济学家、博爱主义者、人道主义者、劳动阶级状况改善派、慈善事业组织者、动物保护协会会员、戒酒协会发起人以及形形色色的小改良家。这种资产阶级的社会主义甚至被制成一些完整的体系。&lt;/p&gt;
&lt;p&gt;我们可以举蒲鲁东的《贫困的哲学》〔注：皮·约·蒲鲁东《经济矛盾的体系，或贫困的哲学》1846年巴黎版第1-2卷。——编者注〕作为例子。&lt;/p&gt;
&lt;p&gt;社会主义的资产者愿意要现代社会的生存条件，但是不要由这些条件必然产生的斗争和危险。他们愿意要现存的社会，但是不要那些使这个社会革命化和瓦解的因素。他们愿意要资产阶级，但是不要无产阶级。在资产阶级看来，它所统治的世界自然是最美好的世界。资产阶级的社会主义把这种安慰人心的观念制成半套或整套的体系。它要求无产阶级实现它的体系，走进新的耶路撒冷，其实它不过是要求无产阶级停留在现今的社会里，但是要拋弃他们关于这个社会的可恶的观念。&lt;/p&gt;
&lt;p&gt;这种社会主义的另一种不够系统、但是比较实际的形式，力图使工人阶级厌弃一切革命运动，硬说能给工人阶级带来好处的并不是这样或那样的政治改革，而仅仅是物质生活条件即经济关系的改变。但是，这种社会主义所理解的物质生活条件的改变，绝对不是只有通过革命的途径才能实现的资产阶级生产关系的废除，而是一些在这种生产关系的基础上实行的行政上的改良，因而丝毫不会改变资本和雇佣劳动的关系，至多只能减少资产阶级的统治费用和简化它的财政管理。&lt;/p&gt;
&lt;p&gt;资产阶级的社会主义只有在它变成纯粹的演说辞令的时候，才获得自己的适当的表现。&lt;/p&gt;
&lt;p&gt;自由贸易！为了工人阶级的利益；保护关税！为了工人阶级的利益；单人牢房！为了工人阶级的利益。这才是资产阶级的社会主义唯一真实的结论。&lt;/p&gt;
&lt;p&gt;资产阶级的社会主义就是这样一个论断：资产者之为资产者，是为了工人阶级的利益。&lt;/p&gt;
&lt;h3&gt;3.3 批判的空想的社会主义和共产主义&lt;/h3&gt;
&lt;p&gt;在这里，我们不谈在现代一切大革命中表达过无产阶级要求的文献（巴贝夫等人的著作）。&lt;/p&gt;
&lt;p&gt;无产阶级在普遍激动的时代、在推翻封建社会的时期直接实现自己阶级利益的最初尝试，都不可避免地遭到了失败，这是由于当时无产阶级本身还不够发展，由于无产阶级解放的物质条件还没有具备，这些条件只是资产阶级时代的产物。随着这些早期的无产阶级运动而出现的革命文献，就其内容来说必然是反动的。这种文献倡导普遍的禁欲主义和粗陋的平均主义。&lt;/p&gt;
&lt;p&gt;本来意义的社会主义和共产主义的体系，圣西门、傅立叶、欧文等人的体系，是在无产阶级和资产阶级之间的斗争还不发展的最初时期出现的。关于这个时期，我们在前面已经叙述过了（见《资产阶级和无产阶级》〔注：指《共产党宣言》第1章《资产者和无产者》。——编者注〕）。&lt;/p&gt;
&lt;p&gt;诚然，这些体系的发明家看到了阶级的对立，以及占统治地位的社会本身中的瓦解因素的作用。但是，他们看不到无产阶级方面的任何历史主动性，看不到它所特有的任何政治运动。&lt;/p&gt;
&lt;p&gt;由于阶级对立的发展是同工业的发展步调一致的，所以这些发明家也不可能看到无产阶级解放的物质条件，于是他们就去探求某种社会科学、社会规律，以便创造这些条件。&lt;/p&gt;
&lt;p&gt;社会的活动要由他们个人的发明活动来代替，解放的历史条件要由幻想的条件来代替，无产阶级的逐步组织成为阶级要由一种特意设计出来的社会组织来代替。在他们看来，今后的世界历史不过是宣传和实施他们的社会计划。&lt;/p&gt;
&lt;p&gt;诚然，他们也意识到，他们的计划主要是代表工人阶级这一受苦最深的阶级的利益。在他们的心目中，无产阶级只是一个受苦最深的阶级。&lt;/p&gt;
&lt;p&gt;但是，由于阶级斗争不发展，由于他们本身的生活状况，他们就以为自己是高高超乎这种阶级对立之上的。他们要改善社会一切成员的生活状况，甚至生活最优裕的成员也包括在内。因此，他们总是不加区别地向整个社会呼吁，而且主要是向统治阶级呼吁。他们以为，人们只要理解他们的体系，就会承认这种体系是最美好的社会的最美好的计划。&lt;/p&gt;
&lt;p&gt;因此，他们拒绝一切政治行动，特别是一切革命行动；他们想通过和平的途径达到自己的目的，并且企图通过一些小型的、当然不会成功的试验，通过示范的力量来为新的社会福音开辟道路。&lt;/p&gt;
&lt;p&gt;这种对未来社会的幻想的描绘，在无产阶级还很不发展，因而对本身的地位的认识还基于幻想的时候，是同无产阶级对社会普遍改造的最初的本能的渴望相适应的。〔注：这段话在1872、1883和1890年德文版中是：“这种对未来社会的幻想的描绘，是在无产阶级还很不发展，因而对本身的地位的认识还基于幻想的时候，从无产阶级对社会普遍改造的最初的本能的渴望中产生的。”——编者注〕&lt;/p&gt;
&lt;p&gt;但是，这些社会主义和共产主义的著作也含有批判的成分。这些著作抨击现存社会的全部基础。因此，它们提供了启发工人觉悟的极为宝贵的材料。它们关于未来社会的积极的主张，例如消灭城乡对立〔注：“城乡对立”在1888年英文版中是“城乡差别”。——编者注〕、消灭家庭、消灭私人营利、消灭雇佣劳动、提倡社会和谐、把国家变成纯粹的生产管理机构——所有这些主张都只是表明要消灭阶级对立，而这种阶级对立在当时刚刚开始发展，它们所知道的只是这种对立的早期的、不明显的、不确定的形式。因此，这些主张本身还带有纯粹空想的性质。&lt;/p&gt;
&lt;p&gt;批判的空想的社会主义和共产主义的意义，是同历史的发展成反比的。阶级斗争越发展和越具有确定的形式，这种超乎阶级斗争的幻想，这种反对阶级斗争的幻想，就越失去任何实践意义和任何理论根据。所以，虽然这些体系的创始人在许多方面是革命的，但是他们的信徒总是组成一些反动的宗派。这些信徒无视无产阶级的历史进展，还是死守着老师们的旧观点。因此，他们一贯企图削弱阶级斗争，调和对立。他们还总是梦想用试验的办法来实现自己的社会空想，创办单个的法伦斯泰尔，建立国内移民区，创立小伊加利亚〔注：恩格斯在1888年英文版上加了一个注：“法伦斯秦尔是沙尔·傅立叶所设计的社会主义移民区；伊加利亚是卡贝给自己的理想国和后来他在美洲创立的共产主义移民区所起的名称。”恩格斯在1890年德文版上加了一个注：“国内移民区是欧文给他的共产主义的模范社会所起的名称。法伦斯泰尔是傅立叶所设计的社会宫的名称。伊加利亚是卡贝所描绘的那种共产主义制度的乌托邦幻想国。”——编者注〕，即袖珍版的新耶路撒冷。而为了建造这一切空中楼阁，他们就不得不呼吁资产阶级发善心和慷慨解囊。他们逐渐地堕落到上述反动的或保守的社会主义者的一伙中去了，所不同的只是他们更加系统地卖弄学问，狂热地迷信自己那一套社会科学的奇功异效。&lt;/p&gt;
&lt;p&gt;因此，他们激烈地反对工人的一切政治运动，认为这种运动只是由于盲目地不相信新福音才发生的。&lt;/p&gt;
&lt;p&gt;在英国，有欧文派&lt;a href=&quot;%E6%AC%A7%E6%96%87%E6%B4%BE%E6%8C%87%E8%8B%B1%E5%9B%BD%E7%A9%BA%E6%83%B3%E7%A4%BE%E4%BC%9A%E4%B8%BB%E4%B9%89%E8%80%85%E7%BD%97%C2%B7%E6%AC%A7%E6%96%87%E7%9A%84%E6%8B%A5%E6%8A%A4%E8%80%85%E3%80%82%E6%AC%A7%E6%96%87%E8%AE%A4%E4%B8%BA%EF%BC%8C%E4%BA%BA%E6%98%AF%E7%8E%AF%E5%A2%83%E7%9A%84%E4%BA%A7%E7%89%A9%EF%BC%8C%E5%8F%AA%E6%9C%89%E5%AE%9E%E7%8E%B0%E7%A4%BE%E4%BC%9A%E4%B8%BB%E4%B9%89%E6%89%8D%E8%83%BD%E5%85%8B%E6%9C%8D%E7%A4%BE%E4%BC%9A%E7%9A%84%E4%B8%80%E5%88%87%E7%BD%AA%E6%81%B6%E3%80%82%E4%BB%96%E6%9B%BE%E5%9C%A8%E7%BE%8E%E5%9B%BD%E8%AF%95%E5%8A%9E%E5%85%B1%E4%BA%A7%E4%B8%BB%E4%B9%89%E7%A7%BB%E6%B0%91%E5%8C%BA%EF%BC%8C%E5%AE%9E%E8%A1%8C%E9%9B%86%E4%BD%93%E5%8A%B3%E5%8A%A8%E5%92%8C%E7%94%9F%E4%BA%A7%E8%B5%84%E6%96%99%E5%85%AC%E6%9C%89%EF%BC%8C%E6%9C%80%E5%90%8E%E5%AE%A3%E5%91%8A%E5%A4%B1%E8%B4%A5%E3%80%82%E6%AC%A7%E6%96%87%E5%8F%8D%E5%AF%B9%E5%AE%AA%E7%AB%A0%E8%BF%90%E5%8A%A8%EF%BC%8C%E4%B8%8D%E4%B8%BB%E5%BC%A0%E5%B7%A5%E4%BA%BA%E5%BC%80%E5%B1%95%E6%94%BF%E6%B2%BB%E6%96%97%E4%BA%89%E3%80%82%E8%AE%A4%E4%B8%BA%E9%9D%A0%E7%9F%A5%E8%AF%86%E7%9A%84%E4%BC%A0%E6%92%AD%E5%8F%AF%E4%BB%A5%E6%B6%88%E9%99%A4%E7%A4%BE%E4%BC%9A%E5%BC%8A%E7%97%85%EF%BC%8C%E8%A7%A3%E5%86%B3%E7%A4%BE%E4%BC%9A%E7%9F%9B%E7%9B%BE%EF%BC%8C%E5%B9%B6%E6%8A%8A%E5%B8%8C%E6%9C%9B%E5%AF%84%E6%89%98%E5%9C%A8%E7%BB%9F%E6%B2%BB%E8%80%85%E8%BA%AB%E4%B8%8A%E3%80%82%E2%80%94%E2%80%941%E3%80%8119%E3%80%8163%E3%80%82&quot;&gt;^24&lt;/a&gt;反对宪章派&lt;a href=&quot;%E5%AE%AA%E7%AB%A0%E6%B4%BE%E6%8C%87%E5%AE%AA%E7%AB%A0%E8%BF%90%E5%8A%A8%E7%9A%84%E5%8F%82%E5%8A%A0%E8%80%85%E3%80%82%E5%AE%AA%E7%AB%A0%E8%BF%90%E5%8A%A8%E6%98%AF19%E4%B8%96%E7%BA%AA30-50%E5%B9%B4%E4%BB%A3%E4%B8%AD%E6%9C%9F%E8%8B%B1%E5%9B%BD%E5%B7%A5%E4%BA%BA%E7%9A%84%E6%94%BF%E6%B2%BB%E8%BF%90%E5%8A%A8%EF%BC%8C%E5%85%B6%E5%8F%A3%E5%8F%B7%E6%98%AF%E4%BA%89%E5%8F%96%E5%AE%9E%E6%96%BD%E4%BA%BA%E6%B0%91%E5%AE%AA%E7%AB%A0%E3%80%82%E4%BA%BA%E6%B0%91%E5%AE%AA%E7%AB%A0%E8%A6%81%E6%B1%82%E5%AE%9E%E8%A1%8C%E6%99%AE%E9%80%89%E6%9D%83%E5%B9%B6%E4%B8%BA%E4%BF%9D%E9%9A%9C%E5%B7%A5%E4%BA%BA%E4%BA%AB%E6%9C%89%E6%AD%A4%E9%A1%B9%E6%9D%83%E5%88%A9%E8%80%8C%E5%88%9B%E9%80%A0%E7%A7%8D%E7%A7%8D%E6%9D%A1%E4%BB%B6%E3%80%82%E5%AE%AA%E7%AB%A0%E6%B4%BE%E7%9A%84%E9%A2%86%E5%AF%BC%E6%9C%BA%E6%9E%84%E6%98%AF%E2%80%9C%E5%AE%AA%E7%AB%A0%E6%B4%BE%E5%85%A8%E5%9B%BD%E5%8D%8F%E4%BC%9A%E2%80%9D%EF%BC%8C%E6%9C%BA%E5%85%B3%E6%8A%A5%E6%98%AF%E3%80%8A%E5%8C%97%E6%9E%81%E6%98%9F%E6%8A%A5%E3%80%8B%EF%BC%8C%E5%B7%A6%E7%BF%BC%E4%BB%A3%E8%A1%A8%E4%BA%BA%E7%89%A9%E6%98%AF%E4%B9%94%C2%B7%E5%93%88%E5%B0%BC%E3%80%81%E5%8E%84%C2%B7%E7%90%BC%E6%96%AF%E7%AD%89%E3%80%82%E6%81%A9%E6%A0%BC%E6%96%AF%E7%A7%B0%E5%AE%AA%E7%AB%A0%E6%B4%BE%E6%98%AF%E2%80%9C%E8%BF%91%E4%BB%A3%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%B7%A5%E4%BA%BA%E6%94%BF%E5%85%9A%E2%80%9D%EF%BC%88%E8%A7%81%E3%80%8A%E9%A9%AC%E5%85%8B%E6%80%9D%E6%81%A9%E6%A0%BC%E6%96%AF%E9%80%89%E9%9B%86%E3%80%8B%E7%AC%AC3%E7%89%88%E7%AC%AC3%E5%8D%B7%E7%AC%AC768%E9%A1%B5%EF%BC%89%E3%80%82%E6%8C%89%E7%85%A7%E5%88%97%E5%AE%81%E6%89%80%E4%B8%8B%E7%9A%84%E5%AE%9A%E4%B9%89%EF%BC%8C%E5%AE%AA%E7%AB%A0%E8%BF%90%E5%8A%A8%E6%98%AF%E2%80%9C%E4%B8%96%E7%95%8C%E4%B8%8A%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%B9%BF%E6%B3%9B%E7%9A%84%E3%80%81%E7%9C%9F%E6%AD%A3%E7%BE%A4%E4%BC%97%E6%80%A7%E7%9A%84%E3%80%81%E6%94%BF%E6%B2%BB%E4%B8%8A%E5%B7%B2%E7%BB%8F%E6%88%90%E5%9E%8B%E7%9A%84%E6%97%A0%E4%BA%A7%E9%98%B6%E7%BA%A7%E9%9D%A9%E5%91%BD%E8%BF%90%E5%8A%A8%E2%80%9D%EF%BC%88%E8%A7%81%E3%80%8A%E5%88%97%E5%AE%81%E9%80%89%E9%9B%86%E3%80%8B%E7%AC%AC3%E7%89%88%E4%BF%AE%E8%AE%A2%E7%89%88%E7%AC%AC3%E5%8D%B7%E7%AC%AC792%E9%A1%B5%EF%BC%89%E3%80%82%E5%AE%AA%E7%AB%A0%E8%BF%90%E5%8A%A8%E5%87%BA%E7%8E%B0%E8%BF%87%E4%B8%89%E6%AC%A1%E9%AB%98%E6%BD%AE%EF%BC%8C%E5%85%B6%E8%A1%B0%E8%90%BD%E7%9A%84%E5%8E%9F%E5%9B%A0%E5%9C%A8%E4%BA%8E%E8%8B%B1%E5%9B%BD%E5%B7%A5%E5%95%86%E4%B8%9A%E5%9E%84%E6%96%AD%E7%9A%84%E5%8A%A0%E5%BC%BA%EF%BC%8C%E5%B7%A5%E4%BA%BA%E9%98%B6%E7%BA%A7%E6%94%BF%E6%B2%BB%E4%B8%8A%E7%9A%84%E4%B8%8D%E6%88%90%E7%86%9F%EF%BC%8C%E4%BB%A5%E5%8F%8A%E8%8B%B1%E5%9B%BD%E8%B5%84%E4%BA%A7%E9%98%B6%E7%BA%A7%E7%94%A8%E8%B6%85%E9%A2%9D%E5%88%A9%E6%B6%A6%E6%94%B6%E4%B9%B0%E8%8B%B1%E5%9B%BD%E5%B7%A5%E4%BA%BA%E9%98%B6%E7%BA%A7%E4%B8%8A%E5%B1%82%EF%BC%88%E2%80%9C%E5%B7%A5%E4%BA%BA%E8%B4%B5%E6%97%8F%E2%80%9D%EF%BC%89%EF%BC%8C%E9%80%A0%E6%88%90%E4%BA%86%E8%8B%B1%E5%9B%BD%E5%B7%A5%E4%BA%BA%E9%98%B6%E7%BA%A7%E4%B8%AD%E6%9C%BA%E4%BC%9A%E4%B8%BB%E4%B9%89%E5%80%BE%E5%90%91%E7%9A%84%E5%A2%9E%E9%95%BF%EF%BC%8C%E5%85%B6%E8%A1%A8%E7%8E%B0%E5%B0%B1%E6%98%AF%E5%B7%A5%E8%81%94%E9%A2%86%E8%A2%96%E6%94%BE%E5%BC%83%E4%BA%86%E5%AF%B9%E5%AE%AA%E7%AB%A0%E8%BF%90%E5%8A%A8%E7%9A%84%E6%94%AF%E6%8C%81%E3%80%82%E2%80%94%E2%80%9463%E3%80%8192%E3%80%8199%E3%80%81101%E3%80%82&quot;&gt;^45&lt;/a&gt;，在法国，有傅立叶派&lt;a href=&quot;%E5%82%85%E7%AB%8B%E5%8F%B6%E6%B4%BE%E6%8C%87%E6%B3%95%E5%9B%BD%E7%A9%BA%E6%83%B3%E7%A4%BE%E4%BC%9A%E4%B8%BB%E4%B9%89%E8%80%85%E6%B2%99%C2%B7%E5%82%85%E7%AB%8B%E5%8F%B6%E7%9A%84%E6%8B%A5%E6%8A%A4%E8%80%85%E3%80%82%E5%82%85%E7%AB%8B%E5%8F%B6%E8%AE%A4%E4%B8%BA%EF%BC%8C%E7%8E%B0%E5%AD%98%E5%88%B6%E5%BA%A6%E5%BA%94%E5%BD%93%E7%94%B1%E7%90%86%E6%83%B3%E7%9A%84%E5%92%8C%E8%B0%90%E5%88%B6%E5%BA%A6%E6%89%80%E5%8F%96%E4%BB%A3%E3%80%82%E5%9C%A8%E8%BF%99%E7%A7%8D%E5%92%8C%E8%B0%90%E5%88%B6%E5%BA%A6%E4%B8%8B%EF%BC%8C%E7%A4%BE%E4%BC%9A%E7%9A%84%E5%9F%BA%E5%B1%82%E5%8D%95%E4%BD%8D%E6%98%AF%E5%B7%A5%E5%86%9C%E7%BB%93%E5%90%88%E4%B8%8E%E5%9F%8E%E4%B9%A1%E7%BB%93%E5%90%88%E7%9A%84%E7%94%9F%E4%BA%A7%E6%B6%88%E8%B4%B9%E5%8D%8F%E4%BD%9C%E7%A4%BE%E6%B3%95%E9%83%8E%E5%90%89%EF%BC%88Phalange%EF%BC%89%E3%80%82%E5%9C%A8%E6%B3%95%E9%83%8E%E5%90%89%E4%B8%AD%EF%BC%8C%E4%BA%BA%E4%BA%BA%E5%8F%82%E5%8A%A0%E5%8A%B3%E5%8A%A8%EF%BC%8C%E5%8A%B3%E5%8A%A8%E8%80%85%E5%92%8C%E8%B5%84%E6%9C%AC%E5%AE%B6%E9%83%BD%E5%8F%AF%E4%BB%A5%E5%85%A5%E8%82%A1%EF%BC%8C%E4%BA%A7%E5%93%81%E6%8C%89%E8%B5%84%E6%9C%AC%E3%80%81%E5%8A%B3%E5%8A%A8%E5%92%8C%E6%89%8D%E8%83%BD%E8%BF%9B%E8%A1%8C%E5%88%86%E9%85%8D%E3%80%82%E5%8D%8F%E4%BD%9C%E7%A4%BE%E6%88%90%E5%91%98%E5%B1%85%E4%BD%8F%E5%92%8C%E5%8A%B3%E5%8A%A8%E7%9A%84%E5%9C%BA%E6%89%80%E7%A7%B0%E5%81%9A%E6%B3%95%E4%BC%A6%E6%96%AF%E6%B3%B0%E5%B0%94%EF%BC%88Phalanst%C3%A8re%EF%BC%89%E3%80%82%E5%82%85%E7%AB%8B%E5%8F%B6%E6%B4%BE%E5%9C%A8%E6%B3%95%E5%9B%BD%E5%92%8C%E7%BE%8E%E5%9B%BD%E9%83%BD%E6%9B%BE%E8%BF%9B%E8%A1%8C%E8%BF%87%E6%B3%95%E9%83%8E%E5%90%89%E7%A7%BB%E6%B0%91%E5%8C%BA%E5%AE%9E%E9%AA%8C%EF%BC%8C%E8%BF%99%E4%BA%9B%E5%AE%9E%E9%AA%8C%E5%9D%87%E4%BB%A5%E5%A4%B1%E8%B4%A5%E5%91%8A%E7%BB%88%E3%80%82%E2%80%94%E2%80%9411%E3%80%8119%E3%80%8163%E3%80%82&quot;&gt;^25&lt;/a&gt;反对改革派[^46]。&lt;/p&gt;
&lt;h2&gt;4 共产党人对各种反对党派的态度&lt;/h2&gt;
&lt;p&gt;看过第二章之后，就可以了解共产党人同已经形成的工人政党的关系，因而也就可以了解他们同英国宪章派和北美土地改革派&lt;a href=&quot;%E5%8C%97%E7%BE%8E%E5%9C%9F%E5%9C%B0%E6%94%B9%E9%9D%A9%E6%B4%BE%E5%8D%B3%E5%85%A8%E5%9B%BD%E5%9C%9F%E5%9C%B0%E6%94%B9%E9%9D%A9%E6%B4%BE%EF%BC%8C%E5%8F%88%E7%A7%B0%E7%BE%8E%E5%9B%BD%E2%80%9C%E5%85%A8%E5%9B%BD%E6%94%B9%E9%9D%A9%E5%8D%8F%E4%BC%9A%E2%80%9D%EF%BC%8C%E6%88%90%E7%AB%8B%E4%BA%8E1845%E5%B9%B4%EF%BC%8C%E6%98%AF%E4%B8%80%E4%B8%AA%E4%BB%A5%E6%89%8B%E5%B7%A5%E4%B8%9A%E8%80%85%E5%92%8C%E5%B7%A5%E4%BA%BA%E4%B8%BA%E6%A0%B8%E5%BF%83%E7%9A%84%E6%94%BF%E6%B2%BB%E5%9B%A2%E4%BD%93%EF%BC%8C%E5%AE%97%E6%97%A8%E6%98%AF%E6%97%A0%E5%81%BF%E5%9C%B0%E5%88%86%E7%BB%99%E6%AF%8F%E4%B8%80%E4%B8%AA%E5%8A%B3%E5%8A%A8%E8%80%85%E4%B8%80%E5%9D%97%E5%9C%9F%E5%9C%B0%E3%80%8219%E4%B8%96%E7%BA%AA40%E5%B9%B4%E4%BB%A3%E5%90%8E%E5%8D%8A%E6%9C%9F%EF%BC%8C%E5%8D%8F%E4%BC%9A%E5%AE%A3%E4%BC%A0%E5%9C%9F%E5%9C%B0%E6%94%B9%E9%9D%A9%EF%BC%8C%E5%8F%8D%E5%AF%B9%E7%A7%8D%E6%A4%8D%E5%9C%BA%E5%A5%B4%E9%9A%B6%E4%B8%BB%E5%92%8C%E5%9C%9F%E5%9C%B0%E6%8A%95%E6%9C%BA%E5%88%86%E5%AD%90%EF%BC%8C%E5%B9%B6%E6%8F%90%E5%87%BA%E5%AE%9E%E8%A1%8C%E5%8D%81%E5%B0%8F%E6%97%B6%E5%B7%A5%E4%BD%9C%E5%88%B6%E3%80%81%E5%BA%9F%E9%99%A4%E5%A5%B4%E9%9A%B6%E5%88%B6%E3%80%81%E5%8F%96%E6%B6%88%E5%B8%B8%E5%A4%87%E5%86%9B%E7%AD%89%E6%B0%91%E4%B8%BB%E8%A6%81%E6%B1%82%E3%80%82%E8%AE%B8%E5%A4%9A%E5%BE%B7%E5%9B%BD%E6%89%8B%E5%B7%A5%E4%B8%9A%E4%BE%A8%E6%B0%91%E5%8F%82%E5%8A%A0%E4%BA%86%E8%BF%99%E4%B8%80%E5%9C%9F%E5%9C%B0%E6%94%B9%E9%9D%A9%E8%BF%90%E5%8A%A8%E3%80%82%E2%80%94%E2%80%9464%E3%80%8193%E3%80%82&quot;&gt;^47&lt;/a&gt;的关系。&lt;/p&gt;
&lt;p&gt;共产党人为工人阶级的最近的目的和利益而斗争，但是他们在当前的运动中同时代表运动的未来。在法国，共产党人同社会主义民主党〔注：恩格斯在1888年英文版上加了一个注：“当时这个党在议会中的代表是赖德律-洛兰，在著作界的代表是路易·勃朗，在报纸方面的代表是《改革报》[^46]。‘社会主义民主党’这个名称在它的发明者那里是指民主党或共和党中或多或少带有社会主义色彩的一部分人。”恩格斯在1890年德文版上加了一个注：“当时在法国以社会主义民主党自称的政党，在政治方面的代表是赖德律-洛兰，在著作界的代表是路易·勃朗；因此，它同现今的德国社会民主党是有天壤之别的。”——编者注〕联合起来反对保守的和激进的资产阶级，但是并不因此放弃对那些从革命的传统中承袭下来的空谈和幻想采取批判态度的权利。&lt;/p&gt;
&lt;p&gt;在瑞士，共产党人支持激进派，但是并不忽略这个政党是由互相矛盾的分子组成的，其中一部分是法国式的民主社会主义者，一部分是激进的资产者。&lt;/p&gt;
&lt;p&gt;在波兰人中间，共产党人支持那个把土地革命当做民族解放的条件的政党，即发动过1846年克拉科夫起义&lt;a href=&quot;%E6%B3%A2%E5%85%B0%E4%BA%BA%E6%B0%91%E4%B8%BA%E4%BA%89%E5%8F%96%E6%B0%91%E6%97%8F%E8%A7%A3%E6%94%BE%E6%9B%BE%E5%87%86%E5%A4%87%E5%9C%A81846%E5%B9%B42%E6%9C%88%E4%B8%BE%E8%A1%8C%E8%B5%B7%E4%B9%89%E3%80%82%E8%B5%B7%E4%B9%89%E7%9A%84%E4%B8%BB%E8%A6%81%E5%8F%91%E8%B5%B7%E4%BA%BA%E6%98%AF%E6%B3%A2%E5%85%B0%E7%9A%84%E9%9D%A9%E5%91%BD%E6%B0%91%E4%B8%BB%E4%B8%BB%E4%B9%89%E8%80%85%E5%9F%83%C2%B7%E9%82%93%E6%B3%A2%E5%A4%AB%E6%96%AF%E5%9F%BA%E7%AD%89%E4%BA%BA%E3%80%82%E4%BD%86%E6%98%AF%EF%BC%8C%E7%94%B1%E4%BA%8E%E6%B3%A2%E5%85%B0%E5%B0%8F%E8%B4%B5%E6%97%8F%E7%9A%84%E8%83%8C%E5%8F%9B%E4%BB%A5%E5%8F%8A%E8%B5%B7%E4%B9%89%E7%9A%84%E9%A2%86%E8%A2%96%E9%81%AD%E6%99%AE%E9%B2%81%E5%A3%AB%E8%AD%A6%E5%AF%9F%E9%80%AE%E6%8D%95%EF%BC%8C%E6%80%BB%E8%B5%B7%E4%B9%89%E6%9C%AA%E8%83%BD%E6%88%90%E5%8A%9F%E3%80%82%E4%BB%85%E5%9C%A8%E4%BB%8E1815%E5%B9%B4%E8%B5%B7%E7%94%B1%E5%A5%A5%E5%9C%B0%E5%88%A9%E3%80%81%E6%99%AE%E9%B2%81%E5%A3%AB%E5%92%8C%E4%BF%84%E5%9B%BD%E5%85%B1%E7%AE%A1%E7%9A%84%E5%85%8B%E6%8B%89%E7%A7%91%E5%A4%AB%E4%B8%BE%E8%A1%8C%E4%BA%86%E8%B5%B7%E4%B9%89%EF%BC%8C%E8%B5%B7%E4%B9%89%E8%80%85%E5%9C%A82%E6%9C%8822%E6%97%A5%E8%8E%B7%E8%83%9C%E5%B9%B6%E5%BB%BA%E7%AB%8B%E4%BA%86%E5%9B%BD%E6%B0%91%E6%94%BF%E5%BA%9C%EF%BC%8C%E5%8F%91%E8%A1%A8%E4%BA%86%E5%BA%9F%E9%99%A4%E5%B0%81%E5%BB%BA%E5%BE%AD%E5%BD%B9%E7%9A%84%E5%AE%A3%E8%A8%80%E3%80%82%E5%85%8B%E6%8B%89%E7%A7%91%E5%A4%AB%E8%B5%B7%E4%B9%89%E5%9C%A81846%E5%B9%B43%E6%9C%88%E5%88%9D%E8%A2%AB%E9%95%87%E5%8E%8B%E3%80%821846%E5%B9%B411%E6%9C%88%EF%BC%8C%E5%A5%A5%E5%9C%B0%E5%88%A9%E3%80%81%E6%99%AE%E9%B2%81%E5%A3%AB%E5%92%8C%E4%BF%84%E5%9B%BD%E7%AD%BE%E8%AE%A2%E4%BA%86%E5%85%B3%E4%BA%8E%E6%8A%8A%E5%85%8B%E6%8B%89%E7%A7%91%E5%A4%AB%E5%B9%B6%E5%85%A5%E5%A5%A5%E5%9C%B0%E5%88%A9%E5%B8%9D%E5%9B%BD%E7%9A%84%E6%9D%A1%E7%BA%A6%E3%80%82%E2%80%94%E2%80%9465%E3%80%82&quot;&gt;^48&lt;/a&gt;的政党。&lt;/p&gt;
&lt;p&gt;在德国，只要资产阶级采取革命的行动，共产党就同它一起去反对专制君主制、封建土地所有制和小资产阶级。&lt;/p&gt;
&lt;p&gt;但是，共产党一分钟也不忽略教育工人尽可能明确地意识到资产阶级和无产阶级的敌对的对立，以便德国工人能够立刻利用资产阶级统治所必然带来的社会的和政治的条件作为反对资产阶级的武器，以便在推翻德国的反动阶级之后立即开始反对资产阶级本身的斗争。&lt;/p&gt;
&lt;p&gt;共产党人把自己的主要注意力集中在德国，因为德国正处在资产阶级革命的前夜，因为同17世纪的英国和18世纪的法国相比，德国将在整个欧洲文明更进步的条件下，拥有发展得多的无产阶级去实现这个变革，因而德国的资产阶级革命只能是无产阶级革命的直接序幕。&lt;/p&gt;
&lt;p&gt;总之，共产党人到处都支持一切反对现存的社会制度和政治制度的革命运动。&lt;/p&gt;
&lt;p&gt;在所有这些运动中，他们都强调所有制问题是运动的基本问题，不管这个问题的发展程度怎样。&lt;/p&gt;
&lt;p&gt;最后，共产党人到处都努力争取全世界民主政党之间的团结和协调。&lt;/p&gt;
&lt;p&gt;共产党人不屑于隐瞒自己的观点和意图。他们公开宣布：他们的目的只有用暴力推翻全部现存的社会制度才能达到。让统治阶级在共产主义革命面前发抖吧。无产者在这个革命中失去的只是锁链。他们获得的将是整个世界。&lt;/p&gt;
&lt;p&gt;全世界无产者，联合起来！&lt;/p&gt;
&lt;p&gt;原文是德文&lt;br&gt;
选自《马克思恩格斯选集》第3版第1卷第399-435页&lt;/p&gt;
&lt;p&gt;[^4]:《红色共和党人》（The Red Republican）是英国的一家周刊，宪章派左翼的机关报，1850年6-11月在伦敦出版，主编是乔·朱·哈尼。——3、9。&lt;/p&gt;
&lt;p&gt;[^6]:《社会主义者报》（Le Socialiste）是美国的一家法文日报，1871年10月-1873年5月在纽约出版，国际法国人支部的机关报；海牙代表大会（1872年9月2-7日）以后与国际断绝了关系。1872年1-2月该报曾发表《共产党宣言》。——3、11。&lt;/p&gt;
&lt;p&gt;[^19]:《伍德赫尔和克拉夫林周刊》（Woodhull &amp;#x26; Claflin’s Weekly）是美国的一家周刊，1870-1876年由资产阶级女权主义者维·伍德赫尔和田·克拉夫林在纽约出版。—11。&lt;/p&gt;
&lt;p&gt;[^22]:劳·拉法格翻译的《共产党宣言》法文译本刊登在1885年8月29日-11月7日的《社会主义者报》上，以后又作为附录收入1886年在巴黎出版的梅尔麦著的《社会主义法国》。//《社会主义者报》（Le Socialiste）是法国的一家周报，1885年由茹·盖得在巴黎创办，1902年以前是工人党的机关报，后来是法国社会党机关报；19世纪80-90年代恩格斯曾为该报撰稿。——11、17。&lt;/p&gt;
&lt;p&gt;[^23]:《共产党宣言》西班牙文译本发表在1886年7-8月的《社会主义者报》上，并出版过单行本。//《社会主义者报》（El Socialista）是西班牙的一家周报，西班牙社会主义工人党的中央机关报，从1885年起在马德里出版。——11、17。&lt;/p&gt;
&lt;p&gt;[^46]:改革派又称《改革报》派，是聚集在法国《改革报》周围的一个政治集团，包括一些小资产阶级民主共和主义者和小资产阶级社会主义者。其首领是赖德律-洛兰和路易·勃朗等人。他们主张建立共和国并实行民主改革和社会改革。//《改革报》（La Réforme）是法国的一家日报，小资产阶级民主派、小资产阶级共和党人和小资产阶级社会主义者的机关报，1843年7月-1850年l月在巴黎出版，创办人和主编是赖德律-洛兰和多·弗·阿拉戈，编辑有赖德律-洛兰和斐·弗洛孔等，1847年10月-1848年1月曾刊登恩格斯的许多文章。——63、64、102。&lt;/p&gt;</content:encoded><h:img src="/_astro/brighter_than_the_sun.Ehjd8Zqu.jpg"/><enclosure url="/_astro/brighter_than_the_sun.Ehjd8Zqu.jpg"/></item><item><title>物理实验之不确定度</title><link>https://chinosan.com/blog/default/uncertainty</link><guid isPermaLink="true">https://chinosan.com/blog/default/uncertainty</guid><description>各类实验报告中，不确定度的计算规范。</description><pubDate>Thu, 14 Mar 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;随机变量与误差&lt;/h2&gt;
&lt;p&gt;绝对误差 $\Delta x=x-x_0$，&lt;strong&gt;你以为的（测量值）&lt;strong&gt;减去&lt;/strong&gt;真实值&lt;/strong&gt;&lt;br&gt;
等精度测量和不等精度测量，这里讨论的都是等精度&lt;br&gt;
相对误差 $N=\dfrac{\Delta x}{|x_0|}{}$，绝对误差除以&lt;strong&gt;真实值&lt;/strong&gt;&lt;br&gt;
真实值一般是不可能得到的，所以取约定真值（理论值/公认值），或者取多次测量的平均值 $\bar x$&lt;/p&gt;
&lt;p&gt;系统误差：大小、正负有某种规律&lt;br&gt;
随机误差&lt;br&gt;
存在多种分布形式，一般是正态分布，它是一种连续分布&lt;br&gt;
连续型随机变量的期望定义为 $E(x)=\displaystyle\int_{-\infty}^{+\infty} xf(x) {\rm d}x$&lt;br&gt;
连续型随机变量的方差定义为 $D(x)=\displaystyle\int_{-\infty}^{+\infty} [x-E(x)]^2f(x) {\rm d}x$&lt;br&gt;
正态分布密度函数 $f(x)=\dfrac{1}{\sigma\sqrt{2\pi}}e^{\tfrac{-(x-\mu)^2}{2\sigma^2}}{}$&lt;br&gt;
$\mu$ 为期望（平均值），$\sigma$ 为&lt;strong&gt;标准差&lt;/strong&gt;&lt;br&gt;
平均值附近的区间 $(\mu-k\sigma,\mu+k\sigma)$ 称为置信区间，其中 $k$ 为置信因子，这个区间上的概率称为置信概率；正态分布中 $k=3$ 的置信概率达到了 99.73%，可以认为这个区间以外的数据异常（3σ原则）&lt;/p&gt;
&lt;p&gt;有限（$n$）次测量&lt;br&gt;
样本平均值 $\bar x=\dfrac 1n \sum\limits^n x_i$&lt;br&gt;
样本方差 $\hat{S_n}^2=\dfrac {1}{n-1} \sum\limits^n (x_i-\bar x)^2$&lt;br&gt;
理解上，这个式子是“Σ 频率×数据”；记真实的方差为 $\sigma^2$，真实的平均值为 $\mu$&lt;br&gt;
为什么是 $n-1$ 而不是 $n$：&lt;a href=&quot;https://zhuanlan.zhihu.com/p/550427703&quot;&gt;这里做了详细推导&lt;/a&gt;。结论：除以 $n-1$ 的值是“无偏估计”，也就是说这个值将回归到真实的方差 $\sigma^2$；而如果除以 $n$，得到的结果是 $\dfrac{n-1}{n}\sigma^2$，这个数只有在 $n \to \infty$ 时才为真实的方差。理解上：给出的这个公式计算方差之前已经定好了样本平均值，也就是已经选定了 $n$ 个数，这使得只要确定 $n-1$ 个数，最后一个数就已经确定了；而如果将上面的公式中 $\bar x$ 改为真实的平均值 $\mu$，那么就要除以 $n$ 而不是 $n-1$，因为真实平均值并没有限定这 $n$ 个数，选定了 $n-1$ 个数之后，最后一个数无法确定。还有一种更傻瓜式的解读，样本的方差一般是要比总体的方差要低一些，所以要除以一个较小的数使得总体方差稍微大一些。&lt;/p&gt;
&lt;p&gt;任意一次测量的实验标准偏差 ${S_x}=\sqrt{\dfrac {\sum\limits^n (x_i-\bar x)^2}{n-1}}{}$（贝塞尔公式）&lt;br&gt;
平均值的实验标准偏差 $S_{\bar x}=\dfrac{S_x}{\sqrt n}{}$&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三个“精度”&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;精密度 Precision 指数据比较集中&lt;/li&gt;
&lt;li&gt;准确度 Correctness 指数据平均值离真实值比较近（数据均匀分布在真实值周边）&lt;/li&gt;
&lt;li&gt;精确度 Accuracy 指精密度和准确度都很好&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;不确定度&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A 类标准不确定度：用统计方法计算得出的不确定度&lt;/li&gt;
&lt;li&gt;B 类标准不确定度：用其他方法计算得出的不确定度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对某一被测的量，做了 $n$ 次等精度独立测量，则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;任意一次测量的 A 类标准不确定度 $u_A(x)=S_x=\sqrt{\dfrac {\sum\limits^n (x_i-\bar x)^2}{n-1}}{}$&lt;/li&gt;
&lt;li&gt;平均值的 A 类标准不确定度 $u_A(\bar x)=S_{\bar x}=\sqrt{\dfrac{\sum\limits^n (x_i-\bar x)^2}{n(n-1)}}{}$&lt;/li&gt;
&lt;li&gt;记测量仪器本身的允许误差极限为 $\Delta_{\rm ins}{}$，置信因子为 $k$，则 B 类标准不确定度 $u_B=\dfrac{\Delta_{\rm ins}}{k}{}$。其中
&lt;ul&gt;
&lt;li&gt;当测量误差服从均匀分布（如电子计数器的量化、仪器刻度盘示值的分辨力、平衡指示仪的调零、度盘与齿轮的空程差、数据切尾等）、置信概率取 100% 时，经计算可知 $k=\sqrt 3$&lt;/li&gt;
&lt;li&gt;$\Delta_{\rm ins}{}$ 可以近似等于最小分度值的一半&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;合成标准不确定度 $u_C=\sqrt{u_A^2+u_B^2}{}$，若有若干组不同的 AB 类不确定度，则各自平方全部相加再开根号&lt;/p&gt;
&lt;h2&gt;测量结果的表示&lt;/h2&gt;
&lt;p&gt;对被测量 X，我们表示为 $X=\bar x(u_C)$（若只有一组值则 $\bar x=x$），例如 $L=114.51(0.05) \rm mm$，其中 114.51mm 是最佳估计值（最佳估计值带符号）&lt;/p&gt;
&lt;p&gt;若是间接测量量，例如待测量 $\Phi$ 是 $N$ 个相互独立的直接测量量的函数 $\Phi=F(x_1,\cdots,x_n)$，那么有标准不确定度传递公式 $u_C(\Phi)=\sqrt{\sum\limits^N_{i=1}(\dfrac{\partial\Phi}{\partial x_i})^2u_C^2(x_i)}{}$，最后表示为 $\Phi=\phi(u_C(\Phi))$&lt;/p&gt;
&lt;p&gt;标准相对不确定度 $E=\dfrac{u_C}x$，其中 x 是最佳估计值，是一个无量纲数，一般表示成百分数&lt;/p&gt;
&lt;p&gt;若是间接测量量，则由上面公式有 $E=\dfrac{u_C(\Phi)}{\Phi}=\sqrt{\sum\limits^N_{i=1}(\dfrac{\partial ln\Phi}{\partial x_i})^2u_C^2(x_i)}{}$&lt;/p&gt;
&lt;h2&gt;有效数字&lt;/h2&gt;
&lt;p&gt;有效数字与单位无关，114.5mm=11.45cm=0.1145m，始终是 4 位有效数字&lt;/p&gt;
&lt;p&gt;修约：四舍六入五凑偶。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;≤4 ，直接舍去&lt;/li&gt;
&lt;li&gt;≥6 ，进一&lt;/li&gt;
&lt;li&gt;若为 5
&lt;ul&gt;
&lt;li&gt;当 5 后有有效数字时，进一&lt;/li&gt;
&lt;li&gt;当 5 后无有效数字时
&lt;ul&gt;
&lt;li&gt;5 前为奇数时，进一凑成偶数&lt;/li&gt;
&lt;li&gt;5 前为偶数时，直接舍去&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;举例：保留两位小数&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;9.8249≈9.82&lt;/li&gt;
&lt;li&gt;9.82671≈9.83&lt;/li&gt;
&lt;li&gt;9.8350≈9.84&lt;/li&gt;
&lt;li&gt;9.83501≈9.84&lt;/li&gt;
&lt;li&gt;9.8250≈9.82&lt;/li&gt;
&lt;li&gt;9.82501≈9.83&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;有效数字之间的运算&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;准确值与准确值运算得准确值，可疑值与可疑值运算得可疑值&lt;/li&gt;
&lt;li&gt;准确值与可疑值运算得可疑值，进位数字视为准确值&lt;/li&gt;
&lt;li&gt;加减 保留小数点后位数最少的&lt;/li&gt;
&lt;li&gt;乘除 保留有效数字最低的&lt;/li&gt;
&lt;li&gt;乘方开方 保留精度与底数精度相同&lt;/li&gt;
&lt;li&gt;对数 保留精度比真数精度多一位（或者相同）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不确定度有效数字只能取 1-2 位，不确定度第一位个有效数字是 1 或 2 时，取两位；是 3 及以上时，取 1 位&lt;/p&gt;
&lt;h2&gt;数据处理&lt;/h2&gt;
&lt;p&gt;列表、作图法&lt;br&gt;
逐差法（不是超级大邻差，那个只适用于计算含有 $\Delta s$ 的）&lt;br&gt;
残差 $\hat e_i=y_i-\hat y_i$，唯一一个“真实的-你以为的”，其他的都是“你以为的-真实的”&lt;/p&gt;
&lt;p&gt;相关系数 $r=\dfrac{\sum\limits(x_i-\bar x)(y_i-\bar y)}{\sqrt{\sum\limits(x_i-\bar x)^2}\sqrt{\sum\limits(y_i-\bar y)^2}}{}$&lt;br&gt;
$r \in [-1,1]$，相关系数越靠近 1，越线性正相关；相关系数越靠近-1，越线性负相关&lt;/p&gt;
&lt;p&gt;最小二乘法&lt;br&gt;
$\hat y=\hat bx+\hat a$，其中&lt;br&gt;
$\hat b=\dfrac{\sum\limits(x_i-\bar x)(y_i-\bar y)}{\sum\limits(x_i-\bar x)^2}{}$&lt;br&gt;
$\hat a=\bar y-\hat b\bar x$&lt;/p&gt;
&lt;p&gt;相关指数 $R^2=1-\dfrac{\sum\limits(y_i-\hat y)^2}{\sum\limits(y_i-\bar y)^2}{}$&lt;br&gt;
相关指数越大，残差平方和越小，拟合效果越好；相关指数越小，残差平方和越大，拟合效果越差&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>八段锦</title><link>https://chinosan.com/blog/default/baduanjin</link><guid isPermaLink="true">https://chinosan.com/blog/default/baduanjin</guid><description>传统养身课程结课考核 笔记。国家体育总局推广版八段锦，动作、呼吸、观想等要领摘要</description><pubDate>Thu, 30 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;要点与起式&lt;/h2&gt;
&lt;p&gt;起式：左脚跨开，微蹲，掌心对腹部，抱球&lt;/p&gt;
&lt;p&gt;调息：开吸合呼，起吸落呼，蓄吸发呼；鼻吸，口或鼻呼。一动一呼/吸，不动屏息，屏息不是故意，是自然停止；逆腹式呼吸，吸气收腹，呼气放松，起伏的是丹田&lt;/p&gt;
&lt;p&gt;调心：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;意想动作要领&lt;/strong&gt;：把意念放在动作规格，方法要领和动作的路线上，适合正在学习动作的练习者&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;默念动作口诀&lt;/strong&gt;：适合动作习练相对比较准确的习练者，把散乱的思绪放在动作上&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;意念身体部位&lt;/strong&gt;：把意念放在做动作的过程中身体的感觉上（感觉最明显的部位，感知摩擦、撑压、拉伸、放松感觉）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;意念呼吸（约等于调息）&lt;/strong&gt;：阶段一，仅把意念放在呼吸上，适合动作自动化但刚刚将呼吸融入动作的练习者；阶段二，把意念放在呼吸和动作的配合上，让动作找呼吸，不要让呼吸赶动作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;观想&lt;/strong&gt;：想象&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;第一式：双手托天理三焦&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;意念动作要领&lt;/strong&gt;：抱球插手，起身托掌，面前翻掌，抬头撑掌，前视顶腕，沉髋分掌，蹲腿按掌，腹前抱球&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默念动作口诀&lt;/strong&gt;：托，顶，落&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;意念身体部位&lt;/strong&gt;：上升全程紧贴身体，下降时候松背松腰，缓慢抱于腹前，掌心向上&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;调息&lt;/strong&gt;：插手上托吸气，前视顶腕屏息，下落呼气&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;观想&lt;/strong&gt;：观想气，通过气打理三焦的每一个角落（膈肌以上上焦，膈肌到肚脐中焦，肚脐以下下焦）。手在哪，气就在哪里，前视顶腕时候，意想顶天立地感觉，下落时诱导出三焦打理完身体舒畅的感觉。&lt;/p&gt;
&lt;h2&gt;第二式：左右开弓似射雕&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;意念动作要领&lt;/strong&gt;：开步搭腕，马步开弓，侧移分手，并步抱球&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默念动作口诀&lt;/strong&gt;：搭腕，开弓，分手，并步&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;意念身体部位&lt;/strong&gt;：先左开后右开，哪脚出哪手在外。开弓、分手时候朝着开的方向看。身体立直，蹲下深一点。收回时脚往外收。抱球掌心向上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;调息&lt;/strong&gt;：搭腕蓄力吸，开弓呼气，定式屏息，侧移吸气，并步呼气&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;观想&lt;/strong&gt;：诱导出在拉弓过程中心胸开阔的感觉，加强心胸开阔后身心的放松。开步搭腕时想象手从小腹开始捧起一盆水，在胸口时想象为一股气按进胸腔，&lt;/p&gt;
&lt;h2&gt;第三式：调理脾胃须单举&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;意念动作要领&lt;/strong&gt;：左臂上举，上撑下按，左臂下落，两手抱球。右臂上举，上撑下按，右臂下落，两手伏案。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默念动作口诀&lt;/strong&gt;：举，落&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;意念身体部位&lt;/strong&gt;：先左在上，后右在上。先稍微上升一点再分开。上撑下按时力点在掌根，身体不要歪。下面的手不要贴身体，也不要过远；上面的手不贴耳朵。这一整式结束时掌心向下，落在胯旁，指尖向前。意念身体部位这一部分，感受呼吸。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;调息&lt;/strong&gt;：上举吸气，屏息上撑下按，下落呼气。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;观想&lt;/strong&gt;：上撑下按时意想清气向上升到心肺，浊气向下沉到肠；下落时意想清泉从头到脚灌注&lt;/p&gt;
&lt;h2&gt;第四式：五劳七伤往后瞧&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;意念动作要领&lt;/strong&gt;：起身探指，旋臂后瞧，沉髋回抹，微蹲伏按。起身探指，旋臂后瞧，沉髋回抹，微蹲抱球&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默念动作口诀&lt;/strong&gt;：起身，后瞧，转正&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;意念身体部位&lt;/strong&gt;：手臂向上提升45°，不前后动。旋臂是用小指带动手臂，旋转要充分。颈椎平行转动，不能俯仰头。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;调息&lt;/strong&gt;：起身呼气，后瞧屏息，呼气转正&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;观想&lt;/strong&gt;：起身弹指时想象顶天立地的感觉，四肢像树根一样扎在地上。沉髋想象将海洋球按入水中，但不要用力，慢慢按&lt;/p&gt;
&lt;h2&gt;第五式：摇头摆尾去心火&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;意念动作要领&lt;/strong&gt;：开步上托，两掌下按，重心稍起，上体右倾，右转俯身，俯身左旋，转髋摇头，马步下坐。重心稍起，上体左倾，左转俯身，俯身右旋，转髋摇头，马步下坐。收脚坐起，屈膝下按。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默念动作口诀&lt;/strong&gt;：起，倾，旋，转髋摇头，坐&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;意念身体部位&lt;/strong&gt;：右脚迈出。两手从抱球开始上托到头上，都在第三式单举的位置。然后从两侧下放，搭在大腿上但不受力。身体先右倾、经前面旋转到左侧，然后摇头摆尾。随后，身体左倾、经前面时旋转到右侧，然后摇头摆尾。整个过程头要摇开，脖子不能松。然后手臂从两侧上举至与肩同宽，掌心相对，此时收回右脚。手下按，呈伏按桩。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;调息&lt;/strong&gt;：起身右倾吸气，左旋呼气，转髋摇头吸气，下坐呼气，另一侧同理&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;观想&lt;/strong&gt;：按动作要领观想。摆尾时想象尾是笔，画出圆弧&lt;/p&gt;
&lt;h2&gt;第六式：两手攀足固肾腰&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;意念动作要领&lt;/strong&gt;：直体举臂，掌心相对，胸前按章，腋下穿掌，直立按摩，前俯摩运，贴地伸掌，微蹲伏按&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默念动作口诀&lt;/strong&gt;：举，落，穿，摩，伸，举&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;意念身体部位&lt;/strong&gt;：从伏按桩开始，朝前举起到头上，与肩同宽掌心相对。下按到胸的高度，不要耸肩，然后手心向上翻。从胸部往后穿出，向下摩运。至臀部时身体下俯，手贴着腿后侧向下摩运，到脚跟时顺着脚外侧移到前面，按在脚面上。前举时，用手带着身体起来，头不要动。最后伏按桩。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;调息&lt;/strong&gt;：上举吸气，下落呼气，穿掌吸气，摩运呼气，贴地屏息，上举吸气，伏按呼气&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;观想&lt;/strong&gt;：直体时观想伸懒腰，体内舒畅；向下直到脚面，想象暖流由上至下，通畅膀胱经，贴地伸掌起来时候想象手是飞机沿脚背起飞；&lt;/p&gt;
&lt;h2&gt;第七式：攥拳怒目增气力&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;意念动作要领&lt;/strong&gt;：马步抱拳，怒目冲拳，拧腰缠腕，握固回收，并步落手&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默念动作口诀&lt;/strong&gt;：冲，抓，收&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;意念身体部位&lt;/strong&gt;：脚先左，全程马步，手也是先左。冲拳由腰间向前冲出，冲到与肩同高。身体中正。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;调息&lt;/strong&gt;：开步吸气，冲拳呼气，缠腕屏息，回收吸气&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;观想&lt;/strong&gt;：冲拳时想象有个阻力阻碍出拳，穿透性强，力道逐渐增大。收回来时候想象手被往外拉&lt;/p&gt;
&lt;h2&gt;第八式：背后七颠百病消&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;意念动作要领&lt;/strong&gt;：提顶抬踵，落踵震地。收式，旋臂外分，转掌敛气，合抱丹田，落掌还原&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;默念动作口诀&lt;/strong&gt;：提，缓，颠&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;意念身体部位&lt;/strong&gt;：脚后跟踮起，充分提高，保持身体中正，头向上顶，然后停一下，最后墩到地上。收式，两手手心向后，手臂张开，然后转掌，向前划过后两手重叠于腹，男右手在上，女左手在上&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;调息&lt;/strong&gt;：抬踵吸气，顶住定式屏息，落踵呼气。收式，外分吸气，合抱呼气，落掌自然呼吸&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;观想&lt;/strong&gt;：感觉有一股力量拉着百会穴，把气提到很高的位置，先优雅下落，后沉稳落地。&lt;/p&gt;</content:encoded><h:img src="/_astro/baduanjin.eTQkjCUL.png"/><enclosure url="/_astro/baduanjin.eTQkjCUL.png"/></item><item><title>《如何阅读一本书》笔记</title><link>https://chinosan.com/blog/reading/how-to-read-a-book</link><guid isPermaLink="true">https://chinosan.com/blog/reading/how-to-read-a-book</guid><description>学术写作 课程期末考试用。要点基本都在这了，书本身也不错。</description><pubDate>Thu, 09 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;h3&gt;阅读的艺术&lt;/h3&gt;
&lt;p&gt;（原第一章）&lt;br&gt;
阅读的目的：娱乐消遣、获得资讯、增进理解。&lt;/p&gt;
&lt;p&gt;要把读书的主要目的当作是增进理解能力。要读刚好明白但并不了解的书、挑战既有的理解力（否则读者没有被启发），阅读的目的是把这种不平等的了解程度克服到一定程度之内。&lt;/p&gt;
&lt;p&gt;阅读是一件主动的事，阅读越主动效果越好，读者对自己的要求越多获得就越多。阅读需要技巧，比喻：作者是投球手，读者是捕手。&lt;/p&gt;
&lt;p&gt;阅读的艺术，是一个凭借头脑运作，不假任何外助（除了玩味一些字句），以一己之力来提升自我的过程。&lt;/p&gt;
&lt;p&gt;阅读是跟着一位缺席的老师学习，本书就是要我们懂得如何让书本来教导我们。当你提出问题时，只有等你自己做了思考和分析之后，才能在书本上找到答案。如果追寻的是解释而不是陈述，就需要理解。&lt;/p&gt;
&lt;h3&gt;做有自我要求的读者&lt;/h3&gt;
&lt;p&gt;（原第五章）&lt;br&gt;
主动阅读的核心：要提出问题，在阅读过程中必须尝试回答问题。事实上努力提出问题是任何超越基础阅读层次的核心。这四个问题就是后面分析阅读要达成的目标：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;整体来说，这本书在谈什么？&lt;/li&gt;
&lt;li&gt;作者在细部说了什么，怎么论述的？&lt;/li&gt;
&lt;li&gt;这本书说的有道理吗，是全部有道理还是部分有道理？&lt;/li&gt;
&lt;li&gt;这本书和我有什么关系？意义是什么？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如何让一本书真正属于自己：做笔记。笔记分为结构笔记、概念笔记、辨证笔记（讨论情境的笔记，通常是很多本书）书成为你的一部分 = 你成为书的一部分。做笔记的记号：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;横线/圈，重要而有力量的句子/词&lt;/li&gt;
&lt;li&gt;星号，慎用，只用来强调全书十来个最重要的声明。往往配合折角或者书签，代表回忆这本书最重要的部分&lt;/li&gt;
&lt;li&gt;编号，标注连串的论述&lt;/li&gt;
&lt;li&gt;页码，链接其他相似的表述，读者常用“Cf”标记表示比较或参照的意思&lt;/li&gt;
&lt;li&gt;文字，用自己的话简化说明或者整理主要论点的发展顺序&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;书的前几页，盖藏书章表示财务所有权，记载读者的思想表示智力所有权。
书的最后几页，作为个人索引页，将主要观点依序记下来。&lt;/p&gt;
&lt;p&gt;习惯≠规则。阅读中有许多规则和技巧需要掌握。规则的多样化意味着要养成一个复杂的习惯，而不是多个习惯。&lt;/p&gt;
&lt;h3&gt;阅读与心智成长&lt;/h3&gt;
&lt;p&gt;（原第二十一章）&lt;br&gt;
读完这本书，一定要用以前从没经历过的方式来努力阅读。必须要能够操纵超越自身能力的书，增进阅读技巧的书。99%+的书对增进阅读技巧毫无帮助，剩下的就是可以学习如何阅读、如何生活的书。&lt;/p&gt;
&lt;p&gt;经过下面讲解的阅读方法之后，这本书就已经用不着再读，只要大概翻一翻就回忆起了。但是也有很难读得书，要反复读。也有书是每次重读都能获得成长，书和读者都有成长。&lt;/p&gt;
&lt;h2&gt;Chapter 2 阅读的层次&lt;/h2&gt;
&lt;p&gt;（原第二章）&lt;br&gt;
“层次”表示高层次的阅读包含低层次的阅读，没有低层次的阅读就没法进入高层次的阅读。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;基础阅读&lt;/strong&gt;，就是拥有基本的阅读技巧，能理解文字、句子和文章的意思。这一点于非儿童而言，主要出现在读外语读物时。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检视阅读&lt;/strong&gt;，就是在一定时间内抓住一本书的重点，它是一门系统化略读的艺术，要能回答出“这是一本什么书”、“这本书在谈什么”、“这本书架构如何”的问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分析阅读&lt;/strong&gt;，是全盘、完整、优质的阅读，一直读到这本书成为读者自己。如果只是为了消遣或获得资讯，则没有必要使用分析阅读。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;主题阅读&lt;/strong&gt;，就是阅读很多本书，列举出这些书的相关处，提出一个主题。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Level 1 基础阅读&lt;/h3&gt;
&lt;p&gt;（原第三章）&lt;/p&gt;
&lt;p&gt;学习阅读的四个阶段：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;阅读准备阶段/幼稚园&lt;/li&gt;
&lt;li&gt;认字与读简单的读物/一年级&lt;/li&gt;
&lt;li&gt;字汇快速增长与功能性读写能力/四年级&lt;/li&gt;
&lt;li&gt;精炼与增进前面几个阶段所学的技巧/九年级&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;高等教育与民主教育&lt;/p&gt;
&lt;h3&gt;Level 2 检视阅读&lt;/h3&gt;
&lt;p&gt;（原第四章）&lt;/p&gt;
&lt;h4&gt;检视阅读一：系统略读&lt;/h4&gt;
&lt;p&gt;目标是在几分钟到一个小时内，知道这本书讲了啥，决定这本书值不值得多花时间仔细读。这一阶段要读：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;书名页和序言，将书本归为某一类&lt;/li&gt;
&lt;li&gt;目录，概括掌握基本架构&lt;/li&gt;
&lt;li&gt;索引，评估书本涵盖的议题&lt;/li&gt;
&lt;li&gt;出版者介绍&lt;/li&gt;
&lt;li&gt;如果上面的步骤表明这本书值得一读，则开始挑几个与主题相关的文章看，特别是开头和结尾&lt;/li&gt;
&lt;li&gt;打开书，随便翻，读几段或者几页，特别是最后的两三页和后记，但是不要看太多&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;检视阅读二：粗浅阅读&lt;/h4&gt;
&lt;p&gt;即从头到尾读完，不要因为不理解的地方停下来查询或者思索（很快就会看到懂的地方了）。如果坚持了解每一页的意义才肯读下去，那一定读不了多少。&lt;/p&gt;
&lt;h4&gt;阅读速度&lt;/h4&gt;
&lt;p&gt;大多数人的阅读速度是比现在读的速度还要快。有的书没必要花那么多时间，而有的书是要读得相当慢才能理解。读同一本书时的速度也有不同，无关紧要的部分快一点，困难的部分慢一点。&lt;/p&gt;
&lt;p&gt;未受过训练的读者在阅读一行字时会在5~6个地方逗留，只能看到几个单字的组合，甚至倒退回两行前。脑的阅读速度比眼睛的阅读速度快得多，可以通过手指引导的方式加快阅读速度。&lt;/p&gt;
&lt;p&gt;检视阅读之后，要能够回答与本书有关的、稍微比简单难一点的问题的答案。检视阅读之后，对正式开始读一本书已经有了准备，不管这本书多难。&lt;/p&gt;
&lt;h3&gt;Level 3 分析阅读&lt;/h3&gt;
&lt;p&gt;3个阶段，共15个规则。不适用于阅读小说或诗集。&lt;/p&gt;
&lt;p&gt;这里的阶段并不是“前后”，因为实际阅读的时候是读一遍就完成了所有三个阶段。&lt;/p&gt;
&lt;h4&gt;第一阶段：找出一本书在谈些什么&lt;/h4&gt;
&lt;p&gt;第一阶段是为了回答第一个问题：整本书在谈什么。能提供读者对一本书架构的认识。&lt;/p&gt;
&lt;h5&gt;规则一. 依照书本的种类与主题作分类&lt;/h5&gt;
&lt;p&gt;（原第六章）&lt;br&gt;
要知道自己在读什么类型的书，越早知道越好，最好在读之前就知道。大类分成论说类和虚构小说类。&lt;/p&gt;
&lt;p&gt;论说类又分为实用性和理论性，这是行与知的区别。技巧、手册、教导性论述都是实用性的书。经济行为的研究报告、数据分析研究则是理论性的而非实用的。讨论某件事的有效性是理论，讨论某件事的目的是实用。包含了规则、指导的书是实用性的书。实用性的书多用“应该”“好坏”“结果”“意义”，理论性的书多用“是”。&lt;/p&gt;
&lt;p&gt;理论性作品下再分。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;如果强调特殊事件，随着时代不同而演变，则是历史书&lt;/li&gt;
&lt;li&gt;如果讨论的问题无关时代，则再分
&lt;ul&gt;
&lt;li&gt;如果超乎日常经验、用特殊经验的结果举证，则是科学书&lt;/li&gt;
&lt;li&gt;如果是普通的日常经验、用人类共通性做例证，则是哲学书&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;规则二. 使用最简短的文字说明整本书在谈些什么&lt;/h5&gt;
&lt;p&gt;（原第七章）&lt;br&gt;
使用一个单一的句子，或最多几句话（一小段文字）来叙述整本书的内容。不要满足于感觉上的认知，要说出来才算成功。&lt;/p&gt;
&lt;h5&gt;规则三. 将书中重要篇章列举出来，说明它们如何按照顺序组成一个整体的架构&lt;/h5&gt;
&lt;p&gt;（原第七章）&lt;br&gt;
将主要部分按顺序与关联性列举出来。将全书的大纲列举出来，并将各个部分的大纲也列出来。找出一本书的架构是读者的责任，就像作者有责任设定架构一样。&lt;/p&gt;
&lt;p&gt;读者的架构和纲要可以和作者不一样，可以有更精准和易于理解的其他诠释，甚至比原作还长。只要读者和作者有一个没有偏向完美，最后的纲要都会不一样。但是纲要不要延伸出这本书。&lt;/p&gt;
&lt;p&gt;第二个规则要求注意书的整体性，第三个规则要求注意书的复杂性。这两个规则不仅适用于一本书，也适用于一本书中比较复杂的一部分。&lt;/p&gt;
&lt;h5&gt;规则四. 确定作者在问的问题，或者想要解决的问题&lt;/h5&gt;
&lt;p&gt;（原第七章）&lt;br&gt;
读者有责任精确找出作者在这本书中讨论的问题，如果问题很复杂则还要说出问题的主次。一般是这么几种：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;理论性问题
&lt;ul&gt;
&lt;li&gt;这件事存在吗？什么情况下存在？&lt;/li&gt;
&lt;li&gt;什么样的事？特征是什么？这件事如何进行？&lt;/li&gt;
&lt;li&gt;为什么会存在？发生的原因？目的是什么？造成的影响是什么？&lt;/li&gt;
&lt;li&gt;不同事件的关联是什么？&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;实用性问题
&lt;ul&gt;
&lt;li&gt;哪些结果可以选择？采取什么手段才能获得某种结果？达到某个目的应该采取的行动？行动的顺序？&lt;/li&gt;
&lt;li&gt;在上述条件下，什么是对的？怎样会更好？&lt;/li&gt;
&lt;li&gt;在什么条件下，这样做比上述做法好？&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;第二阶段：诠释一本书的内容&lt;/h4&gt;
&lt;p&gt;第二阶段是为了回答第二个问题：作者详细说了什么。&lt;/p&gt;
&lt;h5&gt;规则五. 诠释作者的关键字，与他达成共识&lt;/h5&gt;
&lt;p&gt;（原第八章）&lt;br&gt;
词义只在沟通的过程出现。除非读者与作者找出共通的词义，否则不可能把知识传递给另一方。因为词义是可供沟通的知识的基本要素，沟通之中如果还有未解决的模糊地带，就表示没有达成最好的沟通。&lt;/p&gt;
&lt;p&gt;关键字即读的过程中产生困扰的字，或者不是日常中约定为意义明确的字，或者作者明着强调一些字（称为专门用语或特殊用语，一般会反复出现或者反复去解释）。科学作品往往比非科学作品好读，因为科学作者会很仔细地与读者达成共识，把论述说得很清楚，而文学作品中没有。&lt;/p&gt;
&lt;p&gt;一个字可以有很多词义（Xa，Xb），这些意义要从上下文中已经了解的字句中推敲出来。一个词义也可以由不同字表达（Xa，Ya）。思想只会在词义中相遇，不会在字中相遇。&lt;/p&gt;
&lt;p&gt;这里的“字”，可以是单字，也可以是一个独立单位的片语。片语相比单字，表意不会那么模糊。&lt;/p&gt;
&lt;h5&gt;规则六. 由最重要的句子中，抓住作者的重要主旨&lt;/h5&gt;
&lt;p&gt;（原第九章）&lt;/p&gt;
&lt;p&gt;首先找到重要的句子：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主旨是声明知识或观点的陈述句。&lt;/li&gt;
&lt;li&gt;就像字和词义，主旨可以由多个句子表达，也可以一个句子表达多个主旨。一本书中通常只有少数几句话是最最核心的关键句。&lt;/li&gt;
&lt;li&gt;就像关键字，关键句就是读的时候难以理解的句子。关键句不是一个人感兴趣而慢慢读的句子，而是令人感到困扰而慢慢读的句子。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后抓出主旨：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;就像通过上下文确定词义，要借助前后相关的句子来了解这个句子。但是一个句子本身可能表达多个意思，这就需要自己写出主旨，并指出他们之间的相关性&lt;/li&gt;
&lt;li&gt;检验自己是否懂得一个句子的主旨：用完全不同的话写出句意，或者举一个经验（或实验）证明。&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;规则七. 知道作者的论述是什么，从内容中找出相关的句子，再重新架构出来&lt;/h5&gt;
&lt;p&gt;（原第九章）&lt;br&gt;
就像词义与文字、主旨与句子的关系。论述是在“段落”中体现的。注意这里“段落”可以是一句话也可以是好几段。突出的词义越多，突出的论述也越多。&lt;/p&gt;
&lt;p&gt;步骤：找出书中说明重要论述的段落，从那段中挑出句子，整理出前后顺序的主旨以及其组成的论述。如果论述没有被表达出来就要自己架构出来。&lt;/p&gt;
&lt;p&gt;论述的进一步说明&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所有论述都包含声明，这些声明就是读者接受作者的观点的理由。&lt;/li&gt;
&lt;li&gt;有两种论述
&lt;ul&gt;
&lt;li&gt;一个或多个事实→共通的概念：归纳法，用实验证实主张&lt;/li&gt;
&lt;li&gt;一连串通则→更进一步的共通概念：演绎法，用推论证实主张&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;论述是有开端的。
&lt;ul&gt;
&lt;li&gt;作者的假设&lt;/li&gt;
&lt;li&gt;能证实的或者有根据的事&lt;/li&gt;
&lt;li&gt;不证自明的主旨。这里又分为有启发性的和没有启发性的。有启发性指我们不知道一个东西的绝对定义，只能通过关系来确定，例如“整体大于部分”，因为我们没法孤立地定义整体是什么、部分是什么；没有启发性指已经有约定的东西再用这个约定说一遍（废话重说），例如“祖父是父亲的父亲”，因为我们称父亲的父亲为祖父。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;规则八. 确定作者已经解决了哪些问题，还有哪些是没解决的。再判断哪些是作者知道他没解决的问题&lt;/h5&gt;
&lt;p&gt;（原第九章）&lt;br&gt;
检视这一阶段收集到的有关这本书的信息，提出一些更进一步的问题。指出作者是否解决了问题，有没有新问题出现&lt;/p&gt;
&lt;h4&gt;第三阶段：像是沟通知识一样地评论一本书&lt;/h4&gt;
&lt;p&gt;这个阶段是为了回答第三个问题：这本书说的有道理吗，是全部有道理还是部分有道理？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当读者读完一本书的时候，读者已经自我提升到与作者同样的水平了。&lt;/li&gt;
&lt;li&gt;读者是最后一个说话的人，作者说完了该读者说。读者也必须说，能评论提出批评，才算真正完成了读书这件事。&lt;/li&gt;
&lt;li&gt;受教育是一种主动的美德，自动自发运用独立判断力学习到东西。&lt;/li&gt;
&lt;li&gt;前两个阶段是文法与逻辑，这个阶段要靠修辞的艺术。修辞就是要知道如何去说服对方。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;A. 智慧礼节的一般原则&lt;/strong&gt;&lt;br&gt;
这一部分讲批评式阅读的条件，到这里读者应该能与作者辩论。&lt;/p&gt;
&lt;h5&gt;规则九. 除非你已经完成大纲架构，也能诠释整本书了，否则不要轻易批评&lt;/h5&gt;
&lt;p&gt;（原第十章）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在说出“我同意”“我不同意”“我暂缓评论”之前，要肯定地说“我了解了”。&lt;/li&gt;
&lt;li&gt;注意暂缓评论也是一种评论，表示读者还没有被说服。&lt;/li&gt;
&lt;li&gt;表示“懂了”的时候，最好要小心一点&lt;/li&gt;
&lt;li&gt;如果只读懂了一部分，批评就要更小心&lt;/li&gt;
&lt;li&gt;表示“不懂”，应当要确认是书的问题而不是自己不够努力&lt;/li&gt;
&lt;li&gt;一本书有可能与作者的其他书有关，看了其他书才能完全理解&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;规则十. 不要争强好胜，非辩到底不可&lt;/h5&gt;
&lt;p&gt;（原第十章）&lt;br&gt;
当不同意作者的观点时，要理性地表达自己的意见，不要无理地辩驳或争论。如果怀疑自己是错的就不要去争辩（即使作者不能即时为自己辩护）。要讲真理事实，要诚实，要做好同意作者观点的心理准备。&lt;/p&gt;
&lt;h5&gt;规则十一. 在说出评论之前，你要能证明自己区别得出真正的知识与个人观点的不同&lt;/h5&gt;
&lt;p&gt;（原第十章）&lt;br&gt;
语言被情绪覆盖，是不完美的沟通媒介，但在理性程度之内，理解上的困难是可以克服的。只要排除误解、增加知识，就能解决争论。但人们往往只坚持最初自己的观点，不认为争议是排除误解、增加知识的教导与受教的过程。&lt;/p&gt;
&lt;p&gt;若读者发现自己的观点与书中不合，就要确定是由于知识还是由于个人意见而引起的争议。要相信就知识而言的争议是可以解决的。&lt;/p&gt;
&lt;p&gt;进一步地，要为自己的不同意见找到理论基础，这样这个议题才有机会被解决。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;B. 批评观点的特别标准&lt;/strong&gt;&lt;br&gt;
理想化的辩论应该满足下面三个条件&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;注意辩论时带入的情绪，否则争论就流于情绪化而非说理&lt;/li&gt;
&lt;li&gt;要把自己的前提或假设摊出来。好的辩论不会为了假设而争吵&lt;/li&gt;
&lt;li&gt;尽量尝试不偏不倚，用同理心阅读一本书&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;规则十二. 证明作者的知识不足&lt;/h5&gt;
&lt;p&gt;（原第十一章）&lt;br&gt;
要能说出作者所缺乏的知识，并且说明这些知识如何与这个问题相关，有了这些知识会如何下出一个不同的结论。&lt;/p&gt;
&lt;h5&gt;规则十三. 证明作者的知识错误&lt;/h5&gt;
&lt;p&gt;（原第十一章）&lt;br&gt;
知识不足不太可能解决某个问题，知识错误引导出错误的结论和站不住脚的解答，这两个规则都是说作者的前提有缺陷。要说明事实是什么。当然如果这个缺点不影响作者最后的结论就没必要追究了。&lt;/p&gt;
&lt;h5&gt;规则十四. 证明作者不合逻辑&lt;/h5&gt;
&lt;p&gt;（原第十一章）&lt;br&gt;
即推论荒谬，分为缺乏连贯和前后矛盾两种。这里主要指理论根据很好，但是导出的结论很差。好书的逻辑谬误一般不存在，或者藏得很深。&lt;/p&gt;
&lt;h5&gt;规则十五. 证明作者的分析与理由是不完整的&lt;/h5&gt;
&lt;p&gt;（原第十一章）&lt;br&gt;
如果读懂了，且找不出证据来反驳前面三个规则提到的批评点，则有义务同意作者的所有观点，没有权利不同意作者，只能说“不喜欢”作者的结论。这时候讨论的是作者是否完成了他的计划，讨论作者的成就是否是有局限的（资料没有用全、含义关系缺漏、想法不够与众不同）。此时才可以对一本书暂缓评论。&lt;/p&gt;
&lt;h4&gt;总结&lt;/h4&gt;
&lt;p&gt;前三个问题：这本书谈什么，细节处论述了什么，是否有道理。这是由于沟通的复杂性而需要列提纲、沟通不透明不完美而需要诠释彼此的想法、错误和无知局限真实和知识而需要批评。
至于第四个问题：这本书和我有什么关系、意义是什么，则关乎阅读的启发性。如果是为了追求知识而阅读，就要判断这些东西的意义，否则称不上有头脑的阅读。&lt;/p&gt;
&lt;h3&gt;Level x 辅助阅读&lt;/h3&gt;
&lt;p&gt;（原第十二章）&lt;br&gt;
不存在绝对孤立的阅读，因为我们免不了用自己过去的经验或者读过的其他书来与书中的声明或结论作比较。&lt;/p&gt;
&lt;p&gt;辅助阅读外在阅读（相较于读书籍本身的内在阅读），是借助其他书籍进行阅读的阅读方式。阅读中不建议过于依赖外在辅助，在寻求外力帮助之前最好自己一个人阅读，慢慢就发现越来越不需要外界助力了。在上述十五个规则下阅读之后仍然有不懂的地方，就要找外在帮助。&lt;/p&gt;
&lt;p&gt;外在辅助的四个来源：&lt;/p&gt;
&lt;h4&gt;相关经验&lt;/h4&gt;
&lt;p&gt;分为特殊经验和一般经验。特殊经验是需要主动寻找的，例如通过实验或考察。一般经验≠所有人都有的经验，绝大多数人的经验就是一般经验：例如家庭生活经验是一般经验，但是有些人出生就是孤儿；上学时一般经验，但是有些人从未上过学。&lt;/p&gt;
&lt;p&gt;一般经验与读小说和哲学书籍有关；判断一本小说的写实性，完全依赖一般经验。特殊经验与科学性作品有关。读历史作品与一般经验和特殊经验都有关，因为历史中有虚构和科学两部分。&lt;/p&gt;
&lt;p&gt;测试是否需要用自己的经验：看看在觉得自己已经了解的点上，能不能举几个例子。&lt;/p&gt;
&lt;h4&gt;其他的书&lt;/h4&gt;
&lt;p&gt;读历史和哲学书的时候尤其需要阅读相关的其他书。读其他书有助于提供一个更大的脉络，以诠释正在阅读的书。要依照成书时间从早到晚的顺序读。也可以读一读作者读过的书。&lt;/p&gt;
&lt;h4&gt;导论与摘要&lt;/h4&gt;
&lt;p&gt;尽量少用，因为导读不一定都是对的，就算写对了也不一定完整。读书之前不要看导读，因为那样就隶属于做导读的人了。尽力读完一本书，还有问题在干扰的时候才用导读来解答问题。&lt;/p&gt;
&lt;p&gt;摘要也少看。分析阅读的过程中就应该自己把摘要写出来了。别人的摘要起一个唤醒回忆的作用。但是主题阅读的时候，摘要很重要，用来确定是否要读这本书。&lt;/p&gt;
&lt;h4&gt;工具书&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;善用工具书&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;必须有一些想法，想要知道一些什么。&lt;/li&gt;
&lt;li&gt;知道问的是哪一类问题，哪一类工具书回答这类问题&lt;/li&gt;
&lt;li&gt;知道工具书是怎么组织的&lt;/li&gt;
&lt;li&gt;必须知道想找的是什么，哪种工具书能找到这样的东西&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工具书中主要的两类：字典和百科全书。他们都是教育与知识的工具&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用字典&lt;/strong&gt;&lt;br&gt;
字典是关于字的，不是关于事的。因此不可能查出问题的结论。好的字典能提供拼字和发音的关系、字的用法、字的意义、字的历史演变。再次强调，不要一直查字典，会打乱读书的思路，除非这个字的意思与主旨有关。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;使用百科全书&lt;/strong&gt;&lt;br&gt;
通读百科全书是没有意义的，会有被封为“书呆子”的风险。百科全书是关于事实的，不记载说理和论点（除非论点已经被广泛接受，或者把所有论点都放进来）。百科全书可以解决事实的争论，不能解决观点的争论。要学会用百科全书的索引（按字母排）和目录（按主题排）。&lt;/p&gt;
&lt;h3&gt;Level 4 主题阅读&lt;/h3&gt;
&lt;p&gt;（原第二十章）&lt;br&gt;
主题阅读是可行的，因为人类是可以沟通的，不同作者之间可以找到共通的词汇和概念。主题是随着阅读不断调整优化的。设计试验性书单，一般以论述性作品为主。主题阅读，可以使用主题工具书，告诉读者去哪里找与主题相关的章节。三方面的帮助：启动阅读、建议阅读、指导阅读。&lt;/p&gt;
&lt;h4&gt;主题阅读的准备阶段&lt;/h4&gt;
&lt;p&gt;分析阅读之前必须进行检视阅读，即系统略读和粗浅阅读。它能提供一个有关主题的清晰概念，并且书目简化到一个合理的程度。检视之后能将书单上的书进行分类，对内容有一个粗浅的了解，知道这本书对于研究的主题到底重不重要。&lt;/p&gt;
&lt;h4&gt;主题阅读的步骤&lt;/h4&gt;
&lt;p&gt;没有前一步就没有后一步。&lt;/p&gt;
&lt;h5&gt;步骤一. 找到相关的章节&lt;/h5&gt;
&lt;p&gt;主题阅读关心的是主题，而不是一本书。一本书对主题的帮助可能与作者写书的目的相去甚远。所以只要找出与主题最相关的章节即可。注意这一步不要和检视阅读放在一起做，因为这需要检视完所有书才能做到。&lt;/p&gt;
&lt;h5&gt;步骤二. 带引作者与你达成共识&lt;/h5&gt;
&lt;p&gt;根据主题创造出一套中立的词汇，强迫作者使用读者的语言而不是他自己的语言，无论作者是否用到这些词汇。&lt;/p&gt;
&lt;h5&gt;步骤三. 厘清问题&lt;/h5&gt;
&lt;p&gt;建立一个中立的主旨，列出一连串问题，让不同作者来回答。如果作者没有回答这些问题，要么有间接的回答，要么作者认为这个问题不是问题，或者他保持沉默。如果所有作者都用同一个方法回答问题，那问题就被一致的意见解决了。&lt;/p&gt;
&lt;h5&gt;步骤四. 界定议题&lt;/h5&gt;
&lt;p&gt;界定主要及次要的议题，两个作者对同一个问题有相当的了解但是给出了矛盾的回答的问题才是真正有参与的议题。然后将作者针对各个问题的不同意见整理陈列在各个议题之旁。作者之间不见得一定存在某个议题，有时候需要针对一些不是作者主要关心范围的事情，把他的观点解读，才能建构出议题。&lt;/p&gt;
&lt;h5&gt;步骤五. 分析讨论&lt;/h5&gt;
&lt;p&gt;这得把问题和议题按顺序排列，以易于说明主题本身或讨论的内容。比较有共通性的议题，要放在比较没有共通性的议题之前。各个议题之间的关系也要清楚地界定出来。&lt;/p&gt;
&lt;h4&gt;客观的必要性&lt;/h4&gt;
&lt;p&gt;有可能争论各方的意见都是错的或者不接近真实的。主题阅读的特质：辩证的客观，就是要能面面俱到而自己并不预设立场。这很难，因为偏见可能通过各种方式出现，例如总结论述的方式、侧重、评论语气、回答的顺序等。&lt;/p&gt;
&lt;p&gt;要不断回头参阅作者的原文，重新阅读相关章节。总结的时候要用中立语言。&lt;/p&gt;
&lt;h2&gt;Chapter 3 阅读的方法&lt;/h2&gt;
&lt;h3&gt;如何阅读论述性作品&lt;/h3&gt;
&lt;h4&gt;实用型的书&lt;/h4&gt;
&lt;p&gt;（原第十三章）&lt;br&gt;
任何实用性的书都不能替读者解决该书所关心的实际问题。&lt;/p&gt;
&lt;p&gt;实用的书要被实用地阅读。阅读一本以规则为主的书时，要寻找那些规则。规则通常是命令句，如果是陈述句一般带有建议性。阅读一本主要谈规则背后的原理的书时，主旨比较像理论性的书，要看出原理衍生出来的规则，进一步找出规则应该如何应用。&lt;/p&gt;
&lt;p&gt;规则要谈得上是真理，一是真的有效，二是这样做能达到正确的结果、读者的期望。评价一本实用性的书，要评价它的结果与目标。&lt;/p&gt;
&lt;p&gt;阅读步骤，与那四个问题大致一致：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;作者的目的是什么？&lt;/li&gt;
&lt;li&gt;作者建议用什么方法达到这个目的，为什么？&lt;/li&gt;
&lt;li&gt;是否接受作者的结论和他提出的方法？&lt;/li&gt;
&lt;li&gt;这本书的意义，这一点改成我是否按照这个规则实际执行下去？&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;历史书&lt;/h4&gt;
&lt;p&gt;（原第十六章）&lt;br&gt;
历史有就事实而言的历史和就书写记录而言的历史。事实是无法阅读的，所以这里谈的是书写记录的历史。我们定义，历史是叙事的，不论是否有秩序，其中都隐含着主题，否则不叫历史。&lt;/p&gt;
&lt;p&gt;历史的特点：史实很难确定。历史是过去的故事，更像小说而非科学，但好的历史学家不会编造过去。&lt;/p&gt;
&lt;p&gt;阅读历史书，第一，对感兴趣的事件或时期看一种以上的历史书；第二，不要只关心事件的时间地点，要读懂为什么人会如此这般行动，以推广到任何时空，尤其是现在。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;阅读历史书要提出的问题&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;谈到的主题是什么？&lt;/li&gt;
&lt;li&gt;用什么方法来说故事？&lt;/li&gt;
&lt;li&gt;这个历史是否与相关事实相符？&lt;/li&gt;
&lt;li&gt;这个历史对我的政治行为有什么启发？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;传记&lt;/strong&gt;也是一种历史。定案本：对一个人一生的完整报告，要用读历史的方式读。授权本：一般是这个人身边的人写的，可能有偏见（因为作者希望读者能用他的想法看主角）。介于之间的就是一般传记。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;当前的事件&lt;/strong&gt;也是历史，我们有义务了解身边的世界。但是当前的事件的信息源有限，一般是新闻报道，所以最重要的就是报道是谁写的，要问：作者想证明什么、要说服谁、他具有的特殊观念、使用的特殊语言、他是否真的知道事实。最重要的一点，目睹者要擦亮眼睛，考虑其中的利益关系。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;读文摘&lt;/strong&gt;
虽然是为了理解而阅读，但是获得资讯是必要的。文摘相当于分析阅读做的摘要。做摘要的时间省去了，就要仔细阅读摘要，在浓缩过的句子中读出言外之意。&lt;/p&gt;
&lt;h4&gt;科学与数学&lt;/h4&gt;
&lt;p&gt;（原第十七章）&lt;br&gt;
这一章只讨论两种书：伟大的经典作品，现代科普著作。如今的科学论文是专家之间交换知识用的，而不是给门外汉看的，所以“我们没有资格帮助读者阅读”。&lt;/p&gt;
&lt;p&gt;第一个问题“想要解决的是什么问题”，注意到问题本身以及问题的背景才算回答完这个问题。&lt;/p&gt;
&lt;p&gt;第二个问题，之前提到科学作者会很努力与读者达成共识。科学的客观不在于最初的偏见，而在于坦白承认。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;阅读科学作品的难点&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一、有关论述的问题。科学是归纳法和演绎法，为了了解过程中的各个论点，就必须了解理论基础的证据，这需要读者亲身体验实验过程，或者去观察标本和模型。&lt;/p&gt;
&lt;p&gt;二、有关数学的问题。许多科学作品涉及数学。数学是一种语言，有自己的字汇和语法，弄懂他们属于基础阅读层次。重点：首先要把基础程度的数学读明白，克服对数学的恐惧心理，读一些经典作品（这些作品不难读，而且可以略读）。其次要随时做笔记，掌握定理的说明、证明、引理、结论。注意读数学只是为了了解科学作品中的相关问题，所以不必太深入。&lt;/p&gt;
&lt;h4&gt;哲学书&lt;/h4&gt;
&lt;p&gt;（原第十八章）&lt;br&gt;
哲学家提出的问题看起来不简单，因为回答起来很困难。提问题的时候如孩子般单纯，回答的时候却成熟而睿智。哲学家会提的问题分为两类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与存在和发生有关，称为理论性或思辨性的哲学
&lt;ul&gt;
&lt;li&gt;主要探讨存在性，称为形上学&lt;/li&gt;
&lt;li&gt;主要探讨事物的变化，称为自然哲学&lt;/li&gt;
&lt;li&gt;主要探讨认知与知识，称为认知论&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;与应该做或探寻的事有关，称为实用的或规范的哲学&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;第一顺位问题：世上存在或发生什么事、人类该做该追求什么的问题；第二顺位问题：第一顺位中的知识、思考模式、表达方式等问题。第二顺位问题是哲学家为哲学家写的东西，第一顺位问题是普通大众感兴趣的问题。这里探讨第一顺位问题。&lt;/p&gt;
&lt;p&gt;哲学的方法：比一般人更深刻地思考这个问题。不是观察探索，也不是寻找比一般人更多的经验。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;哲学的论述风格&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哲学对话，讨论-提问-说明主题，在立场从冲突中表达论说。好处：启发性，引领读者自己发现。代表人物：柏拉图&lt;/li&gt;
&lt;li&gt;哲学论文或散文，提出主题-指出主要问题-从各方面完整讨论主题-讨论特殊问题，直接叙述自己的观点。好处：清晰，有秩序。代表人物：亚里士多德，康德&lt;/li&gt;
&lt;li&gt;面对异议，提出问题-呈现错误回答-演绎错误论述-用经文反驳-解决方案。好处：整齐有序，在对立和冲突中让真理浮现。代表人物：托马斯·阿奎那&lt;/li&gt;
&lt;li&gt;哲学系统化，用数学组织的方式将哲学本身整理出来，用严格的命题、证明、引理、旁注表现哲学问题。好处：组织化、离散化，可以像略读科学作品一样读哲学。代表人物：笛卡尔，斯宾诺莎&lt;/li&gt;
&lt;li&gt;格言形式。好处：简短句子，有言外之意，要自己运用思考来理解。代表人物：尼采，帕斯卡，东方哲学家&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;阅读哲学的提示&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;最重要的一步，发现问题，或者找到书中想要回答的问题。&lt;/li&gt;
&lt;li&gt;找出作者回答问题时的中心思想与原则。有的书没有明显地写出来，比较难找。&lt;/li&gt;
&lt;li&gt;找到作者如何将这种概念在整本书中贯彻到底&lt;/li&gt;
&lt;li&gt;理解作者的词义与基本主旨&lt;/li&gt;
&lt;li&gt;接受作者的假设。通常这些假设是直接来自经验，是自明之理&lt;/li&gt;
&lt;li&gt;运用思考、常识和观察，就像写作一样阅读哲学书&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;评论哲学书：读懂一本哲学书、以及其他谈论相同主题的书之后，就可以有评论的立场了。责任是厘清思路，哲学家彼此意见合不合不重要&lt;/p&gt;
&lt;p&gt;读神学书：对于不信仰的人，要按读数学的精神读，即接受它的首要原则。对信仰的人，信仰是确定的知识，不是假设也不是试验性观点。&lt;/p&gt;
&lt;p&gt;读经书/用于通过考试的教材：有义务从中找到意义，并从其他事实中举证其真实性。如果自己不能这么做，则有义务找能做到的人。&lt;/p&gt;
&lt;h4&gt;社会科学&lt;/h4&gt;
&lt;p&gt;（原第十九章）&lt;/p&gt;
&lt;p&gt;社会科学包括了很多东西，人类学、经济学、政治学和社会学是核心，法律、教育、行政、社会服务作品也算。严格的人将心理学排除在外，因为心理学是个人特质而不是社会，但这里还是将心理学作品纳入考量。历史不算社会科学。或曰行为科学几乎成为了社会科学的同义词。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;读社会科学的容易处=读社会科学的困难处&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;容易处：术语很熟悉。困难处：有的任意引用，不知道真正的意义。社会科学术语的说明本身就难，涉及情感、隐喻等。&lt;/li&gt;
&lt;li&gt;容易处：取材于一般经验，涉及一般人都会有强烈意见的议题。困难处：混杂方式复杂，阅读的第一个问题就很难回答。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;阅读社会科学，关于一个主题要读好几本书，因为作为新领域只有少数经典作品，且读社会科学时候主要着眼在特殊事件和问题，而不是特殊作者和一本书。衔接原先第二十章主题阅读&lt;/p&gt;
&lt;h3&gt;如何阅读想象文学&lt;/h3&gt;
&lt;p&gt;这类书的娱乐性大于教育性。所以上述的阅读方法需要做适当转化。&lt;/p&gt;
&lt;h4&gt;想象文学&lt;/h4&gt;
&lt;p&gt;（原第十四章）&lt;/p&gt;
&lt;p&gt;论说作品传达知识，想象文学阐述经验本身。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;“不要”&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不要抗拒想象文学带给你的影响力。让故事在读者身上活动，达成某种深沉的经验。&lt;/li&gt;
&lt;li&gt;不要找共识、主旨或论述。享受文字的多重字义带来的丰富性与渲染力。从想象中创造出的经验中学习。&lt;/li&gt;
&lt;li&gt;不要用适用于传递知识的、与真理一致的标准来批评小说。只要能自圆其说就行了，读者想要的是故事，只要能在读者心中重建的世界中发生就行了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;“要”&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一阶段（拟大纲）规则
&lt;ul&gt;
&lt;li&gt;将想象文学作品分类。抒情诗（个人经验）、小说与戏剧（情节复杂，多角色）&lt;/li&gt;
&lt;li&gt;用一两句话说明整本书的大意。大意在情节之中，也就是要能简要说明剧情。&lt;/li&gt;
&lt;li&gt;发现书的各部分（情节）是如何架构起来的。知道故事从哪里开始、中间经过什么事、结局是什么；高潮如何发生、对之后情节的影响。抽离出情节来看是毫无意义的。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;第二阶段（诠释内容）规则
&lt;ul&gt;
&lt;li&gt;熟知每个事件和人物的细节。因为小说的要素（事件、角色、思想、行为）就是作品中的共识。&lt;/li&gt;
&lt;li&gt;想象亲临现场身历其境，知道事件的进行，找出要素之间的关联性，进而找出主旨。&lt;/li&gt;
&lt;li&gt;参与作品中的任何活动，和角色共同完成探险。活动就是想象作品的论述发展。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;第三阶段（评价）规则
&lt;ul&gt;
&lt;li&gt;先欣赏作者借由你的情绪和想象力创造出的世界与经验，否则不要批评一本想象作品。一个好的读者不会质疑自己心中重建出的世界。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;第四阶段（实际意义）规则（在第十五章）
&lt;ul&gt;
&lt;li&gt;感受与体验。分析完想象文学之后是不用采取什么行动的，即使引导出行动也没有行动的必要，因为这不属于艺术领域。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;阅读故事、戏剧与诗的一些建议&lt;/h4&gt;
&lt;p&gt;（原第十五章）&lt;br&gt;
&lt;strong&gt;读故事书&lt;/strong&gt;&lt;br&gt;
快且全神投入地读。快是为了避免遗忘情节，全神投入是为了相信角色，活在他们的世界中。不必在意没明白的细节和复杂的人物情节，读完一遍后再读自然就知道有什么、什么是重要的、事件的关联、活动的顺序了。&lt;/p&gt;
&lt;p&gt;评价故事书：虚构的故事能满足潜意识中的情绪需要。要分清是满足个人特殊潜意识还是大多数人潜意识。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;读史诗&lt;/strong&gt;&lt;br&gt;
认真的读书计划不可或缺的六本书：荷马《伊里亚特》《奥德赛》、维吉尔《埃涅阿斯纪》、但丁《神曲》、弥尔顿《失乐园》、《圣经》。史诗需要集中注意力，全心参与并运用想象力&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;读戏剧&lt;/strong&gt;&lt;br&gt;
读剧本缺乏的是身体语言实际的演出。读者必须假装看到演出的实景。要把剧本搬到心灵舞台上演出一遍。剧作家不会留下舞台指导，读者作为导演要自己决定和判断，这一判断会是了解戏剧的中心点。&lt;/p&gt;
&lt;p&gt;读萧伯纳式剧本，要读前言。&lt;/p&gt;
&lt;p&gt;像是有听众在听一样，慢慢、带感情、大声读出剧本。可以让句子对读者别有深意。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;读悲剧&lt;/strong&gt;&lt;br&gt;
悲剧的精髓在于缺乏时间。要想象在有限的时间中认识事物。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;读抒情诗&lt;/strong&gt;&lt;br&gt;
诗如果不是赞美、或是唤起行动、或是不以韵文或诗的语言写作，就算不上诗。&lt;/p&gt;
&lt;p&gt;规则一：一口气读完不要停，不管看没看懂。
规则二：重新读，大声读出来，发现韵律
掌握诗歌大意之后（即使很模糊），开始提问，一般是修辞和句法的问题。&lt;/p&gt;
&lt;p&gt;一般没必要读“那个时代的资讯”，因为背景资料不一定保证读者能理解一首诗。&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Appendix 1 一些语段&lt;/h2&gt;
&lt;p&gt;整本书语言没有写的很优雅，甚至有点啰嗦。但是这本书中一些论述十分深刻。这里记录一些我比较有印象的句子。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;太多资讯如同太少资讯一样，都是对理解力的阻碍。现代的媒体正以压倒性的泛滥资讯阻碍了我们的理解力。……（媒体）的精心设计、独创辞藻与挑选统计使得人不需要面对困难或努力整理出“自己”的思路。（8）&lt;/li&gt;
&lt;li&gt;阅读是跟着一位缺席的老师学习。向一本书问问题，必须自己回答这个问题。这本书就跟自然或世界一样，当你提出问题时，只有等你自己做了思考和分析之后，才能在书本上找到答案。（17）&lt;/li&gt;
&lt;li&gt;如果你容许自己被某个顽固的段落绑住了，你就是被打败了。（35）&lt;/li&gt;
&lt;li&gt;如果阅读的目标是获得利益（成长），在阅读中就要保持清醒。（42）&lt;/li&gt;
&lt;li&gt;人们读一本好书的时候会打瞌睡，并不是他们不想努力，而是因为他们不知道如何努力。他们挂念着想读的好书太多了。而除非他们能真正起身接触到他们，把自己提升到同样的层次，否则他们所挂念的这些好书只会使他们厌倦而已。（44）&lt;/li&gt;
&lt;li&gt;一个人如果称他知道他在想些什么，却说不出来，通常是他其实并不知道自己在想些什么。（45）&lt;/li&gt;
&lt;li&gt;不论一个作品如何有原创性，不论他打破了多少传统所知的规则，他都必须有做出这样成品的技巧。（49）&lt;/li&gt;
&lt;li&gt;习惯≠规则。阅读中有许多规则和技巧需要掌握。规则的多样化意味着要养成一个复杂的习惯，而不是多个习惯。要对每一个规则都很熟练，然后连贯起来形成一个整体流畅的动作。（50）&lt;/li&gt;
&lt;li&gt;哲学老师会觉得以前没有被其他哲学老师教过的学生比较好教，科学老师会希望学生已经被其他科学老师所训练过。（68）&lt;/li&gt;
&lt;li&gt;理性是人类表达同意的力量源泉，而人类的兽性与理性中不完美的部分则是造成许多不同意的原因。（132）&lt;/li&gt;
&lt;li&gt;外界刺激的力量是有限的，像药品一样。如果没有内在生命力量，我们的智力、品德与心灵就会停止成长。当我们停止成长时，也就迈向了死亡。（297）&lt;/li&gt;
&lt;li&gt;Q.E.D. 的全称：Quod erat demonstrandum （228）&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Appendix 2 原书目录&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;（上面的笔记是按我自己的思路整理的，与原书的目录对不上。）&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;序言&lt;/li&gt;
&lt;li&gt;第一篇 阅读的层次
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;第一章 阅读的活力与艺术&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;主动的阅读&lt;/li&gt;
&lt;li&gt;阅读的目标：为获得资讯而读，以及为求得理解而读&lt;/li&gt;
&lt;li&gt;阅读就是学习：指导型的学习，以及自我发现型学习之间的差异&lt;/li&gt;
&lt;li&gt;老师的出席与缺席&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第二章 阅读的层次&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第三章 阅读的第一个层次：基础阅读&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;学习阅读的阶段&lt;/li&gt;
&lt;li&gt;阅读的阶段与层次&lt;/li&gt;
&lt;li&gt;更高层次的阅读与高等教育&lt;/li&gt;
&lt;li&gt;阅读与民主教育的理念&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第四章 阅读的第二个层次：检视阅读&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;检视阅读一：有系统的略读或粗读&lt;/li&gt;
&lt;li&gt;检视阅读二：粗浅的阅读&lt;/li&gt;
&lt;li&gt;阅读的速度&lt;/li&gt;
&lt;li&gt;逗留与倒退&lt;/li&gt;
&lt;li&gt;理解的问题&lt;/li&gt;
&lt;li&gt;检视阅读的摘要&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第五章 如何做一个自我要求的读者&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;主动的阅读基础：一个阅读者要提出的四个基本问题&lt;/li&gt;
&lt;li&gt;如何让一本书真正属于你自己&lt;/li&gt;
&lt;li&gt;三种做笔记的方法&lt;/li&gt;
&lt;li&gt;培养阅读的习惯&lt;/li&gt;
&lt;li&gt;由许多规则中养成一个习惯&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;第二篇 阅读的第三个层次：分析阅读
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;第六章 一本书的分类&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;书籍分类的重要性&lt;/li&gt;
&lt;li&gt;从一本书的书名中你能学到什么&lt;/li&gt;
&lt;li&gt;实用性vs.理论性作品&lt;/li&gt;
&lt;li&gt;理论性作品的分类&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第七章 透视一本书&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;结构与规划：叙述整本书的大意&lt;/li&gt;
&lt;li&gt;驾驭复杂的内容：为一本书拟大纲的技巧&lt;/li&gt;
&lt;li&gt;阅读与写作的互惠技巧&lt;/li&gt;
&lt;li&gt;发现作者的意图&lt;/li&gt;
&lt;li&gt;分析阅读的第一个阶段&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第八章 与作者找出共通的词义&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;单字vs.词义&lt;/li&gt;
&lt;li&gt;找出关键字&lt;/li&gt;
&lt;li&gt;专门用语及特殊字汇&lt;/li&gt;
&lt;li&gt;找出字义&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第九章 判断作者的主旨&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;句子与主旨&lt;/li&gt;
&lt;li&gt;找出关键句&lt;/li&gt;
&lt;li&gt;找出主旨&lt;/li&gt;
&lt;li&gt;找出论述&lt;/li&gt;
&lt;li&gt;找出解答&lt;/li&gt;
&lt;li&gt;分析阅读的第二个阶段&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第十章 公正地评断一本书&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;受教是一种美德&lt;/li&gt;
&lt;li&gt;修辞的作用&lt;/li&gt;
&lt;li&gt;暂缓评论的重要性&lt;/li&gt;
&lt;li&gt;避免争强好辩的重要性&lt;/li&gt;
&lt;li&gt;化解争议&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第十一章 赞同或反对作者&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;偏见与公正&lt;/li&gt;
&lt;li&gt;判断作者的论点是否正确&lt;/li&gt;
&lt;li&gt;判断作者论述的完整性&lt;/li&gt;
&lt;li&gt;分析阅读的第三个阶段&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第十二章 辅助阅读&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;相关经验的角色&lt;/li&gt;
&lt;li&gt;其他的书可以当作阅读时的外在助力&lt;/li&gt;
&lt;li&gt;如何运用导读与摘要&lt;/li&gt;
&lt;li&gt;如何运用工具书&lt;/li&gt;
&lt;li&gt;如何使用字典&lt;/li&gt;
&lt;li&gt;如何使用百科全书&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;第三篇 阅读不同读物的方法
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;第十三章 如何阅读实用型的书&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;两种实用性的书&lt;/li&gt;
&lt;li&gt;说服的角色&lt;/li&gt;
&lt;li&gt;赞同实用书之后&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第十四章 如何阅读想象文学&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;读想象文学的“不要”&lt;/li&gt;
&lt;li&gt;阅读想象文学的一般规划&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第十五章 阅读故事、戏剧与诗的一些建议&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;如何阅读故事书&lt;/li&gt;
&lt;li&gt;关于史诗的重点&lt;/li&gt;
&lt;li&gt;如何阅读戏剧&lt;/li&gt;
&lt;li&gt;关于悲剧的重点&lt;/li&gt;
&lt;li&gt;如何阅读抒情诗&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第十六章 如何阅读历史书&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;难以捉摸的史实&lt;/li&gt;
&lt;li&gt;历史的理论&lt;/li&gt;
&lt;li&gt;历史中的普适性&lt;/li&gt;
&lt;li&gt;阅读历史书要提出的问题&lt;/li&gt;
&lt;li&gt;如何阅读传记与自传&lt;/li&gt;
&lt;li&gt;如何阅读关于当前的事件&lt;/li&gt;
&lt;li&gt;关于文摘的注意事项&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第十七章 如何阅读科学与数学&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;了解科学这一门行业&lt;/li&gt;
&lt;li&gt;阅读科学经典名著的建议&lt;/li&gt;
&lt;li&gt;面对数学的问题&lt;/li&gt;
&lt;li&gt;掌握科学作品中的数学问题&lt;/li&gt;
&lt;li&gt;关于科普书的重点&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第十八章 如何阅读哲学书&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;哲学家提出的问题&lt;/li&gt;
&lt;li&gt;现代哲学与传承&lt;/li&gt;
&lt;li&gt;哲学的方法&lt;/li&gt;
&lt;li&gt;哲学的风格&lt;/li&gt;
&lt;li&gt;阅读哲学的提示&lt;/li&gt;
&lt;li&gt;厘清你的思绪&lt;/li&gt;
&lt;li&gt;关于神学的重点&lt;/li&gt;
&lt;li&gt;如何阅读“经书”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第十九章 如何阅读社会科学&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;什么是社会科学？&lt;/li&gt;
&lt;li&gt;阅读社会科学的容易处&lt;/li&gt;
&lt;li&gt;阅读社会科学的困难处&lt;/li&gt;
&lt;li&gt;阅读社会科学作品&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;第四篇 阅读的最终目标
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;第二十章 阅读的第四个层次：主题阅读&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;在主题阅读中，检视阅读所扮演的角色&lt;/li&gt;
&lt;li&gt;主题阅读的五个步骤&lt;/li&gt;
&lt;li&gt;客观的必要性&lt;/li&gt;
&lt;li&gt;主题阅读的练习实例：进步论&lt;/li&gt;
&lt;li&gt;如何应用主题工具书&lt;/li&gt;
&lt;li&gt;构成主题阅读的原则&lt;/li&gt;
&lt;li&gt;主题阅读精华摘要&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第二十一章 阅读与心智成长&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;好书能给我们什么帮助&lt;/li&gt;
&lt;li&gt;书的金字塔&lt;/li&gt;
&lt;li&gt;生命与心智的成长&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;附录一 建议阅读书目&lt;/li&gt;
&lt;li&gt;附录二 四种层次阅读的练习与测验&lt;/li&gt;
&lt;li&gt;索引&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="/_astro/how-to-read-a-book.kwDyfyWE.jpg"/><enclosure url="/_astro/how-to-read-a-book.kwDyfyWE.jpg"/></item><item><title>数学分析 记忆佛脚（上）</title><link>https://chinosan.com/blog/math-analysis/fojiao1</link><guid isPermaLink="true">https://chinosan.com/blog/math-analysis/fojiao1</guid><description>数学分析（一）考前重点速通，函数与极限、导数与微分、不定积分、定积分、常微分方程</description><pubDate>Sat, 30 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Aside } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;目录（点击章节名称跳转到原始笔记）&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;./fojiao1&quot;&gt;（数学分析 记忆佛脚 上）↗&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主线第一篇：极限论
&lt;ul&gt;
&lt;li&gt;Chapter 1 函数与极限&lt;/li&gt;
&lt;li&gt;Chapter 2 导数与微分&lt;/li&gt;
&lt;li&gt;Chapter 3 函数与极限二周目&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;主线第二篇：积分学
&lt;ul&gt;
&lt;li&gt;Chapter 4 不定积分&lt;/li&gt;
&lt;li&gt;Chapter 5 定积分&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;支线 1：Chapter 6 线性空间理论概述&lt;/li&gt;
&lt;li&gt;支线 2：Chapter 7 常微分方程&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;./fojiao2&quot;&gt;（数学分析 记忆佛脚 下）↗&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;主线第三篇：多元微积分
&lt;ul&gt;
&lt;li&gt;Chapter 8 欧氏空间上的函数与极限&lt;/li&gt;
&lt;li&gt;Chapter 9 多元函数微分学&lt;/li&gt;
&lt;li&gt;Chapter 10 重积分&lt;/li&gt;
&lt;li&gt;Chapter 11 曲线积分与曲面积分&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;主线第四篇：级数与广义积分
&lt;ul&gt;
&lt;li&gt;Chapter 12 数项级数&lt;/li&gt;
&lt;li&gt;Chapter 13 函数项级数&lt;/li&gt;
&lt;li&gt;Chapter 14 广义积分与含参变量积分&lt;/li&gt;
&lt;li&gt;Chapter 15 Fourier级数与Fourier积分&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Taylor 表&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;有阶乘：
&lt;ul&gt;
&lt;li&gt;$\mathrm{e}^x=1+x+\dfrac12x^2+\dfrac16x^3\cdots$&lt;/li&gt;
&lt;li&gt;$\sin x=x-\dfrac16x^3+\dfrac{1}{120}x^5\cdots$&lt;/li&gt;
&lt;li&gt;$\cos x=1-\dfrac12x^2+\dfrac{1}{24}x^4\cdots$（sin求导）&lt;/li&gt;
&lt;li&gt;$(1+x)^\alpha=1+\alpha x+\dfrac{\alpha(\alpha!-!1)}{2}x^2+\dfrac{\alpha(\alpha!-!1)(\alpha!-!2)}{6}x^3\cdots$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;不阶乘：
&lt;ul&gt;
&lt;li&gt;$\dfrac{1}{1-x}=1+x+x^2\cdots$（等比数列求和）&lt;/li&gt;
&lt;li&gt;$\dfrac{1}{1+x}=1-x+x^2\cdots$（上式自变量取反）&lt;/li&gt;
&lt;li&gt;$\ln(1+x)=x-\dfrac12x^2+\dfrac13x^3\cdots$（第二条公式积分）&lt;/li&gt;
&lt;li&gt;$\arctan x=x-\dfrac13x^3+\dfrac15x^5\cdots$（第二条公式令 $x=x^2$ 再积分）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;无规律：
&lt;ul&gt;
&lt;li&gt;$\sqrt{1+x}=1+\dfrac12x-\dfrac18x^2+\dfrac1{16}x^3\cdots$&lt;/li&gt;
&lt;li&gt;$\sqrt[3]{1+x}=1+\dfrac13x-\dfrac19x^2+\dfrac5{81}x^3\cdots$&lt;/li&gt;
&lt;li&gt;$\tan x=x+\dfrac13x^3+\dfrac2{15}x^5\cdots$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;积分表&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;三角函数类
$$
\left{
\begin{aligned}
\cot&apos;x&amp;#x26;= \dfrac{-1}{\sin^2x}\
\tan&apos;x&amp;#x26;= \dfrac{1}{\cos^2x}\
\end{aligned}
\right.
\quad\quad
\left{
\begin{aligned}
\left(\dfrac1{\sin x}\right)&apos;&amp;#x26;= \dfrac{\cos x}{\sin^2x}\
\left(\dfrac1{\cos x}\right)&apos;&amp;#x26;= \dfrac{-\sin x}{\cos^2x}\
\end{aligned}
\right.
\quad\quad
\left{
\begin{aligned}
\textstyle\int \tan x ,\mathrm{d}x&amp;#x26;= -\ln|\cos x,|+C\
\textstyle\int \cot x ,\mathrm{d}x&amp;#x26;= \ \ \ \ln|\sin x\ |+C\
\textstyle\int \dfrac{1}{\sin x} ,\mathrm{d}x&amp;#x26;= \dfrac12\ln\left|\dfrac{1-\cos x}{1+\cos x}\right|+C
\end{aligned}
\right.
$$&lt;/li&gt;
&lt;li&gt;平方和倒数
$$
\int \dfrac{\mathrm{d}x}{a^2+x^2}=\dfrac1a\int \dfrac{\mathrm{d}x}{1+(\frac xa)^2}=\dfrac1a\arctan \left(\dfrac xa\right)+C
$$
$$
\int \dfrac{\mathrm{d}x}{(a^2+x^2)^2}=\dfrac{1}{2a^2}\left[\frac{x}{a^2+x^2}-\frac1a\arctan \left(\frac xa\right)\right]+C
$$&lt;/li&gt;
&lt;li&gt;双曲三角函数
&lt;ul&gt;
&lt;li&gt;$x=\sinh t\Rightarrow t=\ln(x+\sqrt{x^2+1})$&lt;/li&gt;
&lt;li&gt;$x=\cosh t\Rightarrow t=\ln(x+\sqrt{x^2-1})$&lt;/li&gt;
&lt;li&gt;如何判断换成哪个：看根号里面的符号
&lt;ul&gt;
&lt;li&gt;换 $\sqrt{x^2{,\color{orange}+,}1}{}$ 中的元时，用 $\sinh$，根号里面是加&lt;/li&gt;
&lt;li&gt;换 $\sqrt{x^2{,\color{orange}-,}1}{}$ 中的元时，用 $\cosh$，根号里面是减&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;点火公式 $\displaystyle\int_0^{\pi/2}(\sin x)^n,\mathrm{d}x=\displaystyle\int_0^{\pi/2}(\cos x)^n,\mathrm{d}x=k\cdot\dfrac{(n-1)!!}{n!!}{}$
&lt;ul&gt;
&lt;li&gt;当 $n$ 偶时 $k=\pi/2$&lt;/li&gt;
&lt;li&gt;当 $n$ 奇时 $k=1$&lt;/li&gt;
&lt;li&gt;从分母开始倒数&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;三角有理化
&lt;ul&gt;
&lt;li&gt;$t=\tan\dfrac x2$，$\mathrm{d}x=\dfrac{2}{1+t^2}\mathrm{d}t$&lt;/li&gt;
&lt;li&gt;$\tan x=\dfrac{2t}{1-t^2}{}$，（tan的二倍角公式）&lt;/li&gt;
&lt;li&gt;$\sin x=\dfrac{2t}{1+t^2}{}$，（刚才的减号改成了加号）&lt;/li&gt;
&lt;li&gt;$\cos x=\dfrac{1-t^2}{1+t^2}{}$，（sin/tan）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;常微分方程&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;$y(x)$ 不好解时，可以改为求 $x(y)$&lt;/li&gt;
&lt;li&gt;永远先尝试看看能不能凑微分，使得可以等式两边同时积分&lt;/li&gt;
&lt;li&gt;一阶线性：$y&apos;+P(x)y=Q(x)$
&lt;ul&gt;
&lt;li&gt;令 $\boxed{\color{transparent}{\small ccc} }=\mathrm{e}^{\int P(x)\mathrm{d}x}{}$，$y=\dfrac1{\boxed{\color{transparent}{\small ccc} } }\left(C+\displaystyle\int\boxed{\color{transparent}{\small cccc} }\ Q(x),\mathrm{d}x\right)$&lt;/li&gt;
&lt;li&gt;变形：Bernoulli 方程 $y&apos;+P(x)y=Q(x)y^n$
&lt;ul&gt;
&lt;li&gt;把 $y^n$ 除过去，令 $u=y^{1-n}{}$ 得 $u&apos;+P(x)(1!-!n)u=Q(x)(1!-!n)$&lt;/li&gt;
&lt;li&gt;若 $n=1$，移项合并 $y$ 直接解即可&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;二阶线性：$y&apos;&apos;+p(x)y&apos;+q(x)y=f(x)$，已知其导出方程（即 $f(x)$ 换成 $0$ 的方程）一个解 $y_1$
&lt;ul&gt;
&lt;li&gt;Liouville 公式曰：导出方程的另一个解 $y_2=y_1\displaystyle\int\dfrac{\mathrm{e}^{-\int p(x)\mathrm{d}x} }{y_1^2},\mathrm{d}x$&lt;/li&gt;
&lt;li&gt;原方程的特解 $y^\star=C_1y_1+C_2y_2$，其中 $C_1$ $C_2$ 满足&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;$$
\left{\begin{aligned}y_1C_1&apos;+y_2C_2&apos;&amp;#x26;= 0\y_1&apos;C_1&apos;+y_2&apos;C_2&apos;&amp;#x26;= f(x)\end{aligned}\right.,\Rightarrow,\left{\begin{aligned}C_1=\int\dfrac{-f(x)y_2}{y_1y_2&apos;-y_2y_1&apos;},\mathrm{d}x\C_2=\int\dfrac{f(x)y_1}{y_1y_2&apos;-y_2y_1&apos;},\mathrm{d}x\end{aligned}\right.
$$&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;常系数齐次 $y^{(n)}+k_1y^{(n-1)}+k_2y^{(n-2)}+\cdots+k_{n-1}y&apos;+k_n=0$
&lt;ul&gt;
&lt;li&gt;令 $y=\mathrm{e}^{\lambda x}{}$ 得&lt;strong&gt;特征方程&lt;/strong&gt;&lt;br&gt;
$\lambda^n\ \ +k_1\lambda^{n-1}\ ,+k_2\lambda^{n-2}\ ,+\cdots+k_{n-1}\lambda\ +k_n=0$&lt;br&gt;
实数范围内因式分解之，例如 $(\lambda-a)(\lambda-b)^s(\lambda^2+c \lambda+d)(\lambda^2+m \lambda+n)^t\cdots=0$&lt;/li&gt;
&lt;li&gt;单重实根 $\lambda=a$ 时，$y_1=\mathrm{e}^{ax}{}$&lt;/li&gt;
&lt;li&gt;多重实根 $\lambda=b$ 时，$y_1=y_2=\cdots=y_s=\mathrm{e}^{bx}{}$&lt;/li&gt;
&lt;li&gt;单重复根对 $\lambda=\alpha\pm\mathrm{i}\beta$ 时，$\left{\begin{aligned}y_{11}&amp;#x26;= \mathrm{e}^{\alpha x}\cos\beta x\y_{12}&amp;#x26;= \mathrm{e}^{\alpha x}\sin\beta x\end{aligned}\right.$&lt;/li&gt;
&lt;li&gt;多重复根对 $\lambda=\alpha\pm\mathrm{i}\beta$ 时，$\left{\begin{aligned}y_{11}=\mathrm{e}^{\alpha x}\cos\beta x,,y_{21}=x\mathrm{e}^{\alpha x}\cos\beta x,\cdots,y_{t1}=x^{t-1}\mathrm{e}^{\alpha x}\cos\beta x\y_{12}=\mathrm{e}^{\alpha x}\sin\beta x,,y_{22}=x\mathrm{e}^{\alpha x}\sin\beta x,\cdots,y_{t2}=x^{t-1}\mathrm{e}^{\alpha x}\sin\beta x\end{aligned}\right.$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;常系数非齐次（例如 $y&apos;&apos;&apos;+by&apos;&apos;+cy&apos;+d=f(x)$），只讲特解的求法
&lt;ul&gt;
&lt;li&gt;当 $f(x)=P_m(x)\mathrm{e}^{tx}{}$ 时：设特解 $y^\star=Q(x)\mathrm{e}^{tx}{}$，其中 $Q(x)=x^r!\cdot!(R_m)$，$r$ 的值取决于 $t$ 是特征方程的几重根。然后代入方程用待定系数法求。这里给出代入方程并初步化简后的结果：&lt;br&gt;
$$
(t^3!+!bt^2!\underbrace{+ct!+!d)Q+(3t^2+}&lt;em&gt;{对t导后\div1}2\underbrace{bt!+!c)Q&apos;+(3t}&lt;/em&gt;{对t导后\div2}!+!\underbrace{b)Q&apos;&apos;+1}_{对t导后\div3}Q&apos;&apos;&apos;=P
$$&lt;/li&gt;
&lt;li&gt;当 $f(x)=P_m(x)\mathrm{e}^{tx}\cos\omega x$ 或 $f(x)=P_m(x)\mathrm{e}^{tx}\sin\omega x$ 时：设特解 $y^\star=x^r\mathrm{e}^{tx}\big(Q_m(x)\cos\omega x+R_m(x)\sin\omega x\big)$，其中 $r$ 的值取决于 $t$ 是特征方程的几重根&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Euler 方程 $\sum\limits a_ix^iy^{(i)}=f(x)$
&lt;ul&gt;
&lt;li&gt;令 $x=\mathrm{e}^t$，算子 $D=\dfrac{\mathrm{d}}{\mathrm{d}t}{}$，得$x^ky^{(k)}=D(D-1)(D-2)\cdots(D-(k!-!1))y$，记几个常见的
&lt;ul&gt;
&lt;li&gt;$k=1$：$(xy&apos;)=\dot{y}{}$&lt;/li&gt;
&lt;li&gt;$k=2$：$(x^2y&apos;&apos;)=\ddot{y}-\dot{y}{}$&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;定积分的几何应用&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;弧长公式 $L=\displaystyle\int_\alpha^\beta\sqrt{(\dot x)^2+(\dot y)^2},\mathrm{d}t$&lt;/li&gt;
&lt;li&gt;曲率公式 $\kappa=\dfrac{|\mathrm{d}\theta|}{|\mathrm{d}L|}=\dfrac{|\mathrm{d}\theta/\mathrm{d}t|}{|\mathrm{d}L/\mathrm{d}t|}=\dfrac{|\ddot{y}\dot{x}-\dot{y}\ddot{x}|}{\quad\big((\dot x)^2+(\dot y)^2\big)^{3/2} }$，圆的曲率 $\kappa=\dfrac1R$&lt;/li&gt;
&lt;li&gt;极坐标弧长 $L=\displaystyle\int_\alpha^\beta\sqrt{r^2+(r&apos;)^2},\mathrm{d}\theta$&lt;/li&gt;
&lt;li&gt;极坐标扇形面积 $S=\dfrac12\displaystyle\int_\alpha^\beta r^2,\mathrm{d}\theta$&lt;/li&gt;
&lt;li&gt;旋转体侧面积 $S=2\pi\displaystyle\int_a^bf\sqrt{1+(f&apos;)^2},\mathrm{d}x$&lt;/li&gt;
&lt;li&gt;旋转体体积 $V=\pi\displaystyle\int_a^bf^2,\mathrm{d}x$&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="/_astro/math_analysis_cover_1.BgAunEJF.png"/><enclosure url="/_astro/math_analysis_cover_1.BgAunEJF.png"/></item></channel></rss>