Ecrire un programme python qui calcule u(4) par les méthodes d'Euler explicite, d'Euler implicite et de Runge-Kutta d'ordre quatre Comparer les résultats obtenus
Previous PDF | Next PDF |
[PDF] Informatique en CPGE (2015-2016) Corrigé TP 10 : résolution
Exercice 1 Objectif : programmer la méthode d'Euler pour résoudre l'équation différentielle y/ = y sur l'inter- valle [0; 4] avec y(0) = 1 1 def euler(a,b,y0,h,f): x=a y=
[PDF] Chapitre N 5 : La méthode dEuler pour les systèmes différentiels
Exercice No 3 : Dans l'interpréteur, écrivez les lignes de commandes suivantes : import numpy; X=numpy array([1,2,3]); type(X);
[PDF] 1 Méthode dEuler - Site Personnel de Arnaud de Saint Julien
TP : Résolution d'équations différentielles : méthode d'Euler Exercice 2 Écrire une fonction euler calculant les valeurs approchées d'une solution d' Déterminer une fonction F : R2 → R2 telle que X (t) = F(X(t),t) Programmer là en Python
[PDF] Résolution numérique dune équation différentielle
Exercice 1 import numpy as np Elle fournit un résultat visuellement un peu meilleur que la méthode d'Euler classique, mais s'éloigne elle aussi de la
[PDF] Devoir surveillé n 2 du janvier 2015 - PanaMaths
La suite de l'exercice consiste à appliquer la méthode d'Euler implicite sur un Écrire un programme en python mettant en œuvre la formule trouvée à la
[PDF] Corrigé du TP no 9 - Alain TROESCH
Exercice 1 Tout d'abord, importons les import numpy as np import scipy integrate as itg Commençons par définir la méthode d'Euler : def euler(f, a, y0, b, n):
[PDF] Informatique en PCSI et MPSI Champollion 2013-2014 Méthodes d
19 fév 2014 · méthode d'Euler en Python Runge Kutta d'ordre 4 (RK4) Méthode de Runge- Kutta d'ordre 4 en odeint (suite) Exercice: L'équation de
[PDF] Enoncés des exercices
Ecrire un programme python qui calcule u(4) par les méthodes d'Euler explicite, d'Euler implicite et de Runge-Kutta d'ordre quatre Comparer les résultats obtenus
[PDF] TP dinformatique PCSI - Mathématiques PC - Free
TP 20 : Méthode d'Euler 119 TP 21 : Calcul Exercice 1 (PYTHON comme une calculatrice) : Taper les commandes suivantes dans une console (ouvrir une
[PDF] Équations différentielles 10 - Programmation Python pour les
Exercice 3 2 : Opérations sur les tableaux Exercice 10 1 : Méthodes d'Euler Python est un langage généraliste de programmation interprété qui a la
[PDF] méthode dichotomie python
[PDF] le message andrée chedid résumé détaillé
[PDF] résolution équation différentielle matlab ode45
[PDF] le message andrée chedid genre
[PDF] algorithme méthode d'euler implicite matlab
[PDF] méthode de tir équation différentielle
[PDF] le message andrée chedid quiz
[PDF] le message andrée chedid extrait
[PDF] méthode euler implicite matlab
[PDF] le message andrée chedid texte intégral
[PDF] fonction ode45 matlab
[PDF] le message andrée chedid fnac
[PDF] grille évaluation projet
[PDF] comment bien faire l amour ? son mari pdf
Ecole Polytechnique de Louvain
INFORMATIQUE
ETMETHODES NUMERIQUES
...ou les aspects facetieux du calcul sur un ordinateurV. Legat
Enonces des seances d'exercices pour les cours LICAR1104 Annee academique 2019-2020(version 4.7 : 18-09-2019) Les ordinateurs sont comme les Dieux de l'Ancien testament : beaucoup de regles et aucune pitie. (Joseph Campbell) iSeance 1
InterpolationTrouver (a0;:::;an)2Rn+1tels quen
X j=0a jj(Xi) |{z} u h(Xi)=Uii= 0;1;:::;n:1On cherche un polyn^omeuh(x) =a+bxqui passe par les points (X0;U0) et (X1;U1). 1. Exprimer les co ecientsaetben termes des coordonnees des deux points. 2. Utiliser ce r esultatp ourappro cherla fonction u(x) =pxa l'aide de ses valeurs enX0= 0 et X1= 0:25.
3.Donner la v aleurde l'erreur d'in terpolationen x= 1=9.2On cherche un polyn^omeuh(x) =a+bx+cx2qui passe par les points (3;2);(1;1) et (2;1).
1. Donner le syst emelin eaireque doit satisfaire le v ecteurc omposedes trois co ecientsa,betc. 2. Ce syst emep ossede-t-ilz ero,une ou plusieurs solutions ? Latitude653.10
553.22
453.30
353.32
253.17
153.07
53.02-53.02 -153.12 -253.20 -353.35 -453.37 -553.25Exemple : climatologie Nous disposons de mesures experimentales recentes (Philosophical Magazine 41,237,
1896) sur la variation de la temperature annuelle moyenne a dierentes latitudes en
fonction d'une augmentation de 50% de la concentration d'acide carbonique dans l'atmosphere au niveau du sol. Nous allons rechercher un polyn^ome qui interpole les donnees pour les latitudes65;35;5;25;55 en utilisant les instructions suivantes depython
>>> from numpy import * >>> X = [-55,-25,5,35,65] >>> U = [3.25,3.20,3.02,3.32,3.10] >>> a = polyfit(X,U,4) >>> print(a) [ -8.281893e-08 4.526749e-07 3.468364e-04 -3.775720e-04 3.013212e+00] On peut obtenir le graphe du polyn^ome de la maniere suivante : >>> import matplotlib.pyplot as plt >>> x = linspace(X[0],X[-1],100) >>> uh = polyval(a,x) >>> plt.plot(x,uh,'-b',X,U,'or') >>> plt.show() An d'obtenir une jolie courbe, nous evaluons le polyn^ome en 100 points equidistants sur l'intervalle [55;65]. Observons que l'instructionX(end)permet d'obtenir la derniere composante d'un vecteur sans en specier la longueur. Notons aussi que les plots depythonsont toujours construits comme une interpolation lineaire par morceaux entre les points donnes comme arguments. (Exemple tire de Quarteroni et al.)16040200 20 40 60 803.03.13.23.33.43.5Figure 1.1: Interpolation polynomiale de degre 4 pour les variations de temperature
en termes de latitude : on peut observer l'accord qualitatif entre la courbe et toutes les donnees experimentales. Les cercles pleins ont ete utilises pour eectuer l'interpolation, tandis que les cercles vides correspondent aux valeurs dont on n'apas fait usage.3On suppose que l'on conna^t dans un vecteur de taille 2n+ 1 les valeurs d'une fonction continue
u(x) pour les abscisses entieres allant denan. En d'autres mots, on suppose connues les valeurs U kk= 0;1;2;:::;n Pour une valeurt2R, on denituh(t) comme la valeur du polyn^ome de degre trois qui interpole uen passant par les quatre points entiers les plus proches. On vous demande d'ecrire une fonctionpythonqui calculeuh(t) a partir des argumentst,netUk.4Il n'existe pas de polyn^ome de degrendont la courbe passe parn+ 2 points donnes. Est-ce que
cette armation est exacte ? Commenter et justier votre reponse.5Considerons une distribution uniforme d'abscissesXi=Xi1+hpouri= 1;:::;navec un pas
h >0 et un pointX0donnes. Demontrer que pour toutx2[X0;Xn], on a l'inegalite suivante : n Y i=0(xXi) n!hn+14 De ce resultat, on pourra ainsi deduire que l'erreur d'interpolation d'une fonctionupar le polyn^ome de degrenpour les abscissesXipeut ^etre bornee par la relation suivante. eh(x)maxx2[X0;Xn]u(n+1)(x)4(n+ 1)hn+12Exemple : Runge
Interpolons la fonctionu(x) = 1=(1+x2) a des abscisses equidistantes sur l'intervalle [5;5]. Dans ce cas, la limite du maximum de la valeur absolue de l'erreur d'interpolation tend vers l'inni, lorsquen! 1. Ceci est d^u au fait que la vitesse d'accroissement de l'ordre de grandeur du terme max x2[5;5]u(n+1)(x)depasse la vitesse avec laquelle le termehn+1=4(n+1) tend vers zero, comme l'illustre la Figure ci-dessous. Nous allons rechercher le polyn^ome qui interpole les donnees pour les abscisses de Chebyshev en utilisant les instructions suivantes depython >>> from numpy import * >>> import matplotlib.pyplot as plt >>> n = 10 >>> f = lambda x : 1/(1 + x*x) >>> Xcheby = 5*cos(pi*(2.0*arange(0,n+1)+1)/((n+1)*2)) >>> Ucheby = f(Xcheby) >>> x = linspace(Xcheby[0],Xcheby[-1],1000) >>> u = f(x) >>> uh = polyval(polyfit(Xcheby,Ucheby,n),x) >>> plt.plot(x,uh,'-b', x,u,'--b') >>> plt.show() Il est possible d'observer la convergence de l'erreur en calculant le maximum de l'erreur d'interpolation pour diverses valeurs den >>> eh = max(abs(u - uh)) >>> print(eh)0.109151988704nmax
x2[5;5]jeh(x)j50.555888991775100.109151988704
200.0153305602451
400.00038859656587.5311 3 58006004002000200400
5311 3 542024
1075311 3 5210123
10135311 3 5505
1019Figure 1.2: Derivees d'ordre6,11,16et21de la fonction de Runge. On comprend
mieux pourquoi, la borne de l'erreur d'interpolation explose lorsquen! 1. Toutefois, le choix des abscisses de Chebychev permet d'obtenir la convergence m^eme si la borne de l'estimation d'erreur continue a exploser... 35311 3 50.50.00.51.01.5
5311 3 50.50.00.51.01.55311 3 50.0100.0050.0000.0050.010
5311 3 50.0100.0050.0000.0050.010Figure 1.3: Comparaison entre des interpolations polynomiales de degre 10 faites
avec des abscisses equidistantes ou avec des abscisses de Chebyshev. On a egalement represente le diagramme du terme(xX0)(xX1):::(xXn)=(n+1)!. Le choix des abscisses de Chebychev permet de reduire l'ampleur de ce facteur
du terme d'erreur et d'obtenir la convergence de l'approximation polynomiale.6La probabilite qu'une fonction aleatoireXsoit inferieure ou egale axest noteeP(Xx).xP(Xx)1.00.8413447
1.10.8643339
1.20.8849303
1.30.9031995
1.40.9192433Si nous considerons que la fonction aleatoire suit une loi normale, cette
probabilite est donnee par la fonction :P(Xx) =1p2Z
x 1 expt22 dtComme la fonction exp
t22 ne possede pas de primitive, on calcule, par des methodes numeriques (que l'on verra plus tard :-), cette probabilite pour dierentes valeurs dexet l'on conserve les resultats dans une table. A l'aide de cette table, obtenirP(X1:05) avec une erreur absolueinferieure a 0:5105.7On cherche a modeliser la friction de l'air sur un parachutiste : on suppose que la force de friction
exercee est proportionnelle a la vitesse du parachutiste. Le facteur de proportionnalite est appele coecient de friction. Avant l'ouverture du parachute, le coecient de friction peut ^etre considere comme constant et egal a 0:2. Une fois le parachute completement ouvert, ce coecient redevient constant et vaut 2. Le parachute prend environ 3 secondes pour s'ouvrir completement. 1.Donner les unit esdu co ecientde friction.
2. Prop oserun mo delep olynomialcubique qui p ermetted'obtenir une evolutiondi erentiable du coecient de friction pendant l'ouverture du parachute, si on suppose que le parachute s'ouvre a l'instantt= 0. 4Seance 2
Interpolation
par morceauxTrouver (a0;:::;an)2Rn+1tels quen X j=0a jj(Xi)|{z} u h(Xi)=Uii= 0;1;:::;n:Latitude653.10
553.22
453.30
353.32
253.17
153.07
53.02-53.02 -153.12 -253.20 -353.35 -453.37 -553.25Exemple : courbe spline cubique Reconsiderons les donnees de notre exemple de climatologie. Nous allons rechercher une courbe spline cubique (une interpolation polynomiale cubique par morceaux) et la comparer a une interpolation polynomiale de Lagrange.
On utilise les instructions suivantes depython
>>> from numpy import * >>> from scipy.interpolate import CubicSpline as spline >>> X = arange(-55,75,10) >>> U = [3.25,3.37,3.35,3.20,3.12,3.02,3.02, ... 3.07,3.17,3.32,3.30,3.22,3.10] >>> x = linspace(X[0],X[-1],100)>>> uh = spline(X,U)8On cherche a approcher la courbe representant un quart de cercle a partir des points
X k= sin(k6 ); Yk= cos(k6 aveck= 0;:::;3. On utilisera uniquement la fonctionCubicSplinesdescipy.interpolate. 1. Dessiner la courb espline yh(x) passant par les quatre points. 2. Consid ererla repr esentationparam etriquedu cercle et calculer les deux c ourbessplines xh(t) etyh(t) pour les donnees suivantes X k= sin(k6 ); Yk= cos(k6 ); Tk=k6 aveck= 0;:::;3. Comparer les deux interpolations de la courbe dans le plan (x;y). 3. Dessiner un cercle complet e nutilisan tune repr esentationparam etrique. 56040200 20 40 60 803.03.13.23.33.43.5Figure 2.1: Comparaison entre l'interpolation polynomiale de Lagrange et la
courbe composee de splines cubiques (ou courbe spline cubique). La courbe splinesemble plus plausible que le polynome de Lagrange.9Calculer a priori une borne superieure de la valeur absolue de l'erreur d'interpolation pour les
fonctions et les abscisses suivantes : u(x) = cosh(x); Xk=1 +k2 ; k= 0;:::;4; u(x) = sinh(x); Xk=1 +k2 ; k= 0;:::;4; u(x) = cos(x) + sin(x); Xk=2 +k4; k= 0;:::;4:10Nous disposons de donnees statistiques sur la duree de vie moyenne des citoyens de l'Europe de
l'Est. Calculer avecpython, l'interpolation polynomiale de degre trois et la courbe spline cubique.Duree de vie
197570.2
198070.2
198570.3
199071.2Utiliser ensuite les interpolations an d'extrapoler la duree de vie
moyenne en 1970 et 1995. Comparez le resultat obtenu en 1970 sachant que la duree de vie observee etait 69:6 annees en cette annee-la. Pouvez- vous sur base de cette nouvelle information, estimer la precision de l'extrapolation eectuee pour 1995. Commenter vos resultats en comparant ceux obtenus par l'interpolationpolynomiale de Lagrange et la courbe spline cubique.11Evaluer avecpythonla fonctionu(x) = sin(2x) sur 21 points equidistants sur l'intervalle [1;1].
Calculer le polyn^ome d'interpolation de Lagrange et la courbe spline cubique. Eectuer le m^eme calcul en utilisant les donnees perturbees comme suit : U k= sin(2Xk) + (1)k+1104 Qu'observez-vous ? Pouvez-vous expliquer, de maniere intuitive, ce que vous observez ? 612On conna^t la temperatureTien quatre sommets (Xi;Yi) d'un carre centre a l'origine de c^ote deux.X
1=1Y 1=1X 2=1Y 2= 1X 3= 1Y 3= 1X 4= 1Y4=11.Prop osezune in terpolationbidimensionnelle qui soit une g eneralisationde l'in terpolationuni-
dimensionnelle par morceaux. En d'autres mots, on vous demande de fournir une interpolation t h(x;y) de la temperature a partir des valeurs aux sommets. 2. Ecriv ezun programme pythonqui fournit la valeur de la temperature pour un point (x;y) a partir des donnees (Ti) pour les quatre sommets. 3. Que se passe-t-il si ( x;y) est hors du carre ? Detectez ce cas dans votre programme en emettantun avertissement a l'utilisateur de votre fonction.13Refaites par vous-m^eme la fonctionCubicSplinedescipy.interpolateet veriez l'exactitude de
votre programme en comparant vos resultats avec ceux obtenus par la fonction originale du logiciel. En particulier, essayez d'identier des cas particuliers ou votre programme est moins robuste que l'implementation depython... 7 8Seance 3
ApproximationTrouver (a0;:::;an)2Rn+1tels quem
X i=00 UinX j=0 j(Xi)aj1 A2 |{z}J(a0;:::;an)soit minimal.14On cherche un polyn^omeuh(x) =a+bxqui approxime, au sens des moindres carres, les points
(X0;U0), (X1;U1) et (X2;U2). 1. Exprimer les co ecientsaetben termes des coordonnees des trois points. 2. Utiliser ce r esultatp ourappro cherla fonction u(x) =x2a l'aide de ses valeurs enX0= 0, X