2. 2 -  Matrice M

Construire $\color{blue}M$ :

La démarche et les notations sont similaires à la construction de $K$ du TP1.

${\color{mycolor}\triangleright }$ les fonctions de base : $w_ i \in V_ h$ telle que $w_ i(x_ j)=\delta _{ij}$ ;

${\color{mycolor}\bullet }$ fonctions de forme sur l’élément de référence $[0,1]$ :
   $p_ o(s)=s$, $p_1(s)=1-s$,   et   $\displaystyle \int _0^1p_ o^2dt=\displaystyle \int _0^1p_1^2dt = \frac{1}{3}$, $ \displaystyle \int _0^1p_ o\, p_1,dt = \frac{1}{6}$

${\color{mycolor}\bullet }$ fonctions de base non nulles sur $[x_ i,x_{i+1}]$ : $w_ i$ et $w_{i+1}$   avec

   $w_{i}(x)=\frac{x_{i+1}-x}{x_{i+1}-x_ i}=p_1( \frac{x-x_ i}{x_{i+1}-x_{i}} )$,   $w_{i+1}(x)=\frac{x-x_ i}{x_{i+1}-x_{i}}=p_ o(\frac{x-x_ i}{x_{i+1}-x_ i})$

   d’où, en notant $h_ i=x_{i+1}-x_{i}$,

   $\displaystyle \int _{x_{i}}^{x_{i+1}} w_ i^2 dx=\displaystyle \int _{x_{i}}^{x_{i+1}} w_{i+1}^2 dx = \frac{h_ i}{3}$, $\displaystyle \int _{x_{i}}^{x_{i+1}} w_ iw_{i+1} dx= \frac{h_ i}{6}$.

 
 

${\color{mycolor}\triangleright }$ contribution du segment i, ${\color{mycolor}[x_ i,x_{i+1}] }$, à ${\color{mycolor}M=(M_{ij})}$ :

   seules les fonctions $w_ i$ et $w_{i+1}$ ne sont nulles sur $[x_ i,x_{i+1}] $ :

   $\Rightarrow $ 4 contributions : $\displaystyle \int _{x_{i}}^{x_{i+1}}w_ jw_ k{dx} \, dx$ pour $k,j=i,i+1$ ;

  ce sont :
    $m^{(i)}_{1,1}=m^{(i)}_{2,2}= \frac{h_ i}{3}$ (pour $M_{i,i}$ et $M_{i+1,i+1}$),
    $m^{(i)}_{1,2}=m^{(i)}_{2,1}= \frac{h_ i}{6}$ (pour $M_{i,i+1}$ et $M_{i+1+1,i}$),

  la matrice élémentaire associée à $[x_ i,x_{i+1}]$ est $m^{(i)}=\dfrac {h_{i}}{6}\left( \begin{array}{cc}2& 1\\ 1& 2 \end{array} \right)$.

  $\dfrac {1}{6}\left( \begin{array}{cc}2& 1\\ 1& 2 \end{array} \right)$ étant la matrice élémentaire de référence.  
 

${\color{mycolor}\triangleright }$ assemblage et stockage de ${\color{mycolor}M}$ : même démarche que pour $K$.

comme $K$, $M$ est tridiagonale ; on adopte le même stockage.

${\color{mycolor}\triangleright }$ programmation : très proche de celle de $K$

écriture d’un sous programme devant construire $M$ pour tout

$nx$ : nombre de points $x_ j$ du domaine, $nx=n_ h+1$,

 

$x$, tableau des abscisses $x_ j$, $j=1,nx$,


fournis par la liste d’appel du sous-programme.

Structure :

- affectation de la matrice élémentaire de référence,

- initialisation du stockage de $M$,

- boucle sur les éléments $i=1$ à $nx-1$

  calcul de $h_ i= (x_{i+1}-x_{i})$,

  ajout des contributions de l’élément $i$ à $M$,

- fin de la boucle sur $i$


sous scilab : écrire en complétant les zones grises du fichier
   Mplein1DP1.sci     pour un stockage plein

 
 

\includegraphics[width=10cm]{./prog-images/Mplein1DP1trou.png}

Besoin d’aide pour remplir les zones grises ? pour vous aider, voir le QCM suivant :

Ouvrir/fermer le QCM.

 

Tester ce sous-programme à l’aide du programme principal test (à écrire dans la console de Scilab ou dans un fichier que l’on exécutera) :   

exec(’Mplein1DP1.sci’,-1) ;

nx=5 ; x=linspace(0,1,nx) ;

M = Mplein1DP1(nx,x) ; M


Vous obtenez bien la matrice

$M=\left(\begin{array}{ccccc}0,083...& 0,0416...& 0& 0& 0\\ 0,0416...& 0,166...& 0,0416...& 0& 0\\ 0& 0,0416...& 0,166...& 0,0416...& 0\\ 0& 0& 0,0416...& 0,166...& 0,0416...\\ 0& 0& 0& 0,0416...& 0,083...\end{array}\right)$,

vous pouvez alors poursuivre,
sinon ... vérifier votre sous-programme.