PYTHON.2 INFOFEUILLE n°16 D'EX

                                             PYTHON.2    FEUILLE n°16    D'EXERCICES     MAI 2012

             THEME:

                                  Manipulations basiques avec  Python.2 sur les boucles

                                  Programme permettant de conjecturer la nature d'une suite

                                  Enchaînement de script ( ou fonctions )

------------------------------------------------------------------------------------------

            EXERCICE 1

                 On souhaite demander à l'utilisateur un tableau ( ou liste ) sous 

                l'appellation  LISTEdebut,  puis la "cloner",  à l'aide d'une boucle

                Soit T la liste ainsi obtenue par "clonage"

                On peut alors faire des modifications ( des expériences) sur

                le "clone" T tout en conservant LISTEdebut intacte.  

               ( Bien entendu on peut  sans boucle en posant T = LISTEdebut 

                 obtenir la même chose. Mais il s'agit ici d'imposer une méthode.)

----------------------------------------------------------------------------------------------------

   Réponse:  

 Programme possible:

from random import*
def dup(W):

      N=len(W)

      T=[0]*N

                                         # Création d'une liste T de même longueur N que W n'ayant que des 0

                                              # Il reste à remplir T avec les termes de W

      for i in range(0,N):

                                              # L'entier i va varier entre 0 compris et N non compris

           T[i]=W[i]

                                              #La liste T progressivement devient identique à W
      print " La liste T est : T = ",T

# PROGRAMME PRINCIPAL#

######################

W=input(" Donner une liste non vide appelée Listedebut: ")

print " Listedebut=",W

print dup(W)
print "Appuyer sur Enter pour arrêter"

 Par exemple :

>>>
Donner une liste non vide appelée Listedebut: [12,4,3,8]
Listedebut= [12, 4, 3, 8]
La liste T est : T = [12, 4, 3, 8]
None
Appuyer sur Enter pour arrêter

Autre variante possible du programme:

from random import*
def dup(W):

       N=len(W)

       T=[]

                             # Création d'une liste T vide

                              # Il reste à remplir T avec les termes de W 

       for i in range(N):

                                 # L'entier i va varier entre 0 compris et N non comris

             T.append(W[i])

                                    # Attention: T[i]= W[i] ne fonctionne pas car T[i] n'existe pas encore

                                    #La liste T progressivement devient identique à W
       print " La liste T est : T = ",T

# PROGRAMME PRINCIPAL#

######################

W=input(" Donner une liste non vide appelée Listedebut: ")

print " Listedebut=",W

print dup(W)
print "Appuyer sur Enter pour arrêter"

Par exemple:

>>>
Donner une liste non vide appelée Listedebut: [1,11,45,17]
Listedebut= [1, 11, 45, 17]
La liste T est : T = [1, 11, 45, 17]
None
Appuyer sur Enter pour arrêter

 --------------------------------------------------------------------------------------------

  EXERCICE 2

                  Soit la suite récurrente  ( u n  ) définie sur IN par:

                                u 0  =  2

                                 u n+1  =   3 u n  -  2      pour tout n dans IN

                    On pose:         wn   u n  - 1    pour tout n dans IN

                   Faire un programme qui permet :

                    De  conjecturer si la suite ( w n  ) , à termes non nuls,

                       semble géométrique ou non .

                       Le programme devra comparer les quotient  wk + 1 / wk    pour k variant de 0 à N.

                       Si ces quotients sont tous égaux alors il est plausible que la suite ( w n  )

                       soit géométrique.

                       Rédiger un tel programme.

------------------------------------------------------------------------------------------------------------------------

  Réponse:

Programme possible:

import decimal

def suitu(n):

       if n==0:

          return 2

       else:

            return 3*suitu(n-1) - 2

def suitw(n):

       return suitu(n)-1

def testgeom (N):

       L=[]

        for k in range(N):

              L.append( suitw(k+1)/suitw(k))

        print L

        for i in range(N-1):

              if L[i]==L[i+1]:
                 return " OUI. La suite ( w )semble géométrique."

              else:

                   return " Non. La suite (w) n'est pas géométrique."

# PROGRAMME PRINCIPAL#

#####################

N=input(" Combien de w(k+1) /w(k) de la suite (w) voulez-vous lister? : N =  ")

print testgeom(N)

 Par exemple:

>>>
Combien de w(k+1) /w(k) de la suite (w) voulez-vous lister? : N =  5
[3, 3, 3, 3, 3]
OUI. La suite ( w ) semble géométrique.

Autre variante possible:

from random import*
import decimal

def suitu(n):

       if n==0:

           return 2

       else:
            return 3*suitu(n-1) - 2 

def suitw(n):

       return suitu(n)-1

def testgeom (N):

       L=[]
       for k in range(N):
             L.append( suitw(k+1)/suitw(k))
             print "w",k+1,"/ w",k,"=", suitw(k+1)/suitw(k)
       for i in range(N-1):
             if L[i]==L[i+1]:
                 return "OUI. La suite (w) semble géométrique. Mais c'est une conjecture"
             else:
                  return " NON.La suite (w ) n'est pas géométrique"

# PROGRAMME PRINCIPAL #

     #####################

N = input(" Combien de termes de la suite (w) voulez-vous comparer ? : N = ")

print testgeom(N)

Par exemple:

>>>
Combien de termes de la suite (w) voulez-vous comparer ? : N = 5
w 1 / w 0 = 3
w 2 / w 1 = 3
w 3 / w 2 = 3
w 4 / w 3 = 3
w 5 / w 4 = 3
OUI. La suite (w) semble géométrique. Mais c'est une conjecture

---------------------------------------------------------------------------------------- 

    EXERCICE 3

                           Soit la suite récurrente ( u ) définie sur IN par:

                                  u0 = 2

                                  un+1 =  3 un +1  pour tout n dans IN

                    On pose:     wn   u n  − 1    pour tout n dans IN

                     Ecrire  par analogie avec l'exercice n°2

                    un programme qui permet de conjecturer      

                   si la suite ( w ) est ou n'est pas arithmétique.

-------------------------------------------------------------------------------------

 REPONSE:

from random import*
import decimal

def suitu(n):

       if n==0:

           return 2

       else:
            return 3*suitu(n-1) - 2 

def suitw(n):

       return suitu(n)-1

def testgeom (N):

       L=[]
       for k in range(N):
             L.append( suitw(k+1)-suitw(k))
             print "w",k+1,"/ w",k,"=", suitw(k+1)-suitw(k)
       for i in range(N-1):
             if L[i]==L[i+1]:
                 return "OUI. La suite (w) semble arithmétique. Mais c'est une conjecture"
             else:
                  return " NON.La suite (w ) n'est pas arithmétique"

# PROGRAMME PRINCIPAL #

     #####################

N = input(" Combien de termes de la suite (w) voulez-vous comparer ? : N = ")

print testgeom(N)

      Par exemple:

>>>
Combien de termes de la suite (w) voulez-vous comparer ? : N = 5
w 1 - w 0 =  4
w 2 - w 1 =  12
w 3 - w 2 =  36 
w 4 - w 3 = 108
w 5 - w 4 = 324
NON.La suite (w ) n'est pas arithmétique

>>>

 -------------------------------