0% ont trouvé ce document utile (0 vote)
28 vues7 pages

TP MATLAB et C : Séries de Taylor et Méthodes Numériques

Transféré par

SENCANADA TV
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)
28 vues7 pages

TP MATLAB et C : Séries de Taylor et Méthodes Numériques

Transféré par

SENCANADA TV
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

Informatique pour l’ingénieur, IFT-1903

Travail Pratique 1
A. Foriero, ing., Ph.D.
30 janvier, 2023

Consignes
ˆ Le travail doit obligatoirement être réalisé sur une base individuelle avec le logiciel MATLAB et un
compilateur C.

ˆ Toutes les 12 questions valent le même nombre de points soit dix points.

ˆ Chaque étudiant doit déposer (téléverser) le TP dans la boı̂te à cet effet sur le site web pour le 28
février 2023.

ˆ Chaque étudiant doit maintenir une copie papier de son travail (pour consultation durant l’examen
final de MATLAB et C).

ˆ Les travaux remis en retard seront assujettis à une pénalité.

ˆ Les étudiants ne peuvent pas poser de questions concernant le travail pratique aux tuteurs et
dépanneurs.

ˆ Dans la mesure du possible, tout développement de fonctions utilisateur ou anonyme devra être
réalisé sans les fonctions intégrées de MATLAB.

ˆ Tous les fichiers MATLAB(.m) et C(.c) dans le cadre du présent travail doivent être imprimés.

ˆ Toute forme de plagiat sera sanctionnée (voir plan de cours) .

1
Problème 1
Les séries de Taylor les plus couraments utilisées sont

1
xn ,
X
=
1 − x n=0

xn
ex =
X
,
n=0 n!

x2n
(−1)n
X
cos(x) = ,
n=0 (2n)!

x2n+1
(−1)n
X
sin(x) = ,
n=0 (2n + 1)!

xn
(−1)n+1
X
ln(1 + x) =
n=1 n
et ∞
x2n+1
tan−1 (x) = (−1)n
X
.
n=0 (2n + 1)
Développez pour chacune de ces séries, avec le logiciel MATLAB, un fichier fonction utilisateur qui
calcul l’approximation de la fonction en utilisant N termes de la série.
Ensuite développez un fichier script dans lequel les fonctions utilisateurs sont évoquées pour le calcul
approximatif de la valeur f (x = π6 ) avec un choix N = N1 < N2 < N3 < N4 < N5 termes de la série qui
produisent une valeur décroissante de l’erreur relative. Le fichier script doit produire une sortie MATLAB
en forme de tableau, soit trois colonnes ayant comme entête la valeur de N, la valeur approximative de
f (x = π6 ) et l’erreur relative pour chaque fonctions.
Développez aussi un code C analogue pour le calcul de ces approximations. Définissez les fonctions
en séries de Taylor après la fonction main(). Utilisez des variables de type double dans vos calculs.

Problème 2
Le cercle ci-bas a un rayon de 1 et l’arc qui joint le point A et B est deux fois plus long que la droite AB.
Trouvez la longueur de la droite AB avec la méthode de Newton-Raphson. Développez deux fonctions
utilisateur MATLAB pour réaliser ceci. Cet-à-dire une fonction avec boucle for et l’autre avec boucle
while. Nommez les fonctions Arcb(theta) et Arcw(theta). Le paramètre formel d’entrée est, theta
(θ), la valeur en radians estimée de l’angle qui sous-tend l’arc. La fonction MATLAB doit satisfaire les
conditions suivantes:

ˆ Les itérations devraient s’arrêter quand l’erreur relative estimée est inférieure à 0.00001.

ˆ Le nombre d’itérations devraient se limiter à 25, si non le programme devrait s’arrêter et afficher
un message.

Développez un programme C pour en aboutir au même résultat.

2
Figure 1: L’angle qui sous-tend l’arc AB.

Problème 3
Résolvez le système d’équations non-linéaires

x31 − x21 x2 = −12

2x21 + 3x1 − x2 = 9
avec la méthode de Newton-Raphson étendue à deux fonctions. Développez une fonction utilisateur dans
l’environnement Matlab. Nommez la fonction
[xsol1,xsol2]= NewRaph2(F1,F2,F11,F22,F12,F21,x1i,x2i,iter,Err). Les paramètres formels d’entrée
et de sortie sont respectivement des fonctions utilisateurs ou anonymes F1, F2 représentant les deux
équations non-linéaires, des fonctions utilisateurs ou anonymes représentant les dérivées premières F11,
F22 et croisées F12, F21 de F1, F2, les valeurs initiales x1i,x2i correspondant aux variables x1 et x2, le
nombre d’itérations, iter, l’erreur relative, Err, et la solution xsol1, xsol2 correspondant aux valeurs x1
et x2. Expliquez votre choix des valeurs initiales x1i et x2i. Développez un code C pour ce problème.

Problème 4
Développez une fonction utilisateur qui détermine les coordonnées polaires, d’un point avec coordonnées
Cartésiennes dans un plan bidimensionnel. Pour la fonction, utilisez la nomenclature suivante
[r,d] = CartaPol(x,y). Les paramètres formels d’entrée sont les coordonnées Cartésiennes x et y du
point. Les paramètres formels de sortie sont la distance radiale du point par rapport à l’origine, r, et
l’angle en degrés mesuré par rapport à l’axe positif des x, d. La direction positive de l’angle par rapport
à x est dans le sens anti-horaire de sorte que la valeur de d, qui est attribuée à un point, est positive dans
les quatre quadrants. Utilisez la fonction pour déterminer les coordonnées polaires des points
(10,9),(-12,10),(-8,-4) et (9,-6).

3
Problème 5
Développez une fonction utilisateur avec nomenclature [N]=Selecd(M) qui à comme but de trier une
matrice, M, en ordre descendant produisant une matrice, N, de la même dimension. Utilisez l’algorithme
du triage par sélection. Triez la matrice suivante
 
7 9 2
M = 8 1 5 


6 1 3

pour obtenir  
9 8 7
N = 6 5 3 

.
2 1 1
Ensuite triez les matrices suivantes
   
20 45 45 −9.0 34.2 33.7
A =  81 21 5  B =  3.4 −1.4 53 
  
.
6 21 78 7.0 21.0 6.54

Problème 6
Les nombres des différentes molécules participant à la réaction de la dissolution du sulfure de cuivre
dans l’acide nitrique aqueux sont donnés par les coefficients a, b, c, d, e, f et g, et sont inconnus. Ces
coefficients inconnus sont déterminés en équilibrant chaque atome à gauche et à droite, puis équilibrant
la charge ionique. Les équations résultantes de ce processus sont les suivantes :

a = d, a = e, b = f, 3b = 4e + f + g, c = 2g, −b + c = 2d − 2e

.
Il y a sept inconnues et seulement six équations. Cependant, une solution peut encore être obtenue en
profitant du fait que tous les coefficients doivent être des nombres entiers positifs. Ajouter une septième
équation en devinant un nombre entier et résoudre le système d’équations. La solution est valable si
maintenant tous les coefficients obtenus sont des nombres entiers positifs. Si ce n’est pas le cas, prenez
un autre nombre entier et répétez la solution. Continuez le processus jusqu’à ce que tous les coefficients
de la solution soient des nombres entiers positifs.
Développez un fichier script MATLAB dans lequel les solutions se répètent. Utilisez six syntaxes
MATLAB différentes pour le faire.
Développez un code C pour vérifier la solution MATLAB.

4
Problème 7
La séquence {an }∞
n=0 générée avec la relation récursive

3(n − 1)an−1 + (n + 1)an−2


an = −
2(n − 1)n

se pose dans l’étude des solutions par séries des équations différentielles. Nous pouvons démontrer que
la série ∞
an (x − 2)n
X
y(x) =
n=0

est une solution de l’équation différentielle

2y ′′ + (x + 1)y ′ + 3y = 0.

Une solution particulière voire fondamentale (toutes les autres solutions peuvent s’écrire en terme de
celle-ci) survient pour le choix de a0 = 1 et a1 = 0. Développez une fonction utilisateur MATLAB avec
nomenclature Y1=DifPuis(x,N) pour l’approximation de la solution en utilisant N+1 termes soit
N
an (x − 2)n .
X
Y1 (x, N ) =
n=0

La fonction utilisateur pour l’approximation doit se baser sur une fonction utilisateur récursive pour le
calcul des coefficients an . Ensuite avec MATLAB tracez les graphiques de Y1 (x, 5),Y1 (x, 10),Y1 (x, 15) sur
l’interval −3.5 ≤ x ≤ 7.5.

Problème 8
Développez une fonction utilisateur qui trace la rotation d’une ellipse. La nomenclature de la fonction
utilisateur est ellipse trace(xc,yc,a,b,angle). Les variables formelles d’entrée sont les coordonnées
du centre de l’ellipse (xc,yc), les demi-longueurs des axes horizontaux, a, et verticaux, b, et l’angle de
rotation en degrés, angle. La fonction n’a aucun paramètre formel de sortie. Utilisez la fonction pour
tracer les ellipses suivantes:
a) xc=3.5, yc=2.0, a=8.5, b=3 avec une rotation de 20 degrés dans le sense anti-horaire et
b) xc=-5.0, yc=1.5, a=4, b=8 avec une rotation de 30 degrés dans le sens horaire.

Problème 9
Développez la fonction utilisateur avec nomenclature [R]= newreshape(M,r,c) qui reproduit la fonc-
tion intégrée de MATLAB reshape(A,m,n). L’évocation de la fonction doit produire un message d’erreur,
La matrice M n’est pas de taille r × c, si tel est le cas. Ensuite transformez la matrice
 
7 6 2
M = 2 4 1 


6 3 3
h i
avec l’évocation [R]=newreshape(M,1,9) pour produire R = 7 2 6 6 4 3 2 1 3 et
[R]=newreshape(M,2,9) pour produire le message d’erreur.

5
Problème 10
Dans la conception des pipelines souterrains, il est nécessaire d’estimer la température ambiante du
sol. La température du sol, en fonction de la profondeur, est estimée en modélisant le milieu souterrain
comme un milieu solide à température ambiante initialement constante. La température à une profondeur
donnée, z, et temps, t, est calculée avec l’expression suivante:
z
T (z, t) − Ts z 2 Z 2√αt −u2
= erf ( √ ) = e du
Ti − Ts 2 αt π 0
où Ts est la température à la surface du sol, Ti est la température ambiante initiale du sol souterrain et
α = 0.128 × 10−6 m2 /s est la diffusivité thermique. Utilisez la fonction intégrée de MATLAB Y=erf(X)
et les valeurs Ts = −20o C et Ti = 10o C pour répondre aux questions suivantes:
1)Déterminez la température à une profondeur z = 1.5 m après 30 jours (t = 2.592 × 106 s).
2) Développez un fichier script MATLAB qui génère un graphique de la température en fonction du
temps à z = 1.0 m de profondeur sur une période de 31 jours. Utilisez des incréments de 1 jour.
3) Développez un fichiez script MATLAB qui génère un graphique tridimensionnel (T fonction de z
et t) démontrant la température en fonction de la profondeur et temps sur les intervals (0 ≤ z ≤ 3m) et
(0 ≤ t ≤ 2.592 × 106 s).

Problème 11
Utilisez la méthode classique de Runge-Kutta (quatrième ordre) pour résoudre l’équation différentielle
ordinaire
dy
= −2y + 4e−x + 8
dx
sur l’intervalle (0 ≤ x ≤ 7) avec comme condition initiale y = 4 à x = 0. Comparez vos résultats avec
la solution analytique (exacte) y = −4e−2x + 4e−x + 4. Quel pas de temps recommandez vous pour la
méthode de Runge-Kutta. Développez un code C pour ce problème et montrez la sortie seulement.

Problème 12
Développez un code MATLAB et C pour générer le triangle dans la figure ici-bas. Utilisez une fonction
avec nomenclature Asterix(n) qui consomme un nombre de rangées, n, établissant la hauteur du triangle.
Prenez comme symbol de sortie l’astérisque,*, et la valeur de 1. Par exemple l’évocation de la fonction
Asterix(10) devrait produire la sortie

6
Figure 2: Sortie MATLAB.

Vous aimerez peut-être aussi