T.P. sur scipy : algèbre linéaire (suite)
et équadiff
Bien lire avant de commencer :
Ne pas oublier de tester les parties déjà préparées par des exemples, pour comprendre les
fonctionnalités qui ne vous paraissent pas évidentes.
Ne pas oublier les conseils qui figurent sur les feuilles précédentes.
Récupérer la feuille ''calcul matriciel.py'' sur Cahier de Prépa
1) récupération des idées vues au TP précédent : questions 3) et 2) du TP algèbre linéaire
Exécuter les lignes déjà préparées.
Elles résolvent la question 3) = définir les matrices tridiagonales (un exemple simple de matrice
creuse : principe expliqué en classe) et les seules opérations qu'il convient de leur associer pour
préserver l'économie de mémoires que les zéros assurent.
2) On leur applique le principe de décomposition
de la question 2) du TP
précédent, pour la résolution approchée de l'équation
converge vers la solution du système
à la vitesse d'une suite géométrique.
Ce qui change, c'est que vous ne stockez pas la matrice M avec tous ses zéros, mais vous vous
contentez de connaître les trois diagonales
, respectivement diagonale
inférieure, principale et supérieure.
Tester le comportement de la suite
sur de petites itérations (4, 8, ... , 16 , 20 ...) et vérifier
que la valeur limite est bien proche de la solution.
Recommencer avec une diagonale nettement moins dominante ( à choisir ) pour confirmer que ça
modifie la vitesse de convergence.
3) Il vous reste à adapter ce qui précède par copier-coller-modifier pour définir une fonction qui
prend en arguments les trois diagonales de M , le vecteur colonne B et une précision
et qui
renvoie la solution approchée à
.
Les plus à l'aise testeront la vitesse de convergence = demanderont le nombre d'itérations qui
auront permis de trouver la précision demandée.
Vous pouvez prendre comme critère naïf de précision de l'erreur
.
4) Une épreuve de l'école de l'Air en 1997 s'intéressait à la résolution d'un certain type d'équations
différentielles du second ordre avec conditions au bord (et non pas conditions initiales) :
L'étude des cordes vibrantes ( a constante négative) vous a montré en physique qu'il n'y a pas nécessairement de
solution, selon la valeur de la fonction a et que quand il y a une solution, elle n'est pas nécessairement unique.
Mais dans le problème en question on prenait comme hypothèse
, en plus des classiques
continuités, et on arrivait à la conclusion de l'existence et de l'unicité.
On y démontrait que si on prend une subdivision régulière du segment [ 0 ; 1 ] :
yk=y(xk) , ak=a(xk) et bk=b(xk)
alors une solution approchée du problème
est donnée par la résolution du système
,
Y correspondant au vecteur colonne de composantes
et A étant la matrice tridiagonale de diagonales
D= [ 2+a1h2,2+a2h2,... ,2+anh2]