completamento del puzzle
Riassunto del problema: fissato un valore r per le ripetizioni e un valore n per la lunghezza, voglio calcolare il numero di sequenze di lanci che terminano dopo n lanci perché una faccia si è ripetuta r volte.
Supponiamo che nell'ultimo lancio (il numero n) sia uscita la faccia "1"; allora negli n-1 lanci precedenti devono essere uscite altre r-1 facce "1". Questo può verificarsi in molti modi, tanti quanti r-1 facce "1" possono disporsi sulle n-1 caselle disponibili, quindi le combinazioni di n-1 oggetti di classe r-1. Per ognuna delle disposizioni degli "1" rimangono n-r caselle in cui distribuire le restanti 5 facce in modo che possano ripetersi al massimo r-1 volte: questo è quello che abbiamo imparato a calcolare nella pagina precedente con la funzione generatrice esponenziale: a scopo di notazione introduco una funzione F(t,u,v) che calcola il numero di sequenze lunghe t, formate da lettere prese da un insieme di u lettere in modo che ognuna possa ripetersi al massimo v volte. Con queste notazioni e tenendo conto che quanto detto per la faccia "1" può ripetersi anche per le altre, la soluzione del problema di inizio pagina diventa: \( 6\cdot \binom{n-1}{r-1}\cdot F(n-r,5,r-1) \)
Il calcolo della funzione F(t,u,v) si effettua così: si calcola questa potenza \( (1+x+\frac{x^2}{2!}+...+\frac{x^v}{v!})^u \) , si moltiplica ogni termine del risultato per il fattoriale dell'esponente della x e poi si prende il coefficiente del termine di grado t .
Naturalmente si vorrebbe che i calcoli li facesse un CAS. Iniziai con Derive, ma mi fermai perché non so come estrarre i coefficienti del polinomio (se qualcuno lo sa per favore lo scriva in un commento qui sotto). Passai a Maple, l'altro CAS disponibile, che non conoscevo bene; però ha un help ricco e con un po' di pazienza sono riuscito a mettere insieme un'espressione funzionante in questo modo:
per generare il primo polinomio ho pensato che si tratta del primo pezzo dello sviluppo in serie di ex e per questo nel package Student[NumericalAnalysis] c'è la funzione TaylorPolynomial che ho scritto così TaylorPolynomial(ex,x,order=v) che dice di generare il polinomio di Taylor dell'esponenziale fino all'esponente v ; la cosa importante è che il risultato è riconosciuto come polinomio. Poi ho elevato il risultato a u ottenendo un altro polinomio. Ora bisogna creare una lista dei coefficienti del polinomio e si fa con la funzione CoefficientList del package PolynomialTools. Poi bisognerebbe moltiplicare ogni coefficiente per il fattoriale dell'esponente di x, cosa non semplice, però un esempio visto per caso mi ha aiutato: la funzione listtolist del package gfun dedicato alle funzioni generatrici ha un parametro che impostato a 'Laplace' moltiplica ogni elemento per il fattoriale di cui si è detto [cosa c'entri Laplace e perché funzioni così non riesco a immaginarlo, ma funziona] e quindi con questo ho modificato la lista precedente; Infine con la funzione op ho estratto il termine di posto t+1 dalla lista, corrispondente al coefficiente del termine di grado t. Mettendo tutto assieme ne risulta questa formula: \[ with(Student[NumericalAnalysis]):with(PolynomialTools):with(gfun):\] \[ F:=(t,u,v)\rightarrow op(t+1,listtolist(CoefficientList((TaylorPolynomial(e^x,x,order=v))^u,x),'Laplace')) \]
A questo punto ho potuto provare a vedere se riottenevo i risultati riportati in Cabrinews, dove però è riportata la probabilità che una sequenza si fermi dopo n lanci avendo ottenuto r ripetizioni di una faccia: per ottenerla basta dividere il numero di sequenze che si fermano dopo n lanci per il numero totale di sequenze lunghe n, che è 6n . Quindi ho costruito la funzione P(n,r) che dà questa probabilità \[ P:=(n,r)\rightarrow\frac{6\cdot binomial(n-1,r-1)\cdot F(n-r,5,r-1)}{6^n} \]
Esempio: vogliamo fermarci dopo 3 ripetizioni e calcoliamo la probabilità che succeda al settimo lancio: n=7 r=3 viene \( P(7,3)=\frac{25}{144} \) che corrisponde a quanto calcolato da Giorgio Goldoni, e ancora \( P(11,3)=\frac{4375}{93312} \) che corrisponde. Passando a 4 ripetizioni, riportate in un altro messaggio, viene \( P(11,4)=\frac{27125}{209952} \) che corrisponde ancora.
Ora è facile trovare la media dei lanci, come richiesto dal problema di partenza: la funzione M(r) calcola il numero medio di lanci necessari per ottenere una ripetizione di r volte \[ M:=r\rightarrow \sum_{i=r}^{6r-5} P(i,r)\cdot i \] Il limite superiore 6r-5 è dato da 6(r-1)+1 perché con questo numero di lanci è sicuro che si ottiene una ripetizione e quindi la sequenza più lunga ha questa dimensione.
Riporto alcuni valori forniti da Maple istantaneamente:
\( M(2)=\frac{1223}{324} M(3)=\frac{4084571}{559872} M(4)=\frac{247150321423}{22039921152} M(5)=\frac{56252877655712005}{3656158440062976} M(6)=\frac{2597868106693535971}{131621703842267136} M(7)=\frac{1004137746946400066467061}{41451359947637504606208} \)
Se qualcuno sa scrivere le formule per altri CAS farebbe piacere se le aggiungesse in un commento a questa pagina.
Nel corso di questa avventura ho imparato parecchie cose che non conoscevo e spero che qualcuna possa essere utile anche a chi ha avuto la pazienza di leggere fin qui.