非常抱歉给您带来困惑。您提供的代码中,缺少了一些必要的参数和定义,例如系数T的值、角度degree_values的值等。此外,生成y值列表的循环部分也有一些问题。根据您提供的公式和曲线图,我重新编写了代码如下:import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
from matplotlib import font_manager
# 指定中文字体的路径
font = 'C:/Windows/Fonts/simsun.ttc' # 根据实际情况修改字体文件名及路径
prop = font_manager.FontProperties(fname=font) # 设置默认字体为中文字体
plt.rcParams['font.sans-serif'] = prop.get_name()
# 幅频特性曲线
fig, ax = plt.subplots()
T = [0.1, 0.3, 0.5] # 系数
x = np.arange(0, 1000) / 100 # w/wn的范围
for t in T:
y = 1 / np.math.sqrt((1 - x**2)**2 + (2 * t * x)**2) # 公式
plt.plot(x, y)
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_major_locator(MultipleLocator(1))
ax.yaxis.set_major_locator(MultipleLocator(0.5))
plt.xlabel('$\omega / \omega_n$')
plt.ylabel('A($\omega$)')
plt.title("幅频特性曲线")
plt.grid(True)
plt.show()
# 相频特性曲线
fig, ax = plt.subplots()
T = [0.1, 0.3, 0.5] # 系数
x = np.linspace(0, 10.0, 1000)
for t in T:
y = -np.arctan((2 * t * x) / (1 - x**2)) * (180 / np.pi)
y[x > 1] -= 180 # 转换角度为负值
plt.plot(x, y)
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_major_locator(MultipleLocator(1))
ax.yaxis.set_major_locator(MultipleLocator(30))
plt.xlabel('$\omega / \omega_n$')
plt.ylabel('$\phi (\omega)$')
plt.title("相频特性曲线")
plt.grid(True)
plt.show()
请根据实际情况修改代码中的系数T的值,并在运行代码时确保字体文件路径的正确性。希望这次能够帮助您成功绘制出幅频特性曲线和相频特性曲线。如果还有其他问题,请随时提问。谢谢!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |