import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
style.use('bmh')
#Not to show warning messages (to keep the notebook clean)
import warnings
warnings.filterwarnings('ignore')
#Example 1
t = np.linspace(0, 20, 2000) # t is defined from 0 to 20 with 2000 points
plt.figure(figsize=(16,6))
plt.plot(t, np.sin(t)-2)
plt.plot(t, np.cos(t))
plt.xlabel('$t$')
plt.ylabel('$x(t)$')
plt.title('Plot functions')
plt.xlim([0, 20])
plt.grid(True)
plt.show()
#Example 2
t = np.linspace(-5, 5, 100) # t is defined from -5 to 5 with 100 points
plt.figure(figsize=(16,6))
plt.plot(t, t**2,label='$t^2$')
#plt.plot(t, 1/3 * t**3, label='$t^3/3$')
plt.xlabel('$t$')
plt.ylabel('$x(t)$')
plt.grid(True)
plt.legend()
plt.show()
#Example 2
t = np.linspace(0, 5, 100) # t is defined from -5 to 5 with 100 points
plt.figure(figsize=(16,6))
plt.plot(t, np.exp(-t))
#plt.plot(t, 1/3 * t**3, label='$t^3/3$')
plt.xlabel('$t$')
plt.ylabel('$x(t)$')
plt.grid(True)
plt.show()
def flip(p):
return 'H' if np.random.random() < p else 'T'
### Experiment 1
p=0.65
flip(p)
### Experiment 2 - 10 trials
a = [None] * 10 #create an empty list with 10 elements
for i in range(10):
a[i]=flip(p)
print(a)
['T', 'H', 'H', 'H', 'T', 'H', 'H', 'H', 'T', 'T']
### Experiment 3 - Empirical probability based on frequency
#Number o realizations
x_max = 10000
count = 0
#Experiment
for x in range(0, x_max):
a = flip(p)
#print a
if a == 'H':
count = count + 1
print('Number of heads:', count)
print('Number of tails:', x_max - count)
Number of heads: 6494
Number of tails: 3506
#Probability from experiments: Number of Heads or Tails diveded by the number of realizations
print('Empirical frequency')
print('Probability (heads):', count / x_max)
print('Probability (tails):', (x_max-count) / x_max)
print('Bias probability')
print('Probability (heads):', p)
print('Probability (tails):', 1-p)
Empirical frequency
Probability (heads): 0.6494
Probability (tails): 0.3506
Bias probability
Probability (heads): 0.65
Probability (tails): 0.35
#Simulating Poisson distribution with mean 4
mean=4
samples = np.random.poisson(mean, 10)
print(samples)
[2 3 6 4 3 8 5 5 6 5]
### Drawing a histogram (empirical distribution)
mean=2
samples_mean2 = np.random.poisson(mean, 10000)
n_bins2 = np.max(samples_mean2)
##
plt.figure(figsize=(14,5))
plt.hist(samples_mean2,n_bins2)
plt.xlabel('$n$')
plt.ylabel('Frequency of $N = n$')
plt.title('Poisson distribution')
plt.show()
mean=4
samples_mean4 = np.random.poisson(mean, 10000)
n_bins4 = np.max(samples_mean4)
##
plt.figure(figsize=(14,5))
plt.hist(samples_mean4,n_bins4,density=True)
plt.xlabel('$n$')
plt.ylabel('Frequency of $N = n$')
plt.title('Poisson distribution')
plt.show()
mean=6
samples_mean6 = np.random.poisson(mean, 10000)
n_bins6 = np.max(samples_mean6)
##
plt.figure(figsize=(14,5))
plt.hist(samples_mean6,n_bins6)
plt.xlabel('$n$')
plt.ylabel('Frequency of $N = n$')
plt.title('Poisson distribution')
plt.show()
n_bins = np.max([n_bins2, n_bins4,n_bins6])
plt.figure(figsize=(14,5))
plt.hist([samples_mean2, samples_mean4,samples_mean6],n_bins)
plt.xlabel('$n$')
plt.ylabel('Frequency of $N = n$')
plt.title('Poisson distribution')
plt.show()
#time periods
size=10000
#Arrival
mean=1
arrival = np.random.poisson(mean, size)
#Service
mean=1.5
service = np.random.poisson(mean, size)
#
queue = np.zeros(size+1)
for i in range(size):
if ((arrival[i] - service[i]) + queue[i]) > 0:
queue[i+1] = max(0,(arrival[i] - service[i]) + queue[i])
plt.figure(figsize=(14,5))
#plt.plot( arrival, 'o',label='Arrival')
#plt.plot( service, 'x',label='Sevice')
plt.plot( queue, 'ok')
plt.xlabel('$n$')
plt.ylabel('Size')
plt.title('Queue')
#plt.ylim([0, 1])
#plt.xlim([0, 10])
plt.grid(True) #grid
plt.show()
print('Worst delay:', np.max(queue))
Worst delay: 18.0
#time periods
size=10000
#Arrival
mean=1.5
arrival = np.random.poisson(mean, size)
#Service
mean=1
service = np.random.poisson(mean, size)
#
queue = np.zeros(size+1)
for i in range(size):
if ((arrival[i] - service[i]) + queue[i]) > 0:
queue[i+1] = max(0,(arrival[i] - service[i]) + queue[i])
plt.figure(figsize=(14,5))
#plt.plot( arrival, '--o',label='Arrival')
#plt.plot( service, '-x',label='Sevice')
plt.plot( queue, 'ok')
plt.xlabel('$n$')
plt.ylabel('Size')
plt.title('Queue')
#plt.ylim([0, 1])
#plt.xlim([0, 10])
plt.grid(True) #grid
plt.show()
print('Worst delay:', np.max(queue))
Worst delay: 4980.0
#time periods
size=50000
#Arrival
mean=1
arrival = np.random.poisson(mean, size)
#Service
mean=1
service = np.random.poisson(mean, size)
#
queue = np.zeros(size+1)
for i in range(size):
if ((arrival[i] - service[i]) + queue[i]) > 0:
queue[i+1] = max(0,(arrival[i] - service[i]) + queue[i])
plt.figure(figsize=(14,5))
#plt.plot( arrival, '--o',label='Arrival')
#plt.plot( service, '-x',label='Sevice')
plt.plot( queue, 'ok')
plt.xlabel('$n$')
plt.ylabel('Size')
plt.title('Queue')
#plt.ylim([0, 1])
#plt.xlim([0, 10])
plt.grid(True) #grid
plt.show()
print('Worst delay:', np.max(queue))
Worst delay: 279.0