Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Z9411_КафкаРС_ИМ_ЛР1

.docx
Скачиваний:
4
Добавлен:
18.06.2024
Размер:
259.24 Кб
Скачать

axis[0].legend()

# Строим график зависимости оценок коэффициента вариации от объема выборки

axis[1].axhline(nu_t, color='red', label='Теоретическое значение')

axis[1].plot(N_array, nu_list, label='Рассчитанное значение')

axis[1].set_title('График зависимости\nоценок коэффициента вариации от объема выборки')

axis[1].set_xlabel('Размер выборки')

axis[1].set_ylabel('Оценка коэффициента вариации')

axis[1].legend()

plt.show()

def erlang_model(k, lmbda, N=10000):

'''Функция моделирования Эрланговского распределения'''

# Текущая оценка интенсивности и коэффициента вариации потока

lmbda_old, nu_old = 1, 1

# Списки оценок интенсивности и коэффициента вариации потока для разных N

lmbda_list, nu_list = [], []

# Список значений выборки эрланговского распределения

u_list = []

# Счетчик цикла

loop_cnt = 0

# Список зничений объема выборки при которых производились

# расчеты интенсивности и коэффициента вариации потока

N_array = []

while True:

# Добавляем N случайных значений эрланговского закона распределения

u_list.extend(random_erlang_val(k, lmbda, N * 2**loop_cnt))

# Добавляем значение нового объема выборки

N_array.append(len(u_list))

# Оценка Мат. ожидания и Дисперсии

me = np.mean(u_list)

sigma = np.std(u_list)

# Оценка новых значений интенсивности и коэффициента вариации потока

lmbda_new = 1/me

nu_new = sigma/me

# Добавление новых отценок в списки

lmbda_list.append(lmbda_new)

nu_list.append(nu_new)

# Проверка достаточности выборки

if abs((lmbda_new - lmbda_old) / lmbda_old) <= 0.01 and abs((nu_new - nu_old) / nu_old) <= 0.01:

break

# Перенос новых оценок на место старых

lmbda_old = lmbda_new

nu_old = nu_new

loop_cnt += 1 if len(u_list) != N else 0

# Построение графика по сформированному распределению

ploting_erlang_distribution(k, lmbda, data=u_list, add_hist=True)

# Построение графика зависимости оценок интенсивности и коэффициента вариации потока

ploting_lambda_nu(k, lmbda, lmbda_list, nu_list, N_array)

return u_list, lmbda_list, nu_list

def main():

k, lmbda = 4, 8

ploting_erlang_distribution(k, lmbda, N=10000)

erlang_model(k, lmbda, N=1)

return 0

if __name__ == "__main__":

main()

Соседние файлы в предмете Имитационное моделирование