In uno stabilimento un robot dispone lattine di pomodori pelati su un piano. Un giorno il robot impazzisce ed anziché disporre le lattine sul piano con la base orizzontale le poggia con la base inclinata in modo casuale rispetto al piano di appoggio; alcune si raddrizzano, altre no. Dopo che è stato deposto un grandissimo numero di lattine, si scopre che almeno $ \dfrac{2}{3}$ di esse si sono raddrizzate. Schematizzando una lattina come un cilindro omogeneo di raggio di base $R$ ed altezza $h$, quanto deve essere, almeno, il rapporto $\dfrac{R}{h}$? (Motiva la risposta)
Dato che gli angoli $M\widehat{K}J$ e $J\widehat{N}M$ sono retti, ne consegue che $K\widehat{M}N=\alpha$ e $K\widehat{J}N$ sono supplementari e quindi l'angolo $Q\widehat{J}K=\alpha$. Il robot posiziona i barattoli con angoli che vanno da $-\dfrac{\pi}{2}$ a $\dfrac{\pi}{2}$, ora la condizione che permette al barattolo di restare in piedi è che la proiezione di $M$ ($N$) cada nella proiezione della base. Considerando, data la simmetria del problema si può analizzare solo il caso $0 \leq \alpha \leq \dfrac{\pi}{2}$ si ha che il barattolo rimane in piedi se $N \in QJ$, il caso limite si ha quando $N \equiv J$. In questo caso si ha che $tg(\alpha)=\dfrac{R}{\dfrac{h}{2}}$. La condizione proposta dal problema si può scrivere: $ \dfrac{\alpha}{\dfrac{\pi}{2}}=\dfrac{2}{3} $ Anche qui si fa uso di probabilità geometrica: casi possibili arco di ampiezza $\dfrac{\pi}{2}$ casi favorevoli arco di ampiezza $\alpha$.
Nel caso in esame, si ricava $\alpha=\dfrac{\pi}{3}$ e dato che $tg(\alpha)=\dfrac{R}{\dfrac{h}{2}}$ si ha: $ \dfrac{2R}{h}=\sqrt{3} $
import math
import random
import numpy as np
import matplotlib.pyplot as plt
prove = 20000
inpiedi = 0
n = 500
R = 1
h = R/10
maxh = 6*R
dh = (maxh-h)/n
Bx = R
hY = []
nX = []
k = 0
while h<=maxh:
By = h/2
inpiedi = 0
for i in range(1,prove):
alpha = math.pi/2-random.random()*(math.pi)
alpha = abs(alpha)
B1x=Bx*math.cos(alpha)-By*math.sin(alpha)
if B1x>=0:
inpiedi += 1
prob = inpiedi/prove
hY.append(prob)
nX.append(h)
h += dh
plt.figure(figsize=(10,10))
hY = np.array(hY,dtype=np.float64)
nX = np.array(nX,dtype=np.float64)
plt.plot(nX,hY, 'k.')
plt.plot(2*R/math.sqrt(3),2/3,'ro')
plt.axhline(y=2/3,color='gray')
plt.xlabel('h')
plt.ylabel('probabilità di restare in piedi')
plt.show()