第二章 基本数学运算
第一讲
简单的介绍了numpy的一些常用的属性和使用matplot绘制曲线图、修改曲线的类型、添加图例lable和更改x|y轴坐标等。详细参数说明
import numpy as np
import matplotlib.pyplot as plt
import csv
plt.rcParams["font.sans-serif"] = ["SimHei"] # 中文
plt.rcParams["axes.unicode_minus"] = False
q0 = 10
R = 60
C = 0.00005
t = np.linspace(0, 0.8, 100)
linestyle = ["-", ":", "--", "-."]
qt_Data = {}
for L,line in zip(np.arange(3, 13, 3), linestyle):
qt = q0 * np.exp(-R*t/2/L) * np.cos(np.sqrt(1/L/C - (R/2/L)**2)*t)
qt_Data["L="+str(L)] = qt
plt.plot(t, qt, ls=line, label="L = "+ str(L))
plt.legend()
plt.title("电量随时间变化的曲线")
plt.xlabel("t/s")
plt.ylabel("q(t)")
plt.grid()
plt.show()
with open("qt_data.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
for key, value in qt_Data.items():
writer.writerows([value])
第二讲
这是另外一个类似的例子,绘制概率密度函数,主要是分段函数的写法。
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"] # 中文
plt.rcParams["axes.unicode_minus"] = False
x = np.arange(-1, 1, 0.04)
y = np.arange(-2, 2, 0.04)
# 根据x和y生成网格点
[X,Y] = np.meshgrid(x, y)
PXY = 0.5457*np.exp(-0.75*Y**2 - 3.75*X**2 - 1.5*X) * (X+Y>1) + \
0.7575*np.exp(-Y**2-6*X**2) * (( X+Y<=1) & (X+Y >-1)) + \
0.5457*np.exp(-0.75*Y**2 - 3.75*X**2 + 1.5*X) * (X+Y <= -1)
fig = plt.figure()
ax = plt.gca(projection = "3d")
ax.plot_surface(X, Y, PXY, cmap= "rainbow")
ax.set_xlabel("X")
ax.set_ylabel("Y")
ax.set_zlabel("Z")
plt.show()