Enonce 3(1).doc

(45 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)

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.

 

Le script :

 

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)

      disp("Ile-de-France")

      elseif (971<=n && n<=974)

      disp("DOM")

      else

      disp("Code incorrect")

      endif

   endswitch

endfunction

 

L’exécution:

 

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)

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 soma(v)

somme = 0;

  for pos = [1:numel(v)]

  somme = somme + v(pos);

  endfor

somme

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

somme =  254

 

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

 

Le script:

 

function somb(v)

somme = 0;

  for pos = [1:numel(v)]

    if v(pos) > 0

    somme = somme + v(pos);

    endif

  endfor

somme

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> 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.

 

Le script:

 

function somc(v)

somme = 0;

  for pos = [1:numel(v)]

  somme = somme + v(pos);

  endfor

moyenne = somme/numel(v)

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> somc(A)

moyenne =  3

octave-3.2.4.exe:38> B

B =

 

   -3    5    7  -10

 

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.

 

Le script:

 

function somd(M)

somme = 0;

  for ligne = [1:rows(M)]

    for colonne = [1:columns(M)]

    somme = somme + M(ligne,colonne);

    endfor

  endfor

moyenne = somme/numel(M)

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

  for ligne = [1:rows(M)]

  somme = 0;

    for colonne = [1:columns(M)]

    somme = somme + M(ligne,colonne);

    endfor

  T(ligne) = somme/columns(M);

  endfor

moyenne = T'

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> 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> 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 chera(v)

pos = numel(v);

   while (pos > 0)

      if (v(pos) == 0)

      break

      endif

   pos--;

   endwhile

pos

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> chera(A)

pos =  9

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

B =

 

   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.

 

Le script:

 

function cherb(v,seuil)

pos = 1;

  while (pos <= numel(v))

    if (v(pos) < seuil)

    break

    endif

  pos++;

  endwhile

 

  if (pos>numel(v))

  pos = 0;

  endif

pos

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> 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 cherc(m,seuil)

ligne = 1;

  while (ligne <= rows(m))

    if (m(ligne,2) < seuil)

    break

    endif

  ligne++;

  endwhile

 

  if (ligne <= rows(m))

  mois = m(ligne,1);

  else

  mois = 0;

  endif

mois

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

 

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]

T =

 

      3   1200

      4   1800

      5   1500

      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.

 

Le script :

 

function mina(v)

if (v(1)<v(2))

   min = v(1);

   else

   min = v(2);

endif

for pos = [3:numel(v)]

   if (v(pos)<min)

      min = v(pos);

   endif

endfor

min

endfunction

 

L’exécution:

 

octave-3.2.4.exe:10> B=[13 36 74 35 79 81 12 67]

B =

 

   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

B =

 

   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.

 

Le script:

 

function minb(m)

min = m(1,2);

ligne = 1;

for pos = [2:rows(m)]

   if (m(pos,2)<=min)

      min = m(pos,2);

      ligne = pos;

   endif

endfor

mois = m(ligne,1)

endfunction

 

L’exécution:

 

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

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

T =

 

      3   1200

      4    800

      5   1500

      6   1700

 

octave-3.0.1.exe:28> minb(T)

mois =  4

octave-3.0.1.exe:29> T(4,2)=800

T =

 

      3   1200

      4    800

...

Zgłoś jeśli naruszono regulamin