Advertisement
AIwinter

Untitled

Mar 28th, 2024
9
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import math
  4.  
  5. rng = np.random.default_rng() #рандом генератор
  6.  
  7. a = float(input("Введите a: "))
  8. b = float(input("Введите b: "))
  9. n = int(input("Введите n: "))
  10.  
  11. s = [] #массив R большое
  12. sum_s = 0
  13. sum_sq = 0
  14.  
  15. for i in range(n): #массив R большое
  16. rand_num = a + (b - a) * rng.random()
  17. s.append(rand_num)
  18. sum_s += rand_num
  19. sum_sq += rand_num ** 2
  20.  
  21. s.sort() #сортирует по возрастанию
  22.  
  23. M = sum_s / n
  24. sq_M = sum_sq / n
  25. teor_M = (a + b) / 2
  26. DR = sq_M - M ** 2
  27. teor_DR = ((b - a) ** 2) / 12
  28.  
  29. S = math.ceil(1 + 3.322 * math.log10(n)) #Правило Стёрджеса
  30. h = (b - a) / S #шаг
  31. npi = n / S #н пи ай из формулы
  32. x2 = 0
  33.  
  34. nums = []
  35. i = a
  36.  
  37. num = 0
  38. while i + 0.1 < b: #ошибка с плавающей запятой. чтобы не было доп. интревала
  39. if len(s) > 0 and i < s[0] < i + h: #считаем количество значений R в интервале
  40. num += 1
  41. s.pop(0)
  42. else: #если значения в интервале закончились высчитываем хи квадрат, добавляем количество R в массив nums и увеличиваем i на шаг, т.е. переходим к след. интервалу
  43. x2 += ((num - npi) ** 2) / npi
  44. nums.append(num)
  45. num = 0
  46. i += h
  47.  
  48. fig, ax = plt.subplots()
  49. x = np.linspace(a, b, S)
  50. ax.plot(x, nums)
  51. print(f' k: {S - 1} \n Xи^2: {x2} \n'
  52. f' Расчетное математическое ожидание: {M} \n '
  53. f'Теоретическое математическое ожидание: {teor_M} \n'
  54. f' Расчетная дисперсия: {DR} \n'
  55. f' Теоретическая дисперсия: {teor_DR}')
  56. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement