Méthodes numériques

Embed Size (px)

DESCRIPTION

Méthodes numériques:Complexité, NP-Complétude, Partie entière, Algorithme d'Héron, Algorithme d'Archimède, Calcul du nombre d'Euler Systèmes d'équations linéaires , Une équation à une inconnue, Deux équations à deux inconnues Trois équations à trois inconnues, N équations à n inconnues, Polynômes, Régressions et interpolations Régression linéaire à une variable explicative, Droite de régression, Méthodes des moindres carrés Analyse de la variance de la régression bi variée, Régression linéaire à une variable explicative forcée par l'origine Régression linéaire multiple, Régression logistique, Coefficient de corrélation (détermination) généralisé Interpolation polynômiale, Courbes de Bézier, Méthodes d'Euler, Polynôme de collocation , Recherche de racines Méthodes des parties proportionnelles, Méthode de la bissection, Méthode de la sécante (Regula Falsi) Méthode de Newton, Aires et sommes de Riemann, Méthode des rectangles, Méthode des trapèzes Programmation linéaire, Algorithme du simplexe, Méthodes de Monte-Carlo , Génération de variables aléatoires Calcul d'une intégrale, Calcul de Pi, Modélisation, Bootstrapping , Dichotomie , Analyse en composantes principales (A.C.P.), Analyse factorielle des correspondances (A.F.C.), Khi-2, Méthode des différences finies, Réseaux de neurones formels, Modèle de neurone, Fonctions de transfert, Architecture de réseau, Algorithmes génétiques, Codage et population initiale, Les opérateurs, Opérateur de sélection, Opérateur de croisement, Opérateur de mutation.L'analyse numérique est une discipline des mathématiques. Elle s'intéresse tant aux fondements théoriques qu'à la mise en pratique des méthodes permettant de résoudre, par des calculs purement numériques, des problèmes d'analyse mathématique. "L'analyse numérique" est l'étude des algorithmes permettant de résoudre les problèmes de mathématiques continues (distinguées des mathématiques discrètes). Cela signifie qu'elle s'occupe principalement de répondre numériquement à des questions à variable réelle ou complexe comme l'algèbre linéaire numérique sur les champs réels ou complexes, la recherche de solutions numériques d'équations différentielles et d'autres problèmes liés survenant dans les sciences physiques et l'ingénierie.

Citation preview

ABDELKADER BENHARI

METHODES NUMERIQUES

Daprs les historiens, le calcul numrique remonte au moins au troisime millnaire avant notre re. Il est `a lorigine favorise par le besoin deffectuer des mesures dans dfrents domaines de la vie courante, notamment en agriculture, commerce, architecture, gographie et navigation ainsi quen astronomie. Il semble que les Babyloniens (qui peuplaient lactuelle Syrie/Iraq) sont parmi les premiers `a raliser des calculs algbriques et gomtriques alliant complexit et haute prcision. Surtout, ils donnent une importance et un sens au placement relatif des chiffes constituant un nombre, cest- - dire `a introduire la notion de base de dnombrement, en loccurrence, la base sexagsimale que nous avons ni par adopter dans certains domaines. Ils se distinguent ainsi dautres civilisations, mme bien plus rcentes, qui dveloppent des mthodes plus lourdes, en introduisant une plthore de symboles. Il y a environ 3500 ans, les populations de la valle de lIndus (rgions de lInde et du Pakistan) introduisent les notions de zro et emploient les nombres ngatifs. Il adaptent galement le systme de comptage Babylonien au systme dcimal qui est le ntre aujourdhui. Ces premiers outils de calcul sont largement dvelopp par la suite par les Grecs, puis transmis en Europe par lintermdiaire des civilisations musulmanes peuplant le bassin mditerranen.

Tables de matiresINTRODUCTION ................................................................................................................................. 6 COMPLEXIT...................................................................................................................................... 9 NP-COMPLTUDE.......................................................................................................................... 12 PARTIE ENTIRE ............................................................................................................................. 14 ALGORITHME D'HRON ............................................................................................................... 17 ALGORITHME D'ARCHIMDE .................................................................................................... 18 CALCUL DU NOMBRE D'EULER.................................................................................................. 19 CALCUL DE LA FACTORIELLE (FORMULE DE STIRLING) ................................................ 20 SYSTMES D'QUATIONS LINAIRES ...................................................................................... 21 UNE QUATION UNE INCONNUE .......................................................................................... 21 DEUX QUATIONS DEUX INCONNUES ................................................................................ 21 TROIS QUATIONS TROIS INCONNUES ............................................................................... 22 N QUATIONS N INCONNUES ................................................................................................ 23 POLYNMES ..................................................................................................................................... 24 RGRESSIONS ET INTERPOLATIONS ....................................................................................... 27 RGRESSION LINAIRE UNE VARIABLE EXPLICATIVE .................................................. 27 DROITE DE RGRESSION ........................................................................................................ 28 MTHODE DES MOINDRES CARRS..................................................................................... 29 ANALYSE DE LA VARIANCE DE LA RGRESSION BIVARIE ........................................ 31 RGRESSION LINAIRE UNE VARIABLE EXPLICATIVE FORCE PAR L'ORIGINE 39 RGRESSION LINAIRE MULTIPLE .......................................................................................... 40 RGRESSION LOGISTIQUE (LOGIT) .......................................................................................... 46 COEFFICIENT DE CORRLATION (DTERMINATION) GNRALIS ................................ 53 INTERPOLATION POLYNOMIALE ............................................................................................. 54 COURBES DE BZIER (SPLINE) .............................................................................................. 54 MTHODE D'EULER .................................................................................................................. 59 POLYNME DE COLLOCATION ............................................................................................. 60 RECHERCHE DES RACINES ......................................................................................................... 63 MTHODE DES PARTIES PROPORTIONNELLES ..................................................................... 64

A.BENHARI

2

MTHODE DE LA BISSECTION ................................................................................................... 65 MTHODE DE LA SCANTE (REGULA FALSI) ........................................................................ 66 MTHODE DE NEWTON ............................................................................................................... 67 AIRES ET SOMMES DE RIEMANN............................................................................................... 71 MTHODE DES RECTANGLES .................................................................................................... 71 MTHODE DES TRAPZES .......................................................................................................... 73 PROGRAMMATION LINAIRE .................................................................................................... 73 ALGORITHME DU SIMPLEXE ..................................................................................................... 80 MTHODES DE MONTE-CARLO.................................................................................................. 85 GNRATION DES VARIABLES ALATOIRES ........................................................................ 86 CALCUL D'UNE INTGRALE ....................................................................................................... 88 CALCUL DE PI ................................................................................................................................ 89 MODLISATION ............................................................................................................................. 90 BOOTSTRAPPING ............................................................................................................................ 93 DICHOTOMIE.................................................................................................................................... 98 BIBLIOGRAPHIE .............................................................................................................................. 99

A.BENHARI

3

MTHODES NUMRIQUES Complexit NP-Compltude Partie entire Algorithme d'Hron Algorithme d'Archimde Calcul du nombre d'Euler Systmes d'quations linaires Une quation une inconnue Deux quations deux inconnues Trois quations trois inconnues N quations n inconnues Polynmes Rgressions et interpolations Rgression linaire une variable explicative Droite de rgression Mthodes des moindres carrs Analyse de la variance de la rgression bi varie Rgression linaire une variable explicative force par l'origine Rgression linaire multiple Rgression logistique Coefficient de corrlation (dtermination) gnralis Interpolation polynmiale Courbes de Bzier Mthodes d'Euler Polynme de collocation Recherche de racines Mthodes des parties proportionnelles Mthode de la bissection Mthode de la scante (Regula Falsi) Mthode de Newton Aires et sommes de Riemann Mthode des rectangles Mthode des trapzes Programmation linaire Algorithme du simplexe Mthodes de Monte-Carlo Gnration de variables alatoires Calcul d'une intgrale Calcul de Pi Modlisation Bootstrapping Dichotomie Analyse en composantes principales (A.C.P.) Analyse factorielle des correspondances (A.F.C.)A.BENHARI 4

Khi-2 Mthode des diffrences finies Rseaux de neurones formels Modle de neurone Fonctions de transfert Architecture de rseau Algorithmes gntiques Codage et population initiale Les oprateurs Oprateur de slection Oprateur de croisement Oprateur de mutation

A.BENHARI

5

INTRODUCTION

L

'analyse numrique est une discipline des mathmatiques. Elle s'intresse tant aux

fondements thoriques qu' la mise en pratique des mthodes permettant de rsoudre, par des calculs purement numriques, des problmes d'analyse mathmatique. Dfinition: "L'analyse numrique" est l'tude des algorithmes permettant de rsoudre les problmes de mathmatiques continues (distingues des mathmatiques discrtes). Cela signifie qu'elle s'occupe principalement de rpondre numriquement des questions variable relle ou complexe comme l'algbre linaire numrique sur les champs rels ou complexes, la recherche de solutions numriques d'quations diffrentielles et d'autres problmes lis survenant dans les sciences physiques et l'ingnierie. Certains problmes de mathmatique continue peuvent tre rsolus de faon exacte par un algorithme. Ces algorithmes sont appels alors "mthodes directes". Des exemples sont l'limination de Gauss-Jordan pour la rsolution d'un systme d'quations linaires et l'algorithme du simplexe en programmation linaire (voir plus loin). Cependant, aucune mthode directe n'est connue pour certains problmes (et il est mme dmontr que pour une classe de problmes dits "NP complets", il n'existe aucun algorithme fini de calcul direct en temps polynomial). Dans de tels cas, il est parfois possible d'utiliser une mthode itrative pour tenter de dterminer une approximation de la solution. Une telle mthode dmarre depuis une valeur devine ou estime grossirement et trouve des approximations successives qui devraient converger vers la solution sous certaines conditions. Mme quand une mthode directe existe cependant, une mthode itrative peut tre prfrable car elle est souvent plus efficace et mme souvent plus stable (notamment elle permet le plus souvent de corriger des erreurs mineures dans les calculs intermdiaires). L'utilisation de l'analyse numrique est grandement facilite par les ordinateurs. L'accroissement de la disponibilit et de la puissance des ordinateurs depuis la seconde moiti du 20me sicle a permis l'application de l'analyse numrique dans de nombreux domaines scientifiques, techniques et conomiques, avec souvent des effets rvolutionnaires. Lors de simulations numriques de systmes physiques, les conditions initiales sont trs importantes dans la rsolution d'quations diffrentielles (voir les diffrents chapitres du site ou apparaissent des effets chaotiques). Le fait que nous ne puissions les connatre avec exactitude fait que les rsultats des calculs ne peuvent jamais tre parfaitement exacts (nous le savons trs bien pour la mto qui en est l'exemple connu le plus flagrant). Cet effet est une consquence des rsultats de la physique fondamentale (base sur des mathmatiques pures) qui dmontre que l'on ne peut connatre parfaitement un systme en y effectuant des mesuresA.BENHARI 6

puisqu'elles perturbent directement ce dernier (principe d'incertitude de Heisenberg) et elles font l'objet de la thorie du Chaos (classique ou quantique).

Avec les nouveaux outils informatiques disposition en ce dbut du 21me sicle, il est devenu pratique et passionnant de connatre les mthodes numriques afin de s'amuser dans certains logiciels (OpenGL, 3D Studio Max, Maple, Matlab, Mathematica, Comsol, etc.) simuler sous forme graphique 2D ou 3D des systmes physiques. Remarques: Beaucoup de mthodes numriques utilises en informatique se basent sur des raisonnements qui ont dj t tudis dans d'autres sections de ce site et sur lesquelles nous ne reviendrons pas. Ce chapitre tant la limite entre l'ingnierie et la mathmatique applique, nous avons dcid de donner parfois des exemples d'applications des outils dvelopps.

Dfinition: Un "algorithme" est une suite finie de rgles appliquer dans un ordre dtermin un nombre fini de donnes pour arriver, en un nombre fini d'tapes (dont la quantit, ou rciproquement le temps d'excution est dfinie par le terme "cot"), un certain rsultat, et cela indpendamment du type de donnes Les algorithmes sont intgrs dans des calculateurs par l'intermdiaire de "programmes". Dfinition: Un "programme" est la ralisation (l'implmentation) d'un algorithme au moyen d'un langage donn (sur une architecture donne). Il s'agit de la mise en oeuvre du principe. Axiomes de la programmation (anecdotique): A1. Plus nous crivons de code, plus nous produirons d'erreurs

A.BENHARI

7

A2. Il n'existe pas de programmes sans de possibles erreurs (d au programme lui-mme, l'lectronique sous-jacente ou le plus souvent l'utilisateur mme) Basiquement voici la dmarche minimale suivre lors du dveloppement d'un produit informatique (au niveau du code): M1. Auditer les besoins prsents et anticiper les besoins futurs M2. Dfinir les objectifs M3. Calculer la faisabilit, le risque d'erreur, la dure ncessaire au dveloppement M4. Crer les algorithmes en langage formel (cela comprend la gestion des erreurs!) M5. Optimiser la complexit et contrler les algorithmes M6. Choix d'une stratgie de dveloppement (modulable ou autre) M7. Traduire les algorithmes dans la technologie choisie (ce choix est un sujet assez sensible...) Remarque: Il faudrait dans l'tape (7) respecter les normes de nommage et de reprsentation du code ainsi que les conventions (traditions) de frquence d'insertion des commentaires. M8. Tests (maintenance prventive) Remarque: Le dbogage (la gestion des erreurs) d'un programme et les tests de fonctionnement doivent prendre autant, voire plus, de temps que le dveloppement du programme lui-mme. Lors du dveloppement d'un programme scientifique, il peut tre intressant, voire mme rigoureux de s'attarder la notion de "complexit" de ce dernier. Sans aller trop loin, voyons un peu de quoi il s'agit:

A.BENHARI

8

COMPLEXIT La complexit d'un algorithme est la mesure du nombre d'oprations fondamentales qu'il effectue sur un jeu de donnes. La complexit est donc exprime comme une fonction de la taille du jeu de donnes. Les hypothses permettant un calcul de cette complexit sont: H1. (les quatre oprations fondamentales ont le mme cot) une opration arithmtique une opration arithmtique

H2. Un accs mmoire

H3. Un contrle de comparaison H4. Un seul processeur

Nous notons Dn l'ensemble des donnes de taille n et T(n) le cot (en temps) de l'algorithme sur la donne ou le jeu de donnes de taille n. - La "complexit au meilleur" est donne par la fonction:Tmin ( n) = min C ( d )d Dn

C'est le plus petit temps qu'aura excuter l'algorithme sur un jeu de donnes (de lignes de code) de taille fixe, ici n dont le cot (la dure) d'excution est C(d). C'est une borne infrieure de la complexit de l'algorithme sur un jeu de donnes de taille n. - La "complexit au pire":Tmax ( n) = max C ( d )d Dn

C'est le plus grand temps qu'aura excut l'algorithme sur un jeu de donnes de taille fixe, ici n. Il s'agit donc d'un maximum, et l'algorithme finira toujours avant d'avoir effectu oprations. Cependant, cette complexit peut ne pas reflter le comportement usuel de l'algorithme, le pire cas pouvant ne se produire que trs rarement, mais il n'est pas rare que le cas moyen soit aussi mauvais que le pire cas. - La "complexit moyenne":d Dn

C (d )Dn

Tmoy (n) =

Il s'agit de la moyenne des complexits de l'algorithme sur des jeux de donnes de taille n (en toute rigueur, il faut bien videmment tenir compte de la probabilit d'apparition de chacun des jeux de donnes). Cette moyenne reflte le comportement gnral de l'algorithme si les cas extrmes sont rares ou si la complexit varie peu en fonction des donnes. Cependant, la complexit en pratique sur un jeu de donnes particulier peut tre nettement plus importanteA.BENHARI 9

que la complexit moyenne, dans ce cas la complexit moyenne ne donnera pas une bonne indication du comportement de l'algorithme. En pratique, nous ne nous intressons qu' la complexit au pire, et la complexit moyenne Dfinition: Un algorithme est dit "algorithme optimal" si sa complexit est la complexit minimale parmi les algorithmes de sa classe. Comme nous l'avons fait sous-entendre prcdemment, nous nous intressons quasi exclusivement la complexit en temps des algorithmes. Il est parfois intressant de s'intresser d'autres de leurs caractristiques, comme la complexit en espace (taille de l'espace mmoire utilis), la largeur de bande passante requise, etc. Pour que le rsultat de l'analyse d'un algorithme soit pertinent, il faut avoir un modle de la machine sur laquelle l'algorithme sera implment (sous forme de programme). Nous prenons habituellement comme rfrence, la "machine accs alatoire (RAM)" et processeur unique, o les instructions sont excutes l'une aprs l'autre, sans oprations simultanes et sans processus stochastiques (contrairement aux possibles machines quantiques futures). Les algorithmes usuels peuvent tre classs en un certain nombre de grandes classes de complexit dont l'ordre O varie d'une certaine manire: - Les algorithmes sublinaires dont la complexit est en gnral de l'ordre O(log(n)) - Les algorithmes linaires en complexit O(n) et ceux en complexit en O(n log(n)) sont considrs comme rapides. - Les algorithmes polynomiaux en O(nk) pour k > 3 sont considrs comme lents, sans parler des algorithmes exponentiels (dont la complexit est suprieure tout en n) que l'on s'accorde dire impraticables ds que la taille des donnes est suprieure quelques dizaines d'units. Remarque: Une bonne complexit est du type O(nk) pour k 3 . Une mauvaise complexit est du type O(en ), O(n!) ou O(n n ) . Exemples: E1. valuation d'un polynme:P( x) = a0 + a1 x + a2 x 2 + ... + an x n

L'valuation directe de la valeur de P(x) conduit une complexit

Nous devons Horner un algorithme plus performant qui utilise une factorisation du polynme sous la forme:A.BENHARI 10

Nous pouvons facilement montrer que cette factorisation maintient le mme nombre d'additions ( n) mais rduit le nombre de multiplications (n). La complexit qui en dcoule est donc O(n). Le gain est incontestablement important. De plus, cette factorisation vite tout calcul de puissance. E2. Un autre exemple connu de complexit algorithmique est la recherche d'une information dans une colonne trie. Un algorithme simple appel "recherche dichotomique" consiste prendre la cellule au milieu de la colonne et de voir si nous y trouvons la valeur recherche. Sinon, la recherche doit continuer dans la partie suprieure ou infrieure du tableau (cela dpend de l'ordre lexicographique). L'algorithme est rcursif et permet de diminuer par deux, chaque tape, la taille de l'espace de recherche. Si cette taille, initialement, est de n cellules dans la colonne, elle est de n/2 l'tape 1,n n2 l'tape 2, et plus gnrale k l'tape k. 2 2

Au pire, la recherche se termine quand il n'y a plus qu'une seule cellule de la colonne explorer, autrement dit quand k est tel que n < 2k . Nous en dduisons le nombre maximal d'tapes: c'est le plus petit k tel que n < 2k , soit log 2 ( n) < k , soit:Tmax ( n) = k = log 2 ( n)

comparer avec une recherche squentielle dans une colonne de 25000 donnes dont la complexit linaire est O(n) soit 2'000 alors qu'avec la mthode dichotomique, nous avons une complexit sublinaire log 2 (25000) = 15 . Le gain est donc considrable! E3. Soit A et B deux matrices carres de dimension n. Les principales oprations sur ces matrices ont les complexits suivantes (nous laisserons le soin au lecteur de vrifier car c'est vraiment trivial): - Lecture (itrations): O(n2) - Calcul de la trace: tr ( A) = aii O(n)i =1 n

- Addition: A + B = C tel que cij = aij + bij O(n ) - Multiplication: A.B = C tel que cij = aik .bkj O (n3 )k =1 n

- Dterminant (par la mthode directe de Cramer). Nous renvoyons le lecteur au chapitre d'Algbre Linaire pour le dtail des mthodes de calcul du dterminant d'une matrice. Nous pouvons alors montrer que la complexit d'un dterminant d'ordre n est n multiplications, n-1 additions plus n fois la complexit d'un dterminant d'ordre n-1. Par cumul, nous arrivons :A.BENHARI 11

En faisant l'hypothse que l'ordinateur utilis effectue une opration lmentaire en 109 secondes (ce qui est dj une bonne machine). Nous obtenons alors les temps de calculs suivants pour plusieurs valeurs de n: n tTableau: 1 - Temps de calcul d'un dterminant

5

10

15

20

50

d'o la ncessit de faire un calcul de complexit avant de mettre l'algorithme en route ( moins que vous ne travailliez exclusivement pour les gnrations futures, condition qu'il y en ait encore...). Finalement, pour rsumer un peu, nous distinguons quelques types de complexits classiques: O(1) indpendant de la taille de la donne, O(log(n)), complexit logarithmique, O(n) complexit linaire, O(n log(n)), complexit quasi-linaire, O(n2), complexit quadratique, O(n3), complexit cubique, O(kn) complexit exponentielle, O(n!), complexit factorielle. NP-COMPLTUDE Nous allons introduire pour la culture gnrale le concept de NP-compltude, c'est--dire que nous allons tenter de dfinir sans trop de formalisme (comme l'habitude) la classe des problmes dit "NP-complets". Ces problmes sont ceux pour lesquels personne l'heure actuelle ne connat d'algorithme efficace (i.e. seulement des algorithmes exponentiels). Ce sont des problmes vraiment difficiles par opposition ceux pour lesquels nous connaissons des algorithmes de complexit polynomiale. Dfinitions: D1. Les problmes de "classe P" sont de bons problmes dans le sens o le calcul de leur solution est faisable dans un temps raisonnable avec un algorithme complexit polynomiale. Plus formellement, ce sont les problmes pour lesquels nous pouvons construire une machine dterministe (voir la remarque aprs les dfinitions) dont le temps d'excution est de complexit polynomiale (le sigle "P" signifiant "Polynomial Time"). D2. Les problmes de "classe E" sont des problmes dans le sens o le calcul de leur solution est faisable dans un temps exponentiel par nature du type . Plus formellement, ce sont les problmes pour lesquels nous pouvons construire une machine dterministes dont le temps d'excution est de complexit exponentielle (le sigle "E" signifiant "Exponential Time"). D3. Les problmes de la "classe NP" sont ceux pour lesquels nous pouvons construire une machine de Turing non dterministe (voir la remarque aprs les dfinitions) dont le temps d'excution est de complexit polynomiale (le sigle "NP" provient de "Nondeterministic Polynomial time" et non de "Non Polynomial"). Remarque: Contrairement aux machines dterministes qui excutent une squence d'instructions bien dtermine, les machines non dterministes ont la remarquable capacit deA.BENHARI 12

toujours choisir la meilleure squence d'instructions qui mne la bonne rponse lorsque celle-ci existe. Il va sans dire qu'une telle machine ne peut pas exister autrement que dans l'esprit d'un thoricien ( moins qu'avec les ordinateurs quantiques...)! Nanmoins, comme nous le verrons par la suite, ce concept abstrait n'est pas sans intrt et constitue en fait la base de toute la thorie de la NP-compltude. Il importe de remarquer ce stade de la discussion que la classe P est incluse dans la classe NP, nous crivons , car si nous pouvons construire une machine dterministe pour rsoudre efficacement (en un temps au pire polynomial) un problme, nous pouvons certainement (du moins dans notre esprit) en construire une non dterministe qui rsout aussi efficacement le mme problme. Par ailleurs, il ne faut pas croire que ce concept de divination optimale qu'est la machine dterministe permet de tout rsoudre puisqu'il existe en informatique thorique d'autres types de problmes n'appartenant pas la classe NP qui sont les problmes indcidables. Pour savoir si un problme donn appartient ou non la classe NP, il s'agit simplement de l'exprimer sous la forme dont la rponse est soit OUI, soit NON. Le problme appartient alors la classe NP si par dfinition, nous arrivons dmontrer l'aide d'un algorithme de complexit polynomiale que n'importe quelle instance OUI du problme est bel et bien correcte. Nous n'avons pas nous proccuper des instances NON du problme puisque la machine non dterministe, par dfinition, prend toujours la bonne dcision (lorsque celle-ci existe). Par exemple, le problme consistant trouver un cycle hamiltonien (cycle qui passe une et une seule fois par tous les sommets du graphe - voir chapitre de Thorie Des Graphes) dans un graphe appartient NP puisque, tant donn un cycle, il est trivial de vrifier en temps linaire qu'il contient bien une et une seule fois chaque sommet. Un autre exemple de problme difficile des mathmatiques est la factorisation d'un entier en produit de facteurs premiers. Nous ne savons pas ce jour s'il existe un algorithme polynomial qui russisse cette opration. Autrement dit, nous ne savons pas si ce problme est dans P. En revanche, tant donns des nombres premiers il est trivial de vrifier que

: ce problme est donc dans NP. Il semblerait (nous n'avons pas vrifi ce rsultat et ni la possibilit de le faire) que la complexit du meilleur algorithme de factorisation en nombres premiers soit du type:

il resterait donc du travail faire (si un internaute pouvait nous fournir les dtails qui ont amen ce rsultat, nous sommes preneurs). Remarque: Si un problme est dans NP, alors il existera un algorithme en temps exponentiel pour le rsoudre mais le contraire n'est pas toujours vrai (il faut donc tre prudent). Parmi l'ensemble des problmes NP, il en existe un sous-ensemble qui contient les problmes les plus difficiles: nous les appelons les problmes "NP-complet" N.P.C. Ainsi, un problmeA.BENHARI 13

NP-complet possde la proprit que tout problme dans NP peut tre transform en celui-ci en temps polynomial. La raison essentielle pour laquelle les problmes NPC sont les plus difficiles parmi les problmes de NP est que ces premiers peuvent toujours servir comme des sous-routines pour solutionner ces derniers. Cette rduction un ou des sous-routines assez facilement faisable puisque ralisable, si elle existe, en temps polynomial. Un problme NPC est donc complet en ce sens qu'il contient l'essentiel de la complexit des problmes appartenant NP, et qu'une solution polynomiale ce problme implique une solution polynomiale tous les problmes NP. Autrement formul, les problmes NPC ont une complexit exponentielle et ils ont tous la mme classe de complexit (modulo les polynmes). Finalement, ce qu'il importe de bien comprendre et de retenir de toute cette thorie, son ide matresse, est que si nous trouvons un jour un algorithme de complexit polynomiale pour un seul de ces problmes vraiment difficiles que sont les problmes NPC, alors d'un seul coup NP devient gal P et tous les problmes difficiles deviennent faciles ! Pour rsumer, tre dans P, c'est trouver une solution en un temps polynomial, tandis qu'tre dans NP, c'est prouver en un temps polynomial qu'une proposition de rponse est une solution du problme. Ainsi, tout problme qui est dans P se trouve dans NP. Un champ de recherche majeur des mathmatiques actuelles est l'investigation de la rciproque: a-t-on P=NP? Autrement dit, peut-on trouver en un temps polynomial ce que l'on peut prouver en temps polynomial? Remarque: Ce problme est si important en informatique qu'il fait partie (arbitrairement) des 7 problmes du millnaire, dont la rsolution est prime 1 million de dollars par le Clay Mathematic Institute. Passons maintenant l'tude de quelques applications types des mthodes numriques dont il est trs souvent fait usage dans l'industrie. Nous irons du plus simple au plus compliqu et sans oublier que beaucoup de mthodes ne se trouvant pas dans ce chapitre peuvent parfois tre trouves dans d'autres sections du site! PARTIE ENTIRE Le plus grand entier infrieur ou gal un nombre rel x est par [x], qui se lit "partie entire de x". Ainsi, le nombre M est entier si et seulement si [M]=M. De mme, le naturel A est divisible dans l'ensemble des naturels par le naturel B si et seulement si:

Nous notons aussi {x} pour dsigner la partie fraction de x; on a ainsi:

A.BENHARI

14

Soit P1.

. Alors nous avons les proprits suivantes: , , o

P2. P3. P4. P5.

, lorsque , si

si

,

si

P6.

si

P7. Si , alors [x / a] reprsente le nombre d'entiers positifs infrieurs ou gaux x qui sont divisibles par a. Dmonstrations: La premire partie de P1 est simplement la dfinition de [x] sous forme algbrique. Les deux autres parties sont des rarrangements de la premire partie. Dans ce cas, nous pouvons crire

o

.

Pour P2, la somme est vide pour et, dans ce cas, on adopte la convention selon laquelle la somme vaut 0. Alors, pour , la somme compte le nombre d'entiers positifs n qui sont plus petits ou gaux x. Ce nombre est videmment [x]. La dmonstration de P3 sera suppose vidente. Pour prouver P4, nous crivons: , o n et m sont des entiers et o et . Alors:

En crivantA.BENHARI

, o

, nous avons15

o Il s'ensuit que:

.

0 si et on obtient la dmonstration P5. Pour dmontrer P6, nous crivons:

-1 si

o

, et:

o

. Nous obtenons ainsi:

puisque

. Par ailleurs:

et nous avons ainsi le rsultat. Pour la dernire partie, nous observons que, si qui sont divisibles par a, il suffit de prouver que sont tous les entiers positifs . Puisque , alors:

c'est--dire:

soit le rsultat attendu. C.Q.F.D. Remarque: La mthode d'arrondi de valeurs relles est donne dans le chapitre d'conomtrie.A.BENHARI 16

ALGORITHME D'HRON Soit calculer la racine carre:

Il existe un algorithme dit "algorithme d'Hron" qui permet de calculer la valeur de cette racine carre. Dmonstration:

Nous obtenons alors la relation:

C.Q.F.D. Exemple: Soit calculer:

Nous prenons Itration 1 2 3 4 5

: xi /2 5 2.750 1.82954 1.59800 1.58122 A/2xi 0.5 0.90 1.3664 1.5644 1.5810 xi+1 5.50 3.659 090 909 3.196 005 083 3.162 455 624 3.162 277 665 cart ~2.3 ~0.49 ~0.033 ~0.0002 ~0.5 10-8

Tableau:2 - Itrations pour l'algorithme d'Hron

Dans le cas de la racine cubique, la dmonstration est semblable et nous obtenons:

A.BENHARI

17

Signalons encore que le lecteur pourra trouver dans le chapitre de Thorie des Nombres la mthode utilise pendant l'antiquit (du moins une analogie) et utilisant les fractions continues. ALGORITHME D'ARCHIMDE Le calcul de la constante universelle "pi" note est trs certainement le plus grand intrt de l'algorithmique puisque l'on retrouve cette constante un peu partout en physique et mathmatique (nous pouvons vous conseiller un trs bon ouvrage sur le sujet). Nous rappelons que nous n'en avons pas donn la valeur ni en gomtrie, ni dans les autres sections de ce site jusqu' maintenant. Nous allons donc nous attacher cette tche. Nous dfinissons en gomtrie le nombre dit "pi", quelque soit le systme mtrique utilis (ce qui fait son universalit), comme le rapport de la moiti du primtre d'un cercle par son rayon tel que:

Nous devons le premier algorithme du calcul de cette constante Archimde (287-212 av. J.C.) dont voici la dmonstration. Dmonstration: Soit un n-polygone inscrit dans un cercle:

Figure:1 - Principe illustr de l'algorithme d'Archimde

Le principe de l'algorithme d'Archimde est le suivant: Soit le primtre d'un polygone rgulier de n cts inscrit dans un cercle de rayon 1/2. Archimde arrive par induction que:

Nous avons pour primtre d'un n-polygone:A.BENHARI 18

et Avec:

Donc:

Il suffit d'un ordinateur ensuite et de plusieurs itrations pour valuer avec une bonne prcision la valeur de . videmment, on utilise l'algorithme d'Hron pour calculer la racine... C.Q.F.D. Remarque: Il existe un trs grand nombre d'algorithmes pour calculer dessus, sans tre la plus esthtique, est historiquement la premire. CALCUL DU NOMBRE D'EULER Parmi la constante , il existe d'autres constantes mathmatiques importantes qu'il faut pouvoir gnrer l'ordinateur (de nos jours les valeurs constantes sont stockes telles quelles et ne sont plus recalcules systmatiquement). Parmi celles-ci, se trouve le "nombre d'Euler" not e (cf. chapitre d'Analyse Fonctionnelle). Voyons comment calculer ce nombre: Soit la srie de Taylor, pour une fonction indfiniment drivable f donne par : . Celle prsente ci-

Comme :

A.BENHARI

19

nous avons:

Donc en rsum:

Cette relation donne un algorithme pour calculer l'exponentielle prcision.

un ordre n donne de

Remarque: Pour diminuer la complexit de cet algorithme, la factorielle peut tre calcule avec la formule expose ci-aprs. CALCUL DE LA FACTORIELLE (FORMULE DE STIRLING) videmment, la factorielle pourrait tre calcule avec une simple itration. Cependant, ce genre de mthode gnre un algorithme complexit exponentielle ce qui n'est pas le mieux. Il existe alors une autre mthode: Soit, la dfinition de la factorielle:

Et d'aprs les proprits des logarithmes:

Si n est trs grand (mais alors trs...) alors:

Lorsque , la limite infrieure est ngligeable et alors (approximation qui nous est trs utile dans le chapitre de Mcanique Statistique):

Aprs une petite simplification lmentaire, nous obtenons:

A.BENHARI

20

Cette dernire relation est utile si l'on suppose bien videmment que la constante d'Euler est une valeur stocke dans la machine... SYSTMES D'QUATIONS LINAIRES Il existe de nombreuses mthodes de rsolution de systmes d'quations linaires. La plupart d'entre elles ont t mises au point pour traiter des systmes particuliers. Nous en tudierons une, appele la "mthode de rduction de Gauss", qui est bien adapte la rsolution des petits systmes d'quations (jusqu' 50 inconnues). Remarques: R1. La validit de certaines des oprations que nous allons effectuer ici pour rsoudre les systmes linaires se dmontrent dans le chapitre traitant de l'Algbre Linaire. Au fait, pour tre bref, le tout fait appel des espaces vectoriels dont les vecteurs-colonnes sont linairement indpendants. R2. Les systmes admettent une solution si et seulement si (rappel) le rang de la matrice augmente est infrieur ou gal au nombre d'quations . UNE QUATION UNE INCONNUE Considrons le cas le plus simple: celui d'une quation une inconnue:

a et b sont les coefficients de l'quation et x en est l'inconnue. Rsoudre cette quation, c'est dterminer x en fonction de a et b. Si a est diffrent de 0 alors:

est la solution de l'quation. Si a est nul et si b est diffrent de 0 alors l'quation n'admet pas de solutions. Si a et b sont nuls, alors l'quation possde une infinit de solutions. DEUX QUATIONS DEUX INCONNUES Un systme (linaire) de deux quations deux inconnues s'crit:

sont les coefficients du systme d'quations, inconnues.

et

en sont les

Remarque: Les notations usites ci-dessus n'ont rien voir avec le calcul tensoriel. Pour rsoudre le systme, nous procdons comme suit:A.BENHARI 21

l'aide de manipulations algbriques (addition ou soustraction des diffrentes galits entre elles - manipulations autorises par l'indpendance linaire des vecteurs-lignes) nous transformons le systme en un autre donn par:

Ensuite, nous rsolvons l'quation

, ce qui donne:

Nous en dduisons:

La transformation entre les deux systmes:

s'effectue simplement en multipliant chaque coefficient de la premire galit par et en soustrayant les rsultats obtenus des coefficients correspondants de la seconde galit. Dans ce cas, l'lment est appel "pivot".

TROIS QUATIONS TROIS INCONNUES Examinons encore le cas des systmes de trois quations trois inconnues:

Nous pouvons par la suite des oprations lmentaires (cf. chapitre d'Algbre Linaire) rduire le systme linaire prcdent en le systme suivant:

et ensuite rsoudre l'quation:

A.BENHARI

22

puis la deuxime:

et enfin:

Revenons la transformation des systmes. Elle s'effectue en deux tapes: 1. Dans la premire, nous choisissons et comme pivot et nous liminons les coefficients

de la manire suivante: il faut multiplier chaque coefficient de la premire galit par et soustraire les rsultats obtenus de la deuxime galit, ainsi devient nul. De et en soustrayant les

mme, en multipliant les coefficients de la premire quation par rsultats obtenus de la troisime galit,

disparat. Le systme d'quation s'crivant alors:

2. La deuxime tape consiste traiter le systme de deux quations deux inconnues form des deuxime et troisime galits du systme prcdent, et ce, en choisissant comme pivot. Cette mthode de rsolution peut paratre complique, mais elle a l'avantage de pouvoir tre gnralise et tre applique la rsolution de systmes de n quations n inconnues. N QUATIONS N INCONNUES Pour simplifier l'criture, les coefficients seront toujours nots de chaque tape du calcul. et non pas , etc. lors

Soit le systme linaire (nous pourrions trs bien le reprsenter sous la forme d'une matrice augmente afin d'allger les critures):

A.BENHARI

23

Il faut choisir

comme pivot pour liminer s'effectue en prenant

. Ensuite, l'limination de

comme pivot. Le dernier pivot considrer est bien . Le systme prend alors la forme:

videmment

, il permet d'liminer

En rsolvant d'abord la dernire quation, puis l'avant-dernire et ainsi de suite jusqu' la premire. Cette mthode, appele "mthode de rsolution de Gauss" ou encore "mthode du pivot" doit cependant tre affine pour viter les pivots de valeur 0. L'astuce consiste permuter l'ordre dans lequel sont crites les quations pour choisir comme pivot le coefficient dont la valeur absolue est la plus grande. Ainsi, dans la premire colonne, le meilleur pivot est l'lment tel que:

Il est amen par change des premire et j-me lignes. L'limination du reste de la premire colonne peut alors tre effectue. Ensuite, on recommence avec les n-1 quations qui restent. POLYNMES L'ensemble des polynmes et coefficients rels a t tudi dans le chapitre d'Analyse Fonctionnelle en dtails. Nous allons ici traiter de l'aspect numrique de quelques problmes lis aux polynmes. Mis part l'addition et la soustraction de polynmes que nous supposerons comme triviaux (optimisation de la complexit mis part comme le schma de Horner), nous allons voir comment multiplier et diviser deux polynmes. Voyons d'abord comment multiplier deux polynmes: Soit:A.BENHARI 24

alors:

avec:

C'tait simple... Un tout petit peu plus difficile maintenant: la division euclidienne des polynmes . Reprenons:

mais en imposant cette fois-ci

.

La division s'crira donc nous le savons:

avec

ou sinon

.

Il est connu d'avance que nous avons bien videmment: et deg(r(x))rand();

>restart;rand();

Nous voyons donc que la fonction par dfaut de gnrateur de nombres alatoires de Maple est utiliser avec la plus grande prudence puisqu'une rinitialisation du systme suffit retrouver des valeurs alatoires... gales. Il s'agit donc d'un "gnrateur pseudo-alatoire" permettant de faire des simulations appeles parfois "pseudo Monte-Carlo". Cependant il existe des libraires spcialises dans Maple tel que:>restart;readlib(randomize):randomize():rand();

>restart;readlib(randomize):randomize():rand();

preuve a priori russie (au fait, il nous faudrait faire un beaucoup plus grand nombre d'essais afin de bien vrifier que le gnrateur ne suive pas une loi de distribution connue... ce qui n'est malheureusement jamais le cas). Les fonctions ALEA( ) et ALEA.ENTRE.BORNES( ) de MS Excel sont aussi des gnrateurs pseudo-alatoires dont voici un chantillon de 100 simulations (videmment dans MS Excel le graphique ci-dessous changera chaque fois que vous activerez la touche F9 du clavier):

A.BENHARI

86

Figure: 57.19 - Illustration d'une squence de nombres pseudo-alatoires avec MS Excel

Il peut malheureusement arriver avec les nombres pseudo-alatoires que les nombres gnrs se prsentent en grappes, c'est--dire en sries de nombres rapprochs les uns des autres, ce qui nuit l'efficacit de la simulation de Monte-Carlo. Une technique empirique consiste faire appel des squences de nombres gnrs sur la base d'algorithmes qui balaient coup sur l'intervalle [0,1]. Nous parlons alors de "nombres quasi-alatoires" permettant de faire des simulation appeles parfois "quasi Monte-Carlo". Avec MS Excel, il est possible de crer une fonction qui remplacera les gnrateurs pseudoalatoires que sont les fonctions ALEA( ) ou ALEA.ENTRE.BORNES( ). Voici donc un exemple de fonction en V.B.A. (Visual Basic for Application) qui gnre des nombres quasi-alatoires appels "squence de Faur": Function SequenceFaure(n) As Double Dim f As Double, sb As Double Dim i As Integer, n1 As Integer, n2 As Integer n1 = n sb = 1 / 2 Do While n1 > 0 n2 = Int(n1 / 2) i = n1 - n2 * 2 f = f + sb * i sb = sb / 2 n1 = n2 Loop SequenceFaure = f End Function Ce qui donnera la squence suivante pour un chantillon de 100 simulations:

A.BENHARI

87

Figure: 57.20 - Illustration d'une squence de nombres quasi-alatoires avec MS Excel

o nous voyons bien que la squence couvre bien la surface comprise 0 et 1 (nous disons alors qu'elle couvre plus rapidement la surface d'intgration). Cette technique est parfois apprcie car elle a pour avantage de conserver les valeurs de la simulation chaque fois que l'on relance la simulation (donc dans MS Excel le graphique ci-dessous ne changera pas quand vous activerez la touche F9 du clavier). Par contre les gnrateurs de squence ont une grande faiblesse: ils ne sont applicables ( ma connaissance du moins) que pour des problmes de simulations avec une seule et unique variable alatoire (typiquement du pricing d'options selon Black & Scholes). Effectivement si nous avons plusieurs variables alatoires (et c'est le cas le plus courant!), alors les variables sont artificiellement corrles (coefficient de corrlation 1) car elles parcourent toutes la surface comprise entre 0 et 1 de la mme manire. Donc une bonne simulation avec plusieurs variables est une simulation dont les variables traites ont un coefficient de corrlation qui tend vers zro. De plus, les gnrateurs de squence ncessitent des algorithmes qui sont trs gourmands lorsqu'il y a de nombreuses variables par rapport un gnrateur pseudo-alatoire, raison pour laquelle dans la majorit des situations, on prfrera cette bonne vieille mthode. Remarque: Se rfrer la norme internationale ISO 28640:2010 pour les ingnieurs ayant besoin d'implmenter des gnrateurs de nombres alatoires dans leurs logiciels. Une fois le gnrateur cr et test, nous pouvons voir quelques rsultats de la mthode de Monte-Carlo. Ainsi, dans le calcul des intgrales, celle-ci s'avre trs utile et trs rapide en termes de vitesse de convergence. CALCUL D'UNE INTGRALE Soit calculer l'intgrale d'une fonction f dfinie et positive sur l'intervalle [a,b]:

A.BENHARI

88

Soit:

Nous considrons le rectangle englobant de la fonction sur [a,b] dfini par les points . Nous tirons un grand nombre N de points au hasard dans ce rectangle. Pour chaque point, nous testons s'il est au-dessous de la courbe. Soit F la proportion de points situs au-dessus, nous avons:

L'algorithme Maple est donn par: intmonte:=proc(f,a,b,N) local i,al,bl,m,F,aleaabs,aleaord,estaudessous; m:=round(max(a,b)*10^4); al:=round(a*10^4); bl:=round(b*10^4); aleaabs:=rand(al..bl); aleaord:=rand(0..m); F:=0; for i from 1 to N do estaudessous:=(f(aleaabs()/10^4)-aleaord()/10^4)>=0; if estaudessous then F:=F+1; fi od: RETURN((b-a)*max(a,b)*F/N) end: Remarque: Pour appeler cette procdure, il suffit d'crire >intmonte(f,a,b,N) mais en remplaant le premier argument pass en paramtre par l'expression d'une fonction et les autres arguments par des valeurs numriques bien videmment. CALCUL DE PI Pour le calcul de le principe est le mme et constitue donc utiliser la proportion du nombre de points dans un quartier de cercle (cela permet de simplifier l'algorithme en se restreignant aux coordonnes strictement positives) inscrit dans un carr relativement au nombre de points totaux (pour tester si un point est l'extrieur du cercle, nous utilisons bien videmment le thorme de Pythagore) tel que:

L'algorithme Maple est donn par:

A.BENHARI

89

estalinterieur:=proc(x,y) x^2+y^2