• Aucun résultat trouvé

3 Les écarts quadratiques

N/A
N/A
Protected

Academic year: 2022

Partager "3 Les écarts quadratiques"

Copied!
9
0
0

Texte intégral

(1)
(2)

2. La commandeprint math.sin(x)va afficher

Une erreur ② 0.8414709848078965 ③ −1 ④ 0.0

3. La commandeprint np.sin(x)va afficher

Une erreur ② 0.8414709848078965 ③ −1 ④ 0.0

4. La commandeprint sin(v)va afficher

Une erreur

② array([0.84147098,0.0])

③ array([0.0,0.84147098])

④ 0.84147098

5. La commandeprint math.sin(v)va afficher

Une erreur

② array([0.84147098,0.0])

③ array([0.0,0.84147098])

④ 0.84147098

6. La commandeprint np.sin(v)va afficher

Une erreur

② array([0.84147098,0.0])

③ array([0.0,0.84147098])

④ 0.84147098

2 Révisions sur les listes

On définit ensuite dans le programme PYTHON: tmes=[0,50,100,150,200,250]

Cmes=[1e-2,7.85e-3,6.25e-3,4.68e-3,3.60e-3,2.82e-3]

C0=1e-2

7. La commandeprint Cmes[1]va afficher

① 7.85e-3 ② 1e-2 ③ 2.82e-3 ④ Une erreur

8. La commandeprint Cmes[1:4]va afficher

① [1e-2,7.85e-3,6.25e-3,4.68e-3]

② [1e-2,7.85e-3,6.25e-3]

③ [7.85e-3,6.25e-3,4.68e-3]

④ [7.85e-3,6.25e-3,4.68e-3,3.60e-3]

(3)

9. La commandeprint tmes[-1]va afficher

① 250 ② 200 ③ 0 ④ Une erreur

10. La commandeprint range(len(tmes))va afficher

① [1,2,3,4,5,6]

② [0,1,2,3,4,5]

③ [0,1,2,3,4,5,6]

④ [1,2,3,4,5]

11. Compléter la fonction suivante afin qu’elle calcule la somme des termes d’une listeL de nombres (en prenant la convention que si la liste est vide alors la somme est nulle) :

def somme(L):

________________________________________________________

for k in range(len(L)):

________________________________________________________

________________________________________________________

3 Les écarts quadratiques

Pour une mesuretmes[i],Cmes[i] et une valeur der donnée, la quantité : ei =

C0er·tmes[i]−Cmes[i]2

est l’écart quadratiqueentre la mesure et le modèle. On définit une fonctionden posant : d(r)=

5 i=0

C0er·tmes[i]−Cmes[i]2

Cette fonction représente la somme des écarts quadratiques entre les mesures effectuées et le modèle.

12. On considère la fonction : def mystere(r):

E=[]

for i in range(len(tmes)):

E.append((C0*math.exp(-r*tmes[i])-Cmes[i])**2) return E

Décrire ce que calculemystere(r):

(4)

13. Compléter la fonction suivante afin qu’elle calcule la quantitéd(r) définie ci-dessus en faisant appel aux fonctionsmystereetsomme:

def d(r):

________________________________________________________

On obtient la représentation graphique suivante pour la fonctiondsur l’intervalle [10−4,10−2] :

01000 01002 01003 01004 01005 01060

0 0100000

0100002 0100003 0100004 0100005 0100060 0100062 0100063

0011

0122345364789649593643418145340

On observe que la fonctiond possède un minimum. On considère que le modèle qui cor- respond le mieux aux mesures est celui qui est associé au paramètrer pour lequeld(r) est minimum. Afin de déterminer ce minimum, on va déterminer les valeurs qui annulent la dérivée ded.

14. La fonctiondest dérivable surR. Sa dérivée est définie par

d(r)=

5

i=0

2

C0er·tmes[i]−Cmes[i]

d(r)=2C05

i=0

tmes[i]er·tmes[i]

Cmes[i]−C0er·tmes[i]

d(r)=

5

i=0

2e−r·tmes[i]

C0er·tmes[i]−Cmes[i]

d(r)=

5

i=0

2C0er·tmes[i]

C0er·tmes[i]−Cmes[i]

15. Compléter la fonction suivante pour qu’elle calcule la valeur ded(r) :

def d_prim(r):

________________________________________________________

for k in range(len(tmes)):

________________________________________________________

________________________________________________________

(5)

4 Minimisation

On rappelle la fonction suivante qui met en œuvre la méthode de dichotomie :

def dichotomie(f,a,b,epsilon):

while (b-a)>epsilon:

c=float(a+b)/2 if f(a)*f(c)<=0:

b=c else:

a=c

return float(a+b)/2

16. Pour déterminer une valeur approchée à 103près de

3 par dichotomie, il faut écrire

① dichotomie(lambda x:x**3-2,0,1,1e-3)

② dichotomie(x**2-3,1,2,1e-3)

③ dichotomie(lambda x:x^2-3,1,2,1e-3)

④ dichotomie(lambda x:x**2-3,1,2,1e-3)

On ne va pas utiliser directement la fonctiondichotomiepour obtenir une approxima- tion d’une solution de l’équation d(r)=0 mais on va s’en inspirer pour construire une autre méthode d’approximation : laméthode de la fausse position.

Étant données une fonction continue f et deux valeursa etb tellesa<bet f(a) et f(b) sont de signes contraires, on considère la droiteD pas- sant pas les points (a,f(a)) et (b,f(b)). On note alors c l’abscisse du point d’intersection de D avec l’axe des abscisses. Le principe de l’algo- rithme est le suivant :

— si f(a) et f(c) sont de signes contraires, alors on poseb=c, sinon on posea=c;

— on continue jusqu’à ce que l’on aitb−aε oùεest la précision souhaitée.

17. La droiteDa pour équation

y=f(a)+ f(b)−f(a) b−a (x−a)

y=f(b)+f(b)−f(a) b−a (x−a)

y=f(a)− f(b)−f(a) b−a (x−a)

y=f(a)+ f(b)−f(a) b−a (x−b)

18. L’abscissecdu point d’intersection deDavec l’axe des abscisses vaut

(6)

c=a−f(a)f(b)−f(a) b−a

c=a+f(a) b−a f(b)−f(a)

c=a−f(b) b−a f(b)−f(a)

c=a−f(a) b−a f(b)−f(a)

19. Compléter la définition suivante en programmant l’algorithme de la fausse position décrit plus haut (on pourra s’inspirer de la fonctiondichotomie).

def fausse_position(f,a,b,epsilon):

________________________________________________________

________________________________________________________

________________________________________________________

________________________________________________________

________________________________________________________

________________________________________________________

________________________________________________________

________________________________________________________

________________________________________________________

20. Indiquer comment utiliser la fonction précédente pour déterminer une approximation à 106près du paramètrer pour lequeld(r) est minimal :

(7)

Corrections

1. La fonctionsinn’existe pas dans PYTHONsans charger de module supplémentaire : réponse 1.

2. La commandemath.sin(x)calcule une valeur approchée de sin(1) qui est un nombre stric- tement positif : réponse 2.

3. Les fonctions mathématiques du module NUMPYpeuvent s’appliquer à des nombres : réponse 2.

4. La commandesinn’existe pas : réponse 1.

5. Les fonctions mathématiques du modulemathne peuvent pas être appliquées à des vecteurs : réponse 1.

6. Appliquée à un vecteur, la commandenp.sincalcule les sinus de chaque composante du vec- teur : réponse 2.

7. SiLest une liste,L[1] est le deuxième élément de cette liste (le premier estL[0]) : réponse 1.

8. SiLest une liste, alorsL[a:b] est la liste dont les éléments sontL[a],...,L[b−1] : réponse 3.

9. SiLest une liste, alorsL[−1] est le dernier élément de cette liste : réponse 1.

10. Sinest un entier,range(n)est la liste [0,...,n−1]. Par ailleurs,len(tmes)est le nombre d’éléments de la listetmesc’est à dire 6 : réponse 2.

11.

def somme(L):

s=0

for k in range(len(L)):

s=s+L[k]

return s

12. Cette fonction construit et renvoie la liste [e0,...,e5] des écarts quadratiques relativement àr. 13.

def d(r):

return somme(mystere(r))

14. Avec les formules de dérivation usuelles : d

dr

(C0er t−C)2

=2C0(−t)er t(C0er t−C) C’est la réponse 2.

15. En définissant des notations intermédiaires pour éviter les lignes trop longues :

(8)

def d_prim(r):

s=0

for k in range(len(tmes)):

t=tmes[k]

C=Cmes[k]

s=s+2*C0*t*math.exp(-r*t)*(C-C0*math.exp(-r*t)) return s

On peut déjà faire un test en cherchant les racines ded_primavec la fonctionfsolvede SCIPY:

from scipy.optimize import fsolve print fsolve(d_prim,1e-4)

[ 0.00499284]

Représentation graphique de la fonctiond: rr=np.linspace(1e-4,1e-2,100) plt.clf()

plt.plot(rr,[d_prim(r) for r in rr]) plt.axhline(y=0,color=’k’)

plt.xlabel("r") plt.ylabel("d’(r)")

01000 01002 01003 01004 01005 01060

7 80105

80104 80103 80102 0100

01234

16. Pour déterminer une valeur approchée de

3, il faut rechercher les racines dex→x2−3. Cette fonction s’écritlambda x:x**2-3avec PYTHON. De plus, cette racine est à chercher entre 1 et 2 : réponse 3.

17. Ces quatre équations définissent bien une droite. Il suffit de déterminer pour laquelle on ay= f(a) lorsquex=aety=f(b) lorsquex=b: réponse 1.

18. On cherche pour quelle valeur dexl’équation précédente donney=0 : réponse 4.

19. On reprend l’algorithme de dichotomie et on remplace le calcul dec avec la formule précé- dente :

(9)

def fausse_position(f,a,b,epsilon):

while (b-a)>epsilon:

c=a-f(a)*float(b-a)/(f(b)-f(a)) if f(a)*f(c)<=0:

b=c else:

a=c

return float(a+b)/2

20.

fausse_position(d_prim,1e-4,1e-2,1e-5)

Rq. Il se trouve en fait que sur cet exemple, l’algorithme de la fausse position ne converge pas cor- rectement. On peut également utiliser l’algorithme de dichotomie.

r0=dichotomie(d_prim,1e-4,1e-2,1e-5) print r0

0.00499682617188

Vérification graphique : pour cette valeur der, on représente graphiquement les mesures ainsi que la fonctionC.

plt.clf()

t=np.linspace(0,300) plt.plot(tmes,Cmes,’k+’) plt.plot(t,C0*np.exp(-r0*t)) plt.xlabel("t")

plt.ylabel("C(t)")

0 10 200 210 300 310 400

5 06003

06004 06007 06001 06008 06009 0600 0600 06020

0123

Références

Documents relatifs

[r]

Déterminer une expression simpliée de f(x) sur une période (Il n'est pas dit que cette expression simpliée est la même sur toute la période).. On veut obtenir le même résultat par

5) Dans le cas où a=2, représenter graphiquement la fonction f, la tangente T et l'asymptote oblique A sur un

[r]

La première décrit le changement de direction d’un rayon lumineux sur une surface réfléchissante. La deuxième décrit le changement de direction que subit un

Sous cette forme, il est clair que, quels que soient les paramètres f i traduisant la valeur de la fonction sur la frontière, le système admet une unique solution donc la fonction

Relations trigonométriques, Connaître et utiliser dans le triangle rectangle les relations entre le cosinus, le sinus ou la tangente d'un angle aigu et les longueurs de deux

Exercice 6 Une m´ ethode ancienne ( attribu´ ee ` a Platon) permettait d’extraire la racine carr´ ee d’un nombre par un proc´ ed´ e it´ eratif... Si une suite a une