Exercice 1:
Consiste à créer une fonction quelconque qui prendrait un nombre comme un argument et renverrait un nombre –1, 0 ou 1 en fonction du signe du nombre introduit comme l’argument.
Le script :
function s=signe(n)
if (n<0)
s=-1;
elseif (n>0)
s=1;
else
s=0;
endif
endfunction
L’exécution:
octave-3.0.1.exe:7> signe(-20)
ans = -1
octave-3.0.1.exe:8> signe(0)
ans = 0
octave-3.0.1.exe:9> signe(35)
ans = 1
Exercice 2:
Consiste à créer une fonction qui prendrait un nombre comme un argument et renverrait une chaine de caractere comme le résultat.
function dept(n)
switch (n)
case {75 77 78}
disp("Ile-de-France")
case 976
disp("DOM")
otherwise
if (1<=n && n<=90)
disp("Province")
elseif (91<=n && n<=95)
elseif (971<=n && n<=974)
disp("Code incorrect")
endswitch
octave-3.0.1.exe:23> dept(974)
DOM
octave-3.0.1.exe:24> dept(103)
Code incorrect
octave-3.0.1.exe:25> dept(13)
Province
octave-3.0.1.exe:26> dept(77)
Ile-de-France
octave-3.0.1.exe:27> dept(92)
Exercice 3:
Consiste à créer une fonction qui prendrait un vecteur comme un argument et renverrait le résultat numérique.
a) Le résultat c’est la somme simple de tous les éléments du vecteur.
function soma(v)
somme = 0;
for pos = [1:numel(v)]
somme = somme + v(pos);
endfor
somme
octave-3.2.4.exe:10> B = [4 67 12 64 23 5 66 13]
B =
4 67 12 64 23 5 66 13
octave-3.2.4.exe:12> soma(B)
somme = 254
b) Le résultat c’est la somme des elements positives du vecteur.
Le script:
function somb(v)
if v(pos) > 0
octave-3.2.4.exe:29> B=[5 14 -8 4 -10 9]
5 14 -8 4 -10 9
octave-3.2.4.exe:30> somb(B)
somme = 32
octave-3.2.4.exe:31> C=[-3 5 7 -10]
C =
-3 5 7 -10
octave-3.2.4.exe:32> somb(C)
somme = 12
c) Le résultat c’est la moyenne de tous les valeurs du vecteur.
function somc(v)
moyenne = somme/numel(v)
octave-3.2.4.exe:36> A=[1 2 3 4 5]
A =
1 2 3 4 5
octave-3.2.4.exe:37> somc(A)
moyenne = 3
octave-3.2.4.exe:38> B
octave-3.2.4.exe:39> somc(B)
moyenne = -0.25000
d) Le résultat c’est la moyenne de tous les valeurs du matrice à 12 colonnes.
function somd(M)
for ligne = [1:rows(M)]
for colonne = [1:columns(M)]
somme = somme + M(ligne,colonne);
moyenne = somme/numel(M)
octave-3.2.4.exe:69> M=[1 34 5 12 -4 6 8 12 -6 22 5 23;-7 -8 2 3 7 1 65 12 -30 12 4 -2;1 2 3 4 5 6 7 -8 -9 -10 -11 -12]
M =
1 34 5 12 -4 6 8 12 -6 22 5 23
-7 -8 2 3 7 1 65 12 -30 12 4 -2
1 2 3 4 5 6 7 -8 -9 -10 -11 -12
octave-3.2.4.exe:68> somd(M)
moyenne = 12.917
e) Le résultat c’est une colonne qui contient les moyennes des lignes d’une matrice à 12 colonnes.
function some(M)
T(ligne) = somme/columns(M);
moyenne = T'
octave-3.2.4.exe:1> R=[1 1 1 1 2 2 2 2 3 3 3 3;4 4 4 4 5 5 5 5 6 6 6 6]
R =
1 1 1 1 2 2 2 2 3 3 3 3
4 4 4 4 5 5 5 5 6 6 6 6
octave-3.2.4.exe:2> some(R)
moyenne =
2
5
octave-3.2.4.exe:4> M=[1 34 5 12 -4 6 8 12 -6 22 5 23;-7 -8 2 3 7 1 65 12 -30 12 4 -2; 1 2 3 4 5 6 7 -8 -9 -10 -11 -12]
octave-3.2.4.exe:5> some(M)
9.8333
4.9167
-1.8333
Exercice 4:
Consiste à créer des fonctions qui renverrait les valeurs toruvés dans un vecteur ou une matrice et/ou leurs indices.
a) Le résultat c’est l’indice du dernier zéro d’un vecteur.
function chera(v)
pos = numel(v);
while (pos > 0)
if (v(pos) == 0)
break
pos--;
endwhile
pos
octave-3.2.4.exe:2> A=[1 2 0 4 5 0 6 7 0 9]
1 2 0 4 5 0 6 7 0 9
octave-3.2.4.exe:3> chera(A)
pos = 9
octave-3.2.4.exe:4> B=[1 2 3]
1 2 3
octave-3.2.4.exe:5> chera(B)
pos = 0
b) Le résultat c’est l’indice du premier valeur plus petit que la seuil introduit comme un argument.
function cherb(v,seuil)
pos = 1;
while (pos <= numel(v))
if (v(pos) < seuil)
pos++;
if (pos>numel(v))
pos = 0;
octave-3.2.4.exe:8> C=[11 15 16 26 17 27 51 26 7 25 73 15]
11 15 16 26 17 27 51 26 7 25 73 15
octave-3.2.4.exe:9> cherb(C,10)
c) Le résultat c’est la valeur de la première colonne pour laquelle la valeur contenue dans la deuxième colonne est inferieur à la seuil introduit comme un argument.
function cherc(m,seuil)
ligne = 1;
while (ligne <= rows(m))
if (m(ligne,2) < seuil)
ligne++;
if (ligne <= rows(m))
mois = m(ligne,1);
mois = 0;
mois
octave-3.2.4.exe:4> T=[3 1200;4 800;5 1500;6 700]
T =
3 1200
4 800
5 1500
6 700
octave-3.2.4.exe:5> cherc(T,1000)
mois = 4
octave-3.2.4.exe:6> T=[3 1200;4 1800;5 1500;6 1700]
4 1800
6 1700
octave-3.2.4.exe:7> cherc(T,1000)
mois = 0
Exercice 5:
Consiste à créer des fonctions qui renverrait les valeurs minimales trouvés dans un vecteur ou une matrice ou leurs indices.
a) Le résultat c’est la valeur minimale d’un vecteur.
function mina(v)
if (v(1)<v(2))
min = v(1);
min = v(2);
for pos = [3:numel(v)]
if (v(pos)<min)
min = v(pos);
min
octave-3.2.4.exe:10> B=[13 36 74 35 79 81 12 67]
13 36 74 35 79 81 12 67
octave-3.2.4.exe:11> mina(B)
min = 12
octave-3.2.4.exe:12> B(7)=35
13 36 74 35 79 81 35 67
octave-3.2.4.exe:13> mina(B)
min = 13
b) Le résultat c’est le mois pour lequel la valeur de la deuxième colonne est minimale.
function minb(m)
min = m(1,2);
for pos = [2:rows(m)]
if (m(pos,2)<=min)
min = m(pos,2);
ligne = pos;
mois = m(ligne,1)
octave-3.0.1.exe:25> T=[3 1200;4 800;5 1500;6 700]
octave-3.0.1.exe:26> minb(T)
mois = 6
octave-3.0.1.exe:27> T(4,2)=1700
octave-3.0.1.exe:28> minb(T)
octave-3.0.1.exe:29> T(4,2)=800
...
Santaradesu