Académique Documents
Professionnel Documents
Culture Documents
Chap XI
Ingénierie Numérique
11 .1. Généralités
Recherche classique d’un Elément dans une liste d’éléments
Question 1 :
Etablir une fonction Recherche1 (L, el) qui laisse passer, comme paramètre, une liste d’éléments (paramètre L) et un
élément(paramètre el) afin de retourner True si el est un élément de L ou False dans le cas contraire.
def recherche1(L , x):
for elm in L:
if elm==x: return True
return False
Méthode Dichotomique
Principe : inspirer de la recherche d’un mot dans un dictionnaire papier par exemple de 1024 pages:
On l’ouvre au milieu: le mot ne s'y trouve pas, mais il est avant (il est donc dans les 512 premières pages).
On ouvre la moitié de la 1ère moitié: le mot ne s'y trouve pas, mais il est après (il est donc dans les pages 257 à 512).
Vous ouvrez la moitié de la 2ème moitié, etc…
A chaque fois que vous progressez, le nombre de pages qui reste à examiner est divisé par 2.
Ainsi, dans un dictionnaire de 1024 pages, vous êtes certain de trouver votre page en 10 recherches seulement, puisque
1024/(2**10)=1.
Algorithme de la Méthode Dichotomique
1- Diviser l’intervalle de recherche de recherche en 2 parties;
2- Vérifier, dans le milieu, votre recherche, si objectif atteint retourner ce milieu;
3- dans le cas contraire, choisir le sous-intervalle où continuer la recherche
4-repetez les étapes 1, 2 et 3 jusqu’à ce qu’on repère ou non, d’une façon définitive, la valeur de recherche.
Question 2 :
On suppose avoir une liste triée, Réaliser une fonction Itérative Recherche2(L, el) qui laisse passer, comme paramètre une
liste d’éléments triés (paramètre L) et un élément(paramètre el) afin d’appliquer le principe de la méthode dichotomie pour
déterminer si cet élément figure ou non dans cette liste.
def rechercheIter(L, x):
while len(L) > 1:
m=len(L) //2
if L[m]==x: return True
if x<L[m]: L=L[:m]
else: L=L[m+1:]
return L[0]==x
1
CPGE Informatique MPSI / 1TSI /PCSI
Lydex – Ben guerir Programmation Mr L. BOUHOU
2
CPGE Informatique MPSI / 1TSI /PCSI
Lydex – Ben guerir Programmation Mr L. BOUHOU
Méthode de Newton
Itérativement Récursivement
def f(x): def newton(f, df, xi, n):
return exp if(n == 0): return xi
def df(x): else:
return exp return newton(f, df, xi - f(xi)/df(xi), n-1)
def newton(f, df, xi, n):
for i in range(n):
xi= xi - f(xi)/df(xi)
return xi
Ou encore:
def newton(f, df, xi, eps):
xj=xi-f(xi)/df(xi)
while abs(xi – xj)>eps:
xi=xj
xj= xi - f(xi)/df(x)
return xj
3
CPGE Informatique MPSI / 1TSI /PCSI
Lydex – Ben guerir Programmation Mr L. BOUHOU
Ou encore
def f(x):
return exp
def df(f,x,h):
return (f(x+h)-f(x-h)) / (2*h)
def newton(f, xi ,h ):
xj=xi-f(xi)/df(f,xi,h)
while abs(xi – xj)>h:
xi=xj
xj= xi - f(xi)/df(f,x,h)
return xj
4
CPGE Informatique MPSI / 1TSI /PCSI
Lydex – Ben guerir Programmation Mr L. BOUHOU
La méthode des rectangles consiste à approximer la fonction f par une fonction en escalier. On considère un entier n
et un pas de subdivision . Pour tout entier k de [0,n], on pose ak=a+k* . Sur l’intervalle [ak , ak+1], on
approxime f par la fonction constante égale à f( ) (voir figure 9.1)
On prend, comme valeur approchée de l’intégrale de f sur [a,b], l’intégrale de la fonction en escalier ainsi construite,
c'est-à-dire la somme des aires des rectangles(les rectangles ont tous une base de longueur ).
Une implémentation de la méthode des rectangles pour calculer ∫ ( ) en subdivisant l’intervalle [a,b] en n
intervalles est proposée ci-après. En voici le code Python.
def rectangles (f,a,b,n) : #Méthode des rectangles
S=0
for i in range (0,n):
xi=a+(b-a)*i/n
xj=a+(b-a)*(i+1)/n
S+=f((xi+xj)/2.0)*(xj-xi)
return S
5
CPGE Informatique MPSI / 1TSI /PCSI
Lydex – Ben guerir Programmation Mr L. BOUHOU
( ) ( ( ) ( ))
subdivision du segment [a,b], l’aire de chaque trapèze est égale à , c'est-à-dire, en
sommant,
( ) ( )
∫ ( ) ( ∑ ( ))