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)
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.
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.
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).
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.
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 𝑠𝑖 𝑛 𝑒𝑠𝑡 𝑝𝑎𝑖𝑟
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 k0 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 :
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.
[y(xi)−yi]2
i
On commencera par calculer les matrices C,d,A,b et L.
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
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:
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)) );
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.
>> 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
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.
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