Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР 2 / ЛАБА_2

.pdf
Скачиваний:
0
Добавлен:
08.07.2024
Размер:
322.63 Кб
Скачать

Цель работы:

Изучение алгоритмов получения на ЭВМ чисел с заданным законом распределения и построения гистограмм.

Вариант №9

Равномерный закон распредления

Ход работы:

Нахождение количества чисел, подсчет количества вхождений значений в интер-

валы, минимальное и максимальное значение массива и времени работы программы в со-

ответствии с рисунком 1.

Рисунок 1 – Вывод значений График зависимости значений нормального распределения от количества вхожде-

ний в интервалы с плотностью распределения в соответствии с рисунком 2 (Листинг A).

Рисунок 2 – График нормального распределения Список использованных переменных:

Название

Тип переменной

Хранимое значение

mass

массив

все числа выборки

 

 

2

x, x1

float

случайные числа от 0 до 1

alph, alph1

float

закон нормального распределения для случайных

 

 

величин

math

int

мат ожидание

disp

int

дисперсия

grafic

массив

кол-во чисел выборки, попадающее в промежутки

P

float

экспериментальная оценка вероятности

n

int

кол-во элементов выборки

x_min, x_max

float

минимальный и максимальный эл-ты выборки

delta

float

длительность интервалов

k

int

номер интервала

M

float

значения мат ожидания на каждом сотом шаге

D

float

значения дисперсии на каждом сотом шаге

N

float

общее кол-во шагов

x

float

нормированные интервалы

y

float

нормированное кол-во вхождений в интервалы

start_time

float

время работы программы

График зависимости математического ожидания от размера выборки с линией теоритеческого математического ожидания в соответствии с рисунком 3.

Рисунок 3 – График зависимости математического ожидания от размера выборки График зависимости дисперсии от размера выборки с линией теоритеческой

дисперсии в соответствии с рисунком 4.

3

Рисунок 4 – График зависимости дисперсии от размера выборки

Вывод:

В ходе лабораторной работы я познакомилась с алгоритмами получения на ЭВМ чисел с равномерным законом распределения, построила гистограмму сформированной выборки по интервалам, а также графики зависимости математического ожидания и дисперсии от размера выборки, добавив на график теоретическое значение.

По полученным графикам можно сделать вывод, что с увеличением выборки оценки дисперсии и математического ожидания приближаются к теоретическим.

Доп: №34

4

Листинг А

from math import * import numpy as np import random

from scipy.stats import uniform import matplotlib.pyplot as plt import time

def main():

start_time = time.time() a, b = 0, 5

mass = [] # массив выборки – пустой

mean, sd = (b+a)/2, ((b-a)**2)/12 # мат ожидание, дисперсия n = 0 # количество элементов выборки

delta = 0

x_min, x_max = 0, 0 grafic = np.zeros(10) M = []

D = []

N = []

while min(grafic) < 1000: n += 1

x = random.uniform(0.0, 1.0) #независимая случайная величина, распре-

деленная по рав-му закону alph = x * (b-a) + a mass.append(alph)

P = (n - sum(grafic)) / n # вероятность попадания случайной величины за границы данного интервала

if len(mass) >= 2:

if P >= 0.01: # Пересчет всех Ni grafic = [0] * 10

x_min = np.amin(mass) x_max = np.amax(mass)

delta = (x_max - x_min) / 10

for i in mass: # подсчет кол-ва вхождений элементов в интер-

валы

k = floor((i - x_min)/delta) if k == 10:

k = 9

if 9 >= k >= 0:

5

grafic[k] += 1 print(grafic)

else: # нахождение номера интервала последнего сгенерированного числа в массиве

k = floor((mass[-1] - x_min) / delta) if k == 10:

k = 9

if 9 >= k >= 0: grafic[k] += 1

print(grafic)

if n % 100 == 0:

M.append(np.mean(mass)) # мат ожидание на каждом сотом шаге

D.append(np.var(mass)) # дисперсия на каждом сотом шаге

N.append(n) # количество элементов

print('Количество чисел:', n)

print('Количество вхождений в интервалы', grafic) print('Минимальное число:', x_min, 'Максимальное число:', x_max) print('Время работы программы:', time.time() - start_time)

x = [] # значения интервалов (по середине) y = [] # кол-во попаданий в эти интервалы x.append(x_min + delta/2)

for i in range(9): x.append(x[i] + delta)

for i in range(0, 10): y.append(grafic[i] / ((n)*delta))

print(x)

print(y)

# график гистограммы и плотности распределения plt.xlabel('Интервалы') plt.ylabel('Количество вхождений в интервалы') line = np.linspace(x_min, x_max, 100)

plt.plot(line, uniform.pdf(line, loc=a, scale=b-a), lw=5, alpha=0.6, color='r')

plt.bar(x, y, width=delta)

6

plt.title('Гистограмма сформированной выборки') plt.show()

# график мат ожидания

x = np.arange(0, len(N), 1) plt.figure(3)

plt.plot(x, M)

plt.plot(range(0, len(x)), [mean for i in range(0, len(x))]) plt.title("Мат ожидание")

plt.xlabel('размер выборки') plt.ylabel('мат. ожидание') plt.show()

# график дисперсии plt.figure(4) plt.plot(x, D)

plt.plot(range(0, len(x)), [sd for i in range(0, len(x))]) plt.title("Дисперсия")

plt.xlabel('размер выборки') plt.ylabel('дисперсия') plt.show()

main()

7

Соседние файлы в папке ЛР 2