有限差分法理论基础
基本概念 对于微分方程及其边界条件 \[ \left\{ \begin{aligned} \mathcal{L}u &= f,\,\, x \in \Omega\\ \mathcal{B}u &= g,\,\, x \,\text{on}\, \partial \Omega \end{aligned} \right. \] 考虑对应的差分格式 \[ \left\{ \begin{aligned} L v_j^n &= f_j^n,\,\, x_j \in \Omega\\ B v_j^{n} &= g_j^{n},\,\, x_j \,\text{on}\, \partial \Omega \end{aligned} \right. \] 其中 \(L,B\) 分别是 \(\mathcal{L}\) 和 \(\mathcal{B}\) 的近似。 对于双层线性差分格式,我们有时考虑如下的规范形式(\(V^{n}\) 代表 \(\{v_j^n\}\) 组成的网格函数) \[ V^{n+1} = Q\,V^n + \Delta...
LaTeX 论文排版笔记
整理一下LaTeX论文排版中的基本要素。 页面布局 通常需要在使用文档时首先全局地规定一些排版参数,如字号、纸张大小、单双面等等。 比如调用 article 文档类排版文章,指定基本字号为 11pt,双面排版,纸张为 A4 大小: 1\documentclass[10pt,twoside,a4paper]{article} 常用的参数如下: 指定字号,例如10pt,11pt,12pt,默认10pt 指定纸张大小,默认为美式信纸 letterpaper(大约 21.6 cm × 28.0 cm)。可指定选项还包括 a4paper,b5paper,executivepaper 和 legalpaper等。有关纸张大小页边距的更多细节主要通过geometry包设置,当然在这里设置也可以 单面/双面排版,twoside,oneside。双面排版时,奇偶页的页眉页脚、页边距不同。article和report默认为oneside,book默认为twoside。 指定单栏/双栏排版,onecolumn, twocolumn。默认为...
pi的计算
从一个讲座中看见了一个有趣的问题:祖冲之是怎么计算圆周率的,割圆法真的足够吗?并由此引出了数值计算中常见的几个提高阶数的技巧,值得记录一下。写着写着就刹不住了,将维基百科上的很多相关内容都记录了下来。 \(\pi\)的定义 \(\pi\)作为最重要的数学常数之一,关于它的定义方式数不胜数。 最初等的定义即为周长与直径的比 \[ \pi = \frac{C}{d} \] 可以利用三角函数定义:\(\pi\) 是正弦函数的最小正零点。 注意到三角函数的定义并不一定需要依赖于几何,它们可以独立依赖于微分方程的解来定义,从而避免循环定义。 可以利用积分公式来定义 \[ \pi = \int_{-1}^1 \frac{dx}{\sqrt{1-x^2}} \] 甚至还可以通过偏微分方程的特征值来定义,很多模型问题的特征值都是 \(n \pi\)...
LaTeX 数学笔记
整理一下LaTeX关于数学公式/定理与证明以及相关的内容。 AMS宏包 AMS提供了一系列最常用的LaTeX数学宏包: amsmath 宏包: 提供了一套增强的数学排版命令和环境,使得数学公式的编辑和排版更加灵活和方便。 引入了一些新的数学环境,例如 align 和 gather,以便更好地控制多行公式的排版。 提供了诸如 \text, \DeclareMathOperator 等命令,用于在数学模式中插入文本或定义新的运算符。 amssymb 宏包:扩展了 amsmath,提供了额外的数学符号,如各种箭头、关系符号、集合符号等。 amsfonts 宏包:提供了一些额外的字体,例如 \mathbb 命令用于黑板粗体字母。 amsthm 宏包:提供了 theorem, lemma,...
LaTeX 命令行编译
整理一下关于 pdflatex,xelatex 和 latexmk 的基本使用和配置。 这部分的中文资料其实比较少,因为大部分资料都在关注 LaTeX 应该怎么写,而不是怎么用命令去编译, 本文参考: LaTeX技巧912:使用latexmk自动编译LaTeX 在终端中编译 LaTeX latexmk 的学习 Latex 编译和编写方案配置 — latexmk + latexworkshop Using Latexmk pdflatex & xelatex 基本使用 这里只考虑 pdflatex 和 xelatex 的命令行基本用法,对于含有中文的文档只考虑使用 xelatex 编译。 最基本的用法如下,使用 pdflatex 和 xelatex 编译指定的源文件,源文件的.tex后缀名可以省略。 12pdflatex [options] main.texxelatex [options]...
LaTeX 插入图片
整理一下关于LaTeX中插入图片的笔记。 目前使用的发行版为 TexLive 2024,系统为 Windows 和 Linux(Ubuntu22)。 只考虑 pdflatex 和 xelatex 这两种编译引擎,考虑的图片格式包括:矢量图(pdf, eps),位图(png, jpg)。 两种编译引擎都直接支持这些图片格式。 插入图片 LaTeX 本身不支持插图功能,需要 graphicx 宏包提供支持(或者更基础的 graphics 宏包,graphicx 宏包相当于其扩展) 1\usepackage{graphicx} 导入这个宏包之后,就可以使用 \includegraphics 命令来插入图片 1\includegraphics[⟨options⟩]{⟨filename⟩} 例如...
LaTeX 基本概念
这是关于\(\LaTeX\)基础概念的笔记,不涉及具体的\(\LaTeX\)语法细节,而是从宏观层面,包括历史和命令行用法等,来进一步理解 \(\TeX\) 和 \(\LaTeX\)。 \(\TeX\) 语言 \(\TeX\)排版系统是 Knuth 发明的一种宏语言,提供了几百个类似\def的基础指令用于排版,主要解决的是自动断行,以及公式布局等排版问题。\(\TeX\)语言的版本在升级到 3.0 之后,主版本号就不再发生变动,而是以 3.1,3.14,3.141 的形式在更新时不断接近 pi,这体现了\(\TeX\)语言的稳定性。 关于排版系统的基本介绍,有一篇博客可以参考: 排版引擎纵谈:程序员的视角 \(\TeX\)语言并不适合直接使用: 最早设计时不支持非 ASCII 编码,更不要说 Unicode 字符和中文支持等 字体需要额外配置,不能利用系统现有的字体 原始的几百个基础指令太繁琐又太简陋,需要考虑很多细节 后续有很多基于\(\TeX\)基本指令封装的宏集,让使用者可以忽略很多细节,例如在 \(\LaTeX\) 格式中的 center 环境是如下编写的(在...
LaTeX Tex Live 安装
整理一下 Tex Live 2024 在Windows和Linux(Ubuntu22)中的安装过程,主要参考TeX Live 2024 安装教程(Windows/WSL/Linux)以及一份简短的关于 LATEX 安装的介绍。 在Linux系统上的LaTeX编译速度普遍比Windows更快,而且速度提升非常明显,并且TexLive的安装也是如此,在Linux中的安装过程比Windows更快,这种优势即使是在WSL2中也是很明显的,因此我选择在Windows和WSL2中都进行安装。 下载Texlive镜像 随便找一个 CTAN 镜像站下载 texlive2024 即可,例如清华镜像。 texlive 的下载安装其实非常友好,在不同系统上都只需要同一个镜像文件(texlive2024.iso,大约 5 个...
Python学习笔记——12.函数式编程
Python 虽说是一个面向对象的,动态语言,但是它对于函数式编程的支持其实也不错,下面是几个在函数式编程中常用的概念或内置函数。 高阶函数 高阶函数是指可以接受函数作为参数,或返回函数作为结果的函数,Python 直接支持这种语法,例如 1234def apply_func(func, value): return func(value)result = apply_func(lambda x: x * 2, 5) # 10 lambda expression lambda 表达式(匿名函数)是用来定义没有名字的函数,通常用于快速定义短小的函数体,尤其是在传递给其他高阶函数时。 Python 支持 lambda 表达式,但是可能是由于缩进等原因,Python只允许 lambda 表达式中含有一个语句作为返回值,例如 12add = lambda x, y: x + yprint(add(3, 4)) map map 是指将一个函数应用于给定序列的每个元素,并返回一个新序列。Python 提供了内置函数 map(),例如 123numbers = [1, 2, 3,...
Anaconda/Miniconda 学习笔记
Anaconda 是一个用于科学计算的开源 Python 发行版,集成了包和虚拟环境管理器,包括了很多数据科学中常用的包,特别适合数据科学和机器学习。 与之类似的还有 Miniconda,它和 Anaconda 的主要区别就是:Miniconda在安装时并没有附带很多科学计算常用的包,在使用时需要手动下载。除了安装包的大小不同,在实际使用中其实没什么区别。 安装 Anaconda的下载和安装都非常简单,只需要按照官网上的步骤进行即可。 实践中可以选择安装Miniconda而非Anaconda,安装包的体积会小很多。 Miniconda...