import numpy as np # Функция, считающая сопротивление для набора резисторов def calc_r(r1, r2, r3, r4, r5, r6): r23 = r2 + r3 # 2 и 3 - последовательно r45 = r4 + r5 # 4 и 5 - последовательно r236 = (r23 * r6) / (r23 + r6) # [2,3] и 6 - параллельно r1236 = r1 + r236 # 1 и [2, 3, 6] - последовательно return (r45 * r1236) / (r45 + r1236) # [4, 5] и [1, 2, 3, 6] - параллельно # Массив всех возможноых сопротевление ans = [] # Доступные номиналы резисторов (13 штук) r = [100, 120, 150, 180, 220, 270, 330, 390, 470, 560, 680, 820, 1000] # Перебираем все возможные комбинации (13^6 штук) for r1 in r: for r2 in r: for r3 in r: for r4 in r: for r5 in r: for r6 in r: # Считаем сопротивление, и добавляем в ответ ans.append(calc_r(r1, r2, r3, r4, r5, r6)) # Считаем среднее # В задаче написано 'матожидание', но в нашем случае оно равно среднему # Если считать его честно, то надо для каждого значения считать количество значений, # делить на количество уникальных занчений среди всех элементов, умножать на само значение, и суммировать, # что явно сложнее... print(np.mean(ans)) Шутка на тему: Экспериментальным путём было установлено, что сопротивление проводника больше, чем сопротивление проводницы. https://xkcd.com/356/
Comments