




Preview text:
15:09, 10/01/2026
Mô phỏng hàm truyền trong Python: Hướng dẫn sử dụng scipy.signal và control - Studocu
Mô phỏng hàm truyền bằng Python
Python cung cấp các thư viện mạnh mẽ để mô phỏng và phân tích
các hệ thống điều khiển, trong đó phổ biến nhất là scipy.signal và control.
1. Sử dụng thư viện scipy.signal
Thư viện scipy là một trong những thư viện khoa học máy tính cốt lõi
của Python.[5] Gói scipy.signal cung cấp nhiều công cụ để xử lý tín
hiệu, bao gồm cả việc tạo và mô phỏng hàm truyền.
Các bước thực hiện:
1. Cài đặt thư viện: !pip install scipy matplotlib 2. Viết mã Python: import scipy.signal as signal
import matplotlib.pyplot as plt import numpy as np
# Định nghĩa hàm truyền G(s) = 1 / (s^2 + s + 1) # Tử số: [1]
# Mẫu số: [1, 1, 1] (tương ứng với s^2 + s + 1) numerator = [1] denominator = [1, 1, 1]
system = signal.TransferFunction(numerator, denominator) # In ra hàm truyền
print("Hàm truyền của hệ thống:") print(system)
# Phân tích đáp ứng xung (impulse response)
t_impulse, y_impulse = signal.impulse(system) plt.figure() plt.plot(t_impulse, y_impulse)
plt.title('Đáp ứng xung của hệ thống')
plt.xlabel('Thời gian (giây)') plt.ylabel('Biên độ') plt.grid(True) plt.show()
# Phân tích đáp ứng bậc thang (step response)
t_step, y_step = signal.step(system) plt.figure() plt.plot(t_step, y_step) 15:09, 10/01/2026
Mô phỏng hàm truyền trong Python: Hướng dẫn sử dụng scipy.signal và control - Studocu
plt.title('Đáp ứng bậc thang của hệ thống')
plt.xlabel('Thời gian (giây)') plt.ylabel('Biên độ') plt.grid(True) plt.show() Giải thích mã:
signal.TransferFunction(numerator, denominator): Tạo một đối
tượng hàm truyền từ các hệ số của tử số và mẫu số.
signal.impulse(system): Tính toán đáp ứng của hệ thống khi tín
hiệu vào là một xung Dirac.
signal.step(system): Tính toán đáp ứng của hệ thống khi tín
hiệu vào là một hàm bậc thang đơn vị (step function).
2. Sử dụng thư viện control
Thư viện control là một thư viện chuyên dụng cho việc phân tích và
thiết kế các hệ thống điều khiển. Nó cung cấp một giao diện hướng
đối tượng và nhiều chức năng mạnh mẽ hơn so với scipy.signal.
Các bước thực hiện:
1. Cài đặt thư viện: !pip install control 2. Viết mã Python: import control as ct
import matplotlib.pyplot as plt import numpy as np
# Định nghĩa hàm truyền G(s) = (s + 2) / (s^2 + 2s + 3) numerator = [1, 2] denominator = [1, 2, 3]
system = ct.TransferFunction(numerator, denominator) # In ra hàm truyền
print("Hàm truyền của hệ thống:") print(system) # Vẽ biểu đồ Bode plt.figure()
mag, phase, omega = ct.bode(system, dB=True, plot=True)
plt.suptitle("Biểu đồ Bode") plt.show() 15:09, 10/01/2026
Mô phỏng hàm truyền trong Python: Hướng dẫn sử dụng scipy.signal và control - Studocu
# Phân tích đáp ứng bậc thang
t, y = ct.step_response(system) plt.figure() plt.plot(t, y)
plt.title('Đáp ứng bậc thang của hệ thống')
plt.xlabel('Thời gian (giây)') plt.ylabel('Biên độ') plt.grid(True) plt.show()
# Vẽ biểu đồ quỹ đạo nghiệm số (Root Locus) plt.figure()
ct.root_locus(system, plot=True)
plt.title('Biểu đồ quỹ đạo nghiệm số') plt.grid(True) plt.show() Giải thích mã:
ct.TransferFunction(numerator, denominator): Tương tự như
trong scipy.signal, tạo đối tượng hàm truyền.
ct.bode(system): Vẽ biểu đồ Bode của hệ thống, cho thấy đáp
ứng tần số (biên độ và pha) của hệ thống.
ct.step_response(system): Tính và vẽ đáp ứng bậc thang.
ct.root_locus(system): Vẽ biểu đồ quỹ đạo nghiệm số, một
công cụ quan trọng để phân tích sự ổn định của hệ thống hồi tiếp.
3. Lựa chọn thư viện nào?
scipy.signal: Phù hợp cho các tác vụ xử lý tín hiệu cơ bản và
khi bạn không muốn thêm một thư viện phụ thuộc mới vào dự
án của mình (vì scipy thường đã được cài đặt cho các mục đích khoa học khác).
control: Là lựa chọn tốt hơn cho các bài toán chuyên sâu về lý
thuyết điều khiển tự động. Nó cung cấp một API phong phú
hơn, bao gồm các công cụ phân tích và thiết kế hệ thống điều
khiển như biểu đồ Nyquist, biểu đồ Nichols, và thiết kế bộ điều khiển PID. Kết luận
Việc mô phỏng hàm truyền bằng Python là một kỹ năng hữu ích cho
các kỹ sư, nhà khoa học và sinh viên. Với sự hỗ trợ của các thư viện
mạnh mẽ như scipy.signal và control, ta có thể dễ dàng phân tích, 15:09, 10/01/2026
Mô phỏng hàm truyền trong Python: Hướng dẫn sử dụng scipy.signal và control - Studocu
hiểu rõ và thiết kế các hệ thống động học một cách trực quan và hiệu quả. 15:09, 10/01/2026
Mô phỏng hàm truyền trong Python: Hướng dẫn sử dụng scipy.signal và control - Studocu