跳转至

2024

线性代数

本文详细介绍了线性代数的核心内容,涵盖行列式、矩阵、向量、线性方程组、特征值与特征向量、二次型等主题。文章首先介绍了行列式的定义、计算方法和性质。接着,讨论了矩阵的基本运算、秩、逆矩阵等概念,以及矩阵的分块、转置和相抵等性质。随后,探讨了向量的线性相关性和线性表示,线性方程组的解法和解的结构。然后,阐述了特征值与特征向量的理论,包括矩阵的相似对角化和 Jordan 标准型。最后,介绍了二次型及其标准化和规范化方法,以及正定矩阵的判定与应用。文章还补充了一部分重要定理的详细证明,帮助读者深入理解线性代数的理论基础。

(摘要由 OpenAI GPT 4o 生成)

二重积分

本文详细介绍了二重积分的基本概念和计算方法。首先定义了二重积分的黎曼和,解释了如何通过将区域分割成小矩形并求和来计算二重积分。接着,讨论了二重积分的基本性质,包括线性性、可加性和优势积分等。随后,介绍了富比尼定理,说明了如何将二重积分转化为累次积分,并给出了在直角坐标系和极坐标系下计算二重积分的方法。文章还探讨了二重积分的一般换元法,介绍了通过坐标变换简化积分计算的技巧。最后,通过多个例题展示了如何应用对称性、换元法和曲线积分等方法来简化和计算复杂的二重积分。通过本文的学习,读者可以全面掌握二重积分的理论基础和计算技巧。

(摘要由 OpenAI GPT 4o 生成)

多元函数的导数与微分

本文详细介绍了多元函数的导数与微分的基本概念和计算方法。首先定义了多元函数的偏导数,解释了全增量和偏增量的概念,并给出了偏导数的定义和计算方法。接着,讨论了高阶偏导数与混合偏导数,介绍了它们的定义和计算技巧,并证明了混合偏导数在一定条件下可以交换次序。随后,文章探讨了多元函数的全微分,定义了全微分的概念,并讨论了可微性与连续性、可微性与可导性的关系。文章还介绍了复合函数的求导法(链式法则),并通过实例说明了其应用。最后,讨论了隐函数求导法则、场的方向导数与梯度、多元函数的泰勒公式以及多元函数的极值与最值的求法,包括无条件极值和条件最值(拉格朗日乘数法)。通过本文的学习,读者可以全面掌握多元函数导数与微分的基本理论和计算技巧,为进一步研究和应用奠定坚实的基础。

(摘要由 OpenAI GPT 4o 生成)

多元函数的极限与连续性

本文详细介绍了多元函数的极限与连续性的基本概念和计算方法。首先,定义了平面点集中的邻域和去心邻域,讨论了点与点集的关系,如内点、外点和边界点,以及开集、闭集、连通集等相关概念。接着,阐述了二元函数的极限定义,强调了极限值与趋近路径无关的重要性,并提供了判断极限不存在的方法。文章还介绍了二元函数极限的计算技巧,包括利用夹逼定理、等价无穷小和特殊趋近路径等方法。随后,讨论了二重极限与累次极限的关系,指出了二者存在性之间的差异,以及在计算过程中需要注意的事项。最后,深入探讨了二元函数的连续性,给出了函数在一点处连续的定义,并讨论了连续函数在有界闭区域上的重要性质,如有界性、最大最小值定理和介值定理。通过本文的学习,读者可以全面掌握多元函数极限与连续性的理论基础,为进一步研究高等数学奠定坚实的基础。

(摘要由 OpenAI o1-preview 生成)

编译原理

《编译原理》课程主要内容:{% post_link lexical-analysis %}、语法分析({% post_link syntactic-analysis-top-down %}、{% post_link syntactic-analysis-bottom-up %})、抽象语法、{% post_link semantic-analysis %}、{% post_link activition-record %}、{% post_link intermediate-representation %}、基本块和轨迹(包含在 {% post_link intermediate-representation %} 之内、处理 IR 之后)、{% post_link instruction-selection %}、{% post_link liveness-analysis %}、寄存器分配、垃圾回收、面向对象语言、循环优化。部分章节有比较完整的笔记(详见链接),全部章节内容的概要在下面的 A4 cheat paper 中:

指令选择

本文简要介绍了指令选择问题中的两种主要方法:

  1. 使用贪心策略的 Maximal Munch 算法,通过选择最大图块覆盖 IR 树节点,快速生成指令。
  2. 基于动态规划的算法,自下而上地计算最优代价,获得更精确的整体最优解。

通过对比这两种方法,可以在编译过程中更好地进行目标代码生成。

(摘要由 OpenAI o1-preview 生成)

活跃变量分析

本文介绍了编译原理中的活跃变量分析,详细阐述了其在寄存器分配和死代码删除等方面的应用。通过构建控制流图(CFG)进行数据流分析,定义了变量的活跃性,并介绍了相关术语如前驱节点、后继节点、定义和使用。文章探讨了活跃变量分析的可判定性问题,并提出了一种保守的近似算法,分析了其时间复杂度和最小不动点的概念。此外,还区分了静态活跃性与动态活跃性,强调了静态活跃性作为一种保守估计的重要性。

(摘要由 OpenAI o1-preview 生成)

常微分方程

本文详细介绍了常微分方程的基本概念和解法。首先讨论了一阶微分方程,包括可分离变量的方程、齐次方程、线性方程、伯努利方程和全微分方程,并提供了相应的解法和实例。接着介绍了可降阶的高阶微分方程,讨论了如何通过换元法将高阶方程降阶为一阶方程进行求解。随后,文章探讨了二阶线性微分方程的解法,包括常系数线性齐次和非齐次微分方程的特解和通解的求法。最后,介绍了欧拉方程及其解法。通过本文,读者可以全面掌握常微分方程的基本理论和解法,为进一步研究和应用奠定坚实的基础。

(摘要由 OpenAI GPT 4o 生成)

中间代码生成

中间代码生成

中间代码/中间表示 (Intermediate Representation, IR)

AST -> IR1 -> IR2 -> ... -> IRk -> asm

IR 是一种抽象的机器语言、旨在表达目标机器的操作而不涉及过多与指令集有关的细节。相比于直接生成目标架构的汇编语言代码,将源代码首先转为 IR 能够有效地提高编译器的模块化以及可移植性(考虑需要将高级语言转为不同目标架构的汇编语言)。