本文是ads
的个人学习提要。
Programming-Python
本文作为 programming python(4th edition) 的读书笔记。
system programming
:#
here is the nav of the following 5 chapters:
- In this chapter, I’ll introduce the main system-related modules in overview fashion. We’ll meet some of the most commonly used system tools here for the first time.
- In Chapter 3, we continue exploring the basic system interfaces by studying their role in core system programming concepts: streams, command-line arguments, environment variables, and so on.
- Chapter 4 focuses on the tools Python provides for processing files, directories, and directory trees.
- In Chapter 5, we’ll move on to cover Python’s standard tools for parallel processing—processes, threads, queues, pipes, signals, and more.
- Chapter 6 wraps up by presenting a collection of complete system-oriented programs. The examples here are larger and more realistic, and they use the tools introduced in the prior four chapters to perform real, pratical tasks. This collection includes both general system scripts, as well as scripts for processing directories of files.
system scripting overview:#
Most system-level interfaces in python are shipped in two modules: sys
and os
. There are also some other modules belonging to this domain too. Such as glob
(for filename expansion),socket
(for network connections and Inter-Process Communication),threading
+_thread
+queue
(for running and synchronizing concurrent threads),time
+timeit
(for accessing system time details),subprocess
+multiprocessing
(for lauching and controlling parallel processes)…
Some built-in functions, such as the open function, serve as interfaces to the underlying system (e.g., the file system). When we want to learn about these functions or modules, Python provides tools to interactively fetch their attributes and documentation strings. Here is a clarification:
1 | import sys |
The __doc__
built-in attribute contains the documentation of a modules. And help()
function is also useful to learn new modules.
In system programming, string methods are widely used. For example,
1 | """ |
We use splitlines()
to split text by line. It is very similar when compared with split('\n')
.
参差荇菜,左右流之。
从等幂和公式到欧拉麦克劳林公式:#
历史上很有名的一个问题,就是如何求
雅各布·伯努利最先给出一个解释,他的思路是:由于
从而可以得到
对这个递推式做一些简单的介绍:
- 左边是第
项,右边共有从 到 的 项。 次数只由第一项决定(是 ),首项系数是 ;
豪斯多夫距离的三角不等式:#
对任意两点集而言,定义其 距离 为
其中
上述距离实际上是对日常生活中 从一个点集到另一个的距离 的刻画。通俗地讲就是:从
注意到先对所有点之间的距离进行最小筛选,然后再选最大的,所以此距离不一定对称,也即
和 不一定相同。
从上引申出 豪斯多夫距离
我们可以发现,豪斯多夫距离实际上是有向豪斯多夫距离更宽泛的距离限制,因此我们可以基于有向豪斯多夫距离给出豪斯多夫距离的三角不等式。
我们只需要证明对于任意
我们设
奇异值分解(SVD):#
我们学习过矩阵的对角/正交分解,但这些分解都需要矩阵具有一定的特殊性:最少他们都需要是方阵。如果我们希望对非方阵进行分解呢?
我们知道,之前所提到的对角化分解,实质上将对应的 线性映射 进行最简化矩阵表示。对于一个矩阵
表示将向量 (一般)从标准基表示转化为特征向量基表示; 表示对于使用 这个基表示的向量,其线性映射对应的矩阵为 ; 表示将在特征向量矩阵表示的映射结果换成(一般)标准基下的表示。
从这一点出发,我们这样 “特征化”:
上式等价于
按照之前的说法,我们现在引入的矩阵可以这样解释:
是将需要映射的向量在这组 特别的基 下表示: 是相应的 特征值,这里 是一个 矩阵,其有可能 是将对应基下的表示。
另一种说法是,对于任意一个线性映射
在这里我们可以做一点文章,如果我们想 “压缩” 一个矩阵,用(给定度量上的)最少的资源来记录某个映射,我们就要在基的选择上小心谨慎。
标准正交基具有很好的性质,它们之间不相互参杂。我们可以考虑使用这样的基来进行简化,也即考虑
轨道稳定子定理:#
问了chatgpt给了一个我觉得还不错的回答:
首先我建议看看这个 最经典的例子。
就我的感觉而言,对群的研究是从这些问题中抽象出来的。
通俗的说, 稳定子 就是在正方体旋转过程中,保持染色方案不变的那些 置换,也就是具有对称性的旋转。稳定子只是给这种能够保证染色方案 稳定 的操作起了个名字;而 轨道 则是对于某种染色方案而言,经过 所有的旋转操作 后得到的染色方案,这些染色方案都是本质相同的染色方案。
也就是说,轨道稳定子实际上讲述的是,群对集合的作用,我们可以将这个作用细分成为更结构化的两部分。对于某个元素来说,其作用是由 稳定子 和 非稳定子 组成的,说人话就是:任何的变换操作都可以拆成不改变的和改变的两部分操作。改变的那一部分产生了轨道。
从度量空间到压缩映射原理:#
直观地说,数列极限就看的是最后的变化是不是足够小,小到无法逃出一个区间。而我们知道,数列可以被递推式和足够多的前驱项确定,那么是否可以根据递推式,判断数列的收敛性呢?
压缩映射就说的是这样一件事,其根本是通过描述 相邻两项距离 的变化,系统地说明这个总的距离变化是否 “可忽略”。
根据维基百科,压缩映射的最广泛定义是:对非空完备度量空间
所谓度量空间,其实就是赋予了 度量 的一个空间(或称集合)。所谓度量,就是“距离”。
- 比如在欧几里得空间中,我们熟知的一个度量就是两点之间的距离,用勾股定理来计算的那个;
- 比如在复平面上,这个度量可以是两复数差的模;
- 甚至我们之前提到的豪斯多夫距离,也可以视为由点集组成的集合上的一个度量。
具体而言,只要这个度量满足以下三个基本条件:
- 自反性:
; - 同一性:
; - 三角不等式:
我们就可以称之为一个度量,这些条件是从我们平常对距离的感受中抽象出来的。
那么什么是 完备 的度量空间呢?完备的度量空间和度量没什么关系,只和空间有关,它强调了这个空间是比较“稠密的”。具体而言,任何该空间的柯西列必然收敛于这个空间内的元素,这保证了我们不会从空间中“掉出去”,跑到未知领域中。
实际上上面这些概念还会在极限中再遇到,因为我们要描述“极限”,就要描述元素之间的距离。只要两个元素的距离无限小,那么在极限意义下我们就可以认为这两个元素是相同的。
现在我们有了以上概念,我们可以对这个定理的条件做出简单的描述。定理条件说,这是一个完备度量空间,并且存在一个压缩映射。这个压缩映射保证了,在映射足够多次后,数列
收敛说明什么?说明这个映射最后把数列相邻两项的距离压缩的很小很小了,这样我们就可以判断这个数列是不是收敛。严谨地说法就是,根据度量空间的理论,
假设存在另外一个不动点
傅里叶展开求级数的简单理解:#
考虑下面这个经典的级数求和
首先当然是给出傅里叶展开的形式:
设
- 分段连续;
- 绝对可积:
- 只有有限个间断点:意味着分段连续的 段 是有限个。
那么
由于函数的周期性,通常我们都会选用包含原点的对称区间进行积分,此时也即
实际上,正是由于傅里叶展开+分布积分的组合使得构造这一类含
同时
例如我们这里的例子是求自然数平方倒数和,那么我们就需要连续两次分部积分,并且舍弃前缀内容。假设我们选择偶延拓,那么我们需要