forked from vongostev/202-Advanced-Python-1
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtask2.py
More file actions
81 lines (63 loc) · 1.59 KB
/
task2.py
File metadata and controls
81 lines (63 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import numpy as np
from scipy.stats import poisson
from math import exp
from math import pow
from math import sqrt
import scipy.special
#Задание1
def poisson_fun(lamda, N):
try:
z = np.arange(0, N, 1)
x = poisson.pmf(z, lamda)
#print(x)
return x
if lamda < 0:
raise ValueError
except ValueError:
print("Lambda must be positittve")
#Задание2
def moments(arr, k):
try:
indexes = np.arange(arr.size)
indexes = np.power(indexes, k)
a = np.dot(indexes, arr)
#res = a.sum()
return a
except:
print('Incorrect data')
#Задание3
def average(new_arr): #new_arr заменить на array для тстирования с моментами
#new_arr = np.moments(array, k)
#avg = 0
#num = 0
#for i in new_arr:
#avg += i
#num += 1
#print(avg)
#avg = avg / num
avg = moments(new_arr, 1)
#res_arr = np.power(new_arr - avg, 2)
#disp = 0
#for i in res_arr:
#disp += i
#disp = disp / res_arr.size
#print(res_arr)
#disp = moments(res_arr, k)
return avg
def dispers(new_arr, N):
avg = average(new_arr)
res_arr = np.power(new_arr - avg, 2)
#disp = moments(res_arr, 1)
disp = np.dot(res_arr, poisson_fun(new_arr, N))
return sqrt(disp)
#Задание4
lamda = float(input())
N = int(input())
k = int(input())
pois_arr = poisson_fun(lamda, N)
#pois_arr = moments(pois_ar, k)
aver = average(pois_arr)
disper = dispers(pois_arr, N)
#print(moments(pois_arr, k))
print(aver)
print(disper)