Skip to content

Projet à rendre

date limite: 21 janvier 2019 18h00

Les scripts sont à envoyer par email à Gerald.Monard@univ-lorraine.fr.

Exercice 1

Le but de cet exercice est de rechercher par une méthode numérique une valeur approchée du zéro de la fonction f(x) = \exp(x) - 3x. Ainsi, on cherche l'ensemble des x_0 réels tel que f(x_0) = 0.

Méthode de Newton (ou des tangentes)

Soit une fonction f(x), f'(x_1) est la pente de la droite tangente à la courbe y=f(x) au point d'abscisse x_1. Le point x_2 pour lequel cette droite coupe l'axe des abscisses est défini par:

f'(x_1) = \frac{f(x_1) - 0 }{x_1-x_2} \quad \text{soit} \quad x_2 = x_1 - \frac{f(x_1)}{f(x_2)}

x_2 peut être considéré comme un zéro approché de f(x) et l'itération de ce procédé permet d'écrire la relation de récurrence:

x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}

Questions

  • Ecrire un script Python qui définit la fonction f qui à tout x calcule f(x), ainsi que la fonction g qui à tout x calcule analytiquement g(x) = f'(x).
  • Tester l'utilisation de ces fonctions pour quelques valeurs judicieusement choisies
  • Ecrire la fonction Newton prenant comme variables en entrée un nombre x_1 et une précision \epsilon et renvoyant x_0, le zéro de la fonction f à \epsilon près par la methode de Newton
  • Afficher la valeur x_0 de f à 10^{-7} près

Exercice 2

Soit le fichier suivant (faire un copier-coller pour le sauvegarder):

    1  C  0.04793  1.00
    2  O  0.03297  1.00
    3  H  0.09516  1.00
    4  N  0.06072  1.00
    5  O  0.08165  1.00
    6  N  0.05456  1.00
    7 Si  0.13302  1.00
    8 Si  0.05739  1.00
    9 Cl  0.05816  1.00
   10  N  0.07322  1.00
   11 Si  0.06167  1.00
   12  N  0.01088  1.00
   13 Si  0.07442  1.00
   14  O  0.05735  1.00
   15  F  0.10090  1.00

Ecrire un script python qui lit ce fichier, calcule et affiche la somme des éléments de la troisième colonne.

Exercice 3

Le but de cet exercice est d'écrire une classe Triangle permettant de manipuler des triangles dans un espace à 2 dimensions. Par exemple, on pourrait, à partir de la définition d'un triangle, calculer son périmètre ou son aire.

Un triangle, instance de la classe Triangle étant défini par trois points dans l'espace, il est nécessaire de définir tout d'abord une classe Point permettant de définir un point dans l'espace à partir de son abscisse x et de son ordonnée y.

Le script python principal est le suivant:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python3

import Geometry
import math

A = Geometry.Point(0., 0.)
B = Geometry.Point(1., 3.)
C = Geometry.Point(5., -3.)
T = Geometry.Triangle(A, B, C)

print("Le point A: %r" %(A))
print("Le point B: %r" %(B))
print("Le point C: %r" %(C))
print()
print("distance(A,B) = %f" % (Geometry.Point.distance(A,B)))
print("distance(A,C) = %f" % (Geometry.Point.distance(A,C)))
print("distance(B,C) = %f" % (Geometry.Point.distance(B,C)))
print()
print("angle(A,B,C) = %f degrés" % (Geometry.Point.angle(A,B,C)))
print("angle(B,C,A) = %f degrés" % (Geometry.Point.angle(B,C,A)))
print("angle(C,A,B) = %f degrés" % (Geometry.Point.angle(C,A,B)))
print()
print("Le triangle ABC: %r" % (T))
print("son perimetre vaut %f" % (T.perimetre))
print("son aire vaut %f" % (T.aire))

Son exécution fournit le résultat suivant:

Le point A: (   0.000,   0.000)
Le point B: (   1.000,   3.000)
Le point C: (   5.000,  -3.000)

distance(A,B) = 3.162278
distance(A,C) = 5.830952
distance(B,C) = 7.211103

angle(A,B,C) = 52.125016
angle(B,C,A) = 25.346176
angle(C,A,B) = 102.528808

Le triangle ABC: (   0.000,   0.000)*(   1.000,   3.000)*(   5.000,  -3.000)
son perimetre vaut 16.204332
son aire vaut 9.000000

Ecrire le module Python Geometry qui décrit les classes Point et Triangle.