Article épinglé

dimanche 13 octobre 2019

Fly Straight Dammit - en python

Présentation

Numberphile a récemment publié une vidéo sur une fonction récursive intéressante appelée «Fly Straight, Dammit!» qui, une fois tracée, semble chaotique, mais se stabilise instantanément après six cent trente huit itérations.

Script n°1 - suite avec export csv

import math
nmax=1000
#creation de listes vides pour l'écriture dans csv
listen=[0,1]
listeAn=[1,1]
for n in range (2,nmax):
    gcd=int(math.gcd(n,listeAn[(n-1)]))
    if gcd==1:
        An=listeAn[(n-1)]+n+1
    else:
        An=int(listeAn[(n-1)]/gcd)
           
 
    print("n=",n,"- An=",An,"- GCD=",gcd)
 
    #remplissage de listen avec les valeurs de n
    #remplissage de listeAn avec les valeurs de An
    listen.append(n)
    listeAn.append(An)
 
# export tableur
import pandas
df = pandas.DataFrame(data={"valeur de n": listen, "valeur de a(n)": listeAn})
#vous pouvez mettre 
#                     ./donnees.csv
#                     ./donnees.ods
df.to_csv("./donnees.ods", sep=';',index=False)


Script n°2 - suite avec export csv et (+) graphique python



import math
nmax=1000
#creation de listes vides pour l'écriture dans csv
listen=[0,1]
listeAn=[1,1]
for n in range (2,nmax):
    gcd=int(math.gcd(n,listeAn[(n-1)]))
    if gcd==1:
        An=listeAn[(n-1)]+n+1
    else:
        An=int(listeAn[(n-1)]/gcd)
    
    #remplissage de listei avec les valeurs de i
    #remplissage de listec avec les valeurs de c
    listen.append(n)
    listeAn.append(An)
    
# export tableur
import pandas
df = pandas.DataFrame(data={"valeur de n": listen, "valeur de a(n)": listeAn})
#vous pouvez mettre   
#                     ./donnees.csv
#                     ./donnees.ods
df.to_csv("./donnees.ods", sep=';',index=False)

# graphique
import numpy as np
import matplotlib.pyplot as plt

for n in range(nmax):
    x = listen[n]
    y = listeAn[n]
    plt.scatter(x, y,color='red',s=2) #nuage de points xy, couleur rouge, taille 2

plt.title("Suite récursive étrange")
plt.axhline(y=0,color='black')
plt.axvline(x=0,color='black')

plt.show() # affiche la figure a l'ecran

Aucun commentaire:

Enregistrer un commentaire

Tout commentaire nous engage ;)