Informatique Pour Tous page 1/8 PCSI1 2014-2015
Nom : Prénom :
Informatique Pour Tous
Interrogation n°4
I-Extrait du sujet IPT Centrale-Supelec 2015 :
1) Donner la valeur des expressions Python suivantes :
a) [1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
b) 2 * [1, 2, 3]
[1, 2, 3, 1, 2, 3]
2) Écrire une fonction python vsom qui prend en paramètre deux listes de nombres de même longueur et
qui renvoie une nouvelle liste constituée de la somme terme à terme de ces deux listes.
Exemple : vsom([1, 2, 3], [4, 5, 6]) renvoie [5, 7, 9].
def vsom(l1,l2) :
result = []
for i in range(len(l1)):
result.append(l1[i]+l2[i])
return result
ou bien (en intension)
def vsom(l1,l2) :
return [l1[i]+l2[i] for i in range(len(l1))]
3) Écrire une fonction python smul à deux paramètres, un nombre et une liste de nombres, qui multiplie
chaque élément de la liste par le nombre et renvoie une nouvelle liste.
Exemple : smul(2, [1, 2, 3]) renvoie [2, 4, 6].
def smul(n,l) :
result = []
for i in range(len(l)):
result.append(n*l[i])
Informatique Pour Tous page 2/8 PCSI1 2014-2015
return result
ou bien (en intension)
def smul(n,l) :
return [n*l[i] for i in range(len(l))]
II-Extrait du sujet IPT Mines-Ponts 2015 :
Une liaison série asynchrone permet la communication entre la carte de commande/acquisition et un PC.
Les échantillons correspondant à une mesure sont envoyés par la carte électronique sous la forme d’une
trame (suite de caractères ASCII). Cette suite de caractères se présente sous la forme suivante :
un entête qui permet d’identifier la mesure sur un caractère (‘U’ tension moteur, ‘I’ courant moteur, ‘P’
position absolue) ;
le nombre de données envoyées (3 caractères) ;
les données constituées des mesures brutes codées à l’aide du caractère ‘+’ ou ‘–‘ suivi de 3 caractères
pour la valeur absolue ;
un checksum, somme des valeurs absolues des données précédentes modulo 10000 sur 4 caractères. Le
nombre de données transmises n’est pas inclus dans le checksum.
Exemple :mesure de la tension sur 5 échantillons.
Caractères reçus : « U005+012+004–023–002+0420083 »
1) Écrire en langage Python une fonction lect_mesures à un paramètre de type chaîne de caractères de
la forme définie ci-dessus, qui retourne une liste contenant : le type de la mesure codé sur un caractère
(‘U’, ‘Iou ‘P’), une liste contenant l’ensemble des valeurs des mesures reçues, enfin le checksum sous
forme numérique.
Exemple : lect_mesures(‘U005+012+004–023–002+0420083’) renvoie [‘U’,[12,4,–23,–
2,42],83]
def lect_mesures(c) :
result=[c[0]] # le premier élément du résultat est le
premier élément de la chaine c
nb_mes = int(c[1:4]) # on récupère le nombre de mesures
mesures=[] # on prépare la liste des mesures
for i in range(nb_mes) :
mesures.append(int(c[i*4+4:i*4+8]))
result.append(mesures) # on ajoute la liste des mesures à la
liste résultat
result.append(int(c[4*(nb_mes+1):])) # on rajoute le checksum
return result
Informatique Pour Tous page 3/8 PCSI1 2014-2015
2) On suppose que toutes les mesures sont disponibles dans la liste mesures et le checksum reçu dans la
variable checkSum. Écrire en langage Python une fonction check(mesures,checkSum) qui re-
tourne True si la transmission présente un checksum valide et False sinon.
def check(mesures,checksum) :
somme=0
for mes in mesures :
somme = somme + abs(mes)
result = False
if somme == checksum :
result = True
return result
ou bien, plus pythonesque
def check(mesures,checksum) :
return checksum = = sum([abs(mes) for mes in mesures])
III-Extrait du sujet IPT Mines-Ponts 2015 :
On définit la valeur moyenne I
moy
du signal I(t) sur la durée d’acquisition par
( )
0
1
final
t
moy
final
I I t dt
t
=
.
Écrire une fonction en langage Python qui retourne I
moy
après l’avoir calculée par la méthode des trapèzes.
1) Le principe de la méthode des trapèzes est rappelé sur le schéma
ci-contre :
L’intervalle [a, b] est partagé en n intervalles successifs [x
i
, x
i+1
].
a) Exprimer mathématiquement l’aire A
i
du trapèze
(x
i
, f(x
i
), f(x
i+1
), x
i+1
). On notera h = (x
i+1
– x
i
).
L’aire du trapèze est la somme de l’aire du rectangle de largeur h et de
hauteur f(x
i
) et du rectangle de largeur h et de hauteur f(x
i
), f(x
i+1
). On
a donc soit
.
b) En déduire l’aire des n trapèzes situés entre les abscisses a et b.
ab
x
f
f(a)
f(b)
x
i
x
i+1
f(x
i
)
f(x
i+1
)
Informatique Pour Tous page 4/8 PCSI1 2014-2015
On a évidemment
. Dans cette somme chaque
apparaît 2 fois sauf x
0
= a et x
n
= b donc il reste
c) Écrire en Python une fonction integraleTrapezes(f, a, b, n) de paramètres :
f la fonction dont on calcule l’intégrale ;
a et b les bornes du domaines d’intégration ;
n le nombre de trapèzes ;
def integraleTrapezes(f, a, b, n) :
s = 0
h = (b-a)/n
for i in range(n) :
x = a + i * h
s = s + h*(f(x)+f(x+h))/2
return s
d) Écrire en langage Python
une autre fonction
integraleTrapezes_e(f, a, b, e)
prenant en en-
trée les paramètres f, a et b comme ci-dessus et une variable numérique désignant l’incertitude e attendue
sur l’évaluation de l’intégrale. Cette fonction renvoie l’approximation Sn de l’intégrale I de la fonction et
le nombre de rectangles n nécessaires pour obtenir l'incertitude e I .
(On pourra partir d'un nombre n
1
= 1 de trapèze, calculer une première évaluation de S
n1
, puis multiplier
ce nombre n
1
par 2, comparer la nouvelle évaluation de S
n2
ainsi obtenue à la première et continuer ainsi
jusqu'à ce que la différence entre deux évaluations successives soit inférieure à l'incertitude e imposée.)
def integraleTrapezes(f,a,b,e):
S1 = (b-a)*(f(a)+f(b))/2
S2 = (b-a)*(f(a)+2*f((a+b)/2)+f(b))/4
n = 2
h = (b-a)/n
while abs(s2-s1) > e :
n = 2*n
S1 = S2
h = h/2
S2 = S1/2
for i in range(n//2):
S2 = S2 + h * f(a + (2*i+1)*h)
return n , S2
Informatique Pour Tous page 5/8 PCSI1 2014-2015
IV-Extrait du sujet IPT Centrale-Supelec 2015 :
Soient y une fonction de classe C
2
sur et t
min
et t
max
deux réels tels que t
min
< t
max
. On note I l’intervalle
[t
min
, t
max
]. On s’intéresse à une équation différentielle du second ordre de la forme :
(
)
(
)
(
)
"
t I y t f y t
∀ ∈ =
(II.1)
f est une fonction donnée, continue sur . De nombreux systèmes physiques peuvent être décrits par
une équation de ce type.
On suppose connues les valeurs y
0
= y(t
min
) et z
0
= y(t
min
). On suppose également que le système physique
étudié est conservatif, ce qui entraîne l’existence d’une quantité indépendante du temps (énergie, quantité
de mouvement, …), notée E, qui vérifie l’équation (II.2) où g = −f .
( ) ( )
( )
2
1'
t I y t g y t E
∀ ∈ + =
(II.2)
1) Pour résoudre numériquement l’équation différentielle (II.1), on introduit la fonction z : I définie
par
(
)
(
)
, '
t I z t y t
∀ ∈ =
a) Montrer que l’équation (II.1) peut se mettre sous la forme d’un système différentiel du premier ordre
en z(t) et y(t), noté (S).
b) Soit n un entier strictement supérieur à 1 et
0, 1
n
J n
= −
. On pose
max min
1
t t
h
=
et
min
,
n i
i J t t ih
∀ ∈ = +
. Montrer que, pour tout entier
0, 2
i n
∈ −
,
( ) ( ) ( )
1
1
i
i
t
i i t
y t y t z t dt
+
+
= +
et
( ) ( ) ( )
( )
1
1
i
i
t
i i t
z t z t f y t dt
+
+
= +
(II.3)
2) La suite du problème exploite les notations introduites dans cette partie et présente une méthode numé-
rique dans laquelle les intégrales précédentes sont remplacées par une valeur approchée. Dans le schéma
d’Euler explicite, chaque terme sous le signe intégrale est remplacé par sa valeur prise en la borne infé-
rieure.
a) Dans ce schéma, montrer que les équations (II.3) permettent de définir deux suites (y
i
)
i
Jn
et (z
i
)
i
Jn
,
y
i
et z
i
sont des valeurs approchées de y(t
i
) et z(t
i
). Donner les relations de récurrence permettant de dé-
terminer les valeurs de y
i
et z
i
connaissant y
0
et z
0
.
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !