Informatique_algorithmique. Bousquet

Documents pareils
Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Raisonnement par récurrence Suites numériques

Continuité et dérivabilité d une fonction

Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables

Calcul Formel et Numérique, Partie I

Algorithmique et Programmation, IMA

Chp. 4. Minimisation d une fonction d une variable

Cours d algorithmique pour la classe de 2nde

Comparaison de fonctions Développements limités. Chapitre 10

Initiation à la programmation en Python

Fonctions de deux variables. Mai 2011

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

CCP PSI Mathématiques 1 : un corrigé

Programmation C++ (débutant)/instructions for, while et do...while

I. Polynômes de Tchebychev

Calcul Formel et Numérique, Partie I

Notes du cours MTH1101N Calcul I Partie II: fonctions de plusieurs variables

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

L ALGORITHMIQUE. Algorithme

Rappels sur les suites - Algorithme

MÉTHODES NUMERIQUES. Cours. Licence de Physique Année Universitaire : Licence Chimie, parcours Physique. Semestre S3

Mathématiques I Section Architecture, EPFL

Chapitre 6. Fonction réelle d une variable réelle

Développements limités, équivalents et calculs de limites

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Corrigé des TD 1 à 5

TP 1 Introduction à Matlab Février 2009

Développements limités. Notion de développement limité

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

I - PUISSANCE D UN POINT PAR RAPPORT A UN CERCLE CERCLES ORTHOGONAUX POLES ET POLAIRES

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre


Découverte de Python

Introduction à MATLAB R

EXERCICE 4 (7 points ) (Commun à tous les candidats)

Activités numériques [13 Points]

Résolution d équations non linéaires

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Équations non linéaires

Cours 7 : Utilisation de modules sous python

C f tracée ci- contre est la représentation graphique d une

Image d un intervalle par une fonction continue

Probabilités sur un univers fini

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Calcul Scientifique et Symbolique, Logiciels Licence Mathématiques UE N1MA3003. Alain Yger

Exo7. Limites de fonctions. 1 Théorie. 2 Calculs

Exercice 1 Trouver l équation du plan tangent pour chaque surface ci-dessous, au point (x 0,y 0,z 0 ) donné :

Statistiques Descriptives à une dimension

3 Approximation de solutions d équations

Licence Sciences et Technologies Examen janvier 2010

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Quelques tests de primalité

Limites finies en un point

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Algorithmes récursifs

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Recherche dans un tableau

Algorithmes et mathématiques. 1. Premiers pas avec Python. Exo Hello world!

Le calcul formel dans l enseignement des mathématiques

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Initiation à l algorithmique

STAGE IREM 0- Premiers pas en Python

Découverte du tableur CellSheet

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

ANALYSE GÉNÉRALE - PROPOSITION DE CORRIGÉ. Exercice 1

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Représentation d un entier en base b

Chapitre 7 : Intégration sur un intervalle quelconque

Procédure de sauvegarde pour AB Magique

I. Ensemble de définition d'une fonction

Contexte. Pour cela, elles doivent être très compliquées, c est-à-dire elles doivent être très différentes des fonctions simples,

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Qualité du logiciel: Méthodes de test

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

IV- Equations, inéquations dans R, Systèmes d équations

Licence 2 Mathématiques- Semestre 3 Introduction aux mathématiques

Continuité en un point

Organigramme / Algorigramme Dossier élève 1 SI

Cours Informatique Master STEP

Les suites numériques

INTRODUCTION. 1 k 2. k=1

1 Recherche en table par balayage

Table des matières. I Mise à niveau 11. Préface

Bac Blanc Terminale ES - Février 2011 Épreuve de Mathématiques (durée 3 heures)

Capes Première épreuve

La fonction exponentielle

Algorithmique I. Algorithmique I p.1/??

Quantification Scalaire et Prédictive

Quatrième partie IV. Test. Test 15 février / 71

3.2. Matlab/Simulink Généralités

Projet de programmation (IK3) : TP n 1 Correction

Transcription:

Informatique_algorithmique Projet_1 Bousquet Nicolas et But : Effectuer algorithmiquement des calculs d aires par plusieurs méthodes (dites d un certain ordre) différentes : - La méthode des escaliers (rectangle). - La méthode du Point milieu. - La méthode des Trapèzes. - La méthode de Simpson. - La méthode des 3/8 de Newton. - La méthode des Trapèzes améliorée.(romberg) Et interprétation des résultats sur différentes courbes. Plan : - p1-2 - Plan+Introduction. - p2 - Méthode des Escaliers. - p3 - Méthode du Point milieu - p3-4 - Méthode des Trapèzes - p4-5 - Méthode Simpson. - p5-6 - Méthode des 3/8 de Newton. - p6-7 - Méthode des Trapèzes améliorés. - p8-9 - Le menu. - p9-10-11 - Discussions et interprétations. - p11 - Conclusion. Introduction : Le but final est d approximer des calculs d aires par différentes méthodes convergentes plus ou moins selon la méthode et la fonction choisie : ce qui constituera le dernière partie du rapport. L intérêt du calcul intégrale numérique réside dans le fait que pour certaine fonction il est difficile de trouver une primitive pour un calcul analytique aisé et que dans la récolte de données de problèmes physiques l on dispose, non pas d une fonction continue à intégrer, mais un nuage de point : passage au cas discret. Pour les différentes méthodes nous disposons des formules générales établit à partir de démonstrations mathématiques. Nous généralisons ensuite ces méthodes applicables à un certain intervalle à un ensemble d intervalles de même longueurs de pas h = (b - a) / N dont le N est choisi par l utilisateur. Sur la figure suivante le pas est variable :

La subdivision nous donne : Selon la méthode il faudra distinguer les N selon certains procédés. Le codage de l algorithme du calcul de l aire approchée ce fera principalement avec des boucles for. L utilisateur devra rentrez les deux bornes a et b (respectivement inférieure et supérieure) de l intervalle, l entier N, et la fonction à intégrer. NB : algorithmes en matlab. Les deux premières méthodes qui vont suivrent, méthode des escalier (ou méthode des rectangles) et méthode du point milieu sont une première approche du calcul intégrale numérique. Méthode des escaliers : (escalier.m) Cette méthode consiste à approchée l intégrale de la fonction sur [a,b] par une somme de surfaces de rectangles : Le code correspondant est : function z=escalier(a,b,n,a) %--Calcul d'une aire approché par la methode des escaliers. %--Input : les bornes a et b de l'intervalle, le decoupage de l'intervalle % en N intervalles,et la fonction A. %--Output : l'aire approchée "inferieure" par la methode des escaliers. %--Initialisation-- h=(b-a)/n; z=0; x=a;

%--Boucle-- for i=0:n-1 temp1=eval(a); x=x+h; temp2=eval(a); if (temp1<temp2) z=z+temp1*h; else z=z+temp2*h; %--Affichage-- fprintf('l'' aire approchee (%d intervalles) avec methode des escaliers est : %f \n',n,z); Méthode du Point milieu : (pointmilieu.m) La méthode du point milieu est d ordre 2 c'est-à-dire qu elle est exacte pour tous les polynômes de degrés 0 et 1. L aire approchée de la fonction sur un intervalle [a,b] est donnée par la valeur de la fonction au point (a+b)/2, multiplié par b-a. Le code correspondant est : function z=pointmilieu(a,b,n,a) %--Calcul de l'aire approchée par la méthode du point milieu. %--Input : les bornes inf et sup de l'intervalle a,b % le nombres d'intervalles N et la fonction A entre quotes. % pointmilieu(a,b,n,a). %--Output : l'aire approchée de A sur [a,b] avec un decoupage de N % intervalles. %--Initialisation-- h=(b-a)/n; z=0; x=a; %--Boucle-- for i=0:n-1 x=x+h/2; z=z+h*eval(a); x=x+h/2; %---------- %--Affichage-- fprintf('l'' aire approchee (%d intervalles) avec methode du point milieu est : %f \n',n,z); Méthode des Trapèzes : (trapeze.m) La méthode des trapèzes est aussi d ordre 2. Elle est obtenue en intégrant le polynôme d interpolation linéaire qui interpole la fonction f

aux points a et b. Sur [a,b] la valeur approchée de l intégrale est donnée par : La formule mathématique du calcul approximé de l aire sur l intervalle [a,b] subdivisé en N intervalles est : Le code correspondant est : function z=trapeze(a,b,n,a,c) %--Approximation de l'integrale d'une fonction par la méthode des % trapèzes. %--Input : les bornes des l'intervale, le nombre de d'itération, % et la fonction entre quotes. Le c booleen sert a differentes % utilisations de la fonction : c=0 --> utilisation sans programme.m % c=1 --> utilisation dans programme.m %--Output : la valeur de l'intégrale approchée sur cet interval. %--Cas d'erreur : if (c==0 c==1) else disp('rentrez b valant 0 ou 1'); return; %--Initialisation-- x=a; z=eval(a); x=b; z=z+eval(a); %--Boucle-- for i=1:n-1 x=a+i*(b-a)/n; z=z+2*eval(a); z=((b-a)/(2*n))*z; %--Affichage ou non du resultat selon b-- if c==1 fprintf('l'' aire approchee (%d intervalles) avec methode des trapezes est : %f \n',n,z); Méthode de Simpson : (simpson.m)

On obtient la formule de Simpson si l on arrive à passer une parabole (polynôme de degré 2) par trois points bien déterminés. C est une méthode d ordre 4 car elle est exacte pour tous les polynômes de degrés 0,1,2 et 3. La formule mathématique du calcul approximé de l aire sur l intervalle [a,b] est : Avec une subdivision de l intervalle en N (N pair) intervalles la formule devient : Le code correspondant est : function y=simpson(a,b,n,a) %--Approximation de l'integrale d'une fonction 'A' par la méthode de % Simpson sur l'intervalle a,b et pour N intervalles: simpson(a,b,n,a)-- %--Input : les bornes des l'intervale et le nombre de d'itération. %--Output : la valeur de l'intégrale approchée sur cet interval. %--Cas d'erreur-- if N<=0 disp('rentrez N pair et positif strictement'); return; if (mod(n,2)==1) N=input('Rentrez une valeur de N pair : '); %--Initialisation-- x=a; z=eval(a); x=b; z=z+eval(a); %--Boucles-- for i=1:(n-2)/2 x=a+2*i*(b-a)/n; z=z+2*eval(a); for i=0:(n-2)/2 x=a+(2*i+1)*(b-a)/n; z=z+4*eval(a); z=((b-a)/(3*n))*z; %--Affichage--

fprintf('l'' aire approchee (%d intervalles) avec methode de Simpson est : %f \n',n,z); Méthode des 3/8 de Newton : (newton38.m) On obtient la formule de Newton 3,8 en faisant passer un polynôme de degrés 3 par 4 points équidistant de l intervalle en question. On doit avoir N multiple de 3. Cette méthode est d ordre 4. La formule mathématique du calcul approximé de l aire sur l intervalle [a,b] est donné par : Le code correspondant à une subdivision de l intervalle N en N intervalles est : function y=newton38(a,b,n,a) %--Approximation de l'integrale d'une fonction 'A' par la méthode de % 3/8 newton entre a et b pour N intervalles: newton38(a,b,n,a)-- %--Input : les bornes de l'intervalle a,b et le nombre de d'intervalle N. %--Output : la valeur de l'intégrale approchée sur cet intervalle. %--Cas d'erreur-- if (mod(n,3)~=0) N=input('Rentrez une valeur de N multiple de 3 : '); %--Initialisation-- x=a; z=eval(a); x=b; z=z+eval(a); %--Boucles-- for i=1:((n-3)/3) x=a+3*i*(b-a)/n; z=z+2*eval(a); for i=0:((n-3)/3) x=a+(3*i+1)*(b-a)/n; z=z+3*eval(a); x=a+(3*i+2)*(b-a)/n; z=z+3*eval(a); z=(3*(b-a)/(8*n))*z; %--Affichage-- fprintf('l'' aire approchee (%d intervalles) avec methode des 3/8 de Newton est : %f \n',n,z); Méthode des Trapèzes améliorés : (romberg.m)

Cette méthode se sert du calcul de l aire approximée par la méthode des trapèzes selon les formules suivantes obtenues par développements limités. Dans l algorithme de résolution on peut économiser du temps de calcul en utilisant la formule récursive suivante pour le calcul des Tn,0 : Avec n = N*2^k, k entier, la formule du Tn,m s écrit : On peut organiser les Tn,m selon le tableau suivant : Le but est le calcul des Tp,p sur la diagonale. Lorsque p augmente, le résultat du calcul approché par Romberg est plus précis. Le programme qui suit demande à chaque itération à l utilisateur s il veut continuer le calcul tout en lui indiquant l actuelle position de convergence par l affichage d une donnée : eps1-eps2. Le code correspondant est : function y=romberg(a,b,n,a) %--Valeur approchée d'une intégrale %--Input : romberg(a,b,n,a) : a et b : bornes inf et sup. % N : nombre d'iteration. % A : la fonction à integrer entre quotes. %--Output : Valeur approchée de l'integrale entre a et b. %--Initialisation h=(b-a)/n; I=trapeze(a,b,N,A,0); bool=1; %--Calcul de T(2N,0) a mettre dans T(1) T(1)=trapeze(a,b,2*N,A,0); %--Calcul de T(2N,1) à mettre dans T(2)-- T(2)=(4*T(1)-I)/3; %--Ini des epsilons-- esp1=abs(i-t(2)); esp2=esp1; %--Ini de k--

k=1; fprintf('aire approchée par Romberg :\n'); %------------------ %--Boucle-- while ((bool==1)&(esp2<=esp1)) k=k+1; temp1=t(1); T(1)=trapeze(a,b,(2^k)*N,A,0); for i=2:k temp2=t(i); T(i)=((4^i)*T(i-1)-temp1)/((4^i)-1); temp1=temp2; T(k+1)=((4^(k+1))*T(k)-temp1)/((4^(k+1))-1); %--Echange de esp-- esp1=esp2; esp2=abs(i-t(k+1)); fprintf('iteration %d --> T(N = %d,k = %d) = %f \n',k-1,n,k,t(k+1)); fprintf('\tla différence en valeur absolue eps1-eps2 : %f\n\t',abs(esp1- esp2)); bool=input('taper 1 pour continuer, autre arreter : '); %--------- fprintf('l'' aire approchee avec methode de Romberg est T(N = %d,k = %d) = %f \n',n,k,t(k+1)); Le menu : (programme.m) Le menu permet de naviguer d une méthode de calcul d aire à une autre facilitant la comparaison des précisions des résultats pour chaque méthode. Au lancement de programme.m s affiche un menu comportant quatres onglets : 2 exemples, l utilisation manuelle et le bouton Quitter. En cliquant sur Utilisation manuelle, on demande d entrer les données puis un menu affiche alors 8 onglets définis comme ci-dessous. Le code source est : %--Affiche le menu du projet 1. %--Propose de traiter l'intégration numérique approchée. %--Initialisation-- w=0; %------------------ %--Menu principal-- while w==0 k=menu('que faire?','exemple 1','Exemple 2','Utilisation manuelle','quitter'); switch k case 1 disp('exemple 1 : atan(1/x) entre 1 et pi pour N=12\n'); trapeze(1,pi,12,'atan(1/x)',1); simpson(1,pi,12,'atan(1/x)');

newton38(1,pi,12,'atan(1/x)'); romberg(1,pi,12,'atan(1/x)'); case 2 disp('exemple 2 : x^4-x entre -5 et 5 pour N=12\n'); trapeze(-5,5,12,'x^4-x',1); simpson(-5,5,12,'x^4-x'); newton38(-5,5,12,'x^4-x'); romberg(-5,5,12,'x^4-x'); case 3 %--Remise a zero-- q=0; %--Demande des données-- a=input('rentrez la borne inferieure : '); b=input('rentrez la borne superieure : '); N=input('Rentrez le nombre d''intervalles N : '); A=input('Rentrez la fonction (ex : x^2) : ','s'); %--Sous-Menus-- while (q==0) k=menu('calcul d''une aire : quelle methode voulez vous utiliser?','rectangle','point milieu','trapeze','simpson','3/8 de Newton','Romberg (trapeze amelioree)','tracer la courbe','précédent'); switch k case 1 escalier(a,b,n,a); case 2 pointmilieu(a,b,n,a); case 3 trapeze(a,b,n,a,1); case 4 simpson(a,b,n,a); case 5 newton38(a,b,n,a); case 6 romberg(a,b,n,a); case 7 X=a:(b-a)/N:b; x=a; Y(1)=eval(A); for i=2:n+1 x=x+(b-a)/n; Y(i)=eval(A); plot(x,y,'-gx'); case 8 q=1; %------------------ case 4 w=1; q=1; Discussions et interprétations : I - La limite de la méthode des trapèzes :

On sait que cette méthode est exacte d ordre 2 mais pour certaines fonctions elle s éloigne de la réalité. La méthode des trapèzes a ces limites comme le montre la figure cidessous : La fonction à intégrer a son importance : on a déjà que si celle-ci oscille trop rapidement pour un découpage de l intervalle insuffisant, l erreur d approximation peut devenir élevée. Pour pallier à ce problème on va soit utiliser des approximations quadratiques au lieu d approximations linéaires soit utiliser une forme évoluée de la méthode des trapèzes : Romberg. 1 Utilisation d approximations quadratiques : La méthode de Simpson : On dispose de la méthode de Simpson. En comparaison avec ce qui précède voici la figure montrant que Simpson approxime mieux une fonction oscillante (non periodique) que Trapèze :

Bien sur, le fait d utiliser une forme composite du calcul d aire approximée, c'est-à-dire le découpage de l intervalle en N intervalles et l application de la méthode à tous ces sous intervalles, va augmenter la précision du calcul : La méthode de Newton 3/8 : Cette méthode est une amélioration de la méthode de Simpson. Elle fait partie (tout comme Simpson) des méthodes de Newton-Cotes d ordre p. Elle est cepant un peut plus précise que celle de Simpson pour N intervalles donnés. 2 - La méthode de Romberg : Un calcul matlab sur la fonction cos(x) sur [0,2] peut permettre de montrer que cette méthode approxime mieux que Trapèze : >> programme Rentrez la borne inferieure : 0 Rentrez la borne superieure : 2 Rentrez le nombre d'intervalles N : 5 Rentrez la fonction (ex : x^2) : cos(x) L' aire approchee (5 intervalles) avec methode des trapezes est : 0.897141 Aire approchée par Romberg : Iteration 1 --> T(N = 5,k = 2) = 0.908681 La différence en valeur absolue eps1-eps2 : 0.000624 Taper 1 pour continuer, autre arreter : 1 Iteration 2 --> T(N = 5,k = 3) = 0.909155 La différence en valeur absolue eps1-eps2 : 0.000473 Taper 1 pour continuer, autre arreter : 1 L' aire approchee avec methode de Romberg est T(N = 5,k = 3) = 0.909155 Sachant que la vrai valeur de l intégrale est sin(2) et vaut 0.909297 à 10^(-6) près, Romberg approxime mieux que Trapèze. II Calcul de l erreur commise :

On pr un intervalle [a,b] que l on subdivise en N intervalles de même longueurs. En notant que l erreur commise sur le calcul de l intégrale vaut la valeur exacte de l intégrale à laquelle on soustrait le calcul approché on obtient pour différentes valeurs de N (1,2,4,8,16,32,,1024) un graphe de l erreur en fonction de N ou bien un graphe de l erreur en fonction du temps de calcul (N et le temps de calcul fe sont liés). Avec cos(x) à évaluer entre 0 et 2 voici le graphe : (les trois courbes du bas sont celle obtenues avec Newton-Cotes d ordres supérieurs) On note qu à N fixé les formules de Newton-Cotes sont plus adaptées que Trapèze ou Romberg. Conclusion : Parmi les différentes méthodes exposées on retira que l interpolation quadratique est plus adaptée au calcul de fonctions à grandes variations (ou qui oscille rapidement) que l interpolation linéaire. Le calcul de l erreur nous montre alors l importance d utiliser des méthodes de calcul plus fines dans le but de raccourcir le temps de calcul et d améliorer la précision voulue.