Vous êtes sur la page 1sur 4

Analyse numérique pour ingénieur MAT-2910

Devoir 1 Janvier 2024

Directives
À déposer dans la boite de dépôt sur le site du cours dans monportail : un seul fichier
compressé contenant les programmes demandés et le rapport.
Au total, ce sont 4 programmes Matlab (un script et 3 fonctions) qui sont demandés.
De plus, lorsqu’on exécute le script, tous les éléments demandés à la question 1 doivent s’af-
ficher sur la fenêtre de commandes Matlab, et toutes les figures demandées doivent s’afficher,
chacune dans une fenêtre (5 figures au total). Si les figures n’apparaissent pas à l’exécution
du script, la réponse sera considérée comme nulle.
Dans le rapport, on mettra les 5 figures obtenues (dans l’ordre et numérotées, avec
leurs titres) et les réponses aux questions 5 à 7. Si les figures n’apparaissent pas ou ne
coincident pas avec celles qui apparaissent en exécutant le script, la réponse sera considérée
comme nulle.
On utilisera un éditeur de texte (Word, LaTeX, ...). On ne remettra donc pas de rapport
manuscript.

Questions

1. Créer un fichier script Matlab dont le nom contiendra le numéro de votre équipe
(exemple : equipe43.m). Dans ce fichier, on commencera par écrire les lignes de com-
mandes qui définiront les nombres, vecteurs et matrices suivants et qui les afficheront
sur la fenêtre de commandes Matlab. Attention, il faut 1 seule ligne de commandes
pour chaque élément demandé.
— a, le vecteur colonne de longueur 4 dont toutes les composantes valent 1. Utiliser
pour cela la commande Matlab ones.
— b, le vecteur ligne de longueur 4 dont les composantes valent 3, 5, 7, 11 (en une
seule ligne)
— c, le vecteur ligne de longueur 4 dont toutes les composantes valent 1. On obtiendra
c à partir de a grâce à la transposition (signe 0 ).
— d, le vecteur ligne de longueur 4 dont toutes les composantes valent 6. On obtiendra
d à partir de c en utilisant une multiplication.
— I, la matrice identité de taille 4 × 4. On utilisera la commande eye.
— J, la matrice de taille 4 × 4 dont toutes les composantes valent 1. Utiliser pour
cela la commande ones.
— K, la matrice de taille 4 × 4 dont la diagonale est le vecteur b. Utiliser pour cela
la commande diag.
— L, la matrice de taille 4 × 4, définie par L = I − J + a ∗ c. On obtiendra L à partir
de I, J, c et a, bien sûr.
— M , la matrice obtenue en remplaçant la 1ère colonne de K par a. On obtiendra
M à partir de K et a, bien sûr, en commençant votre ligne de commande par :
M=K ; M( :,1)=... (à compléter).
— ddd, le déterminant de M . Il existe une commande Matlab pour cela. Il faut
l’utiliser.
— x, la solution de M x = a, sans calculer l’inverse de L.
— N , la matrice solution de M ∗ N = M 0 , où M 0 est la matrice transposée de M .

Sur la fenêtre de commandes, on verra donc s’afficher :


a =

···

b =

···

et ainsi de suite ....

À la suite, dans ce fichier script, créer une figure (Figure 1) visualisant la matrice N.
On utilisera la commande mesh. On écrira en titre, grâce à la commande title, qu’il
s’agit de la matrice N .

Ensuite, toujours dans le fichier script, définir la fonction f (x) = xex − x de façon à ce
qu’elle permette d’être appliquée à un vecteur x, en utilisant la syntaxe (à compléter) :
f = @(x) x. ∗ · · ·.
Rappel : il faut mettre un point . devant les opérations de multiplication, division et
puissance pour que cela puisse s’appliquer à des vecteurs, et ainsi permettre d’évaluer
la fonction en les valeurs de toutes les composantes du vecteur x d’un seul coup.

Faire tracer le graphe de f sur l’intervalle [0, 1], en évaluant la fonction aux abscisses
0, 0.01, 0.02, · · · , 0.99, 1. On définira pour cela le vecteur x, contenant les abscisses
des points, par
x = 0 : 0.01 : 1;
puis on utilisera la commande plot pour tracer le graphe. Mettre un titre avec la
commande title. Cela constituera la Figure 2.
Z π  2n
x
2. Soit Sn = sin xdx
0 π
a) On peut voir que Sn ≥ 0 quel que soit n. On peut également montrer que :
S0 = 2 ;
Sn = 1 − 2n(2n−1)π2
Sn−1 , n = 1, 2, . . . ;
et que Sn est décroissante et Sn −→ 0 lorsque n −→ +∞.
Créer un fonction Matlab, appelée suite.m, dont la seule entrée est n et la sortie
est un vecteur ligne S de longueur n + 1, dont les composantes sont les valeurs S0 ,
S1 , . . ., Sn . On utilisera une boucle for . . . end pour construire les éléments de la
suite Sn en utilisant la formule de récurrence précédente. Cette fonction Matlab
commencera par les 2 lignes suivantes :
function S = suite(n)
S(1) = 2 ;
b) Dans le fichier script, faire appel à la fonction suite créée précédemment pour cal-
culer S1 , ..., S15 . Dans une nouvelle figure (Figure 3), créer un graphique montrant
les valeurs de la suite en fonction de n (Figure 3). On utilisera la commande plot
pour le graphique. On utilisera également les commandes xlabel, ylabel, title pour
rendre la figure très explicite.
3. Sachant que
d
cos x = (sin x),
dx
on désire construire des approximations de cos x par la formule
sin(x + h) − sin(x)
D(x, h) =
h
qui est une formule d’approximation de la dérivée de sin(x). Rappel : D(x, h) −→
d
dx
sin(x) lorsque h −→ 0.
Créer une fonction Matlab, appelée erreur.m, dont les entrées sont x et h, et la sortie
est l’erreur | cos x − D(x, h)|. Dans le script, faire appel à cette fonction pour évaluer
l’erreur au point x = 0.5 et pour h = 10−p , p = 1, 2, . . . 12 et faire tracer le graphique
(Figure 4) de l’erreur en fonction de h avec des échelles logarithmiques (au lieu de
la commande plot, pour avoir des échelles logarithmiques à la fois en abscisse et en
ordonnée, on utilisera la commande loglog). Bien identifier les axes et mettre un titre
au graphique (commandes xlabel, ylabel, title).
4. Le polynôme p2 (x) = 1 − x2 /2 est le développement de Taylor de degré 2 en x = 0
de la fonction f (x) = cos x. Construire une fonction Matlab appelée p2.m qui définit
ce polynôme. Attention, la fonction devra pouvoir accepter un vecteur x
comme argument ; la sortie est un vecteur contenant les évaluations en
chacune des composantes de x. Dans le script Matlab, faire appel à cette fonction
puis faire tracer le graphe (Figure 5) de E(x) = |f (x)−p2 (x)| sur l’intervalle [0.001, π],
avec la commande loglog.
Bien identifier les axes et mettre un titre au graphique.
5. À la question 2, on a construit la suite Sn jusqu’à n = 15. On a dit que Sn est décrois-
sante (et tend même vers 0). Est-ce que c’est ce que semble indiquer le graphique ?
Comment expliquer cela ? Indice : c’est une phénomène d’instabilité numérique, créé
par la propagation d’erreurs dues à la représentation flottante. On expliquera le phé-
nomène en partant du fait que Sn = fn (Sn−1 ) pour une fonction fn bien choisie et en
utilisant la formule de propagation de l’erreur vue en cours.
6. À la question 3, on s’attend à ce que D(x, h) −→ cos(x) lorsque h −→ 0. Est-ce que
c’est ce que semble indiquer le grahique ? Comment l’expliquer ?
7. À la question 4, si le développement de Taylor est d’ordre p alors l’erreur E(x) devrait
se comporter comme
E(x) ≈ C|x|p ,
où C est une constante strictement positive.
En utilisant une échelle logarithmique, le graphique montre log(E(x)) en fonction de
log(x). Or, on a
log(E(x)) ≈ log(C) + p log(x)
qui est l’expression d’une droite dont la pente est p, l’ordre du développement de
Taylor.
À vue d’oeil, sur le graphique, combien vaut cette pente ? Comment expliquer que p
n’est pas égal à 3, l’ordre auquel on pourrait s’attendre pour un développement de
Taylor de degré 2 ? Indice : donner le développement de Taylor de degré 3.

Vous aimerez peut-être aussi