[Algorytmy] Średnia długość ciągu Collatza
: 11 lip 2011, o 02:05
Niedawno uzyskałem pewien wzór na średnią (arytmetyczną) długość ciągu Collatza na przedziale od liczby 1 do \(\displaystyle{ n}\). Wydaje się, że rzeczywista średnia długość ciągu Collatza (na przedziale od 1 do \(\displaystyle{ n}\)) jest zbieżna do tego wzoru. Pracuję nad dowodem. Tymczasem czy ktoś mógłby sprawdzić czy ta zbieżność występuje również dla dużych \(\displaystyle{ n}\) metodami obliczeniowymi?
Nie za bardzo potrafię napisać program który coś takiego by sprawdził i dlatego sam przetestowałem tylko liczby do 1000, a chciałbym do 10 000, 100 000, 1 000 000 a nawet 1 000 000 000.
Definicja ciągu (bierzemy skróconą formułę!):
\(\displaystyle{ c_{n+1} = \begin{cases} 1,5 \cdot c_{n} +0,5 \ \ gdy \ c_{n} \ nieparzyste \\ \frac{c_{n}}{2} \ \ gdy \ c_{n} \ parzyste \end{cases}}\)
Przyjmujemy, że algorytm zatrzymuje się, gdy osiągnie wartość 1.
Przykłady:
Liczba - 1, długość ciągu 0
Liczba - 2, długość ciągu 1:
2, 1
Liczba - 3, długość ciągu 5:
3, 5, 8, 4, 2, 1
Liczba - 4, długość ciągu 2:
4, 2, 1
Średnia długość ciągu od liczby 1 do 4:
\(\displaystyle{ R(4)= \frac{0+1+5+2}{4}=2}\)
Mój wzór na średnią długość ciągu liczb od 1 do \(\displaystyle{ n}\) jest następujący:
\(\displaystyle{ D(n) = \frac {2}{ln(0,75)} \cdot \frac {n \cdot (ln(\frac {1}{n})+1)-1}{n}}\)
Dla małych \(\displaystyle{ n}\) uzyskujemy słabe dokładności, ale w miarę przyrostu n dokładność wzoru rośnie, dla \(\displaystyle{ n=1000}\), mamy:
- rzeczywista średnia: \(\displaystyle{ R(1000) = 39,89}\)
- szacowana ze wzoru: \(\displaystyle{ D(1000) = 41,08}\)
A zatem czy ktoś może sprawdzić czy ta zbieżność występuje również dla większych \(\displaystyle{ n}\)? Pożądany wykres jednych i drugich wartości Bardziej formalnie sugeruję następującą równość asymptotyczną:
\(\displaystyle{ \lim_{n\to\infty} \frac {R(n)}{D(n)} = 1}\)
Można także udowdnić równość:
\(\displaystyle{ \lim_{n\to\infty} \frac {D(n)}{\frac {2}{ln(0,75)} \cdot (1+ln(\frac {1}{n}))} = 1}\)
Wtedy możemy badać zbieżność tej średniej do nieco prostszego wzoru:
\(\displaystyle{ D_{1}(n) = \frac {2}{ln(0,75)} \cdot (1+ln(\frac {1}{n}))}\)
Nie za bardzo potrafię napisać program który coś takiego by sprawdził i dlatego sam przetestowałem tylko liczby do 1000, a chciałbym do 10 000, 100 000, 1 000 000 a nawet 1 000 000 000.
Definicja ciągu (bierzemy skróconą formułę!):
\(\displaystyle{ c_{n+1} = \begin{cases} 1,5 \cdot c_{n} +0,5 \ \ gdy \ c_{n} \ nieparzyste \\ \frac{c_{n}}{2} \ \ gdy \ c_{n} \ parzyste \end{cases}}\)
Przyjmujemy, że algorytm zatrzymuje się, gdy osiągnie wartość 1.
Przykłady:
Liczba - 1, długość ciągu 0
Liczba - 2, długość ciągu 1:
2, 1
Liczba - 3, długość ciągu 5:
3, 5, 8, 4, 2, 1
Liczba - 4, długość ciągu 2:
4, 2, 1
Średnia długość ciągu od liczby 1 do 4:
\(\displaystyle{ R(4)= \frac{0+1+5+2}{4}=2}\)
Mój wzór na średnią długość ciągu liczb od 1 do \(\displaystyle{ n}\) jest następujący:
\(\displaystyle{ D(n) = \frac {2}{ln(0,75)} \cdot \frac {n \cdot (ln(\frac {1}{n})+1)-1}{n}}\)
Dla małych \(\displaystyle{ n}\) uzyskujemy słabe dokładności, ale w miarę przyrostu n dokładność wzoru rośnie, dla \(\displaystyle{ n=1000}\), mamy:
- rzeczywista średnia: \(\displaystyle{ R(1000) = 39,89}\)
- szacowana ze wzoru: \(\displaystyle{ D(1000) = 41,08}\)
A zatem czy ktoś może sprawdzić czy ta zbieżność występuje również dla większych \(\displaystyle{ n}\)? Pożądany wykres jednych i drugich wartości Bardziej formalnie sugeruję następującą równość asymptotyczną:
\(\displaystyle{ \lim_{n\to\infty} \frac {R(n)}{D(n)} = 1}\)
Można także udowdnić równość:
\(\displaystyle{ \lim_{n\to\infty} \frac {D(n)}{\frac {2}{ln(0,75)} \cdot (1+ln(\frac {1}{n}))} = 1}\)
Wtedy możemy badać zbieżność tej średniej do nieco prostszego wzoru:
\(\displaystyle{ D_{1}(n) = \frac {2}{ln(0,75)} \cdot (1+ln(\frac {1}{n}))}\)