[Edu-sig] generating phi as continued fraction (inefficient version)

kirby urner kirby.urner at gmail.com
Fri Dec 4 21:36:08 EST 2015


Inefficient, but still kinda fun.  I used it last night as an introduction
to eval( ).  First I take the eval away and show the expression (growing)
being generated (it's a generator).

1 + 1/(1)
1 + 1/(1+ 1/(1))
1 + 1/(1+ 1/(1+ 1/(1)))
1 + 1/(1+ 1/(1+ 1/(1+ 1/(1))))
1 + 1/(1+ 1/(1+ 1/(1+ 1/(1+ 1/(1)))))
1 + 1/(1+ 1/(1+ 1/(1+ 1/(1+ 1/(1+ 1/(1))))))
1 + 1/(1+ 1/(1+ 1/(1+ 1/(1+ 1/(1+ 1/(1+ 1/(1)))))))
1 + 1/(1+ 1/(1+ 1/(1+ 1/(1+ 1/(1+ 1/(1+ 1/(1+ 1/(1))))))))

and so on.

Then I switch to eval-ing the expression and, lo and behold, we're
approaching phi aren't we.

2.0
1.5
1.6666666666666665
1.6
1.625
1.6153846153846154
1.619047619047619
1.6176470588235294
1.6181818181818182
1.6179775280898876
1.6180555555555556
1.6180257510729614
1.6180371352785146
1.6180327868852458
1.618034447821682
1.618033813400125
1.6180340557275543
1.6180339631667064
1.6180339985218035
1.618033985017358

Way back in the annals of edu-sig, early years, we were digging into HOW-TO
re continued fractions and exploring the more optimized algorithms.

Sometimes though, it's just the concepts you need -- optimization in
another sense.  eval( ) and exhibiting a sequence of generators was the
theme.  I used the pi-digits generator we talked about this September (here
on edu-sig), and that one of Ramanujan's, the latter posted here yesterday
in Python 3.5 version.

Kirby


# -*- coding: utf-8 -*-
"""
Created on Thu Dec  3 16:08:49 2015

@author: kurner

Another generator example:  converging to Phi

Shows eval( ) in action

"""

def continued():

    patt = "+ 1/(1"
    the_expr = ''  # empty
    n = 1

    while True:
        the_expr = the_expr + patt
        the_frac = "1 " + the_expr + ")" * n

        yield eval(the_frac)  # or show the_frac

        n += 1

the_gen = continued()
for _ in range(20):
    print(next(the_gen))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/edu-sig/attachments/20151204/5a4714d2/attachment.html>


More information about the Edu-sig mailing list