0% ont trouvé ce document utile (0 vote)
105 vues3 pages

TP1 MA1 Py

Transféré par

Mohammed AlGazzeh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
105 vues3 pages

TP1 MA1 Py

Transféré par

Mohammed AlGazzeh
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Ecole supérieure des Sciences et

de Technologie de Hammam Sousse 2022-2023

Module : Simulation numérique LM1

TP 1

Exercice 1 : Les nombres complexes


On considère les nombres complexes a et b données par
a = 1 + i, b = 1 − 3i
Calculer les quantités suivantes
a
a+b ab a <e(a) =m(b) |a| arg(b) (en degrés)
b
Exercice 2
Que donne le code suivant ?

import numpy as np
v = np.array([1, 2, 3, 4]) * np.pi / 4 # np.pi = π
w = np.sin(v)
print(w)

Exercice 3
Écrire un code Python qui :
— retourne un tableau de taille num ne contenant que des 0. ;
— retourne un tableau de taille num ne contenant que des 1. ;
— retourne un échantillonage uniforme de l’intervalle [a, b] de taille n. Les éléments sont
b−a
les a + k pour k = 0, ..., n − 1 ;
n−1
— un vecteur de taille n dont les éléments sont tirés aléatoirement entre 0 et 1.

Matplotlib (A utiliser pour les exercices suivants)


Matplotlib est une bibliothèque Python qui permet de faire toutes sortes de tracés. Nous allons
essentiellement l’utiliser pour tracer des fonctions. Les instructions de base pour se servir de
Matplotlib sont illustrées ici :
import matplotlib.pyplot as plt # plt devient l’abrege de matplotlib.pyplot
x = [0, 1, 2] # liste des abscisses
y = [1, -1, 0] # liste des ordonnees
plt.plot(x, y) # trace y en fonction de x
plt.show() # affiche la fenetre du trace

Exercice 4 (Premiers tracés)


En utilisant les fonctions linspace et cos de NumPy, tracer la fonction y = cos(x) sur [0, 10π].
Quelle est l’influence du nombre de points passé à la fonction linspace ? Grâce à un second
appel à la fonction plt.plot avant l’appel à plt.show, superposer le graphe de la fonction
y = exp(−x/10)cos(x). Toujours avant l’appel à plt.show, ajouter un titre avec plt.title(’Le
titre de votre choix’) et des noms aux axes avec plt.xlabel(’x’) et plt.ylabel (’y = f (x)’).

1
Exercice 5 (Courbes paramétriques)
En modifiant le code ci-dessous :

import matplotlib.pyplot as plt


import numpy as np # np devient l’abrege de numpy
t = np.linspace(..., ..., ...)
x = ... # x(t)
y = ... # y(t)
plt.plot(x, y)
plt.show()
Tracer l’une des courbes suivantes :
sin(t)
 x(t) =


— La Lemniscate de Bernoulli 1 + sin2 (t) sur [0, 2π].
sin(t)cos(t)
 y(t) =


 1 + sin2 (t)
x(t) = tsin(t)
— La spirale d’Archimède sur [0, 10π].
 y(t) = tcos(t)
x(t) = 16sin3 (t)
— La courbe du coeur sur [0, 2π].
y(t) = 13cos(t) − 5cos(2t) − 2cos(3t) − cos(4t)
 p
 x(t) = (1 + cos( t))cos(t)
— Les cyclo-harmoniques q pour p et q entiers sur [0, 2qπ].
 y(t) = (1 + cos( p t))sin(t)
q
Exercice 6
Que fait le code suivant ? Expliquer.

def f(x) :
return x ** 2
def g(x) :
return 2 * x
def somme ponderee(f1, f2, a, b, x) :
return a * f1(x) + b * f2(x)
print(somme ponderee(f, g, 2, 3, 10))
Exercice 7 (Méthode d’Euler)
On considère l’équation différentielle ordinaire (EDO) du premier ordre suivante
y 0 (x) = f (y(x), x), x ∈ [a, b]
On se propose d’étudier la méthode d’Euler qui consiste à approcher la solution en utilisant la
formule de la tangente :
y(x + h) ' y(x) + hy 0 (x) ' y(x) + hf (y(x), x).
1. En utilisant cette dernière expression, donner l’équation de récurrence qui permet de
calculer yn+1 en fonction de yn , xn , h et f .
2. Dans un fichier nommé edo.py, écrire une fonction euler(f, a, b, y0, N) qui retourne la
liste des yn , n = 0, ..., N approchant la solution de notre EDO par la méthode d’Euler.
3. Quelle est la solution attendue pour f (y, x) = λy et y(0) = 1 ? Utiliser ce résultat pour
tester l’implémentation de l’exercice précédent : tracer la solution exacte et la solution
approchée avec Matplotlib. Quelle est l’influence du paramètre N ?

2
Exercice 8
Le module SciPy de Python est consacré au calcul scientifique avancé. En particulier, en utili-
sant la fonction scipy.integrate.odeint, il est possible d’approcher la solution d’une EDO grâce
à des méthodes plus performantes (mais bien plus complexes aussi) que la méthode d’Euler. Il
s’utilise comme ceci :

import scipy.integrate as scint


import numpy as np
import matplotlib.pyplot as plt
def f(y, x) :
return np.cos(10 * y) * np.cos(x) # f(y(x), x) = cos(10y(x)) cos(x)
x = np.linspace(0, 10, 100)
y = scint.odeint(f, 0, x)
plt.plot(x, y)
plt.show()

Utiliser SciPy ainsi que la méthode d’Euler pour approcher la solution du problème de Cauchy
associée à f (y, x) = cos(10y)cos(x) et y(0) = 0. On prendra soin d’utiliser le même nombre de
pas N dans les deux méthodes. Comparer visuellement les deux solutions à l’aide de Matplotlib.

Vous aimerez peut-être aussi