Exo Type 8- 2014

Exercice type 8 - 2014

# -*- coding: utf-8 -*-
# Katia Barré - Lycée Lesage Vannes


import
numpy as np
import
matplotlib.pyplot as plt

M, m = 20, 10

#--- question 1 ----------------------------------------------------------------
print
('\n --- Question 1 --- ')

def f(c):
   
"""

    c : nombre
    On considère la suite récurrente définie par :
        u_0 = 0 et u_{n+1} = u_n **2 + c pour tout entier naturel n

    Renvoie : le plus petit entier k de [0, m] tel que |u_k| > M s'il existe
              m + 1 sinon

    """

   
global M, m
    u
= 0
   
k = 0
   
while k < m:
        u
= u**2 + c
        k
+= 1
       
if abs(u) > M:
           
return k      # renvoie k de [0, m] tel | u_k| > M
   
return m + 1          # renvoie m + 1

#--- question 2 ----------------------------------------------------------------
print
('\n --- Question 2 --- ')

f_v = np.vectorize(f)
LX
= np.linspace(-2, 2, 401)
fX
= f_v(LX)

plt.figure(1)
plt
.plot(LX, fX, linestyle = 'None', marker = '.', ms = 3)
plt
.axis([-2.1, 2.1, -0.1, m + 1.1])
plt
.grid()
plt
.xlabel('$c$')
plt
.ylabel('$f(c)$')
plt
.title('Graphe de $f$')
plt
.show()

#--- question 3 ----------------------------------------------------------------
print
('\n --- Question 3 --- ')

K = 101
x
= np.linspace(-2, 0.5, K)
y
= np.linspace(-1.1, 1.1, K)
X
, Y = np.meshgrid(x, y)
tableau_valeurs
= f_v(X + 1j * Y)

#--- question 4 ----------------------------------------------------------------
print
('\n --- Question 4 --- ')

plt.figure(2)
plt
.imshow(tableau_valeurs, extent = [-2, 0.5,-1.1 ,1.1])
plt
.title('$M = $ {}, $m$ = {}, $K$ = {}'.format(M, m, K))
plt
.axis('scaled')
plt
.show()

print('Pour augmenter la résolution, on peut augmenter les paramètres M, m et K.')

#--- tests ---------------------------------------------------------------------
def
f1(c, m, M):
        u
= 0
        k
= 0
       
while k < m:
            u
= u**2 + c
            k
+= 1
           
if abs(u) > M:
               
return k
       
return m + 1

f1_v = np.vectorize(f1)

def resolution(m, M, K):
   
"""

    m : entier limite l'indice de la suite
    M : limite le module de la suite
    K : nombre de points sur les axes
    Trace l'image du code du tableau f(x + jy)
     où x dans [-2, 0.5] (K valeurs)
        y dans [-1.1, 1.1] (Ka valeurs)
        f fonction qui à un nombre complexe c
            associe le plus petit entier k de [0, m] tel que |u_k| > M s'il existe
                    m + 1 sinon
            avec (u_n) la suite récurrente définie par :
               u_0 = 0 et u_{n+1} = u_n **2 + c pour tout entier naturel n

    """

    x
= np.linspace(-2, 0.5, K)
    y
= np.linspace(-1.1, 1.1, K)
    X
, Y = np.meshgrid(x, y)
    tableau_valeurs
= f1_v(X + 1j * Y, m, M)


    plt
.imshow(tableau_valeurs, extent = [-2, 0.5,-1.1 ,1.1])
    plt
.title('$M = $ {}, $m$ = {}, $K$ = {}'.format(M, m, K))
   
plt.axis('scaled')
    plt
.show()

resolution(20, 30, 200)

resolution(30,50, 500)

 

--- Question 1 ---

--- Question 2 ---


--- Question 3 ---

--- Question 4 ---

Pour augmenter la résolution, on peut augmenter les paramètres M, m et K.

 

Search