Vous êtes sur la page 1sur 4

Evaluation en Calcul Scientifique 3A14-Corrig?

December 23, 2019

Ecole Supérieure PRivée d’Ingénierie et de Technologies


Durée de l’évaluation : 30 minutes
NOM et Prénom :

Question 1 : Importer les modules numpy, matplotlib.pyplot et sympy en utilisant des alias
différents.

[1]: import numpy as np


import matplotlib.pyplot as plt
import sympy as sp

Question 2 : On considère une fonction f tabulée, définie par la connaissance des points
( xi , yi = f ( xi ))0≤i≤8 illustrés dans le tableau ci-dessous :

i 0 1 2 3 4 5 6 7 8
−3 −1 −1 1 1 3
xi −1 0 1
4 2 4 4 2 4
32 8 32 32 8 32
yi = f ( xi ) 1 2 1
25 5 17 17 5 25

Créer deux listes X et Y composées, respectivement, des ( xi )0≤i≤8 et (yi )0≤i≤8 .

[2]: X=np.linspace(-1,1,9)
Y=[1,32/25,8/5,32/17,2,32/17,8/5,32/25,1]

Question 3 : Donner l’instruction de la représentation graphique de Y en fonction de X. Utiliser


la couleur magenta, le marker triangle et une ligne discontinue pour la courbe.

[3]: plt.plot(X,Y,color="magenta",marker='^',linestyle="dashed")
[3]: [<matplotlib.lines.Line2D at 0x226d1362f28>]

1
Question 4 : On souhaite déterminer une valeur approchée de
∫ 1
I( f ) = f ( x )dx
−1

par la méthode composite de Simpson, dont la formule est rappelée ci-dessous.

h( )
p −1 p −1
ISc ( f ) = f ( a) + 4 ∑ f ( x2k+1 ) + 2 ∑ f ( x2k ) + f (b)
3 k =0 k =1

avec h désigne le pas de discrétisation de l’intervalle [ a, b] sur lequel la fonction f est définie,
n = 2p,p ∈ N∗ , le nombre pair de sous intervalles et xi , i ∈ {0, · · · , n}, les points d’intégration.
Ecrire une fonction Simpson(X,Y) qui prend comme entrées une liste X de points équidistants sur
[ a, b] (h est fixé) et Y la liste des images de X par f et qui renvoie la valeur de ISc ( f ).

[4]: def Simpson(X,Y):


n=len(X)-1
h=X[1]-X[0]
p=n//2
S=Y[0]+Y[-1]+4*Y[1]
for k in np.arange(1,p):
S+=4*Y[2*k+1]+2*Y[2*k]
return S*h/3

Question 5 : Appliquer la fonction Simpson pour approcher I ( f ). Donner le résultat.

2
[5]: Simpson(X,Y)
[5]: 3.141568627450981

2
Question 6 : Soit la fonction f (t) = , t ∈ [−1, 1].
1 + t2
Programmer la fonction f .

[6]: f=lambda t: 2/(1+t**2)

Question 7 : Créer une liste t composée de 1000 points répartis uniformément sur [−1, 1].

[7]: t=np.linspace(-1,1,10**3)

Question 8 : Sur une même figure, représenter f en bleu, et en ligne continue, et les couples
( xi , yi = f ( xi ))0≤i≤8 avec des * en rouge seulement. Donner les instructions nécessaires. Observer
le graphique, que remarquez vous?

[8]: plt.plot(t,f(t),'b-',X,Y,'r*')
# La courbe représentative de f passe par les points de la question 2
[8]: [<matplotlib.lines.Line2D at 0x226d09e6710>,
<matplotlib.lines.Line2D at 0x226d1414f60>]

3
Question 9 : Sachant maintenant que les données représentées dans le tableau de la question
2, sont issues de la fonction f de la question 6, donner la valeur exacte de I ( f ) en utilisant la
fonction integrate du module sympy. Donner les instructions nécessaires.

[9]: x=sp.Symbol('x')
I=sp.integrate(2/(1+x**2),(x,-1,1)).evalf()
I
[9]: 3.14159265358979

Question 10 : Comparer la valeur exacte I ( f ) et la valeur approchée ISc ( f ) et donner l’erreur


d’intégration commise.

[10]: print(I)
print(Simpson(X,Y))
# Erreur d'intégration
np.abs(I-Simpson(X,Y))

3.14159265358979
3.141568627450981

[10]: 2.40261388122498 · 10−5

Vous aimerez peut-être aussi