Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from control.matlab import *
- import matplotlib.pyplot as plt
- m = 100
- c1 = 300
- c2 = 100
- # b константу мы пока убираем в сторону и зададим диапазон b т 10 до 200
- # b = 10
- b_arr = [i for i in range(10, 201)]
- s = tf('s')
- # наша модель теперь тоже не может зависить от константы b, мы
- # проинициализируем каждую модель для своего b в массиве
- # w = -m*s*s/(m*s*s + b*s + c)
- w_arr = [-m*s*s/(m*s*s + c1 + (c2*b*s/(b*s + c2))) for b in b_arr]
- # print(w)
- # теперь мы пройдёмся по всем моделям с разными значениями b и
- # запишем максимальное значение mag в отдельный список
- # mag, phase, omega = bode(w, dB=True)
- max_mag = []
- for w in w_arr:
- mag, phase, omega = bode(w, dB=True, plot=False)
- max_mag.append(max(mag))
- # теперь мы можем построить зависимость максимальной амплитуды от значения b
- # а так же найти значение этого b
- idx = max_mag.index(min(max_mag))
- min_mag_b = b_arr[idx]
- print(min_mag_b)
- plt.plot(b_arr, max_mag)
- plt.ylabel('max_mag(b) (dB)')
- plt.xlabel('b (N*sec/m)')
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement