2022.10.21 MATH 3600-002 Continued Fractions

338 days ago by calkin

def con_frac(x,n): cf_list=[] for i in srange(n): if x==floor(x): cf_list.append(floor(x)) return(cf_list) cf_list.append(floor(x)) x=1/(x-floor(x)) return(cf_list) 
       
exp(1.)con_frac(343/72,10) 
       
[4, 1, 3, 4, 4]
[4, 1, 3, 4, 4]
con_frac(pi.n(10),20) 
       
[3, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7]
[3, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7]
con_frac(pi.n(20),20) 
       
[3, 7, 16, 73, 7, 585, 7, 72, 1, 48, 1, 20, 3, 420, 9, 1, 3, 26, 157, 1]
[3, 7, 16, 73, 7, 585, 7, 72, 1, 48, 1, 20, 3, 420, 9, 1, 3, 26, 157, 1]
con_frac(pi.n(40),20) 
       
[3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 1, 1, 2, 1, 19, 1, 1, 61, 9, 11]
[3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 1, 1, 2, 1, 19, 1, 1, 61, 9, 11]
con_frac(pi.n(100),20) 
       
[3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2]
[3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2]
con_frac(pi.n(10000),20) 
       
[3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2]
[3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2]
con_frac(exp(1).n(10000),30) 
       
[2,
 1,
 2,
 1,
 1,
 4,
 1,
 1,
 6,
 1,
 1,
 8,
 1,
 1,
 10,
 1,
 1,
 12,
 1,
 1,
 14,
 1,
 1,
 16,
 1,
 1,
 18,
 1,
 1,
 20]
[2,
 1,
 2,
 1,
 1,
 4,
 1,
 1,
 6,
 1,
 1,
 8,
 1,
 1,
 10,
 1,
 1,
 12,
 1,
 1,
 14,
 1,
 1,
 16,
 1,
 1,
 18,
 1,
 1,
 20]
con_frac(sqrt(2).n(10000),200) 
       
WARNING: Output truncated!  
full_output.txt



[1,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,

...

 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2]
WARNING: Output truncated!  
full_output.txt



[1,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,

...

 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2,
 2]
 
       
 
       
def approximants(L): if len(L)==1: return(L[0]) else: return(L[0]+1/approximants(L[1:])) 
       
approximants([1,1,1,1]) 
       
5/3
5/3
for i in srange(1,10): L=[1 for j in srange(i)] print(i, approximants(L)) 
       
(1, 1)
(2, 2)
(3, 3/2)
(4, 5/3)
(5, 8/5)
(6, 13/8)
(7, 21/13)
(8, 34/21)
(9, 55/34)
(1, 1)
(2, 2)
(3, 3/2)
(4, 5/3)
(5, 8/5)
(6, 13/8)
(7, 21/13)
(8, 34/21)
(9, 55/34)
fibonacci(5) 
       
5
5
for i in srange(1,40): L=[1 for j in srange(i)] print(i, approximants(L).n()) 
       
(1, 1.00000000000000)
(2, 2.00000000000000)
(3, 1.50000000000000)
(4, 1.66666666666667)
(5, 1.60000000000000)
(6, 1.62500000000000)
(7, 1.61538461538462)
(8, 1.61904761904762)
(9, 1.61764705882353)
(10, 1.61818181818182)
(11, 1.61797752808989)
(12, 1.61805555555556)
(13, 1.61802575107296)
(14, 1.61803713527851)
(15, 1.61803278688525)
(16, 1.61803444782168)
(17, 1.61803381340013)
(18, 1.61803405572755)
(19, 1.61803396316671)
(20, 1.61803399852180)
(21, 1.61803398501736)
(22, 1.61803399017560)
(23, 1.61803398820532)
(24, 1.61803398895790)
(25, 1.61803398867044)
(26, 1.61803398878024)
(27, 1.61803398873830)
(28, 1.61803398875432)
(29, 1.61803398874820)
(30, 1.61803398875054)
(31, 1.61803398874965)
(32, 1.61803398874999)
(33, 1.61803398874986)
(34, 1.61803398874991)
(35, 1.61803398874989)
(36, 1.61803398874990)
(37, 1.61803398874989)
(38, 1.61803398874990)
(39, 1.61803398874989)
(1, 1.00000000000000)
(2, 2.00000000000000)
(3, 1.50000000000000)
(4, 1.66666666666667)
(5, 1.60000000000000)
(6, 1.62500000000000)
(7, 1.61538461538462)
(8, 1.61904761904762)
(9, 1.61764705882353)
(10, 1.61818181818182)
(11, 1.61797752808989)
(12, 1.61805555555556)
(13, 1.61802575107296)
(14, 1.61803713527851)
(15, 1.61803278688525)
(16, 1.61803444782168)
(17, 1.61803381340013)
(18, 1.61803405572755)
(19, 1.61803396316671)
(20, 1.61803399852180)
(21, 1.61803398501736)
(22, 1.61803399017560)
(23, 1.61803398820532)
(24, 1.61803398895790)
(25, 1.61803398867044)
(26, 1.61803398878024)
(27, 1.61803398873830)
(28, 1.61803398875432)
(29, 1.61803398874820)
(30, 1.61803398875054)
(31, 1.61803398874965)
(32, 1.61803398874999)
(33, 1.61803398874986)
(34, 1.61803398874991)
(35, 1.61803398874989)
(36, 1.61803398874990)
(37, 1.61803398874989)
(38, 1.61803398874990)
(39, 1.61803398874989)
(sqrt(5.)+1)/2 
       
1.61803398874989
1.61803398874989
for i in srange(1,40): L=[1 for j in srange(i)] print(i, approximants(L).n()/((1+sqrt(5.))/2)) 
       
(1, 0.618033988749895)
(2, 1.23606797749979)
(3, 0.927050983124842)
(4, 1.03005664791649)
(5, 0.988854381999832)
(6, 1.00430523171858)
(7, 0.998362597211369)
(8, 1.00062645797602)
(9, 0.999760864154242)
(10, 1.00009136361347)
(11, 0.999965105393088)
(12, 1.00001332901893)
(13, 0.999994908835667)
(14, 1.00000194466163)
(15, 0.999999257206797)
(16, 1.00000028372197)
(17, 0.999999891627882)
(18, 1.00000004139447)
(19, 0.999999984188720)
(20, 1.00000000603937)
(21, 0.999999997693165)
(22, 1.00000000088113)
(23, 0.999999999663437)
(24, 1.00000000012856)
(25, 0.999999999950896)
(26, 1.00000000001876)
(27, 0.999999999992836)
(28, 1.00000000000274)
(29, 0.999999999998955)
(30, 1.00000000000040)
(31, 0.999999999999848)
(32, 1.00000000000006)
(33, 0.999999999999978)
(34, 1.00000000000001)
(35, 0.999999999999997)
(36, 1.00000000000000)
(37, 0.999999999999999)
(38, 1.00000000000000)
(39, 1.00000000000000)
(1, 0.618033988749895)
(2, 1.23606797749979)
(3, 0.927050983124842)
(4, 1.03005664791649)
(5, 0.988854381999832)
(6, 1.00430523171858)
(7, 0.998362597211369)
(8, 1.00062645797602)
(9, 0.999760864154242)
(10, 1.00009136361347)
(11, 0.999965105393088)
(12, 1.00001332901893)
(13, 0.999994908835667)
(14, 1.00000194466163)
(15, 0.999999257206797)
(16, 1.00000028372197)
(17, 0.999999891627882)
(18, 1.00000004139447)
(19, 0.999999984188720)
(20, 1.00000000603937)
(21, 0.999999997693165)
(22, 1.00000000088113)
(23, 0.999999999663437)
(24, 1.00000000012856)
(25, 0.999999999950896)
(26, 1.00000000001876)
(27, 0.999999999992836)
(28, 1.00000000000274)
(29, 0.999999999998955)
(30, 1.00000000000040)
(31, 0.999999999999848)
(32, 1.00000000000006)
(33, 0.999999999999978)
(34, 1.00000000000001)
(35, 0.999999999999997)
(36, 1.00000000000000)
(37, 0.999999999999999)
(38, 1.00000000000000)
(39, 1.00000000000000)
for i in srange(1,40): L=[2 for j in srange(i)] print(i, approximants(L)) 
       
(1, 2)
(2, 5/2)
(3, 12/5)
(4, 29/12)
(5, 70/29)
(6, 169/70)
(7, 408/169)
(8, 985/408)
(9, 2378/985)
(10, 5741/2378)
(11, 13860/5741)
(12, 33461/13860)
(13, 80782/33461)
(14, 195025/80782)
(15, 470832/195025)
(16, 1136689/470832)
(17, 2744210/1136689)
(18, 6625109/2744210)
(19, 15994428/6625109)
(20, 38613965/15994428)
(21, 93222358/38613965)
(22, 225058681/93222358)
(23, 543339720/225058681)
(24, 1311738121/543339720)
(25, 3166815962/1311738121)
(26, 7645370045/3166815962)
(27, 18457556052/7645370045)
(28, 44560482149/18457556052)
(29, 107578520350/44560482149)
(30, 259717522849/107578520350)
(31, 627013566048/259717522849)
(32, 1513744654945/627013566048)
(33, 3654502875938/1513744654945)
(34, 8822750406821/3654502875938)
(35, 21300003689580/8822750406821)
(36, 51422757785981/21300003689580)
(37, 124145519261542/51422757785981)
(38, 299713796309065/124145519261542)
(39, 723573111879672/299713796309065)
(1, 2)
(2, 5/2)
(3, 12/5)
(4, 29/12)
(5, 70/29)
(6, 169/70)
(7, 408/169)
(8, 985/408)
(9, 2378/985)
(10, 5741/2378)
(11, 13860/5741)
(12, 33461/13860)
(13, 80782/33461)
(14, 195025/80782)
(15, 470832/195025)
(16, 1136689/470832)
(17, 2744210/1136689)
(18, 6625109/2744210)
(19, 15994428/6625109)
(20, 38613965/15994428)
(21, 93222358/38613965)
(22, 225058681/93222358)
(23, 543339720/225058681)
(24, 1311738121/543339720)
(25, 3166815962/1311738121)
(26, 7645370045/3166815962)
(27, 18457556052/7645370045)
(28, 44560482149/18457556052)
(29, 107578520350/44560482149)
(30, 259717522849/107578520350)
(31, 627013566048/259717522849)
(32, 1513744654945/627013566048)
(33, 3654502875938/1513744654945)
(34, 8822750406821/3654502875938)
(35, 21300003689580/8822750406821)
(36, 51422757785981/21300003689580)
(37, 124145519261542/51422757785981)
(38, 299713796309065/124145519261542)
(39, 723573111879672/299713796309065)
for i in srange(1,40): L=[3 for j in srange(i)] print(i, approximants(L)) 
       
(1, 3)
(2, 10/3)
(3, 33/10)
(4, 109/33)
(5, 360/109)
(6, 1189/360)
(7, 3927/1189)
(8, 12970/3927)
(9, 42837/12970)
(10, 141481/42837)
(11, 467280/141481)
(12, 1543321/467280)
(13, 5097243/1543321)
(14, 16835050/5097243)
(15, 55602393/16835050)
(16, 183642229/55602393)
(17, 606529080/183642229)
(18, 2003229469/606529080)
(19, 6616217487/2003229469)
(20, 21851881930/6616217487)
(21, 72171863277/21851881930)
(22, 238367471761/72171863277)
(23, 787274278560/238367471761)
(24, 2600190307441/787274278560)
(25, 8587845200883/2600190307441)
(26, 28363725910090/8587845200883)
(27, 93679022931153/28363725910090)
(28, 309400794703549/93679022931153)
(29, 1021881407041800/309400794703549)
(30, 3375045015828949/1021881407041800)
(31, 11147016454528647/3375045015828949)
(32, 36816094379414890/11147016454528647)
(33, 121595299592773317/36816094379414890)
(34, 401601993157734841/121595299592773317)
(35, 1326401279065977840/401601993157734841)
(36, 4380805830355668361/1326401279065977840)
(37, 14468818770132982923/4380805830355668361)
(38, 47787262140754617130/14468818770132982923)
(39, 157830605192396834313/47787262140754617130)
(1, 3)
(2, 10/3)
(3, 33/10)
(4, 109/33)
(5, 360/109)
(6, 1189/360)
(7, 3927/1189)
(8, 12970/3927)
(9, 42837/12970)
(10, 141481/42837)
(11, 467280/141481)
(12, 1543321/467280)
(13, 5097243/1543321)
(14, 16835050/5097243)
(15, 55602393/16835050)
(16, 183642229/55602393)
(17, 606529080/183642229)
(18, 2003229469/606529080)
(19, 6616217487/2003229469)
(20, 21851881930/6616217487)
(21, 72171863277/21851881930)
(22, 238367471761/72171863277)
(23, 787274278560/238367471761)
(24, 2600190307441/787274278560)
(25, 8587845200883/2600190307441)
(26, 28363725910090/8587845200883)
(27, 93679022931153/28363725910090)
(28, 309400794703549/93679022931153)
(29, 1021881407041800/309400794703549)
(30, 3375045015828949/1021881407041800)
(31, 11147016454528647/3375045015828949)
(32, 36816094379414890/11147016454528647)
(33, 121595299592773317/36816094379414890)
(34, 401601993157734841/121595299592773317)
(35, 1326401279065977840/401601993157734841)
(36, 4380805830355668361/1326401279065977840)
(37, 14468818770132982923/4380805830355668361)
(38, 47787262140754617130/14468818770132982923)
(39, 157830605192396834313/47787262140754617130)
show(con_frac(exp(1).n(1000),50)) 
       
show(con_frac(exp(2).n(1000),50)) 
       
show(con_frac(exp(3).n(1000),100)) 
       
show(con_frac(exp(1/2).n(1000),50)) 
       
show(con_frac(exp(1/3).n(1000),50)) 
       
show(con_frac(exp(1/4).n(1000),50)) 
       
show(con_frac(exp(1/5).n(1000),50)) 
       
for i in srange(10): x=random() show(con_frac(x*1000000,30))