type
Post
status
Published
date
Nov 9, 2025
slug
CP1
summary
为什么计算物理上了一个多月的python?
tags
计算物理
category
学习笔记
icon
password

python3 vs python2

print

python2的print没有括号但是python3有:

floor divide

python2整数相除则为地板除,python3需要//
地板除意味着负数也会向下取

Input and Output

Format

对于字符串,整数,浮点数,科学计数法浮点数,通用浮点数为:%s,%d,%f,%e,%g,代表string, decimal, fixed point, exponential notation, general format
格式化输出采用:

Split and Strip

用括号内的字符串切割为数组,如果没有则用空格分割。
去除字符串两边的a,如果括号内没有则去除换行符

Error

可以try: assert
可以自己报错:
python中所有的异常类都继承于Exception 类。

Decorator

numpy

array and ndarray

np.ndarray方法根据维度生成矩阵,np.array则根据输入生成
除此之外还有np.zeros(),np.ones()

linspace and arange

arange默认不包含终点,linspace默认包含,可以更改。
linspace指定点的数量,而arange指定步长,默认为1

meshgrid

meshgrid返回由两个向量构成的坐标架中的坐标点:
输出的两个矩阵,分别是这些点的横坐标和纵坐标。默认采取xy模式,还有索引模式ij:
indexing=参数指定。

matrix operator

np的*乘法是逐元素乘积,当行向量乘以列向量时发生广播,生成矩阵。而np.matmul是正常的矩阵乘法,可以简写为@
要注意的是矩阵和行向量和列向量都能乘:
矩阵的逆:
这里linalg代表linear Algebra,inv 代表inverse

matplotlib

2D

pyplot要求至少传入一个数列用于绘制图,如果未传入x数列则将index作为x。
pyplot可以在同一个画布上画多张图,这就是子图对象:
请注意,当你直接使用plt.plot的时候pyplot实际上为你创建了这样一个1*1的子图对象。或者:

3D

pyplot可以用于绘制三维图像,这需要你添加3D坐标轴对象:
然后绘制:.
这样绘制的有限性在于,它只会绘制点,但是对于网格数据,你的一个x应该对于多个y,这里我们要用到
这里cmap是颜色映射,会生成有颜色的图像,linewidth是线宽,antialiased是抗锯齿。

quiver

quiver用于生成矢量箭头,你需要传入生成矢量箭头的点和箭头方向,如果点是n维的,那么箭头也应该是n维的。

Example

Logistic Model

Malthus提出人口模型:
这将导致人口无限增大,考虑有上限
时,,人口不再增加,当时,退化为Malthus模型
在代码实现里,考虑,则:

费根鲍伯图

我们从logistic继续,我们想要关心,的变化关系,这样迭代的代数将使得不同的图区分开来,我们要做的就是把这些图画在一张图上。
图像如下:
notion image
注意到在较小的位置,随着迭代的次数加深,曲线逐渐并拢,这意味着混沌系统达到稳定,所以我们考虑只取100代以后的,得到:
notion image
这就是标准的费根鲍姆图。

Lyapunov Exponent

李雅普诺夫给出了关于这个现象的另一个数学描述,考虑迭代公式为
那么对于两个不同的出发点,,考虑L1距离,迭代次后可以写为:
考虑取:
它的意义是,如果,当次迭代后必然趋于稳定,坍缩为一个状态,如果,则次迭代后必然进入混沌。
仍然考虑logistic函数,代码如下
作图如下
notion image
可以看到,后进入正值,
 
Ordinary Differential EquationsIteration and Fractals
Loading...