type
Post
status
Published
date
Nov 9, 2025
slug
CP1
summary
为什么计算物理上了一个多月的python?
tags
计算物理
category
学习笔记
icon
password
python3 vs python2
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 代表inversematplotlib
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继续,我们想要关心,随的变化关系,这样迭代的代数将使得不同的图区分开来,我们要做的就是把这些图画在一张图上。
图像如下:

注意到在较小的位置,随着迭代的次数加深,曲线逐渐并拢,这意味着混沌系统达到稳定,所以我们考虑只取100代以后的,得到:

这就是标准的费根鲍姆图。
Lyapunov Exponent
李雅普诺夫给出了关于这个现象的另一个数学描述,考虑迭代公式为
那么对于两个不同的出发点,,考虑L1距离,迭代次后可以写为:
考虑取:
它的意义是,如果,当次迭代后必然趋于稳定,坍缩为一个状态,如果,则次迭代后必然进入混沌。
仍然考虑logistic函数,代码如下
作图如下

可以看到,在后进入正值,
- 作者:向思齐
- 链接:https://blog.xiangsiqi.site/notes/CP1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章








