0% ont trouvé ce document utile (0 vote)
61 vues1 page

NSEKE Yvanna Projet

Transféré par

hanyu.goodlook
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
61 vues1 page

NSEKE Yvanna Projet

Transféré par

hanyu.goodlook
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

4MA006 - Fondements des méthodes numériques

NSEKE Yvanna 28706323


Dans le cadre de l'Unité d'Enseignement 4MA006 - Fondements des méthodes numériques, nous présentons ici un projet en deux parties répondant aux exercices donnés. Nous exposons les deux parties séparément, en
expliquant de quoi nous partons pour obtenir les calculs et les graphiques, ainsi que les résultats.

Dans la première partie, nous traitons l'approximation de l'équation de transport à vitesse constante avec les cinq schémas vus en cours. Dans la seconde, nous présentons la méthode des éléments finis de degrés plus
élevés.

SOMMAIRE
1.1 Approximation de l'équation de transport à vitesse constante
1.1.1 Présentation du problème et des schémas

1.1.2 Comparaison des solutions en fonction du nombre de pas

1.2 Analyse des schémas


1.2.1 Stabilité

1.2.2 Convergence

2. Méthode des éléments finis de degré plus élevés


2.1 Formulation Variationnelle

2.2 Projection d'une fonction continue


Il y a quelques codes présents dans ce documents donc importons les libraires nécessaires pour ceux-ci.

In [9]:
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from IPython.display import Image, display

1.1 Approximation de l'équation de transport à vitesse constante


1.1.1 Présentation du problème et des schémas
Dans cette première partie, nous nous concentrerons sur l'implémentation des schémas ainsi que tracer les solutions analytiques et numériques de chacun d'eux.

Soit un temps final T > 0 , nous cherchons une approximation de, ū : R × (0, T ) → R , solution du problème suivant,
∂t ū(x, t) + a ∂x ū(x, t) = 0, ∀(x, t) ∈ R × (0, T ),
{ (P)
ū(x, 0) = uini (x), ∀x ∈ R.

On rappelle que la solution de (P) est donnée par ū(x,t) = uini (x-at), ∀(x,t) ∈ R × (0, T ) . Afin de travailler sur un domaine d’espace de dimension finie, on prendra une condition initiale uini 1-périodique.

Nous savons que la fonction uini est 1-périodique en espace. Utilisons sa périodicité pour montrer celle de ū,

ū(x + 1, t) = uini (x + 1 − at) = uini (x − at) = ū(x, t).

De plus, pour la condition initiale, la périodicité est bien vérifiée:

ū(x + 1, 0) = uini (x + 1) = uini (x) = ū(x, 0).

Nous avons bien que ū est 1-périodique en espace (exercice 1).

Vérifions maintenant que uini (x) = sin(2πx) est aussi 1-périodique en espace:

uini (x + 1) = sin(2π(x + 1)) = sin(2πx) cos(2π) + sin(2π) cos(2πx) = sin(2πx) = uini (x)

uini (x) est 1-périodique en espace (exercice 2).

Dans la suite du projet, nous utiliserons les valeurs suivantes: T , ,


= 0.75 a = 1 J = 20 arrJ = [25, 50, 100, 200] , et λ = 0.8 .

1 Δt
T
Grâce à ces valeurs, nous commençons par définir Δx = J
le pas d'espace, Δt = λΔx le pas de temps ( avec λ =
Δx
), xj = jΔx une suite de points et le point avec le numéro d’index maximum du temps M = ⌊ ⌋ .
Δt

Nous avons déjà la donnée initiale. A présent, introduisons les cinq schémas sur lesquels nous allons travailler ainsi que leurs coefficients.

1. Schéma centré:

n+1 n
λa n n
u = u − (u − u )
j j j+1 j−1
2

λa λa
dont les coefficients sont: c−1 =
2
, c0 ,
= 1 c1 = −
2

1. Schéma décentré à gauche:

n+1 n n n
u = u − λa(u − u )
j j j j−1

dont les coeffients sont: c−1 ,


= λa c0 = 1 − λa c1 = 0 ,

1. Schéma décentré à droite:

n+1 n n n
u = u − λa(u − u )
j j j+1 j

dont les coefficients sont: c−1 ,


= 0 c0 = 1 + λa c1 = −λa ,

1. Schéma de Lax-Friedrichs:

1 n n
λa n n
n+1
u = (u − u ) − (u − u )
j j+1 j−1 j+1 j−1
2 2

1+λa 1−λa
dont les coefficients sont: c−1 = , c0 ,
= 0 c1 =
2 2

1. Schéma de Lax-Wendroff:

2 2
λa n n
λ a n n
n+1 n n
u = u − (u − u ) + (u − 2u + u )
j j j+1 j−1 j+1 j j−1
2 2

2 2 2 2
λa+λ a λ a −λa
dont les coefficients sont: c−1 = , c0 = 1 − λ a
2 2
, c1 =
2 2

Notons que tous les schémas présentés sont des schémas à 3 points, c’est-à-dire qu’ils n’utilisent qu’au plus, les valeurs aux trois points xj−1 , xj et xj+1 pour avancer en temps.

1.1.2 Comparaison des solutions en fonction du nombre de pas


Grâce à ces coefficients, nous pouvons tracer les solutions analytiques et numériques. Nous observerons les comportements de chaque schéma en fonction du nombre de pas en espace J dans arrJ (exercice 3).

1. Pour le schéma centré, le seul moment où les deux solutions ont l'air très proches est pour J = 100. Sinon elles sont relativement proches. Pour le nombre de pas J = 200, on voit une différence extravagante. Nous
pouvons penser que le schéma sera instable et qu'il n'est pas adapté. Nous traiterons le cas d'instabilité un peu plus tard.

In [10]:
#code pour afficher les images
images = ["C:\DOCS\Projet\images\m0/sc25.png", "C:\DOCS\Projet\images\m1/sc50.png", "C:\DOCS\Projet\images\m2/sc100.png", "C:\DOCS\Projet\images\m3/sc200.png"]
for img in images:
display(Image(filename=img))

1. Pour le schéma décentré à gauche, nous pouvons voir que plus le nombre de pas augmente, plus les solutions sont proches et même égales en certains points. Nous pouvons, ici, penser que ce schéma sera stable et
adapté. Peut-être qu'il sera même convergent.

In [11]:
#code pour afficher les images
images = ["C:\DOCS\Projet\images\m0/sdg25.png", "C:\DOCS\Projet\images\m1/sdg50.png", "C:\DOCS\Projet\images\m2/sdg100.png", "C:\DOCS\Projet\images\m3/sdg200.png"]
for img in images:
display(Image(filename=img))

1. Pour le schéma décentré à droite, plus le nombre de pas diminue, plus la variation de la solution numérique est faible et ainsi ce rapproche de celle de la solution analytique. Cependant notre but est d'observer le
comportement des schémas lorsque le nombre de pas augmente et non l'inverse. De plus, ce schéma montre une divergence (dès J = 50) beaucoup plus amplifiée que celle du schéma centré.

In [12]:
#code pour afficher les images
images = ["C:\DOCS\Projet\images\m0/sdd25.png", "C:\DOCS\Projet\images\m1/sdd50.png", "C:\DOCS\Projet\images\m2/sdd100.png", "C:\DOCS\Projet\images\m3/sdd200.png"]
for img in images:
display(Image(filename=img))

1. Pour le schéma de Lax-Friedrichs, nous pouvons voir que plus le nombre de pas augmente, plus les solutions sont proches et même égales en certains points sans pour autant coïncider avec la solution analytique. C'est
comme pour le schéma décentré à gauche sauf que pour ce schéma, la solution numérique n'approche pas aussi bien la solution analytique. Il est possible qu'en augmentant la valeur de J, nous nous retrouvons avec une
égalité entre les deux solutions. Nous pensons alors que ce schéma peut être stable.

In [13]:
#code pour afficher les images
images = ["C:\DOCS\Projet\images\m0/slf25.png", "C:\DOCS\Projet\images\m1/slf50.png", "C:\DOCS\Projet\images\m2/slf100.png", "C:\DOCS\Projet\images\m3/slf200.png"]
for img in images:
display(Image(filename=img))

1. Pour le schéma de Lax-Wendroff, la solution numérique et la solution analytique concordent en tout point à partir d'un nombre de pas strictement supérieur à 25. Pour J = 25, les deux solutions sont égales en certains
points mais pour la plupart elles sont très proches. Ici aussi, on peut soupçonner le schéma d'être stable.

In [14]:
#code pour afficher les images
images = ["C:\DOCS\Projet\images\m0/slw25.png", "C:\DOCS\Projet\images\m1/slw50.png", "C:\DOCS\Projet\images\m2/slw100.png", "C:\DOCS\Projet\images\m3/slw200.png"]
for img in images:
display(Image(filename=img))

Ce sont, pour l'instant, les schémas décentré à gauche, de Lax-Friedrichs et de Lax-Wendroff qui sont les plus prometteurs pour la stabilité et sûrement la convergence. De plus, ils ont l'air plus adapté que les schémas centré
et décentré à droite. Ne tirons pas de conclusion trop vite et continuons de les analyser!

1.2 Analyse des schémas


1.2.1 Stabilité
Ici, nous étudierons la stabilité du schéma. En supposant que J=20, calulons la norme matricielle pour chaque schéma.
n+1 n n n+1
Remarquons dans un premier temps que l'on peut écrire chaque schéma sous la forme UΔx = QU
Δx
, où UΔx est le vecteur dont les composantes sont les un
j
et UΔx est le vecteur dont les composantes sont les un+1
j
,j
∈ {1,...,J}. Pour chaque schéma, explicitons la matrice Q tout en respectant la condition de périodicité:

1. Schéma centré:

λa λa

⎛ 1 − 0 ⋯ ⎞
2 2

⎜ ⎟
⎜ λa λa ⎟
⎜ 1 − ⋱ ⋮ ⎟
2 2
⎜ ⎟
⎜ ⎟
⎜ λa ⎟
Qc = ⎜ ⎟ , Qc ∈ M(1,…,J )2 (R)
0 1 ⋱ 0
⎜ 2 ⎟
⎜ ⎟
⎜ λa

⎜ ⋮ ⋱ ⋱ ⋱ − ⎟
⎜ 2 ⎟
λa λa
⎝− ⋯ 0 1 ⎠
2 2

1. Schéma décentré à gauche:

1 − λa 0 0 ⋯ λa
⎛ ⎞

⎜ ⎟
⎜ λa 1 − λa 0 ⋱ ⋮ ⎟
⎜ ⎟
⎜ ⎟
Qdg = ⎜

⎟,Q
⎟ dg ∈ M(1,…,J )2 (R).
0 λa 1 − λa ⋱ 0
⎜ ⎟
⎜ ⎟
⎜ ⎟
⎜ ⋮ ⋱ ⋱ ⋱ 0 ⎟

⎝ ⎠
0 ⋯ 0 λa 1 − λa

1. Schéma décentré à droite:

1 + λa −λa 0 ⋯ 0
⎛ ⎞

⎜ ⎟
⎜ 0 1 + λa −λa ⋱ ⋮ ⎟
⎜ ⎟
⎜ ⎟
Qdd = ⎜ ⎟,Q ∈ M(1,…,J )2 (R).
⎜ 0 0 1 + λa ⋱ 0 ⎟ dd
⎜ ⎟
⎜ ⎟
⎜ ⎟
⎜ ⋮ ⋱ ⋱ ⋱ −λa ⎟

⎝ ⎠
−λa ⋯ 0 0 1 + λa

1. Schéma de Lax-Friedrichs:

1−λa 1+λa
⎛ 0 0 ⋯ ⎞
2 2

⎜ ⎟
⎜ 1+λa 1−λa ⎟
⎜ 0 ⋱ ⋮ ⎟
2 2
⎜ ⎟
⎜ ⎟
⎜ 1+λa ⎟
QLF = , QLF ∈ M(1,…,J )2 (R).
⎜ 0 0 ⋱ 0 ⎟
⎜ 2 ⎟
⎜ ⎟
⎜ 1−λa

⎜ ⋮ ⋱ ⋱ ⋱ ⎟
⎜ 2 ⎟
1−λa 1+λa
⎝ ⋯ 0 0 ⎠
2 2

1. Schéma Lax-Wendroff:
2 2 2 2
λ a −λa λ a +λa
2 2
⎛1 − λ a 0 ⋯ ⎞
2 2

⎜ ⎟
⎜ 2 2
λ a +λa
2
λ a −λa
2 ⎟
2 2
⎜ 1 − λ a ⋱ ⋮ ⎟
⎜ 2 2 ⎟
⎜ ⎟
⎜ 2 2 ⎟
λ a +λa
QLW = ⎜ 2 2 ⎟ , QLW ∈ M(1,…,J )2 (R).
⎜ 0 1 − λ a ⋱ 0 ⎟
2
⎜ ⎟
⎜ ⎟
2 2
⎜ λ a −λa ⎟
⎜ ⋮ ⋱ ⋱ ⋱ ⎟
⎜ 2 ⎟
2 2 2 2
λ a −λa λ a +λa
2 2
⎝ ⋯ 0 1 − λ a ⎠
2 2

Numériquement, nous obtenons les résultats suivants:

"Pour le schéma centré, la norme matricielle de Q est: 1.8 en norme infinie et 1.28062484748657 en norme L2."

"Pour le schéma décentré à gauche, la norme matricielle de Q est: 1.0 en norme infinie et 1.0 en norme L2."

"Pour le schéma décentré à droite, la norme matricielle de Q est: 2.6 en norme infinie et 2.5999999999999996 en norme L2."

"Pour le schéma de Lax-Friedrichs, la norme matricielle de Q est: 1.0 en norme infinie et 1.0 en norme L2."

"Pour le schéma de Lax-Wendroff, la norme matricielle de Q est: 1.1600000000000001 en norme infinie et 1.0 en norme L2."

Il n'y a que pour le schéma centré que l'on trouve des normes éloignées, tandis que pour les autres elles sont proches ou égales. Dans le second cas, on peut déduire une bonne stabilité des schémas. Cependant, dans le
premier cas, on dira plutôt que le schéma est instable.

Comparons ces résultats à ceux que nous allons trouver manuellement.

Nous utiliserons ici la propriété 3.3.1 du cours disant: "Un schéma linéaire dont les coefficients sont positifs est stable dans l∞ ." (condition de CFL). Mais aussi, à la page 76, l'équivalence suivante: le schéma est stable pour la
norme l2 si et seulement si ∣αj ∣≤ 1 , pour j=1,...,J-1 (condition de stabilité de Von Neumann). La stabilité l2 se caractérise à l'aide de la transformée de Fourier discrète. Nous nous retrouvons avec

αj = ∑ ck exp(i2πkjΔx).

k=−1

Ainsi, pour la stabilité dans l∞ et l2 , on a:

1. Schéma centré: La stabilité dans l∞ n'est pas assurée car les coefficients ne sont pas tous positifs. Il est donc instable pour cette norme. Por la stabilité dans l2 , on a

λa
αj = (exp(−i2πjΔx) + exp(i2πjΔx)) + 1 = 1 − iλa sin(ω),
2

avec ω = 2πjΔx. Comme ∣sin(ω) ∣≤ 1 ∣αj > 1, pour le j tels que sin(ω) ≠ 0. Ce schéma n'est pas l2 -stable. Le schéma centré est donc instable pour les deux normes et cela correspond au résultat numérique.

1. Schéma décentré à gauche: Pour a ≥ 0 , nous avons la l∞ -stabilité si λa ≤ 1 .

αj = λa exp(−i2πjΔx) + 1 − λa = 1 − λa + λa cos(ω) − iλa sin(ω),

le schéma est l2 -stable si λ ∣ a ∣≤ 1 donc si λa ≤ 1. Ce schéma est stable comme nous l'avons vu dans la partie numérique.

1. Schéma décentré à droite: Pour a ≤ 0 , nous avons la l∞ -stabilité si −λa ≤ 1 .

αj = 1 + λa − λa exp(i2πjΔx) = 1 + λa − λa cos(ω) − iλa sin(ω),

le schéma est l2 -stable si −λa ≤ 1. Ce schéma est stable comme nous l'avons vu dans la partie numérique.

1. Schéma de Lax-Friedrichs: Le schéma est l∞ -stable si λa ≤ 1 .

1 + λa 1 − λa
αj = exp(−i2πjΔx) + exp(i2πjΔx) = cos(ω) − iλa sin(ω),
2 2

ce schéma est l2 -stable si λ ∣ a ∣≤ 1(CF L). Ce schéma est stable comme nous l'avons vu dans la partie numérique.

1. Schéma de Lax-Wendroff: si on a λa(λa + 1) ≥ 0 , alors λa ≥ 1 . Cependant, cela implique aussi que 1 − λ2 a2 ≤ 0. Tout les coefficients ne peuvent donc pas être positifs. Le schéma n'est pas l∞ -stable.

2 2 2 2 2 2
λ a + λa 2 2
λ a − λa λ a
αj = exp(−iω) + 1 − λ a + exp(iω) = 1 − iλa sin(ω) + (exp(iω) + exp(−iω) − 2),
2 2 2

or, comme

iω −iω
(exp( ) − exp( ))
2 2 2
(exp(iω) + exp(−iω) − 2) = −4( ) .
2i

Donc on se retrouve avec

2 2
ω 2
αj = 1 − 2λ a sin( ) − iλa sin(ω),
2

on en déduit que le schéma est l2 -stable si λ ∣ a ∣≤ 1(CF L). Ce schéma est stable comme nous l'avons vu dans la partie numérique (exercice 4).

1.2.2 Convergence
In [17]:
#code pour afficher les images
images = ["C:\DOCS\Projet\images\erreurs/errsc.png", "C:\DOCS\Projet\images\erreurs/errsdg.png", "C:\DOCS\Projet\images\erreurs/errsdd.png", "C:\DOCS\Projet\images\erreurs/errslf.p
for img in images:
display(Image(filename=img))

Nous avons ici les graphiques des erreurs pour J=200. Dans le documents avec les codes, nous voyons pour chaque schéma que les courbes des erreurs sont de plus en plus proches. Pour les schémas décentré à gauche,
de Lax-Friedrichs et Lax-Wendroff, les courbes sont croissantes donc cela signifie que la vitesse à laquelle les erreurs diminuent augmente. Elle augmente plus vite pour la norme infinie. Pour le schéma centré, lorsque J est
petit la vitesse augmente. Cependant, pour J=200, les courbes ne sont pas monotones. On voit qu'en allant vers +∞, la vitesse semble tendre vers 1. Enfin pour le schéma décentré à droite, lorsque J est petit, la vitesse va ,au
contraire, diminuer. Cependant, à partir de J=100, bien les courbes soit presques égales, elles ne sont pas monotones. On voit qu'en allant vers +∞, la vitesse semble tendre vers 0. Nous pouvons donc conclure que seuls les
schémas décentré à gauche, de Lax-Friedrichs et Lax-Wendroff convergent. Ce sont les schémas les plus adaptés au problème.

2. Méthode des éléments finis de degré plus élevés


On considère le problème suivant. Trouver u : [0, 1] → R solution du problème aux limites

′′
−ϵu + u' = 2 dans S,

et vérifiant les conditions aux limites

u(0) = 1, u(1) = 2,

où ϵ > 0 est un nombre réel et en posant S = ]0,1[.

2.1 Formule Variationnelle


La formulation variationnelle de ce problème (exercice 1) est
T rouver u ∈ [0, 1] telle que a(u, v) = l(v), ∀v ∈ Vh
{ 1 1 (FV)
′ ′ ′
avec a(u, v) = ∫ −ϵu (x)v (x) + u (x)v(x)dx et l(v) = ∫ 2v(x)dx
0 0

Nous voulons à présent écrire a(u, v) = l(v) sous la forme Ah = U h Fh avec Uh un vecteur composé d'inconnus uj . Ces inconnues peuvent être représentées comme étant une combinaison linéaire de fonctions de base P2
2m−1
. En considérant ϕi (x)i=1 , une base de P2 , on a

2m−1

Uh (x) = ∑ ui ϕi (x).

i=0

De plus, nous pouvons expliciter certains termes:


x−xi−1

⎪ si x ∈ [xi−1 , xi ]
⎪ h

xi+1 −x
ϕi (x) = ⎨ , (1)
si x ∈ [xi , xi+1 ]
h



0 sinon

1

⎪ si x ∈]xi−1 , xi [
⎪ h

′ −1
ϕ (x) = ⎨ si x ∈]xi , xi+1 [ , (2)
i
h



0 sinon

et xi = ih.

1 1
nous allons donc nous retrouver avec Ah = U h Fh avec Ah [i, j] = ∫
0

−ϵϕ (x)ϕ (x) + ϕ (x)ϕi (x)dx
j

i

j
et Fh [i] = ∫
0
2ϕi (x)dx.

Maintenant que nous avons explicité tout les termes, nous pouvons calculer les coefficients de Ah et Fh localement. Mais nous verrons, ci-dessous, que nous aurons le même résultat pour tout i donc Ah sera une matrice
tridiagonale.

Commençons par Ah :

si i ≠ j,

xi+1
ϵ ϵ
′ ′
∫ −ϵϕ (x)ϕ (x)dx = (xi+1 − xi ) = ,
i+1 i 2
xi
h h

xi+1 xi+1
−1 1
′ ′
∫ ϕ (x)ϕ (x)dx = ∫ xi+1 − xi dx =. . . = − ,
i+1 i 2
h 2
xi xi

xi xi
1 1

∫ ϕ′ (x)ϕ (x)dx = ∫ xi − xi−1 dx =. . . = .
i i−1
2
h 2
xi−1 xi−1

ϵ 1 ϵ 1
D'où, Ah [i, i + 1] =
h

2
et Ah [i − 1, i] =
h
+
2

si i = j,

xi+1
ϵ ϵ
∫ ϕ′ (x)ϕ′ (x)dx = (xi+1 − xi ) = .
i i
2
xi
2h 2h

ϵ 1
D'où, Ah [i, i] =
2h

2
.

Finalement, pour Fh , on a:

xi+1
2
∫ 2ϕi (x)dx = (xi+1 − xi ) = h.
xi
h

Donc Fh [i] = h.

Nous obtenons alors,

ϵ 1 ϵ 1

⎡ − − 0 ⋯ 0 ⎤
2h 2 h 2

⎢ ϵ 1 ϵ 1 ϵ 1 ⎥
⎢ + − − ⋯ 0 ⎥
h 2 2h 2 h 2
⎢ ⎥
⎢ ϵ 1 ϵ 1

⎢ 0 + − ⋯ 0 ⎥
Ah = ⎢ h 2 2h 2 ⎥
⎢ ⎥
⎢ ⎥
⎢ ϵ 1 ⎥
⎢ ⋮ ⋮ ⋮ ⋱ − ⎥
⎢ h 2 ⎥
ϵ 1 ϵ 1
⎣ 0 0 0 + − ⎦
h 2 2h 2

et

h
⎡ ⎤

⎢h⎥
Fh = ⎢ ⎥.
⎢ ⎥
⎢ ⋮ ⎥

⎣ ⎦
h

On conclut bien que si Uh est solution de (F V ), alors Uh est solution de Ah = U h Fh aussi.

Afin de tracer Uexact , la solution exacte, trouvons la manuellement. D'abord, nous regardons l'équation homogène qui, grâce à l'équation caractéristique, nous donne

1
2
−ϵr + r = 0 ⇒ r(r − ),
ϵ

1 x
les racines sont r = 0 et r =
ϵ
. La solution homogène est donc uh (x) = C1 + C2 exp(
ϵ
).

On cherche alors une solution particulière constante donc u′′p (x) = 0 et


x

up (x) = 0 ⇒ u(x) = C1 + C2 exp( ϵ
) + 2.

Avec les conditions aux limites on a

u(0) = 1 ⇒ C1 + C2 + 2 = 1 ⇒ C1 + C2 = −1 (∗)

1 1
u(1) = 2 ⇒ C1 + C2 exp( ) + 2 = 2 ⇒ C1 + C2 exp( ) = 0 (∗∗)
ϵ ϵ

x
exp( )−1
x
En faisant (*) - (), nous avons C2 (exp( 1ϵ ) − 1) = 1 ⇒ C2 =
1
1
et donc C1 = −1 −
1
1
. Donc u(x) = C1 + C2 exp(
ϵ
) + 2 = 1 +
ϵ

1
.
exp( )−1 exp( )−1 exp( )−1
ϵ ϵ ϵ

Pour m ∈ {25, 50, 100, 200} , nous avons les graphiques suivants:

In [16]:
#code pour afficher les images
images = ["C:\DOCS\Projet\images\FV/m25.png", "C:\DOCS\Projet\images\FV/m50.png", "C:\DOCS\Projet\images\FV/m100.png", "C:\DOCS\Projet\images\FV/m200.png"]
for img in images:
display(Image(filename=img))

Plus m augmente, plus la solution numérique sera nulle jusqu'à ce qu'elle atteigne un point à partir duquel elle oscille. Alors que si m diminue, on voit qu'il reste quand même des points où la solution numérique est nulle.
Cependant, il y en aura moins!

2.2 Projection d'une fonction continue


Calculons la dérivée:

x
exp( ϵ
)

u (x) =
1
ϵ exp( ϵ
) − 1

Nous voulons tracer,

′ ′
ϵh = ||u − πh u|| 2 puis ϵh = ||u − πh u || 2 .
L L

Nous noterons

πi u = Ni Ui + Ni−1/2 Ui+1/2 + Ni+1 Ui+1 ,

avec

(hi − 2(x − xi ))(hi − (x − xi ))


Ni =
2
h
i

4(hi − (x − xi ))(x − xi )
Ni+1/2 =
2
h
i

(hi − 2(x − xi ))(x − xi )


Ni+1 = − .
2
h
i

On se retrouve avec à nouveau un système Ah Uh = Fh , avec

hi

′ ′ ′
Ah = ∫ −ϵU (x)V (x) + U (x)V (x)dx,
0

hi

Fh ∫ 2U (x)dx,
0

Ui
⎡ ⎤

et U = ⎢ Ui+1/2 ⎥ .

⎣ ⎦
Ui+1

Ah est un matrice (2 × m + 3, 2 × m + 3). Pour simplifier les calculs, nous prendrons:

−2 1 0 ⋯ 0
⎡ ⎤

⎢ 1 −2 1 ⋯ 0 ⎥
⎢ ⎥
ϵ ⎢ ⎥
0 1 −2 ⋯ 0
Ah = ⎢ ⎥
h ⎢ ⎥
2
⎢ ⎥
⎢ ⋮ ⋮ ⋮ ⋱ ⋮ ⎥

⎣ ⎦
0 0 0 1 −2

et

h
⎡ ⎤

⎢h⎥
Fh = ⎢ ⎥.
⎢ ⎥
⎢ ⋮ ⎥

⎣ ⎦
h

In [20]:
#code pour afficher les images
images = ["C:\DOCS\Projet\images\erreurs/pi_u1.png", "C:\DOCS\Projet\images\erreurs/pi_u2.png", "C:\DOCS\Projet\images\erreurs/pi_u3.png"]
for img in images:
display(Image(filename=img))

Nous avons bien que plus h est petit plus l'erreur de la courbe de (πu )' décroit.

Pour conclure, ce projet nous aura permis de vérifier des propriétés théoriques telles que la stabilité t la convergence des schémas. De voir lesquels sont adaptés au problème et lesquels ne le sont pas, en fonction des valeurs
des paramètres. Il y a eu quelques défis comme le graphique de l'erreur de πu .

Ce projet met en évidence l'importance de choisir des méthodes numériques adaptées et de comprendre leur comportement pour assurer des solutions fiables et précises.

Vous aimerez peut-être aussi