Enonce 3(3).doc

(56 KB) Pobierz
Kinga Wesolowska 3GT 164941

Kinga Wesolowska      3GT            164941

 

Enoncé 3

 

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) % fonction prend pour argument un nombre quelconque

if (n<0) % et verifie s’il est negatf, si oui

s=-1; % il affiche –1, si non

elseif (n>0) % il verifie si le nombre est positif, si oui

s=1; % il affiche 1, si non

else % le nombre doit être égal à zero, il n’y a pas d’autre possibilité, alors

s=0; % le programme affiche 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.

 

Le script :

 

function s=dept(n) % fonction prend pour argument un nombre n quelconque

switch (n) % et si

   case {75 77 78} % n est égale à 75, 77 ou 78

      s= "Ile-de-France" ; % attribue un tel chaîne de caractères à la variable s, sinon si

   case 976 % n est égale à 976

      s="DOM" ; % attribue un tel chaîne de caractères à la variable s, sinon si

   otherwise % n est autre que 75, 77, 78 et 976

      if (1<=n && n<=90) % vérifie si n est d’intervalle de 1 à 90

         s="Province" ; % et attribue un tel chaîne de caractères à la variable s, sinon si

      elseif (91<=n && n<=95) % n est d’intervalle de 91 à 95

      s= "Ile-de-France" ; % attribue un tel chaîne de caractères à la variable s, sinon si

   elseif (971<=n && n<=974) % n est d’intervalle de 971 à 974

      s="DOM" ; % attribue un tel chaîne de caractères à la variable s, sinon si

   else % n ne vérifie pas aucune condition

      s="Code incorrect" ; % attribue un tel chaîne de caractères à la variable s

   endif

endswitch

endfunction

 

L’exécution:

 

octave-3.0.1.exe:23> d=dept(974)

d = DOM

octave-3.0.1.exe:24> d=dept(103)

d = Code incorrect

octave-3.0.1.exe:25> d=dept(13)

d = Province

octave-3.0.1.exe:26> d=dept(77)

d = Ile-de-France

octave-3.0.1.exe:27> d=dept(92)

d = Ile-de-France

 

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.

 

Le script :

 

function somme=soma(v)

somme = 0; % j’inicie la variable somme avec la valeur 0

for pos = [1:numel(v)] % pour chaque position (pos) dans le vecteur la fonction va

   somme = somme + v(pos); % changer la valeur de somme actuelle en valeur nouvelle,

   augmentée par le nombre de cette position

endfor

endfunction

 

L’exécution:

 

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> somme=soma(B)

somme =  254

 

b)     Le résultat c’est la somme des elements positives du vecteur.

 

Le script:

 

function somme=somb(v)

somme = 0; % j’inicie la variable somme avec la valeur 0

for pos = [1:numel(v)] % pour chaque position (pos) dans le vecteur la fonction va

    if v(pos) > 0 % verifier si la valeur trouvée est positive, si oui il va

       somme = somme + v(pos); % changer la valeur de somme actuelle en valeur

       nouvelle, augmentée par le nombre de cette position

    endif

endfor

endfunction

 

L’exécution:

 

octave-3.2.4.exe:29> B=[5 14 -8 4 -10 9]

B =

 

    5   14   -8    4  -10    9

 

octave-3.2.4.exe:30> somme=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> somme=somb(C)

somme =  12

 

c)      Le résultat c’est la moyenne de tous les valeurs du vecteur.

 

Le script:

 

function moyenne=somc(v)

somme = 0; % j’inicie la variable somme avec la valeur 0

for pos = [1:numel(v)] % pour chaque position (pos) dans le vecteur la fonction va

   somme = somme + v(pos); % changer la valeur de somme actuelle en valeur nouvelle,

    augmentée par le nombre de cette position

endfor

moyenne = somme/numel(v); % je calcule la moyenne

endfunction

 

L’exécution:

 

octave-3.2.4.exe:36> A=[1 2 3 4 5]

A =

 

   1   2   3   4   5

 

octave-3.2.4.exe:37> moyenne=somc(A)

moyenne =  3

octave-3.2.4.exe:38> B

B =

 

   -3    5    7  -10

 

octave-3.2.4.exe:39> moyenne=somc(B)

moyenne = -0.25000

 

d)     Le résultat c’est la moyenne de tous les valeurs du matrice à 12 colonnes.

 

Le script:

 

function moyenne=somd(M)

somme = 0; % j’inicie la variable somme avec la valeur 0

for ligne = [1:rows(M)] % pour chaque ligne de la matrice et

    for colonne = [1:columns(M)] % pour chaque colonne de la matrice la fonction va

       somme = somme + M(ligne,colonne); % changer la valeur de somme actuelle en

       valeur nouvelle, augmentée par le nombre de cette position

    endfor

endfor

moyenne=somme/numel(M); % je calcule la moyenne

endfunction

 

L’exécution:

 

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> moyenne=somd(M)

moyenne =  12.917

 

e)      Le résultat c’est une colonne qui contient les moyennes des lignes d’une matrice à 12 colonnes.

 

Le script:

 

function moyenne=some(M)

for ligne = [1:rows(M)] % pour chaque ligne de la matrice

    somme = 0; % j’inicie la variable somme avec la valeur 0, et

    for colonne = [1:columns(M)] % pour chaque élément de cette ligne je

       somme = somme + M(ligne,colonne); % change la valeur de somme actuelle en

       valeur nouvelle, augmentée par le nombre de cette position

    endfor

    T(ligne) = somme/columns(M); % je crée un nouveau vecteur dans lequel je met les

    moyennes de chaque ligne

endfor

moyenne = T'; % je transpose le vecteur pour obtenir une colonne

endfunction

 

L’exécution:

 

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> moyenne=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]

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> moyenne=some(M)

moyenne =

 

   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.

 

Le script :

 

function pos=chera(v)

pos = numel(v); % on va commencer la recherche par le dernier élément du vecteur

while (pos > 0) % pour chaque élément du vecteur, la fonction va

    if (v(pos) == 0) % vérifier si cet élément est égal à zero, si oui

       break % on fini la recherche, si non

    endif

pos--; % on passe à un autre élément et repète les pas de while

endwhile % s’il y a le zero, c’est la position pour laquelle la fonction a fait ‘break’ et sortie de la boucle while, sinon c’est zero

endfunction

 

L’exécution:

 

octave-3.2.4.exe:2> A=[1 2 0 4 5 0 6 7 0 9]

A =

 

   1   2   0   4   5   0   6   7   0   9

 

octave-3.2.4.exe:3> pos=chera(A)

pos =  9

octave-3.2.4.exe:4> B=[1 2 3]

B =

 

   1   2   3

 

octave-3.2.4.exe:5> pos=chera(B)

pos = 0

 

b)     Le résultat c’est l’indice du premier valeur plus petit que la seuil introduit comme un argument.

 

Le script:

 

function pos=cherb(v,seuil)

pos = 1; % on va commencer la recherche par le premier élément du vecteur

while (pos <= numel(v)) % pour chaque élément du vecteur, la fonction va

   if (v(pos) < seuil) % vérifier si cet élément est inférieur à la seuil , si oui

      break % on fini la recherche, si non

   endif

pos++; % on passe à un autre élément et repète les pas de while

endwhile

if (pos>numel(v)) % si on a passé au dehors du vecteur, ça signifie qu’il n’y avait pas le nombre plus petit que la seuil, alors

  pos = 0; % on attribue la valeur zero à la variable position,

endif % s’il y a le zero, c’est la position pour laquelle la fonction a fait ‘break’ et sortie de la boucle while, sinon c’est zero

endfunction

 

L’exécution:

 

octave-3.2.4.exe:8> C=[11 15 16 26 17 27 51 26 7 25 73 15]

C =

 

   11   15   16   26   17   27   51   26    7   25   73   15

 

octave-3.2.4.exe:9> pos=cherb(C,10)

pos =  9

 

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.

 

Le script:

 

function mois=cherc(m,seuil)

ligne = 1; % on va commencer la recherche par la première ligne de la matrice

while (ligne <= rows(m)) % pour chaque élément de la deuxième colonne, la fonction va

   if (m(ligne,2) < seuil)  % vérifier si cet élément est inférieur à la seuil , si oui

      break % on fini la recherche, si non

   endif

ligne++; % on passe à une autre ligne et repète les pas de while

endwhile

if (ligne <= rows(m)) % si on a trouvé le nombre plus petit que la seuil dedans la matrice   mois = m(ligne,1); % le résultat c’est l’élément de la première colonne de la même ligne,

else % sinon

   mois = 0; % on a passé au dehors de la matrice, alors le résultat est zero.

endif

endfunction

 

L’exécution:

 

octave-3.2.4.exe:4> T=[3 1200;4 800;5 1500;6 700]

T =

 

      3   1200

      4    800

      5   1500

      6    700

 

...

Zgłoś jeśli naruszono regulamin