Vous êtes sur la page 1sur 14

I. 1.

Soient les matrices :

1 2  6 4 G = A(2,[3 1 2]) F=abs([2.5, -3.2, 6, -9, pi, -pi])


B =   C =  
5  ,
H = A([1 3 2],[3 1 2]) H=[zeros(2,3) ones(2,5)]
4  2 3 , K=[zeros(2,3) ones(3,5)]
 0  0 1 5 A=eye(4) a=max([2.5, -3.2, 6, -9, pi, -pi])
D =   E =   B=ones(4) b=min([2.5, -3.2, 6, -9, pi, -pi])
1 et 1 2 3  A==B
Donnez les résultats des A<=B F=abs([2.5, -3.2, 6, -9, pi, -pi])
instructions suivantes : C=ones(2,6) H=[zeros(2,3) ones(2,5)]
A = [B C;D E] D=zeros(4)
F = A(2,[1 3]) E=zeros(2,6)
K=[zeros(2,3) ones(3,5)] a=max([2.5, -3.2, 6, -9, pi, -pi]) b=min([2.5, -3.2, 6, -9, pi, -pi])
8) 1. A = [-4;1;-1, 2;-1;1]; A = [A, [0;-2;1]] 3. C = [ones(3,2),zeros(3)]
2. P = [1,1,1,1]; B =polyval(P,1) 4. D = [0,1,2,4,8;3,2,1,9,5;7,1,0,4,2]
5. E = max(D) A = [A A 6*ones(3,1)];
6. F = D < 5 A = A(1:2,2:3)
7. G = D ; G(find(G < 5))=5 13. A = [0 1 -3];
A = [A A; -ones(1,6)];
A = A(0:1,2:5)
1. A = [0 1; -1 3; -1 1]; 14. ind = 2:5;
A = [ A [0; -2; 0]] A = 3:1/2:12;
2. A = [1 0; 0 1]; A = A(ind)
A = [ A [2; -1]; [-1 0 1]] 15. A = 0:10;
3. A = [4 3 ; 2 1 ]; A = A^2-A;
A = [ A ;[2; -1; 5]] 16. A = 1:3;
4. A = [-1; 0]; A = A'*A
A = [ A ;[2; 1]] 17. A = [0;1/2;1] * [2 4];
5. A = 2:-1:0; A = A(:,2)
A = [ A ;-1:2:4]; 18. A = [2 3 -1;3 2 4];
A(3,2) = 10 A = A ~= 3
6. A = -3:-1; 19. A = [-1 3 ;-2 5; 4 -3];
A = A'; A = (A < 1).*(A.^2) + (A > 1).*A
A = [ A ;0:-1:-2]; 20. A = [-5 1 ;-4 5; 0 3];
7. A = [1 2]; c = A < -3 | A >= 2;
A = [[ A ; A] A'] A = ~c.*A + c.*A.*A
8. A = [ones(1,3); 2*ones(1,3)];
A = A'; Définissez les variables suivantes :
A(3,3) = A(2,2) A=[1 2 3 ; 4 5 6 ; 7 8 9]
9. A = 4*ones(2,1); x=[-1.3 1.7431 4]
A = [A -eye(2)] r=[10 11 12]
10. A = [3 4]; Quels effets auront les commandes suivantes ?
A = [A ; A.^2]; x(5)=abs(x(1))
A = A*eye(2) A=[A ;r]
11. A = -2*ones(3,3); r=r(2)
A(2,2) = 5; Donnez la matrice A donnée par la syntaxe
A = A.*eye(3) suivante :
12. A = [-2; 4; 3]; A = [1 2 3 4; 5 6 7 8 ; 9* ones(1,4); zeros(1,4)]

1
Extrayez la sous matrice 3*3 donnée par B = Trouvez le résultat des opérations suivantes :
A(1:3,1:3) 1) A./B
A=eye(4) 2) B./A
B=ones(3) 3) A.\B
C=ones(2,6) 4) B.\A
D=zeros(5) 5)A./2
E=zeros(2,6) 6) 2./A
F=abs([2.5, -3.2, 6, -9, pi, -pi])
G=sign([2.5, -3.2, 6, -9, pi, -pi]) Exercice 8
Définissez les variables suivantes :
H=[zeros(2,3) ones(2,5)]
A=[1 2 3; 4 5 6] , B=[0 4 -1; 7 2 8].
K=[zeros(2,3) ones(3,5)]
Que sera le résultat des opérations suivantes ?
a=max([2.5, -3.2, 6, -9, pi, -pi]) 1) A<B
b=min([2.5, -3.2, 6, -9, pi, -pi]) 2) B<A
Comparez les deux variables x et y définies 3) B>A
comme suit : 4) 2<A
x=sum([2.5, -3.2, 6, -9, pi, -pi])/ length([2.5, -3.2, 5) A<2
6, -9, pi, -pi]) A = [-4;1;-1, 2;-1;1]; A = [A, [0;-2;1]]
y=mean([2.5, -3.2, 6, -9, pi, -pi]) 2. P = [1,1,1,1]; B =polyval(P,1)
Que représentent x et y ? 3. C = [ones(3,2),zeros(3)]
4. D = [0,1,2,4,8;3,2,1,9,5;7,1,0,4,2]
Exercice 7 5. E = max(D)
Générez les variables suivantes : A=[1 2 3] et 6. F = D < 5
B=[2 4 6] 7. G = D ; G(find(G < 5))=5
II Définissez les variables suivantes :
 1 2 3
 
A =  4 5 6 , x = (− 1.3 1.74 4) et r = (10 11 12)
7 8 9
 
1. Définissez ces matrices
2. Quels effets auront les commandes suivantes ?
x(5)=abs(x(1))
A=[A ; r]
r=r(2)

III Soient A et B les deux vecteurs suivants :


A et B sont les vecteurs ligne (1 3 −6 5 0 2) et (2 3 4 0 7 2)
1. Définissez A et B
2. Donner la commande qui permet de calculer la taille de A et B.
3. Ecrivez une instruction qui permet de calculer : S =  A(k ) B(k )

IV Créez la matrice suivante :


 3 4 15 14 9 
 
 1 2 9 11 12 
A = 4 3 6 1 5 
 
 7 7 11 13 12 
 3 5 10 16 11
 
1. Affecter à (Al) le nombre de lignes de A et à (Ac) le nombre de colonnes de A.

2
2. Ecrivez un fonction qui remplacera chaque élément multiple de 3 par le nombre 0. (Conseil : utilisez la
commande modulo mod(a,b) pour déterminer si un nombre est un multiple de 3).
3. ´Ecrivez une fonction qui remplacera chaque élément de la diagonale de A par 1.

V. Boucle for ou vectorisation?


1. a) Générez le vecteur a = (0 1 2 3 4 5 6).
b) A partir du vecteur a, générez le vecteur b = (0 1 4 9 16 25 36) en une seule opération, sans utiliser de
boucle for ... end.
6
c) Calculez sans boucle la somme S= b e
n =0
n
−a n / 10

2. a) Soit le vecteur a défini par a = ( 3+4i 5+9i −3−4i −5−9i 3−4i 5−9i −3+4i −5+9i ) :
à l'aide d'une boucle for ... end et d'une instruction conditionnelle if ... end, générez le vecteur b contenant les
éléments de a dont la partie imaginaire est positive.
b) Générez maintenant le vecteur b sans utiliser de boucle for ... end. Vous pourrez faire appel à l'instruction
find.

VI Génération et visualisation des signaux dans Matlab


1. a) Produire et tracer le signal s(t) = 2 sin(6  t) pour t entre 0 et 1. Utiliser une période
d’échantillonnage de t = 0.01 sec. Ajouter un titre et des descriptions aux axes. Conseil: regarder les
commandes title, xlabel, ylabel et plot.
b) Pour étudier l’influence de l’exposant dans une sinusoïde atténuée, tracer dans le même graphique les
signaux sk(t) = 2 sin(6  t) exp(− k t) pour k = 0;1; … ;5 pour t entre 0 et 1 en utilisant une période
d’échantillonnage de t = 0.01 sec.
2 a) Tracer la fonction y = 3x + ln(x + ) + 1 dans l’intervalle [−1,+1]. On utilisera les fonctions
2 2

linspace, log et plot.


b) Tracer la surface z = sin( x + y ) pour 0  x, y  4  . On utlisera les fonctions linspace, meshgrid
2 2

et surf.

VII 1. Définissez dans MATLAB le nombre complexe c de module 0.5 et de phase /3.
2. Ecrivez une fonction qui permet de calculer la partie réelle (cr), la partie imaginaire (ci) et le conjugué
(cc) de c.
II. Boucle for ou vectorisation?
1. a) Construire un vecteur u de taille n dont les coordonnées sont “aléatoires” `a l’aide de
la commande randn(m,n).
n
b) Calculer la somme S = exp(u(i) ) d’une part à l’aide d’une boucle for, d’autre part par vectorisation
i =1
2

(utiliser sum).

2. a) Générez le vecteur a = (0 1 2 3 4 5 6).


b) A partir du vecteur a, générez le vecteur b = (0 1 4 9 16 25 36) en une seule opération, sans utiliser de
boucle for ... end.
6
c) Calculez sans boucle la somme S= b e
n =0
n
−a n / 10

3. a) Soit le vecteur a défini par a = ( 3+4i 5+9i -3-4i -5-9i 3-4i 5-9i -3+4i -5+9i ) :
à l'aide d'une boucle for ... end et d'une instruction conditionnelle if ... end, générez le vecteur b contenant les
éléments de a dont la partie imaginaire est positive.

3
b) Générez maintenant le vecteur b sans utiliser de boucle for ... end. Vous pourrez faire appel à l'instruction
find.
c) Générez le vecteur m contenant les modules des éléments du vecteur a.
d) Générez le vecteur p contenant les phases des éléments du vecteur a.

VIII Génération et visualisation des signaux dans Matlab


1. a) Produire et tracer le signal s(t) = 2 sin(6  t) pour t entre 0 et 1. Utiliser une période
d’échantillonnage de t = 0.01 sec. Ajouter un titre et des descriptions aux axes. Conseil: regarder les
commandes title, xlabel, ylabel et plot.
b) Pour étudier l’influence de l’exposant dans une sinusoïde atténuée, tracer dans le même graphique les
signaux sk(t) = 2 sin(6  t) exp(− k t) pour k = 0;1; … ;5 pour t entre 0 et 1 en utilisant une période
d’échantillonnage de t = 0.01 sec. Utiliser un type de ligne différent pour chaque signal. Ajouter un titre et
des descriptions aux axes.
IX Définir en une ligne le vecteur à composantes sin(1), sin(4), sin(7), sin(10), ..., sin(10000)
Faire la même chose en utilisant une boucle. Comparer les temps d'execution.

X Générez une variable x de -4 à 4 avec un incrément de 0.1. Donner les instructions qui permet de tracer la
fonction y=x2+3x+4.
Dessiner sur le même graphe la fonction z=xcos(x)-sin(x)

XI 1. Ecrire la fonction minmax qui renvoie le minimum et le maximum d’un vecteur. Appliquer la fonction
au cosinus d’un vecteur allant de -/2 à 3/2 avec un pas de /100
2. En utilisant la fonction nargin (qui indique le nombre d’arguments en entrée d’une fonction), écrire une
fonction varcov qui calcul la variance (var ) de la variable passée en paramètre et la covariance (cov) s’il y a
deux arguments ; dans ce dernier cas, un message d’erreur sera affiché si les 2 vecteurs n’ont pas la même
taille.
XII Résoudre à l’aide de matlab le système suivant :
6x + y − 5z = 10
2x + 2y + 3z = 11
4x + 9y + 7z = 12
XIII 1. Signal carre : effectuer le developpement en série de Fourier du signal carre
4
2 𝑛 𝑠𝑖 𝑛 𝑒𝑠𝑡 𝑖𝑚𝑝𝑎𝑖𝑟
𝑏𝑛 = (1 − (−1) = {𝑛𝜋
𝑛𝜋 0 𝑠𝑖 𝑛 𝑒𝑠𝑡 𝑝𝑎𝑖𝑟

2. Signal triangulaire. On considère la fonction g T–périodique dont le graphe est

Fig. 2 – Signal triangulaire


4
2 𝑠𝑖 𝑛 𝑒𝑠𝑡 𝑖𝑚𝑝𝑎𝑖𝑟
𝑎𝑛 = (𝑛𝜋)2 (1 − (−1)𝑛 = {(𝑛𝜋)2 1.
0 𝑠𝑖 𝑛 𝑒𝑠𝑡 𝑝𝑎𝑖𝑟

4
sin(x ) si x  
XIV On considère la fonction sur l'intervalle [0; 2] : f ( x ) = 
cos(x ) si non
Ecrire une fonction MATLAB codant cette fonction mathématique.
XV L’intensité de diffraction par une fente de largeur a est donnée par :
 sin(ax ) 
2

I = I0  
 ax 
Les minimums de l’intensité sont donnés par x=k/a avec k0 Localiser les minimums et les maximums de
l’intensité.
XVI
On se propose de modéliser l’équation régissant l’éloignement d’une étoile en utilisant la méthode
des moindres carrés. Les résultats expérimentaux donnant l’évolution de la distance de l’étoile en
fonction du temps sont donnés par le tableau suivant :
t 1 1.5 2 2.5 3. 3.5 4
d 4.47 5.39 6.54 7.82 9.19 10.60 12.00
1. Représenter la distance en fonction du temps.
2. Le modèle peut donc s’écrire :d= a e−t+bt.
3. Déterminer a et b en utilisant la régression linéaire. Représenter le modèle
4. Représenter la distance en fonction du temps.
5. On suppose que l’évolution de l’étoile a une tendance linéaire et exponentiel donnée par
d(t ) = (a 2 + b 2 )t + (1 − a)e (b − t )
où a et b sont les paramètre qu’on cherche à optimiser pour rapprocher le model aux points expérimentaux.
Ecrire deux fonctions et un script qui permet de déterminer a et b en utilisant fminsearch.
6. Donner les valeurs de a et b en prenant comme valeurs approximatives a  0.25 et b  1.5.
7. Représenter les points expérimentaux et le modèle pour un intervalle de 1 à 4 avec un pas de 0.01
Partie B
8. Posant x= e−t/t et y=d(t)/t tracer y en fonction de x et remarquer l’allure linéaire de la courbe. Le
modèle précédent devient avec ces nouvelles données :
y = c + d x avec c = a 2 + b 2 et d = (1 − a)e b
C'est-à-dire on passe d’une régression non linéaire à une régression linéaire.
9. Déterminer c et d en utilisant la régression linéaire. Représenter le modèle pour le même intervalle.
(c - x 2 )
10. Définissez la fonction fc(x) = (1 - x)e −d
Tracer cette fonction et en déduire une valeur approchée qui annule la fonction.
11. calculer z le zéro de la fonction fc
12. comparer z avec a et (c - z 2 ) avec b
XVII. 1. Le spectre d’énergie lumineuse radié par un corps noir est donné en fonction de la longueur d’onde
 et de la température T par la distribution de Planck :

avec q(, T) en W/m3 , c = 3 × 108 m/s vitesse de la lumière, h = 6.62 × 10−34 J.s constante de Planck et k
= 1.38 × 10−23 J.K−1.molecule−1 constante de Boltzmann
Ecrire un programme qui trace la densité q(, T) en fonction de  pour T = 1500, 2000, 2500 et 3000 K. Les
abscisses  devront apparaıtre en µm.
2. Pour calculer la capacité calorifique Cp d’un gaz en fonction de la température T (en Kelvin), on dispose
de corrélations du type :
5
Il est souvent intéressant de calculer également la primitive de cette fonction, qui s’exprime par :

1. Ecrire dans un fichier une fonction MATLAB appelée cpip qui reçoit en entrée la température T et les
coefficients A, B, C, D, E, et calcule Cp et Ip en sortie. On spécifiera le nom du fichier utilisé.
2. Ecrire un programme MATLAB qui utilise la fonction précédente pour tracer Cp(T) et Ip(T) sur
l’intervalle T 2 [250 K, 3000 K].
3. Pour des raisons pratiques, on veut que la fonction n’ait comme argument d’entrée que la température T.
Comment faire ? Réécrivez la fonction et le programme.
3. Pour calculer les propriétés thermiques d’un matériau, on colle une plaque chauffante à l’extrémité d’un
cylindre très long de ce matériau, et dont les parois latérales sont soigneusement isolées thermiquement. La
plaque chauffante envoie un échelon de densité de flux thermique Q (connu) dans le matériau, et on mesure
la température T(x=0,t) au niveau de la plaque chauffante au cours du temps.
La théorie montre que la température T(x = 0, t) est donnée par :

où T0 est la température initiale du matériau et e est l’effusivité thermique du matériau.


Un relevé de valeurs expérimentales :
T de 20s à 400s avec un pas de 20s et T(0,t)= 325.23 317.84 314.57 312.62 311.28 310.30 309.54
308.92 308.41 307.98 307.61 307.28 307.00 306.74 306.51 306.31 306.12 305.95 305.79 305.64
Ecrire un programme MATLAB qui détermine la valeur de T0 et e à partir de ces résultats expérimentaux.
On donne Q = 1000 W/m2.

XVIII polynômes
1. Définir le polynôme P(x) = x3+4x2-5x+2
2. Calculer ses racines
3. Ne retenir que les racines réelles
4. Representer le polynôme dans l’intervalle -6 à 6.avec un pas de 0.01

XIX Écrire une fonction "monexp" qui calcule l'exponentielle d'un réel à partir du développement de Taylor
de la fonction exponentielle. Comment modifier cette fonction pour que, si elle reçoit une matrice, la
fonction calcule simultanément l'exponentielle de tous les éléments de la matrice. (La fonction renvoie alors
une matrice).
XX Ecrire une fonction "fibo" qui prend comme arguument un naturel "n" et qui calcule les n premiers
termes de la suite de Fibonacci. Cette suite F(n) est définie comme: F(n) = F(n-1)+F(n-2), avec F(1)=F(2)=1.
Exercice 16
XXI Ecrire une fonction "monsort" qui prend un vecteur de nombres réels comme argument et qui renvoie,
comme résultat, ce même vecteur avec les éléments triés par ordre croissant. Comparez votre programme
(résultats et performances) avec la fonction sort de Matlab.

6
V Soit à optimiser la fonction f(x) = exp(−x2) (x3+4x+1)
1. Donner les instructions qui ont pour effet de définir la fonction et de la tracer. On prendra pour
intervalle [-2,2] avec un pas de 0.01. Expliquer comment peut on déterminer approximativement la position
du minimum de la fonction f. Ce minimum étant dans les environs de −0.9, déterminer la valeur de ce
minimum à l’aide de Matlab (donner la commande correspondante).
2. Déterminer le maximum de la fonction f sachant qu’il est, d’après le graphique, dans les environs de
0.7.

On considère les données suivantes :


xi -2 -1 0 1 2
yi 0.5 0.5 2 3.5 3.5
On désire modéliser la relation entre x et y par la fonction linéaire suivante (droite)
y(x) = +x
Trouver les valeurs de  et  rendant minimale la quantité

 [y(xi)−yi]2
i
On commencera par calculer les matrices C,d,A,b et L.

2. Calculer le vecteur d'erreur ainsi que sa norme.


Application 2
Les relevés expérimentaux d'un processus physique donnent :
xi 0.2 0.5 1 1.5 2.0 3.0
yi 0.3 0.5 0.8 1.0 1.2 1.3

1. Tracer les yi en fonction des xi.


2. La caractéristique est linéaire au voisinage de l'origine et présente une asymptote horizontale pour les
grandes valeurs de x. On décide donc d'adopter le modèle suivant :
f(x) = 1[(x)/(1+x)]+2(1−e−x)
Déterminer les valeurs des deux coefficients.
3. Tracer sur un même graphique le modèle et les données expérimentales.

1. Equation non linéaire


Résoudre l’équation exp(x)+x^2-1.2 = 0 en utilisant Matlab
- d’abord analytiquement.
- ensuite numériquement, le graphique situe la solution aux environs de x = 0.14.
2. Systèmes d'équations non linéaires
Soit à résoudre le système d'équations non linéaires suivant :
ex y + x2 +1.2 = 0
x2 + y2 + 0.55 x = 0
i). Donner la commande qui résout analytiquement ce système d’équation.
ii). Écrire une fonction sous MATLAB donnant la valeur de la fonction dont on cherche les
racines en un point u = [x,y] quelconque
function F = sys(u)
u et F sont des vecteurs de dimension 1×2.
Résoudre ce système numériquement à l’aide de fsolve autour de x = 0.3 et y = 0.03.
7
Soit à minimiser la fonction f(x) = exp(−x2) (x3+4x+1)
1. Tracer la fonction et expliquer comment peut déterminer approximativement la position de
son minimum. Ce minimum étant dans les environs de −0.9, déterminer la valeur de ce
minimum à l’aide de Matlab.
2. Déterminer le maximum de la fonction f sachant qu’il est d’après le graphique dans les
environs de 0.7.

La concentration z(t) dans un processus chimique peut être modélisée par la loi suivante :
z(t) = a1+a2eb1t+a3eb2t
Le relevé expérimental de la concentration est donné sur le tableau suivant :

tk 0 0.5 1 1.5 2 3 5 8 10
zk 3.85 2.95 2.63 2.33 2.24 2.05 1.82 1.8 1.75

En utilisant la fonction fminsearch, trouver les paramètres ai et bi minimisant l'erreur quadratique


moyenne. On prendra comme solution initiale : a1 = 1.75, a2 = 1.16, a3 = 0.8, b1 = −0.5, b2 = −2.

Exercise 1.1
Create the following sequences and plot them using the MATLAB function stem() .

Exercice 14

On considère la superposition de deux ondes élastiques (par exemple la déformation d'un fil) l'une
progressant dans le sens des x > 0 l'autre dans le sens des x < 0. La solution mathématique de l'équation de
propagation est : u(x; t) = f(x + t) + f(x - t) où la fonction f est liée à la déformation initiale de la corde et est
définie par :

8
Ecrire un programme pour tracer la déformation u de la corde sur l'intervalle x X [-15; 15] aux temps t = 0;
3; 6; 9; 12. On devra programmer la fonction f au choix dans une instruction inline ou dans un fichier
fonction.

Exercice 4 { Indiquez, en face de chacun des programmes ci-dessous, ce que vaut la matrice A apr_es
ex_ecution. Si la s_equence d'instructions doit engendrer une erreur, indiquez simplement <erreur>.

Les lignes de courant d'un écoulement bidimensionnel incompressible autour de formes simples peuvent être
tracées simplement à partir du calcul d'une fonction complexe f(z), où z = x+iy représente la position d'un
point (x; y) dans le plan.

Pour ce faire, on utilise le fait que les lignes de courant sont les courbes (x; y) = Cte dans le plan, où :
(x; y) = Im f(z). Ainsi l'écoulement autour d'un coin d'angle /n de sommet 0 est représenté par la fonction
: f(z) = zn
Ecrire un programme qui trace les lignes de courant dans un coin d'angle /4. On effectuera tout d'abord un
maillage en polaires du domaine intéressant.

Exercice 3:

1. Tracer la fonction x*atan(x) sur l'intervalle [-5,5] avec la précision "visuelle".

2. Tracer sa dérivée sur le même intervalle.

3. Définir le vecteur de discrétisation de [0,1] avec le pas alterné 0.01/0.03 : les noeuds seront en 0,
0.01, 0.04, 0.05, 0.08, 0.09, 0.12 etc...
Réponse possible:
>> f=[0:0.04:1];
>> g=zeros(1,51);
>> g(1:2:51)=f(1:26);
>> g(2:2:50)=f(1:25)+0.01;
>> g

4. Proposer une formule pour approcher la dérivée seconde d'une fonction à partir des valeurs de la
fonction sur cette partition (utiliser le développement de Taylor pour ajuster les coefficients).
9
Réponse possible :
>> diffdoubles=2*( (g(2:50)-g(1:49)).*y(3:51) - (g(3:51)-g(1:49)).*y(2:50) + (g(3:51)-
g(2:50)).*y(1:49) )./( 0.01*0.03*(g(3:51)-g(1:49)) );

5. Comparer graphiquement la dérivée seconde numérique de la fonction sin(2x) avec le graphique


exact. .
Réponse :
>> f=[0:0.04:1];
>> g(1:2:51)=f(1:26);
>> g(2:2:50)=f(1:25)+0.01;
>> y=sin(2*g);
>> diffdoubles=2*( (g(2:50)-g(1:49)).*y(3:51) - (g(3:51)-g(1:49)).*y(2:50) +
(g(3:51)-g(2:50)).*y(1:49) )./( 0.01*0.03*(g(3:51)-g(1:49)) );
>> plot(g(2:50),diffdoubles,g(2:50),-4*sin(2*g(2:50)))

Exercice 5 :

1. Définir en une ligne le vecteur à composantes sin(1), sin(4), sin(7), sin(10), ..., sin(10000).
Faire la même chose en utilisant un boucle. Comparer les temps d'execution.

2. Considérons les deux transformations d'un vecteur v :


>> for i=2:length(v), v(i)=v(i)-v(i-1); end
>> for i=1:length(v)-1, v(i)=v(i)-v(i+1); end
Une des deux peut être programmée avec une grande économie de temps d'execution.
Laquelle? Comment?
Réécrire l'autre transformation en utilisant un boucle "while".

3. Considérons la transformation suivante :


>> x=[1:1000].^2;
>> for i=2:1000, x(i)=x(i)+x(i-1); end ?
C'est une vraie récurrence, donc l'usage d'une boucle semble justifié.

(a) Expliquer alors le résultat suivant :

>> x=[1:1000].^2;
>> tic, y=[1:1000].*([1:1000]+1).*(2*[1:1000]+1)/6; Time1=toc;
>> tic, for i=2:1000, x(i)=x(i)+x(i-1); end, Time2=toc;
>> x(1:7),y(1:7),Time2/Time1

ans =

1 5 14 30 55 91 140

ans =

1 5 14 30 55 91 140

ans =

12.3685

(b) Améliorer l'algorithme suivant :


>> x=[1:1000].;
>> for i=2:1000, x(i)=x(i)+x(i-1); end.

10
4. Montrer que toute boucle "for" peut être réécrite comme un boucle "while".
Proposer un exemple de boucle "while" qui ne peut pas être réécrite comme
un boucle "for". (Suggestion : la méthode de Newton vue en Maple...)

11
10 Résolution matricielle de systèmes linéaires. Résoudre matriciellement
les systèmes suivants. Si Matlab affiche un message d’erreur, dire pourquoi.
(i)
6x + y ¡ 5z = 10
2x + 2y + 3z = 11
4x + 9y + 7z = 12
(ii)
6x + y ¡ 5z = 10
2x + 2y + 3z = 11
8x + 3y+ 2z = 12
(iii)
x + 2y + 3z + 4t = 1
2x + 3y + 4z + t = ¡2
12
¡2x + 4y - 5z + 2t = 0
8x + y - z + 3t = 1
11écrire une fonction qui prend en paramètre un entier n et qui construit la matrice ci-dessous. Ne pas
utiliser de boucles for, ni while.

Pour n = 1, cela donne et pour n = 2, c’est la matrice .

8.6 Chute libre


On consid`ere dans cet exercice un parachutiste qui saute d’un ballon `a vitesse nulle et descend en chute libre. Les
variables utiles `a la résolution sont sa position y(t) orientée vers le bas, sa vitesse v(t) ou ˙y(t) et son accélération a(t) ou

¨y(t). L’équation du mouvement du parachutiste découle de la loi de Newton : On consid`ere


généralement que la force de frottement aérodynamique est proportionnelle au carré de la vitesse ; on a alors :

Admettant que : – la masse m du parachutiste est de 80 [kg], – la vitesse maximum atteinte est d’environ 200 [km/h],
écrivez un programme Matlab répondant aux points suivants : 1. Sachant que le frottement de l’air compense exactement
le poids du parachutiste lorsque la vitesse maximum est atteinte, calculez le coefficient µ du frottement aérodynamique.
2. Résolvez l’équation différentielle de l’évolution du parachutiste et déterminez le temps et la hauteur nécessaires pour
atteindre le 98% de la vitesse limite.
8.7 Saut `a l’élastique
Dans ce qui suit, on se propose d’aborder le probl`eme du saut `a l’élastique par une modélisation progressive [1]. Les
param`etres nécessaires `a sa description sont : – la masse m = 80 [kg] du sauteur,
– le coefficient µ = 0.25 [N/(m/s)2] du frottement aérodynamique
– la longueur L = 150 [m] de l’élastique,
– le coefficient d’élasticité k = 10 [N/m] de l’élastique,
– le coefficient de frottement interne _ = 7 [N/(m/s)] de l’élastique.
Les variables utiles `a la résolution du probl`eme sont :
– la position y(t),
– la vitesse v(t) ou ˙ y(t),
– l’accélération a(t) ou ¨y(t).
L’équation du mouvement du sauteur découle de la loi de Newton :

13
écrivez un programme Matlab répondant aux points suivants :
1. Résolvez l’équation différentielle en considérant un élastique sans frottements internes
(_ = 0).
2. Tracez les graphes de position, vitesse et accélération ; vous paraissent-ils raisonnables
?
3. Résolvez l’équation différentielle prenant en compte les frottements de l’élastique.
4. Tracez les graphes ; quelle est l’importance des frottements internes ?
5. A quel instant et quelle vitesse, l’élastique commence-t-il `a se tendre ?
6. Que valent la vitesse maximum et l’accélération maximum? A quels instants apparaissentelles
?
8.8 Particule dans un champ électromagnétique
On consid`ere une particule de masse m = 50 × 10−31 [kg] et de charge q = 8 × 10−19 [C]
se déplaçant dans un champ électrique uniforme ~E = (1; 1; 1) [V/m] et un champ magnétique uniforme ~B = (0.0;
0.1; 0.0) [T]. Sachant qu’en l’instant t = 0, la particule quitte
l’origine du référentiel avec une vitesse nulle :
1. Calculez les composante de la vitesse et la position de la particule au cours du
temps.
2. Tracez des graphes similaires `a ceux de la figure 14.
3. Sur un nouveau graphe 3D, dessinez les vecteurs ~E et ~B.
fmy / septembre 2002

14