Images, snippets, snapshots, math

View Gabriele Lami's profile on LinkedIn

Visualizzazione post con etichetta python. Mostra tutti i post
Visualizzazione post con etichetta python. Mostra tutti i post

lunedì 23 maggio 2011

Happy numbers in python

I'll show you a method in python to check if a number is happy.
When a number is happy? Well, you have to follow this algorithm:

1. Take a number n.
         n = 23
2. Dissect it into digits.
         2 and 3
3. Square them all and add them up
         2^ 2 + 3 ^ 2 = 4 + 9 = 13
4. You get a new number m.
         m = 13
5. If m = 1, n is happy; otherwise set n = m and repeat at 1.
         1^2 + 3^2 = 1 + 9 = 10
         n = 10
         1 ^ 2 + 0 ^ 2 = 1
         23 is happy!
6. If you run into a loop, n is not a happy number (is sad).

I've used recursion because it is fun (talking about happy numbers).

def happy(n, past = set()):
    m = sum(int(i)**2 for i in str(n))
    if m == 1:
  return True
    if m in past:
  return False
    past.add(m)
    return happy(m,past)
 
print [ x for x in range(1,100) if happy(x, set())]

Here 'past' is a set, needed to check if we are in a loop.
The output shows the set of happy numbers below 100.

[1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97]

giovedì 19 maggio 2011

logistic map in python

Simple logistic map using python and matplotlib.

import math
import matplotlib.pyplot as plt

def logistic(xa =2.9 , xb=4.0 , imgx = 240 , imgy = 500, 
    maxit = 200, f=lambda x,r: r * x * (1 - x) ):
 xs = []
 ys = []
 for i in range(imgx):
  r = xa + (xb - xa) * float(i)/(imgx - 1)
  x = 0.5
  for j in range(maxit):   
   x = f(x,r)   
   if j > maxit / 2:
    xs.append( i ) 
    ys.append(int(x * imgy))
 return [xs,ys]
 
 
myfunction = lambda x,r: r * (math.sin(x)**2) 
points = logistic( xa = 2.1 ,xb = 3.1, imgy=200 , f=myfunction)
ax = plt.subplot(121)
ax.scatter(points[0], points[1], s= 1)

points = logistic()
bx = plt.subplot(122)
bx.scatter(points[0], points[1], s= 1)
plt.show()


logistic map in python