不同阻尼比下的振動形式-python程式碼

redufa發表於2024-11-03

image


import numpy as np
import matplotlib.pyplot as plt

# 定義引數
zeta = 0.1  # 阻尼比減小,以實現更慢的衰減
omega_n = 1.0  # 自然頻率
omega_d = omega_n * np.sqrt(1 - zeta**2)  # 阻尼頻率
varphi = np.pi / 4  # 相位角

# 定義時間變數
t = np.linspace(0, 20, 2000)  # 從0到20秒,2000個點,增加週期

# 計算函式值
a = np.exp(-zeta * omega_n * t) * np.sqrt(1 / (1 - zeta**2))
b = np.sin(omega_d * t + varphi)
c = np.exp(-zeta * omega_n * t) * np.sqrt(1 / (1 - zeta**2)) * np.sin(omega_d * t + varphi)

# 繪製影像
plt.figure(figsize=(15, 5))  # 設定整個影像的大小

# 繪製(a)部分
plt.subplot(1, 3, 1)  # 1行3列的第1個
plt.plot(t, a)
plt.title(r'(a) $e^{-\zeta\omega_{n} t}\sqrt{\frac{1}{1-\zeta^2}}$')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.grid(True)

# 繪製(b)部分
plt.subplot(1, 3, 2)  # 1行3列的第2個
plt.plot(t, b)
plt.title(r'(b) $\sin(\omega_{d} t+\varphi)$')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.grid(True)

# 繪製(c)部分
plt.subplot(1, 3, 3)  # 1行3列的第3個
plt.plot(t, c, label='Damped Sine Wave')
plt.plot(t, a, label='Envelope', linestyle='--')  # 繪製包絡線
plt.title(r'(c) $e^{-\zeta\omega_{n} t}\sqrt{\frac{1}{1-\zeta^2}}\sin(\omega_{d} t+\varphi)$')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.legend()
plt.grid(True)

# 顯示影像
plt.tight_layout()  # 調整子圖間距
plt.show()

image

import numpy as np
import matplotlib.pyplot as plt

# 定義引數
zeta = 0.5  # 阻尼比
omega_n = 1.0  # 自然頻率
omega_d = omega_n * np.sqrt(1 - zeta**2)  # 阻尼頻率
varphi = np.pi / 4  # 相位角

# 定義時間變數
t = np.linspace(0, 10, 1000)  # 從0到10秒,1000個點

# 計算函式值
a = np.exp(-zeta * omega_n * t) * np.sqrt(1 / (1 - zeta**2))
b = np.sin(omega_d * t + varphi)
c = np.exp(-zeta * omega_n * t) * np.sqrt(1 / (1 - zeta**2)) * np.sin(omega_d * t + varphi)

# 繪製影像
plt.figure(figsize=(10, 6))

# 繪製(a)部分
plt.subplot(3, 1, 1)
plt.plot(t, a)
plt.title(r'(a) $e^{-\zeta\omega_{n} t}\sqrt{\frac{1}{1-\zeta^2}}$')  # 使用r字首來表示原始字串
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')

# 繪製(b)部分
plt.subplot(3, 1, 2)
plt.plot(t, b)
plt.title(r'(b) $\sin(\omega_{d} t+\varphi)$')  # 使用r字首來表示原始字串
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')

# 繪製(c)部分
plt.subplot(3, 1, 3)
plt.plot(t, c)
plt.title(r'(c) $e^{-\zeta\omega_{n} t}\sqrt{\frac{1}{1-\zeta^2}}\sin(\omega_{d} t+\varphi)$')  # 使用r字首來表示原始字串
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')

# 顯示影像
plt.tight_layout()
plt.show()

image

import numpy as np
import matplotlib.pyplot as plt

# 定義引數
zeta = 0.5  # 阻尼比
omega_n = 1.0  # 自然頻率
omega_d = omega_n * np.sqrt(1 - zeta**2)  # 阻尼頻率
varphi = np.pi / 4  # 相位角

# 定義時間變數
t = np.linspace(0, 10, 1000)  # 從0到10秒,1000個點

# 計算函式值
a = np.exp(-zeta * omega_n * t) * np.sqrt(1 / (1 - zeta**2))
b = np.sin(omega_d * t + varphi)
c = np.exp(-zeta * omega_n * t) * np.sqrt(1 / (1 - zeta**2)) * np.sin(omega_d * t + varphi)

# 繪製(a)圖
plt.figure(figsize=(6, 4))
plt.plot(t, a)
plt.title(r'$e^{-\zeta\omega_{n} t}\sqrt{\frac{1}{1-\zeta^2}}$')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.grid(True)
plt.show()

# 繪製(b)圖
plt.figure(figsize=(6, 4))
plt.plot(t, b)
plt.title(r'$\sin(\omega_{d} t+\varphi)$')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.grid(True)
plt.show()

# 繪製(c)圖
plt.figure(figsize=(6, 4))
plt.plot(t, c)
plt.title(r'$e^{-\zeta\omega_{n} t}\sqrt{\frac{1}{1-\zeta^2}}\sin(\omega_{d} t+\varphi)$')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.grid(True)
plt.show()

image

image

image

相關文章