pysim/step2.py
2024-05-21 04:23:33 +02:00

32 lines
748 B
Python

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import TransferFunction, step
def step_response(T, t_end):
# Define the transfer function H(s) = (-Ts + 1) / (s^3 + 3s^2 + 2s + 1)
num = [-T, 1]
den = [1, 3, 2, 1]
system = TransferFunction(num, den)
# Generate time points
t = np.linspace(0, t_end, 1000)
# Calculate the step response
t, response = step(system, T=t)
# Plot the step response
plt.plot(t, response)
plt.title('Step Response of the System')
plt.xlabel('Time (s)')
plt.ylabel('Response')
plt.grid(True)
plt.show()
return t, response
# Example usage
T = 1 # Time constant
t_end = 10 # seconds
t, response = step_response(T, t_end)