Код import math import numpy as np from scipy.optimize import fsolve import matplotlib.pyplot as plt lamda = 3/60 k = 6 mu = k*1/90 v = 1/35 k=1 alpha = lamda/mu beta = v/mu v_ = 1/(mu) #Проверка на точность для первой суммы eps = 0.00001 r1 = 1 cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1) while cond1 >= eps: cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1) r1 += 1 print("Число слагаемых в сумме: ", r1) #Подсчет pn sum1_1 = 0 for n in range(0, k+1): sum1_1 += alpha**n / (math.factorial(n)) sum1_2 = 0 for s in range(1, r1+1): mul = 1 for m in range(1,s+1): mul *=(k + m*beta) sum1_2 += alpha**s / mul p = np.zeros(2) p[0] = 1 / (sum1_1 + sum1_2*(alpha**k / (math.factorial(k)))) p[1] = p[0]* alpha**1 / math.factorial(1) #Подсчет вероятностей pk+s pk = np.zeros(r1+1) for s in range(1,r1+1): mul3 = 1 for m in range(1, s+1): mul3 *=(k+m*beta) pk[s] = p[0]*alpha**(k+s) / (math.factorial(k)*mul3) print('pk:\n ', pk) b_ = 0 for s in range(1, r1+1): b_ += s*pk[s] p_otk = b_*beta/alpha print("Сумма вероятностей = ",sum(p) + sum(pk)) print("Среднее время обработки отделом одной сводки v_= ", '%.3f' %(v_), "мин") print("Вероятность того, что сотрудники свободны от работы p0= ", '%.3f' %(p[0])) print('Вероятность того, что в отделе одна сводка обрабатывается, а сводок, ожидающих обработки, нет p1= ', '%.3f' %(p[1])) print('Cреднее число сводок, ожидающих обработки b_= ', '%.3f' %(b_)) print("Процент своевременно использованной информации", '%.3f' %((1 - p_otk)*100), '%') print("Вероятность того, что информация не будет использована из-за того, \n что до окончания обработки она уже потеряла свою ценность p_otk=" ,'%.3f' %(p_otk)) percent_points= [] for i in range(7,13): lamda = 3/60 k = i mu = k*1/90 v = 1/35 k=1 alpha = lamda/mu beta = v/mu v_ = 1/(mu) #Проверка на точность для первой суммы eps = 0.00001 r1 = 1 cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1) while cond1 >= eps: cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1) r1 += 1 #Подсчет pn sum1_1 = 0 for n in range(0, k+1): sum1_1 += alpha**n / (math.factorial(n)) sum1_2 = 0 for s in range(1, r1+1): mul = 1 for m in range(1,s+1): mul *=(k + m*beta) sum1_2 += alpha**s / mul p = np.zeros(2) p[0] = 1 / (sum1_1 + sum1_2*(alpha**k / (math.factorial(k)))) p[1] = p[0]* alpha**1 / math.factorial(1) #Подсчет вероятностей pk+s pk = np.zeros(r1+1) for s in range(1,r1+1): mul3 = 1 for m in range(1, s+1): mul3 *=(k+m*beta) pk[s] = p[0]*alpha**(k+s) / (math.factorial(k)*mul3) b_ = 0 for s in range(1, r1+1): b_ += s*pk[s] p_otk = b_*beta/alpha percent = (1 - p_otk)*100 percent_points.append(percent) k = [7, 8, 9, 10, 11, 12] fig, ax = plt.subplots() ax.set_ylabel('Процент использованной информации') ax.set_xlabel('Количество работников') ax.plot(k, percent_points, marker='o') for i in range(len(k)): ax.annotate(f'({round(percent_points[i],3)}; {round(k[i], 3)})', (k[i], percent_points[i])) plt.show() t = [0, 0.10, 0.20, 0.30, 0.40, 0.50] percent_points= [] percent_points_time= [] for i in range(6): lamda = 3/60 k = 6 mu = k*1/(90*(1-t[i])) v = 1/35 k=1 alpha = lamda/mu beta = v/mu v_ = 1/(mu) #Проверка на точность для первой суммы eps = 0.00001 r1 = 1 cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1) while cond1 >= eps: cond1 = ((alpha/beta)**r1 * math.exp(alpha/beta)) / math.factorial(r1) r1 += 1 #Подсчет pn sum1_1 = 0 for n in range(0, k+1): sum1_1 += alpha**n / (math.factorial(n)) sum1_2 = 0 for s in range(1, r1+1): mul = 1 for m in range(1,s+1): mul *=(k + m*beta) sum1_2 += alpha**s / mul p = np.zeros(2) p[0] = 1 / (sum1_1 + sum1_2*(alpha**k / (math.factorial(k)))) p[1] = p[0]* alpha**1 / math.factorial(1) #Подсчет вероятностей pk+s pk = np.zeros(r1+1) for s in range(1,r1+1): mul3 = 1 for m in range(1, s+1): mul3 *=(k+m*beta) pk[s] = p[0]*alpha**(k+s) / (math.factorial(k)*mul3) b_ = 0 for s in range(1, r1+1): b_ += s*pk[s] p_otk = b_*beta/alpha percent = (1 - p_otk)*100 percent_points.append(percent) percent_points_time.append(90*(1-t[i])) fig, ax = plt.subplots() ax.set_ylabel('Процент использованной информации') ax.set_xlabel('Длительность обработки сводки данных одним сотрудником') ax.plot(percent_points_time, percent_points, marker='o') for i in range(len(percent_points_time)): ax.annotate(f'({round(percent_points[i],3)}; {round(percent_points_time[i], 3)})', (percent_points_time[i], percent_points[i])) plt.show()