Passeggiate casuali

1-dimensionali, senza memoria, a passo variabile: posizioni finali.

Iniziamo col condurre alcune semplici riflessioni.

Per esempio se $L=1$, dopo n passi le posizioni raggiunte costituiscono una variabile aleatoria $X_{1,n}$:

N° di passi valori di $X_{1,n}$: posizioni raggiunte
1 –1, 0, +1
2 –2,–1, 0, +1, +2
3 –3, –2,–1, 0, +1, +2, +3
….  
n –n, … –2, –1, 0, +1, +2, …, +n

Ciascuna di queste posizioni può essere raggiunta con percorsi diversi:

N° di passi N° di percorsi che conducono a ogni valore di $X_{1,n}$
1 1, 1, 1
2 1, 2, 3, 2, 1
3 1, 3, 6, 7, 6, 3, 1
….  
$n$ coefficienti dello sviluppo di $(1 + x + x^2)^n$ oppure di
$(x^{-1}+1+x)^n$ dove le potenze di $x$ sono anche le posizioni raggiunte.

Tali coefficienti $\binom{n}{k}_2,\;\;k=0,1,\dots,2n$, per cui $\displaystyle (1+x+x^2)^n=\sum_{k=0}^{2n}\binom{n}{k}_2x^k$ ovvero $\displaystyle (x^{-1}+1+x)^n=\sum_{X=-n}^n\binom{n}{n+X}_2x^X$, sono detti trinomiali e soddisfano la relazione \[\displaystyle\binom {n}{k+2}_2=\binom {n-1}{k}_2+\binom {n-1}{k+1}_2+\binom {n-1}{k+2}_2.\] Si noti che $\binom {n}{k}_2=\binom {n}{2n-k}_2$.
Si tratta anche del numero di modi distinti in cui $k$ oggetti indistinguibili possono essere distribuiti in $n$ urne distinguibili consentendo al massimo 2 oggetti in ciascuna urna.

I trinomiali sono riducibili a binomiali: \[\displaystyle\binom {n}{k}_2=\sum_{j=\lfloor\frac{k+1}{2}\rfloor}^k\binom{n}{j}\binom{j}{k-j}.\] Equivalentemente \[\displaystyle\binom {n}{k}_2=\sum_{j=\lfloor\frac{k}{2}\rfloor}^k\binom{n}{k-j\;\;\;2j-k\;\;\;n-j}.\] Infatti considerando che $$\displaystyle(a + b + c)^n=\sum_{i_1+i_2+i_3=n}\binom{n}{i_1\;\;i_2\;\;i_3}a^{i_1}b^{i_2}c^{i_3}$$ e quindi $$\displaystyle(1 + x + x^2)^n=\sum_{i_1+i_2+i_3=n}\binom{n}{i_1\;\;i_2\;\;i_3}x^{i_2+2i_3}$$ da cui, posto $\begin{cases}i_2+2i_3=k \\ i_2+i_3=n-i_1 \end{cases}$, si ricava $$\displaystyle(1 + x + x^2)^n=\sum_{k=0}^{2n}\Big(\sum_{i_1}\frac{n!}{i_1!\;\;(2n-2i_1-k)!\;\;(i_1+k-n)!}\Big)x^k$$ ovvero, ponendo poi $j=n-i_1$, \[\displaystyle\binom {n}{k}_2=\sum_{j}\binom{n}{n-j\;\;\;\;\;2j-k\;\;\;\;\;k-j}=\sum_{j}\binom{n}{j}\binom{j}{k-j}.\] Se consideriamo $\displaystyle(x^{-1}+1 + x)^n=\sum_{i_1+i_2+i_3=n}\binom{n}{i_1\;\;i_2\;\;i_3}x^{-i_1+i_3}$, posto $\begin{cases}-i_1+i_3=X \\ i_1+i_3=n-i_2 \end{cases}$, si ricava \[(x^{-1}+1 + x)^n=\sum_{X=-n}^{n}\left(\sum_{i_2}\frac{n!}{\left(\frac{n-X-i_2}{2}\right)!\;\;i_2!\;\;\left(\frac{n+X-i_2}{2}\right)!}\right)x^X=\sum_{X=-n}^{n}\left(\sum_{j}\binom{n}{\frac{j-X}{2}\;\;n-j\;\;\;\frac{j+X}{2}}\right)x^X\] \[=\sum_{X=-n}^{n}\left(\sum_{j}\binom{n}{j}\binom{j}{\frac{X+j}{2}}\right)x^X\] da cui\[\displaystyle\binom {n}{n+X}_2=\sum_{j}\binom{n}{j}\binom{j}{\frac{X+j}{2}}\] Alternativamente $$\displaystyle(x^{-1}+1 + x)^n=\sum_{j=0}^n\binom{n}{j}(x^{-1}+x)^j=\sum_{j=0}^n\binom{n}{j}\sum_{i=0}^j\binom{j}{i}x^{j-2i}=$$ \[=\sum_{j=0}^n\binom{n}{j}\sum_{k=-j}^j\binom{j}{\frac{k+j}{2}}x^{k}=\sum_{k=-n}^n\sum_{j=|k|}^n\binom{n}{j}\binom{j}{\frac{k+j}{2}}x^{k}.\] Del resto \[(x^{-1}+1 + x)^n=(1 + x + x^2)^nx^{-n}= \sum_{k=0}^{2n}\sum_{j}\binom{n}{j}\binom{j}{k-j}x^{k-n}= \sum_{h=-n}^{n}\sum_{j}\binom{n}{j}\binom{j}{n+h-j}x^{h}.\]

La somma dei $2n+1$ elementi di ciascuna riga è una potenza del 3 e ciascuna riga dello schema può ottenersi dalla precedente con javascript nel modo seguente:

lst = [0,0,...lst].map((x,k)=>x+[0,...lst,0][k]+[...lst,0,0][k]);

ovvero per produrre tutto lo schema:

lst = [1]; for(var i=0; i<n; i++) lst = [0,0,...lst].map((x,k)=>x+[0,...lst,0][k]+[...lst,0,0][k]);
quindi la distribuzione di probabilità per ciascuna $X_{1,n}$ si ottiene con:
lst = [1]; for(var i=0; i<n; i++) lst = [0,0,...lst].map((x,k)=>(x+[0,...lst,0][k]+[...lst,0,0][k])/3);
n=3

Si tratta della distribuzione teorica.

Se per esempio se $L=2$, dopo n passi le posizioni raggiunte costituiscono una variabile aleatoria $X_{2,n}$:

N° di passi valori di $X_{2,n}$: posizioni raggiunte
1 –2,–1, 0, +1, +2
2 –4, –3, –2,–1, 0, +1, +2, +3, +4
3 –6, –5, –4, –3, –2,–1, 0, +1, +2, +3, +4, +3, +4, +5, +6
….  
n –2n, … –2, –1, 0, +1, +2, …, +2n

Ciascuna di queste posizioni può essere raggiunta secondo percorsi diversi:

N° di passi N° di percorsi che conducono a ogni valore di $X_{2,n}$
1 1, 1, 1, 1, 1
2 1, 2, 3, 4, 5, 4, 3, 2, 1
3 1, 3, 6, 10, 15, 18, 19, 18, 15, 10, 6, 3, 1
….  
n coefficienti dello sviluppo di $(1 + x + x^2 + x^3 + x^4)^n$
ovvero il numero di modi distinti in cui $k$ oggetti indistinguibili possono essere distribuiti in $n$ urne distinguibili consentendo al massimo 4 oggetti in ciascuna urna

La somma dei $4n+1$ elementi di ciscuna riga è $5^n$.

Ogni riga si ottiene con javascript mediante l'iterazione:

lst = [1]; for(var i=0; i<n; i++) lst=[0,0,0,0,...lst].map( (x,k)=> x+[0,0,0,...lst,0][k]+[0,0,...lst,0,0][k]+[0,...lst,0,0,0][k]+[...lst,0,0,0,0][k]);
mentre la distribuzione di probabilità con:
lst = [1]; for(var i=0; i<n;i++) lst = [0,0,0,0,...lst].map( (x,k)=> (x+[0,0,0,...lst,0][k]+[0,0,...lst,0,0][k]+[0,...lst,0,0,0][k]+[...lst,0,0,0,0][k])/5);
n=3

Si tratta della distribuzione teorica, che all'aumentare di $n$ assume una forma sempre più "a campana".

Se poi si vuole attribuire diversa probabilità $p=[p0,p1,p2,p3,p4]$ alla lunghezza e verso di ogni singolo passo occorrerà modificare:

lst = [1]; for(var i=0; i<n; i++) lst=[0,0,0,0,...lst].map( (x,k)=> x*p[0]+[0,0,0,...lst,0][k]*p[1]+[0,0,...lst,0,0][k]*p[2]+ [0,...lst,0,0,0][k]*p[3]+[...lst,0,0,0,0][k]*p[4]);

In generale i coefficienti dello sviluppo di $\displaystyle (1+x+x^2+\cdots+x^{s})^n=\sum_{k=0}^{s\cdot n}\binom {n}{k}_{s}x^k$ si chiamano binomiali generalizzati di ordine $s$.

Alcune loro proprietà sono:

In generale i coefficienti dello sviluppo di $(1+x+x^2+x^3+x^4+...+x^{2L})^n$ si possono determinare con una function come la seguente:
function triangoloGen(n,L){ var qL = Math.pow(2,L); var lst = [1]; for(var i=0; i< n;i++) { lst0 = lst.slice(0,lst.length); lst = [...new Array(qL).fill(0),...lst0]; for(var k=1; k<qL; k++) { lst = lst.map( (x,i)=> x+[...new Array(qL-k).fill(0),...lst0,...new Array(k).fill(0)][i]) }; lst = lst.map((x,i)=>x+[...lst0,...new Array(qL).fill(0)][i]) }; return lst }
il cui risultato può vedersi sotto:
n=2
1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1

L=3

I coefficienti dello sviluppo di $(1+x+x^2+x^3+x^4+...+x^{2L-1})^n$ si ottengono modificando la sola istruzione
qL = Math.pow(2,L)
in
qL = Math.pow(2,L)-1

Se consideriamo lo sviluppo di $$\displaystyle (x^{-L}+x^{-L+1}+\cdots+x^0+\cdots+x^{L-1}+x^L)^n=x^{-nL}(1+x+x^2+\cdots+x^{2L})^n=$$ $$=\sum_{k=0}^{2L\cdot n}\binom {n}{k}_{2L+1}x^{k-nL},$$ gli esponenti $k-nL$ di $x$ sono le posizioni raggiunte al termine della passeggiata.

Se poi, seguendo una legge binomiale, attribuiamo la probabilità $\frac{1}{4^L}\left( 2L \atop k\right)$ di compiere un passo di ampiezza, con segno, $k-2L$ - che poi è la velocità - allora dopo $n$ passi posizioni raggiunte e probabiltà relative si ottengono dallo sviluppo di \[\displaystyle \frac{1}{4^{nL}}\left(\left( 2L \atop 0\right)x^{-L}+\left( 2L \atop 1\right)x^{-L+1}+\cdots+\left( 2L \atop L\right)x^0+\cdots+\left( 2L \atop {2L-1} \right)x^{L-1}+\left( 2L \atop 2L\right)x^L\right)^n=\] \[=\frac{x^{-nL}}{4^{nL}}(1+x)^{2nL}= \sum_{k=0}^{2nL}\frac{1}{4^{nL}}\binom {2nL}{k}x^{k-nL}\] e quindi in questo caso la posizione raggiunta infine è una variabile aleatoria che segue ancora una legge binomiale.

❮❮ ❯❯