Concours Informatique: Calcul Numérique
Concours Informatique: Calcul Numérique
المملكة المغربية
,Ministère de l'Enseignement Supérieur,
de la Formation des Cadres et de la Recherche Scientifique
ÉPREUVE D'INFORMATIQUE
Durée 2 heures
Page de garde
Épreuve d’Informatique – Session 2020 – Filière MP
La barre est initialement "préparée" dans un état de température Tbarre. Les deux extrémités de la barre
sont maintenues à une température extérieure constante Textr.
( , ) ( , )
( ) = ∗
+, ∶ = ( .+ − )
"
On suppose que les variables globales suivantes, sont déclarées et initialisées par les valeurs suivantes :
Page 2 sur 9
Épreuve d’Informatique – Session 2020 – Filière MP
Dans cette partie, on suppose que les modules numpy et [Link] sont importés :
import numpy np
import [Link] as pl
Q.2- Écrire la fonction U(x,t) qui reçoit en paramètres deux réels x et t. La fonction retourne la valeur
de U(x, t) qui correspond à la somme partielle d’indice m=200 :
0
( , )= + ( .+ − )∗ /( , , )
"
)
Q.3- Écrire le programme permettant de tracer la représentation graphique suivante, qui représente
l’évolution de la température dans les points x de la barre, à intervalle de temps égal à 0.1s, sachant que
la barre est subdivisée en 100 points, et l’indice de la somme partielle est m=200.
Page 3 sur 9
Épreuve d’Informatique – Session 2020 – Filière PSI
Les deux extrémités de la barre sont maintenues à une température extérieure constante Textr.
, ,
= ∗
Supposons que nous cherchions l’évolution de U(t, x) sur une durée totale T.
Page 2 sur 9
Épreuve d’Informatique – Session 2020 – Filière PSI
Q.1- Écrire la fonction vecteur_init() qui retourne un vecteur U de longueur p+1, tel que :
U[i] = Textr si i = 0 ou i = p
U[i] = Tbarre si 1 ≤ i ≤ p-1
Si i = 0 ou i = p alors [ ] = [ ]
Si 1 ≤ i ≤ p-1 alors [ ] = [ ] + ∗ ∗ [ − #] − ∗ [ ] + [ + #]
Page 3 sur 9
Épreuve d’Informatique – Session 2020 – Filière MP-PSI
La barre est initialement "préparée" dans un état de température Tbarre. Les deux extrémités de la barre
sont maintenues à une température extérieure constante Textr.
( , ) ( , )
( ) = ∗
+, ∶ = ( .+ − )
"
On suppose que les variables globales suivantes, sont déclarées et initialisées par les valeurs suivantes :
Page 2 sur 9
Épreuve d’Informatique – Session 2020 – Filière MP-PSI
Dans cette partie, on suppose que les modules numpy et [Link] sont importés :
import numpy np
import [Link] as pl
Q.2- Écrire la fonction U(x,t) qui reçoit en paramètres deux réels x et t. La fonction retourne la valeur
de U(x, t) qui correspond à la somme partielle d’indice m=200 :
0
( , )= + ( .+ − )∗ /( , , )
"
)
Q.3- Écrire le programme permettant de tracer la représentation graphique suivante, qui représente
l’évolution de la température dans les points x de la barre, à intervalle de temps égal à 0.1s, sachant que
la barre est subdivisée en 100 points, et l’indice de la somme partielle est m=200.
Page 3 sur 9
Épreuve d’Informatique – Session 2020 – Filière TSI
En analyse numérique, il existe une vaste famille d’algorithmes dont le but principal est d’estimer la
valeur numérique de l’intégrale d’une fonction f sur un intervalle [a, b] :
Méthode de Simpson :
La méthode de Simpson, du nom de Thomas Simpson, est une technique qui utilise l'approximation
d'ordre 2 de f par un polynôme quadratique P prenant les mêmes valeurs que f aux points
d'abscisses a, = et b.
Pour déterminer l'expression de cette parabole (polynôme de degré 2), on utilise l'interpolation
lagrangienne. Le résultat peut être mis sous la forme suivante :
− − − − − −
= + +
− − − − − −
Un polynôme étant une fonction très facile à intégrer, on approche l'intégrale de la fonction f sur
l'intervalle [a, b], par l'intégrale de P sur ce même intervalle. On a ainsi, la formule simple:
− +
≈ = + +
≈ + + + + + + + +
Page 2 sur 8
Épreuve d’Informatique – Session 2020 – Filière TSI
+ + + +
2 2 x
Q.3.a – Écrire en python, la fonction g définie par : g(x) = x + 5*cos(1+x )*sin(e ) - 1
Q.3.b – Écrire le programme qui trace la courbe suivante de la fonction g. Le nombre de points générés
dans la courbe est : 250
Q.3.c- Écrire le code python qui utilise la méthode de simpson, et qui calcule et affiche la valeur de
5
l’intégral de la fonction g, dans l’intervalle [-0.5 , 1.5], en utilisant pour nombre de subdivision : n=10
Page 3 sur 8
Épreuve d’Informatique – Session 2019 – Filière MP
Partie II :
Grille binaire
Une grille binaire de n lignes et p colonnes, est une grille dans laquelle chaque case est de couleur
blanche, ou bien de couleur noire.
Exemple :
0 1 2 3 4 5 6 7 8 9 10 11
0
1
2
3
4
5
6
7
8
9
Exemple :
La grille binaire de la figure 1 est représentée par la matrice G de 10 lignes et 12 colonnes, suivante :
Page 4 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Une grille binaire carrée est une grille binaire dans laquelle le nombre de lignes et le nombre de colonnes
sont égaux.
Exemple : Grille binaire carrée d’ordre 10 (10 lignes et 10 colonnes).
Dans cette section (II. 1), on suppose que le module numpy est importé :
from numpy import *
On suppose que la matrice carrée G, qui représente la grille binaire carrée, est créée par la méthode
array( ) du module numpy.
Exemple :
La grille binaire carrée d’ordre 10 est représentée par la matrice carrée G suivante :
G = array ([[1,1,1,1,0,0,1,1,1,1] ,
[1,1,1,0,0,1,1,0,1,1] ,
[1,1,0,0,1,1,0,0,1,1] ,
[1,1,1,0,0,0,0,1,1,1] ,
[1,0,1,1,1,0,1,1,1,1] ,
[1,0,0,1,1,1,0,1,1,0] ,
[1,1,0,1,1,0,1,0,0,0] ,
[1,0,1,0,0,1,1,0,0,1] ,
[1,0,0,0,1,1,1,0,1,1] ,
[1,1,1,0,0,1,1,1,1,1] ] , float)
Dans le but de calculer le déterminant d’une matrice carrée G qui représente une grille binaire carrée, on
propose d’utiliser la méthode du ‘pivot de Gauss’, dont le principe est le suivant :
Page 5 sur 12
Épreuve d’Informatique – Session 2019 – Filière MP
Q 1. a- Écrire la fonction copie_matrice(G), qui reçoit en paramètre une matrice carrée G qui
représente une grille binaire carrée, et qui renvoie une matrice C copie de la matrice G.
Q 1. c- Écrire la fonction triangulaire(C), qui reçoit en paramètre une matrice carrée C qui
représente une grille binaire carrée. En utilisant la méthode du Pivot de Gauss, la fonction transforme la
matrice C en matrice triangulaire inférieure ou bien triangulaire supérieure, tout en comptant le nombre
de fois qu’il y a eu échange de lignes dans la matrice C. La fonction doit retourner le nombre d’échanges
de lignes.
Exemple :
Après l’appel de la fonction triangulaire(C), on obtient la matrice triangulaire supérieure suivante :
Q 1. d- Écrire la fonction deteminant(G), qui reçoit en paramètre une matrice G qui représente une
grille binaire carrée. En utilisant la méthode du pivot de Gauss, la fonction renvoie la valeur du
déterminant de G,
Exemple :
Page 6 sur 12
Épreuve d’Informatique – Session 2019 – Filière PSI
Partie IV :
Calcul du nombre de chemins entre deux villes
R = array([ [0,1,1,1,0,0,0,0],[1,0,1,0,1,0,0,0],[1,1,0,1,1,0,0,0],
[1,0,1,0,1,0,1,1],[0,1,1,1,0,1,1,0],[0,0,0,0,1,0,1,1],
[0,0,0,1,1,1,0,1],[0,0,0,1,0,1,1,0] ])
Par exemple, dans le réseau routier de la figure 2, pour aller de la ville 1 à la ville 3, en passant
exactement par 5 routes, on peut trouver plusieurs chemins, dont voici quelques uns :
(1,4,5,7,6,3) , (1,4,6,5,4,3) , (1,2,3,4,2,3) , (1,0,2,0,2,3), …
Exemples :
M = R2 M = R3
Page 8 sur 12
Épreuve d’Informatique – Session 2019 – Filière PSI
= ∗
Page 9 sur 12
Épreuve d’Informatique – Session 2019 – Filière TSI
II- 9. Calcul du nombre de chemins entre deux villes
Dans cette partie, on considère que le module numpy est importé :
R = array([ [0,1,1,1,0,0,0,0],
[1,0,1,0,1,0,0,0],
[1,1,0,1,1,0,0,0],
[1,0,1,0,1,0,1,1],
[0,1,1,1,0,1,1,0],
[0,0,0,0,1,0,1,1],
[0,0,0,1,1,1,0,1],
[0,0,0,1,0,1,1,0] ])
Dans cette partie, on propose de résoudre le problème suivant :
Soit p un entier strictement positif.
Quel est le nombre de chemins (simples ou non) entre une ville i et une ville j, passant exactement
par p routes ?
Exemple :
Dans le réseau routier de la figure 2, pour aller de la ville 1 à la ville 3, en passant exactement par 5
routes, on peut trouver plusieurs chemins, dont voici quelques uns :
• (1,4,5,7,6,3)
• (1,4,6,5,4,3)
• (1,2,3,4,2,3)
• (1,0,2,0,2,3)
• …
Page 8 sur 10
Épreuve d’Informatique – Session 2019 – Filière TSI
Exemples :
M = R2 M = R3
Rappel : Le module numpy contient la méthode dot( ) qui calcule le produit matriciel.
Lorsqu’il s’agit d’une matrice carrée, le calcul de la puissance devient crucial. L’exponentiation rapide
est un algorithme qui permet de minimiser le nombre de multiplications effectuées dans le calcul de la
puissance d’une matrice carrée.
Page 9 sur 10
n
Pour calculer x , le principe de l’exponentiation rapide est le suivant :
• Si n = 1 alors xn = x
• Si n est pair alors x n = (x2) n/2
• Si n est impair alors x n = x . (x2) (n-1)/2
Page 10 sur 10
Préparation CNC : Informatique Prof Youness 06 78 26 25 20
Les candidats sont informés que la précision des raisonnements algorithmiques ainsi que le soin apporté
à la rédaction et à la présentation des copies seront des éléments pris en compte dans la notation. Il
convient en particulier de rappeler avec précision les références des questions abordées. Si, au cours de
l'épreuve, un candidat repère ce qui peut lui sembler être une erreur d'énoncé, il le signale sur sa copie et
poursuit sa composition en expliquant les raisons des initiatives qu'il est amené à prendre.
Remarques générales :
L'épreuve se compose de deux parties indépendantes.
Toutes les instructions et les fonctions demandées seront écrites en Python.
Les questions non traitées peuvent être admises pour aborder les questions ultérieures.
Toute fonction peut être décomposée, si nécessaire, en plusieurs fonctions.
~~~~~~~~~~~~~~~~~~~~~~~~~~
Dans cette partie, on suppose que les modules suivants sont importés :
from numpy import *
from [Link] import *
Les équations différentielles (ED) apparaissent très souvent dans la modélisation de la physique et des
sciences de l'ingénieur. Trouver la solution d'une ED ou d'un système d'ED est ainsi un problème courant,
souvent difficile ou impossible à résoudre de façon analytique. Il est alors nécessaire de recourir à des
méthodes numériques pour les résoudre.
Le problème de Cauchy consiste à trouver une fonction y(t) définie sur l'intervalle [a, b] telle que :
= , ( ) ; ∀ ∈[ , ]
( )=
Pour obtenir une approximation numérique de la solution y(t) sur l'intervalle [a, b], nous allons estimer la
valeur de cette fonction en un nombre fini de points ti, pour i = 0, 1, … , n, constituants les nœuds du
maillage. La solution numérique obtenue aux points ti est notée yi = y(ti). L'écart entre deux abscisses, noté
h, est appelé : le pas de discrétisation.
Page 1 sur 12
Épreuve d’Informatique – Session 2018 – Filière MP
Les principales méthodes de résolution numérique des ED sont séparées en deux grandes catégories :
les méthodes à un pas : Le calcul de la valeur yn+1 au nœud tn+1 fait intervenir la valeur yn obtenue à
l'abscisse précédente. Les principales méthodes sont celles de : Euler, Runge-Kutta, Crank-
Nicholson …
les méthodes à multiples pas : Le calcul de la valeur yn+1 au nœud tn+1 fait intervenir plusieurs
valeurs yn , yn-1 , yn-2 , … obtenues aux abscisses précédentes. Les principales méthodes sont celles
de : Nyström, Adams-Bashforth, Adams-Moulton, Gear …
= + ∗ ∗ ,
Dans la suite de cette partie, nous nous intéressons aux méthodes d'Adams-Bashforth et d’Adams-Moulton
d’ordre 2.
y0 donné ;
y1 calculé par la méthode Euler ;
= + ( ∗ ( , )− ( , ))
y0 donné ;
= + ( ( , )+ ( , ))
En pratique, les schémas d’Adams-Moulton ne sont pas utilisés comme tels, car ils sont implicites. On
utilise plutôt conjointement un schéma d’Adams-Moulton et un schéma d’Adams-Bashforth de même
ordre, pour construire un schéma prédicteur-correcteur : Dans le schéma d’Adams-Moulton, on utilise la
valeur de yn+1 prédite (calculée) par le schéma d’Adams-Bashforth.
Le schéma prédicteur-correcteur d’ordre 2, d'Adams-Bashforth et Adams-Moulton est :
y0 donné ;
y1 calculé par la méthode d’Euler ;
= + ( ( , )+ ( , ))
avec ∶ = + ( ∗ ( , )− ( , ))
Page 2 sur 12
Épreuve d’Informatique – Session 2018 – Filière MP
Q. 1 : Écrire une fonction ABM2 (f, a, b, y0, h), qui reçoit en paramètres :
f est la fonction qui représente une équation différentielle du premier ordre ;
a et b sont les deux bornes de l’intervalle d’intégration ;
y0 est la valeur initiale à l’instant a (y(a) = y0) ;
h est le pas de discrétisation.
Si l’objet suspendu est tiré verticalement vers le bas, celui-ci effectue un mouvement harmonique. La forme
générale de l’équation différentielle modélisant ce mouvement harmonique est :
(E) ∗ ̈( )+ ∗ ̇( )+ ∗ ( )= ( )
Page 3 sur 12
Épreuve d’Informatique – Session 2018 – Filière MP
Q. 2 : On suppose que les valeurs des paramètres de l’équation différentielle (E), sont :
b=1 ; k = 12.5 ; m = 1.5 et F(t) = 0
Écrire l’équation différentielle (E) sous la forme z' = G(t, z), avec G(t, z) une fonction à deux variables (t, z)
dont z est un tableau de longueur 2.
Q. 3 : On suppose avoir tiré l’objet suspendu verticalement vers le bas, avant de le relâcher sans vitesse
initiale.
En utilisant le schéma prédicteur-correcteur d'ordre 2, d'Adams-Bashforth et Adams-Moulton, écrire le code
Python qui permet de tracer la courbe ci-dessous, représentant la position y(t) de l’objet m suspendu, toutes
les 10-3 secondes.
Q. 4 : Écrire la fonction racines (P), qui reçoit en paramètre la liste (ou le tableau) P des positions y(t) de
l’objet suspendu, à intervalles de temps de 10-3 secondes. La fonction affiche les valeurs des zéros de la
fonction y(t) : les valeurs des t tels que y(t) = 0, ou y(t) ≈ 0 avec la précision 10-3.
Exemple :
La fonction affiche les valeurs suivantes :
0.589 , 1.684 , 2.78 , 3.875 , 4.971 , 6.067 , 7.162
*******************************
Page 4 sur 12
Épreuve d’Informatique – Session 2018 – Filière PSI
Dans cette partie, on suppose que les modules suivants sont importés :
from numpy import *
from [Link] import *
Les équations différentielles (ED) apparaissent très souvent dans la modélisation de la physique et des
sciences de l'ingénieur. Trouver la solution d'une ED ou d'un système d'ED est ainsi un problème courant,
souvent difficile ou impossible à résoudre de façon analytique. Il est alors nécessaire de recourir à des
méthodes numériques pour les résoudre.
Le problème de Cauchy consiste à trouver une fonction y(t) définie sur l'intervalle [a, b] telle que :
= , ; ∀ ∈ [ , ]
=
Pour obtenir une approximation numérique de la solution y(t) sur l'intervalle [a, b], nous allons estimer la
valeur de cette fonction en un nombre fini de points ti, pour i = 0, 1, … , n, constituants les nœuds du
maillage. La solution numérique obtenue aux points ti est notée yi = y(ti). L'écart entre deux abscisses, noté
h, est appelé : le pas de discrétisation.
Les principales méthodes de résolution numérique des ED sont séparées en deux grandes catégories :
les méthodes à un pas : Le calcul de la valeur yn+1 au nœud tn+1 fait intervenir la valeur yn obtenue à
l'abscisse précédente. Les principales méthodes sont celles de : Euler, Runge-Kutta, Crank-
Nicholson …
les méthodes à multiples pas: Le calcul de la valeur yn+1 au nœud tn+1 fait intervenir plusieurs
valeurs yn , yn-1 , yn-2 , … obtenues aux abscisses précédentes. Les principales méthodes sont celles
de : Nyström, Adams-Bashforth, Adams-Moulton, Gear …
La méthode de Nyström :
La méthode de Nyström est une méthode à deux pas, son algorithme est :
y0 donné ;
y1 calculé par la méthode Euler ;
= + ∗ ∗ ,
Géométriquement : on considère la droite de pente f(yn , tn) passant par le point (yn-1 , tn-1) parallèle à la
tangente passant par (yn , tn). La valeur yn+1 est l'ordonnée du point de cette droite d'abscisse tn+1.
Page 4 sur 11
Épreuve d’Informatique – Session 2018 – Filière PSI
Q. 1 : Écrire une fonction : nystrom (f, a, b, y0, h), qui reçoit en paramètres :
f est la fonction qui représente une équation différentielle du premier ordre ;
a et b sont les deux bornes de l’intervalle d’intégration ;
y0 est la valeur de la condition initiale à l’instant a (y(a)=y0) ;
h est le pas de discrétisation.
En utilisant le schéma de Nyström, la fonction renvoie T et Y, qui peuvent être des listes ou des tableaux :
T contient la subdivision de l’intervalle [a, b], en valeurs régulièrement espacée, utilisant le pas de
discrétisation h ;
Y contient les approximations des valeurs y(ti), à chaque instant ti de T.
On considère une masse m suspendue par une tige rigide de longueur L et de masse négligeable. On désigne
par θ l’angle entre la verticale passant par le point de suspension et la direction de la tige. On considère que
le pendule est également soumis à un frottement fluide de coefficient k.
Si l’objet m est écarté de façon à ce que l’angle entre la verticale et la tige soit θ0, et ensuite relâché sans
vitesse initiale, alors l’objet m effectue un mouvement harmonique amorti.
La forme générale de l’équation différentielle modélisant ce mouvement harmonique est :
(E) ∗ + ∗ ! + " ∗ #$ =
∗
Page 5 sur 11
Épreuve d’Informatique – Session 2018 – Filière PSI
Q. 2 : On suppose que les valeurs des paramètres de l’équation différentielle (E), sont :
m = 1 kg ; g = 9.81 m/s2 ; L = 0.50 m et k = 0.1 kg/s
Écrire l’équation différentielle (E) sous la forme z' = F(z, t), avec F(z, t) une fonction à deux variables (z, t)
dont z est un tableau de longueur 2.
Q. 3 : On suppose avoir écarté l’objet, de façon à ce que l’angle entre la verticale et la tige, soit de π/3,
avant de le relâcher sans vitesse initiale.
3.a- En utilisant la fonction de Nyström, écrire le code python qui, permet de tracer le graphe ci-dessous, qui
représente la valeur de l’angle %, toutes les 10-3 secondes.
3.b- Écrire le code python permettant de tracer la courbe ci-dessous, qui représente le portrait de phase du
pendule : les valeurs de ! (axe des ordonnées) en fonction des valeurs de % (axe des abscisses).
Puisque la tangente est proche de la courbe, on peut espérer que x1 donne une meilleure estimation d'une
solution de l'équation f(x) = 0 que x0.
( )
On recommence alors le procédé à partir de x1, on obtient x2 : = −
( )
…
( )
Ainsi, on construit par récurrence une suite (xn) définie par : = −
( )
Sous de bonnes hypothèses sur f, assez restrictives, (xn) converge vers la solution de l’équation f(x) = 0, et
la convergence est très rapide.
Page 7 sur 9
Épreuve d’Informatique – Session 2018 – Filière TSI
( )
Q.1- Montrer que : = − ( ) ( )
Q.2- Écrire une fonction : newton ( f, x0, eps, h) qui reçoit en paramètres :
La fonction f ;
Le premier terme x0 de la suite (xn) ;
Le réel h strictement positif très proche de 0 ;
Le réel eps strictement positif qui représente la précision.
La fonction renvoie le premier terme xk de la suite (xn) tel que : | − | ≤
Dans ce qui suit, on suppose que a et n sont deux variables globales déclarées et initialisées :
a est un réel positif, et n un entier strictement positif.
Q. 3- Écrire la fonction g (x), qui reçoit en paramètre un réel positif x et qui renvoie : – .
Écrire le code du programme Python qui permet de tracer la courbe de la fonction g, dans l’intervalle [0 , a].
Le nombre de points générés dans la courbe est : 500
Exemple :
Pour a=2.0 et n=7, on obtient la courbe suivante :
Page 8 sur 9
Épreuve d’Informatique – Session 2018 – Filière TSI
Q. 5- Écrire le code du programme Python qui utilise la fonction newton (), et qui affiche la valeur
approximative de la racine n-ème positive de a : √ , avec la précision 10 -12 et
5
h= 10 - .
Exemple :
Pour n=7 et a=2.0, le programme affiche la racine 7ème positive de 2 : 1.1040895136738123
Page 9 sur 9
Épreuve d’Informatique – Session 2017 – Filière MP/ PSI/ TSI
Exemple :
Matrice carrée inversible M : Matrice identité E, de même dimension que M :
Page 9 sur 12
Épreuve d’Informatique – Session 2017 – Filière MP/ PSI/ TSI
Exemple :
Matrice M : Après l’appel : transvection (M, 2, 0, -3.), la matrice M
devient :
Page 10 sur 12
Épreuve d’Informatique – Session 2017 – Filière MP/ PSI/ TSI
La fonction ligne_pivot (M, 2) retourne l’indice : 1, car, dans la colonne 2, l’élément -6.0 est le plus
grand en valeur absolue, parmi les éléments des lignes 0, 1 et 2.
Page 11 sur 12
Épreuve d’Informatique – Session 2017 – Filière MP/ PSI/ TSI
Écrire la fonction : matrice_fichier(ch), qui reçoit en paramètre une chaîne de caractère ch, qui
contient le chemin absolu du fichier texte, contenant une matrice carrée :
Si cette matrice est inversible, la fonction renvoie sa matrice inverse ;
Si cette matrice n’est pas inversible, la fonction affiche le message « Matrice non inversible » ;
Si le fichier texte ne se trouve pas à l’emplacement spécifié dans la chaine ch,
l’exception FileNotFoundError sera levée. La fonction affiche le message : « Fichier texte
inexistant »
Page 12 sur 12
Épreuve d'Informatique - Session 2016 - Filière MPI PSI! TSI
I.:énoncé de cette épreuve, commune aux candidats des filières MP 1PSII TSI,
comporte 10 pages.
I.:usage de la calculatrice est interdit.
Les candidats sont informés que la précision des raisonnements algorithmiques ainsi que le soin
apporté à la rédaction et à la présentation des copies seront des éléments pris en compte dans
la notation. Il convient en particulier de rappeler avec précision les 1 références 1 des questions
abordées. Si, au cours de l'épreuve, un candidat repère ce qui peut lui sembler être une erreur
d'énoncé, il le signale sur sa copie et poursuit sa composition en expliquant les raisons des
initiatives qu'il est amené à prendre.
Remarques générales:
- L'épreuve se compose de deux problèmes indépendants.
- Toutes les instructions et les fonctions demandées seront écrites en Python.
- Les questions non traitées peuvent être admises pour aborder les questions ultérieures.
- Toute fonction peut être décomposée, si nécessaire, en plusieurs fonctions
Méthodes à un pas :
Nous allons nous intéresser dans ce problème, à quelques méthodes permettant de résoudre
numériquement les équations différentielles du premier ordre, avec une condition initiale,
sous la forme:
y'(t) = f(t,y(t))
{ y(to) = Yo
On note 1 =1 ta, to + T [ l'intervalle de résolution. Pour un nombre de noeuds N donné, soit
tn = to + nh, avec n = 0,1,2, ..., N, une suite de noeuds de 1 induisant une discrétisation de
1 en sous-intervalles ln = [tn, tn+d. La longueur h de ces sous-intervalles est appelée pas de
discrétisation, le pas h de discrétisation est donné par h = ~. Soit Yj l'approximation au
noeud tj de la solution exacte y(tj). Les méthodes de résolution numériques, étudiées dans
ce problème, s'écrire sous la forme:
1 Yn+l = Yn + M>(tn,Yn, h)
1 tn+l = tn +h
Avec
<I>(t,y, h) = af(t, y) + I3f(t + h, Y + hf(t, y));
où a, 13 sont des constantes comprises entre 0 et 1.
Question 1:
Pour quelles valeurs du couple (a, 13) retrouve-t-on la méthode d'Euler?
Dans la suite on considère une deuxième méthode dite de Heun, cette méthode correspond
aux valeurs du couple (a, 13) = (t, t)·
Questlon2:
Écrire une fonction de prototype def Henn(f, (0, Yo, T, N) : qui prend en paramètres la fonction
f: (t,y) - tu.». la condition initiale to, Yo la valeur de f en to le nombre de nœuds Net
la valeur final du temps T et qui retourne deux listes t t = [to, tl,' .. , tN 1 et Yh = [Yo, Yi, ... , YNl
donné par le schéma:
= 21f(t,y) 1
<I>(t,y,h) + 2f(t+ h,y+ hfct,y));
On souhaite travailler sur un circuit RLC en série qui sera constitué des éléments suivants: une
résistance ROQ), une inductance L(1H), une capacité C(1F) et un générateur qui délivrera une
source de tension sinusoïdale V(t) = costznr).
On s'intéresse à la tension U 1 aux bornes de la bobine qui satisfait l'équation différentielle:
(1)
Question3:
Écrire une fonction de prototype def Euler(f, to, T, Yo, N) : qui prend en paramètres la fonction
1: (t, y) -+ I(t, y), la condition initiale to, la valeur de f en to, le nombre de nœuds N et la valeur
= =
final du temps T et qui retourne deux listes t t [to, tl, ... , tN] et Yh [Yo,Yi, ... ,YN] donné par
le schéma d'Euler permettant de résoudre des équations différentielles du premier ordre.
Question4:
Donner la complexité de la fonction d'Euler en expliquant le descriptif du calcul.
On considère les valeurs suivantes: y(t) = UI(t) et z(t) = ÛI(t) . L'équation différentielle (1) est
du second ordre.
Question5:
Définissez un système de deux équations différentielles du premier ordre qui puisse satisfaire
l'équation (1).
Question 6:
En posant Y(t) = [UI(t), ÛI(t)], montrez que l'équation (1) peut s'écrire sous la forme:
Annexe
A) Image du document
Circui RLC
0r---~----~--~~~~--~~==~
Euler
Heun
odeint
-14.'::----;;:'";:----:"-;:------:-'~-__::'c;:__-__::'"::__-~
0.0 0.5 1.0 1.5 2.0 2.5 3.0
temps(s)
1) [Link]
Parameters : s : string.
Parameters : s : string.
pa 9 e 9 sur 10 III'"
Épreuve d'Informatique _ Session 2016 _ Filière MPI PSII TSI
3) [Link]
[Link](*args, **kwargs)
Parameters : *args :
args is a variable length argument, alIowingfor multiple x, y pairs with an optional
format string.
yO: array
Initial condition on y (can be a vector).
character : descrIptlon
,.: : solid line style
,_, : dashed line style
'-: : dash-dot line style
, :' : dotted tine style
': : point marker
': : pixel marker
'0' : circle marker
'v' : triangle_down marker
character : color
'b' :blue
'g": green
'r": red
4) [Link]
[Link](func, yO, t, args=O, Dfune None, coljderiveü, full outputeü,
mleNone, [Link], rtol=None, atole None, tcrite None, hO=O.O, hrnaxeû.O, hrnineü,
mxstepeü, mxhnileü, rnxordn=12, mxordseô, printmessgeû)
5) [Link]
[Link](*args, **kwargs)
Parameters :
Returns: Places a legend on the axes.
To make a legend for lines which already exist on the axes (via plot for instance),
sirnply calIthis function with an iterable of strings, one for each legend item.
6) [Link]
~~.ç.
FIN DE L'ÉPREUVE
1 page 10 sur 10 •
Épreuve d'informatique – Session 2015 – Filière MP/ PSI/ TSI
Question 6 :
La fonction odeint() du module [Link] a pour syntaxe :
[Link] (fonction f, valeur initiale en a, subdivision de [a, b]).
La fonction odeint() ne permet de résoudre que des équations d'ordre 1.
Expliquer comment on peut transformer l'équation (E) en une équation du premier ordre.
Question 7 :
Le principe d'utilisation de la fonction odeint() permet d'obtenir une estimation numérique de la
{
solution du problème de Cauchy : Y ' (t)=F (Y (t ) , t)
Y ( t 0 )=Y 0
Écrire en Python une fonction F(z,t) qui prend en argument un vecteur colonne z composé
de deux éléments, la variable t et qui retourne un tableau (array du module numpy) composé
également de deux éléments.
La librairie numpy est très riche en fonctionnalités ([Link](), [Link](), [Link](),
[Link](), [Link](), [Link](), [Link](), …)
Lors de l'implémentation de la fonction F(), préciser bien à quoi correspondent les différents
paramètres mis en œuvre.
Question 8 :
On souhaite avoir la représentation suivante de cette équation différentielle :
2
Épreuve d'informatique – Session 2015 – Filière MP/ PSI/ TSI
Concours National Commun
Pour la courbe représentée dans la ''Figure 1'' le nombre d'échantillons générés est égal à 100.
Implémenter dans le langage Python, en utilisant la fonction odeint() citée précédemment,
la formule (E) générant le graphique de la ''Figure 1''.
Attention vous devez pour les valeurs initiales qui vous manquent estimer leurs valeurs en
observant la courbe de cette figure.
La librairie matplotlib permet de tracer toutes sortes de graphiques notamment avec la sous-
librairie [Link].
ANNEXE
str(p) : Retourne une chaîne contenant une représentation bien imprimable d'un objet p. Pour les
chaînes, cela renvoie la chaîne elle-même.
Soit L un élément de type list. La liste des méthodes des objets de type list est :
[Link](x) Ajoute un élément à la fin de la liste.
[Link](L) Étend la liste en y ajoutant tous les éléments de la liste fournie.
[Link](i, x) Insère un élément à la position indiquée. Le premier argument est la position de
l'élément courant avant lequel l'insertion doit s'effectuer.
[Link](x) Supprime de la liste le premier élément dont la valeur est x. Une exception est levée
s'il n'existe aucun élément avec cette valeur.
[Link](x) Retourne la position du premier élément de la liste ayant la valeur x. Une exception
est levée s'il n'existe aucun élément avec cette valeur.
[Link](x) Retourne le nombre d'éléments ayant la valeur x dans la liste.
[Link](cmp=None, key=None, reverse=False) Trie les éléments de la liste.
[Link]() Inverse l'ordre des éléments de la liste en place.
Figure 1 exercice 2