波尔共振实验需绘三幅图,幅频曲线、相频曲线、阻尼系数。
幅频曲线源码如下:
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import make_interp_spline
# 配置代码,表示允许使用中文
plt.rcParams['font.sans-serif'] = ['SimHei']
T0=1.59
T=[1.6488,1.6383,1.6322,1.6183,1.5903,1.5753,1.5702,1.5584,1.5583,1.5513,1.5478,1.5405,1.5321,1.5248,1.5178]
aih = [T0/i for i in T]
x = np.array(aih)
y = np.array([61,70,77,94,137,118,109,80,84,73,65,60,53,48,44])
plt.scatter(x, y)
plt.axvline(1.00,color='green',linestyle='--',label='理论上极大值在x=1.00左右取得')
plt.plot(x, y, color='red')
plt.title("受迫振动幅频曲线")
plt.xlabel("ω/ω0")
plt.ylabel("θ/°")
plt.legend()
plt.show()
输出如下:
相频曲线源码如下:
import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import make_interp_spline
import math
from pylab import mpl
# 配置代码,表示允许使用中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
T0=1.59
T=[1.6488,1.6383,1.6322,1.6183,1.5903,1.5753,1.5702,1.5584,1.5583,1.5513,1.5478,1.5405,1.5321,1.5248,1.5178]
aih = [T0/i for i in T]
x = np.array(aih)
π=math.pi
chongming=[26.5,27.4,34.3,43.5,88.3,120.3,130.2,142.0,142.3,150.5,150.0,152.8,155.6,157.6,164.5]
sishi=[-j*π/180 for j in chongming]
y = np.array(sishi)
plt.scatter(x, y)
plt.plot(x, y, color='red')
plt.scatter(1.00,-π/2,color='green',label='理论点(1.00,-π/2)')
plt.title("受迫振动相频曲线")
plt.xlabel("ω/ω0")
plt.ylabel("φ/rad")
plt.legend()
plt.show()
输出如下:
阻尼系数的源码如下:
import numpy as np
import matplotlib.pyplot as plt
T=1.5898
x = np.array([T, 2*T, 3*T, 4*T, 5*T, 6*T, 7*T, 8*T, 9*T, 10*T])
y = np.array([117, 106, 96, 88, 79, 72, 65, 59, 54, 48])
# 计算回归系数
slope, intercept = np.polyfit(x, y, 1)
print(slope,intercept)
# 绘制拟合曲线
plt.scatter(x, y, label="Data")
plt.plot(x, slope * x + intercept, color='red',label="Fitted curve\nslope=-4.7500,intercept=119.93")
plt.title("lnθ~t")
plt.xlabel("t/s")
plt.ylabel("lnθ/°")
plt.legend()
plt.show()
输出如下: