0% ont trouvé ce document utile (0 vote)
6 vues4 pages

Résolution du problème de Neuman

Le document traite de la résolution du problème de Neumann non homogène à l'aide d'une discrétisation uniforme sur l'intervalle ]0, 1[. Il présente un système linéaire basé sur des approximations de dérivées et inclut un exemple avec une solution exacte. Des codes Python sont fournis pour illustrer la mise en œuvre de la méthode numérique.

Transféré par

Oumaima Biyoud
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)
6 vues4 pages

Résolution du problème de Neuman

Le document traite de la résolution du problème de Neumann non homogène à l'aide d'une discrétisation uniforme sur l'intervalle ]0, 1[. Il présente un système linéaire basé sur des approximations de dérivées et inclut un exemple avec une solution exacte. Des codes Python sont fournis pour illustrer la mise en œuvre de la méthode numérique.

Transféré par

Oumaima Biyoud
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

TP_RNE

December 20, 2023

Construisons la solution du problème de Neuman non homogène

−u00 ( x ) + u( x ) = f ( x ), ∀ x ∈ 0, 1[,


u0 (0) = α, u0 (1) = β.

On introduit la discrétisation uniforme du segment ]0, 1[ par

xi = ih, i = 0 · · · N − 1,

avec h = N1−1 . Pour i = 0 à N − 1, on va approcher l’équation −u ” (xi ) + u (xi ) = f (xi )


de la même manière que pour le problème de Dirichlet. On note ui ∼ u (xi ) et fi = f (xi ).
Pour i = 0 et i = N − 1, on introduit alors u−1 qu’il convient d’éliminer par la condition lim-
ite
 de Neuman non homogène.
 On remarque que la différence centrée qui approche la dérivée
u( x +h)−u( x −h)
u0 ( x ) = 2h permet d’écrire

u−1 = u1 − 2hα.

u N +2 = u N + 2hβ.
On a alors le système linéaire


 u−1 = u1 − 2hα
 −u−1 +2u0 −u1



 h2
+ u0 = f0
 − u + 2u − u



0
h2
1 2
+ u1 = f1
−u1 +2u2 −u3

+ u2 = f2


h2


−ui−1 +2ui −ui+1
h2
+ ui = fi
−uN−2 +2uN−1 −uN

+ uN−1 = fN−1


h2


 −uN−1 +2uN −uN+1
+ uN = fN



 h2
 −uN +2uN+1 −uN+2



 h2
+ uN+1 = fN+1
 u
N+2 = u N + 2hβ

En remplacant u−1 par sa valeur dans l’equation 2, il vient que

u0 − u1 u0 f0 α
2
+ = −
h 2 2 h

C’est pareil pour u N +2 :

1
− u N + u N +1 u N +1 f β
2
+ = N+
h 2 2 h

Il vient le système de N + 2 inconnues U = (u0 , u1 , · · · , uN , uN+1 )t suivant:

 t
f0 α f β
( A + B) U = F, F= − , f 1 , f 2 , · · · , f N −1 , f N , N +1 + ,
2 h 2 h
avec
1 −1
···
 
h2 h2
0 0  
 −1
0  1/2 0 0 ... 0
h2
0 1 0 0 · · · 0
 
 ..   
0 Ah .
 

A=

, B=
 .. .. .. 
 ..  . . . 
 .  
 0 ··· 0 0 1 0


−1
 
0 ··· 0 0 0 1/2
 
h2
−1 1
0 ··· ··· h2 h2

Exemple 1
−u00 ( x ) + u( x ) = f ( x ),

∀ x ∈ 0, 1[,
u0 (0) = α, u0 (1) = β.
avec
u( x ) = cos(2πx ), ∀ x ∈] 0, 1[,
2

f ( x ) = [(2π ) + 1)]cos(2πx ), ∀ x ∈ 0, 1[,
u0 (0) = 0, u0 (1) = 0.

[275]: #importation des bibliothèques utiles


import numpy as np
import [Link] as plt
from [Link] import diags

alpha=0 # u'(0)=0
beta=0 # u'(1)=0
# le pas h
N=40
h=1/(N+1)
# construction du vecteur de discrétisation
x=[Link](0,1,N+2)
def sol_exa(t):
return [Link](2*[Link]*t)

#construction de la fonction f de votre choix


def f(t):
return ((2*[Link])**2+1)*[Link](2*[Link]*t)

[276]: #construction du second membre du systeme


F=f(x)

2
F[0] =0.5*F[0]-alpha/h
F[N+1]=0.5*F[N+1]+beta/h

[277]: B=[Link](N+2)
B[0][0]=0.5
B[N+1][N+1]=0.5

[278]: #construction de la matrice en systeme creux Ah


Ah=1/h**2*diags([-1,2,-1], [-1,0,1], shape=(N, N)).toarray()
#construction de la matrice globale A
A=[Link]((N+2,N+2))

[279]: A[1:N+1,1:N+1]=Ah

[280]: A[0][0]= 1/h**2


A[0][1]= -1/h**2
A[1][0]= -1/h**2

[281]: A[N+1][N+1]= 1/h**2


A[N][N+1] = -1/h**2
A[N+1][N] = -1/h**2

[282]: u=[Link](A+B,F)

[283]: uex=sol_exa(x)
[Link](x,u,'*',x,uex)
[Link](["sol app","Solution exacte"])
[Link]()

3
4

Vous aimerez peut-être aussi