
Добавил:
toykion
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:lab2
.py import random as rd
import matplotlib.pyplot as plt
import numpy as np
a, b = 2, 3
def rasp(N_max):
arr = []
x_min, x_max = 0, 0
N_mass = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
N = 0
delta = 0
while min(N_mass) < N_max:
N += 1
arr.append(round(rd.random() * (b - a) + a, 2))
if delta != 0:
div = arr[-1] // delta
mod = arr[-1] % delta
for j in range(10):
if (div == j and mod > 0) or (div == j + 1 and mod == 0):
N_mass[j] += 1
break
P = (N - sum(N_mass)) / N
if P >= 0.01 and len(arr) >= 2:
x_min = min(arr)
x_max = max(arr)
delta = (x_max - x_min) / 10
N_mass = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(len(arr)):
div = (arr[i] - min(arr)) // delta
mod = round((arr[i] - min(arr)) % delta, 2)
for j in range(10):
if ((div == j and mod > 0) or (div == j + 1 and mod == 0)):
N_mass[j] += 1
break
return [N_mass, arr, x_min, x_max, delta]
def hist(N_max):
[N_mass, arr, x_min, x_max, delta] = rasp(N_max)
N = sum(N_mass)
print(N_mass)
x = []
y = []
for i in range(10):
x.append(round(delta * i, 2)+x_min)
y.append(1 / (b - a))
N_mass[i] = N_mass[i] / (N * delta)
x = list(map(str, x))
plt.plot(x, y, color='r')
plt.bar(x, N_mass, width=1)
plt.title('Гистограмма выборки')
plt.xlabel('X')
plt.ylabel('Ni')
plt.show()
def static(N_min, N_max, step):
m, M, d, D, x = [], [], [], [], []
while N_min <= N_max:
[N_mass, arr, x_min, x_max, delta] = rasp(N_min)
N_min += step
m.append((max(arr) + min(arr)) / 2)
M.append((b + a) / 2)
D.append(((b - a) ** 2) / 12)
d.append(((max(arr) - min(arr)) ** 2) / 12)
x.append(len(arr))
plt.plot(x, m, x, M)
plt.title('Мат ожидание')
plt.xlabel('Размер выборки')
plt.legend (('Рассчитанное значение', 'Теоретическое значение'))
plt.show()
plt.plot(x, d, x, D)
plt.title('Дисперсия')
plt.xlabel('Размер выборки')
plt.legend (('Рассчитанное значение', 'Теоретическое значение'))
plt.show()
hist(100)
static(10,100,5)
rasp(100)
import matplotlib.pyplot as plt
import numpy as np
a, b = 2, 3
def rasp(N_max):
arr = []
x_min, x_max = 0, 0
N_mass = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
N = 0
delta = 0
while min(N_mass) < N_max:
N += 1
arr.append(round(rd.random() * (b - a) + a, 2))
if delta != 0:
div = arr[-1] // delta
mod = arr[-1] % delta
for j in range(10):
if (div == j and mod > 0) or (div == j + 1 and mod == 0):
N_mass[j] += 1
break
P = (N - sum(N_mass)) / N
if P >= 0.01 and len(arr) >= 2:
x_min = min(arr)
x_max = max(arr)
delta = (x_max - x_min) / 10
N_mass = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(len(arr)):
div = (arr[i] - min(arr)) // delta
mod = round((arr[i] - min(arr)) % delta, 2)
for j in range(10):
if ((div == j and mod > 0) or (div == j + 1 and mod == 0)):
N_mass[j] += 1
break
return [N_mass, arr, x_min, x_max, delta]
def hist(N_max):
[N_mass, arr, x_min, x_max, delta] = rasp(N_max)
N = sum(N_mass)
print(N_mass)
x = []
y = []
for i in range(10):
x.append(round(delta * i, 2)+x_min)
y.append(1 / (b - a))
N_mass[i] = N_mass[i] / (N * delta)
x = list(map(str, x))
plt.plot(x, y, color='r')
plt.bar(x, N_mass, width=1)
plt.title('Гистограмма выборки')
plt.xlabel('X')
plt.ylabel('Ni')
plt.show()
def static(N_min, N_max, step):
m, M, d, D, x = [], [], [], [], []
while N_min <= N_max:
[N_mass, arr, x_min, x_max, delta] = rasp(N_min)
N_min += step
m.append((max(arr) + min(arr)) / 2)
M.append((b + a) / 2)
D.append(((b - a) ** 2) / 12)
d.append(((max(arr) - min(arr)) ** 2) / 12)
x.append(len(arr))
plt.plot(x, m, x, M)
plt.title('Мат ожидание')
plt.xlabel('Размер выборки')
plt.legend (('Рассчитанное значение', 'Теоретическое значение'))
plt.show()
plt.plot(x, d, x, D)
plt.title('Дисперсия')
plt.xlabel('Размер выборки')
plt.legend (('Рассчитанное значение', 'Теоретическое значение'))
plt.show()
hist(100)
static(10,100,5)
rasp(100)
Соседние файлы в предмете Имитационное моделирование