2022.10.28 MATH 3600-002 More continued fractions

336 days ago by calkin

What happens when we iterate $ x \rightarrow \frac{1}{x-\lfloor x \rfloor}$?

 

We want x to be chosen uniformly in (0,1).

x=random() print(x) print(type(x)) 
       
0.166409620233
<type 'float'>
0.166409620233
<type 'float'>
x=random() x=x.n(digits=4) for i in srange(20): x=x/(x-floor(x)) print(floor(x)) 
       
Traceback (click to the left of this block for traceback)
...
AttributeError: 'float' object has no attribute 'n'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_9.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("eD1yYW5kb20oKQp4PXgubihkaWdpdHM9NCkKZm9yIGkgaW4gc3JhbmdlKDIwKToKICAgIHg9eC8oeC1mbG9vcih4KSkKICAgIHByaW50KGZsb29yKHgpKQ=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpGJI84p/___code___.py", line 4, in <module>
    x=x.n(digits=_sage_const_4 )
AttributeError: 'float' object has no attribute 'n'
x=RealField(1000).random_element(0,1) print(x) print(type(x)) 
       
0.4198220688906864320247645248586946752554222993503292329916017142354527\
619778535936411538064956194844184903473426950806187919562009985839245221\
028323996593004873165999797525714684830778388271253314421297122291071133\
799970020307492972823291895232925765000415704274728297760365536194417720\
31651083261108
<type 'sage.rings.real_mpfr.RealNumber'>
0.419822068890686432024764524858694675255422299350329232991601714235452761977853593641153806495619484418490347342695080618791956200998583924522102832399659300487316599979752571468483077838827125331442129712229107113379997002030749297282329189523292576500041570427472829776036553619441772031651083261108
<type 'sage.rings.real_mpfr.RealNumber'>
x.n(digits=10) 
       
0.4198220689
0.4198220689
x=RealField(1000).random_element(0,1) counter=0 for i in srange(10000000): x=1/(x-floor(x)) if floor(x)==1: counter+=1 print(counter) 
       
4151995
4151995
x=RealField(1000).random_element(0,1) average=0 for j in srange(10): counter=0 for i in srange(100000): x=1/(x-floor(x)) if floor(x)==2: counter+=1 print(counter) average+=counter print(average/10.) 
       
17048
17054
16947
17063
16976
16960
17178
17280
17047
16862
17041.5000000000
17048
17054
16947
17063
16976
16960
17178
17280
17047
16862
17041.5000000000
x=RealField(1000).random_element(0,1) average=0 for j in srange(10): counter=0 for i in srange(100000): x=1/(x-floor(x)) if floor(x)==3: counter+=1 print(counter) average+=counter print(average/10.) 
       
9167
9343
9208
9274
9385
9399
9293
9433
9391
9260
9315.30000000000
9167
9343
9208
9274
9385
9399
9293
9433
9391
9260
9315.30000000000
x=RealField(1000).random_element(0,1) average=0 for j in srange(10): counter=0 for i in srange(100000): x=1/(x-floor(x)) if floor(x)==4: counter+=1 print(counter) average+=counter print(average/10.) 
       
5856
5928
5904
5889
5871
5838
5831
5839
5886
5756
5859.80000000000
5856
5928
5904
5889
5871
5838
5831
5839
5886
5756
5859.80000000000
x=RealField(1000).random_element(0,1) average=0 for j in srange(10): counter=0 for i in srange(100000): x=1/(x-floor(x)) if floor(x)==5: counter+=1 print(counter) average+=counter print(average/10.) 
       
4135
4035
4063
4024
4105
3998
3921
4126
4144
4103
4065.40000000000
4135
4035
4063
4024
4105
3998
3921
4126
4144
4103
4065.40000000000
x=RealField(1000).random_element(0,1) average=0 for j in srange(10): counter=0 for i in srange(100000): x=1/(x-floor(x)) if floor(x)==6: counter+=1 print(counter) average+=counter print(average/10.) 
       
2852
3005
2921
2939
3024
2949
2932
3024
2965
2929
2954.00000000000
2852
3005
2921
2939
3024
2949
2932
3024
2965
2929
2954.00000000000
 
       
counter = 0 for i in srange(1000000): x= random() if x<.415: counter+=1 print(counter) 
       
414666
414666