0% ont trouvé ce document utile (0 vote)
16 vues3 pages

Correc Rattrap2019

Le document présente des exercices d'algorithmique en Scilab, incluant la détermination de la puissance entière de 10 la plus proche d'un nombre donné et la création d'une fonction 'maximat' pour trouver les valeurs maximales dans une matrice. Des erreurs dans une version incomplète de la fonction 'maximat' sont identifiées et corrigées. Les exercices visent à renforcer les compétences en programmation et en manipulation de données dans Scilab.

Transféré par

koutika destinée
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues3 pages

Correc Rattrap2019

Le document présente des exercices d'algorithmique en Scilab, incluant la détermination de la puissance entière de 10 la plus proche d'un nombre donné et la création d'une fonction 'maximat' pour trouver les valeurs maximales dans une matrice. Des erreurs dans une version incomplète de la fonction 'maximat' sont identifiées et corrigées. Les exercices visent à renforcer les compétences en programmation et en manipulation de données dans Scilab.

Transféré par

koutika destinée
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

L2 SI-PC Outils numériques – Juin 2019 – 2 heures - Correction

Exercice 1 - Algorithmique
1 – Déterminer la puissance entière de 10 la plus proche de 347,234 , 2
ainsi que celle la plus proche de 0,2478, -1
puis compléter la fonction suivante, écrite sous Scilab, dont l’objet est de calculer la
puissance entière de 10 la plus proche de la valeur absolue d’un nombre x donné.
function [ m ]=Puissance10 (x ) % Ligne 1
y=abs(x) ; % Ligne 2
m=0 ; % Ligne 3
if y < 1 % Ligne 4
while y<10^(m-1), % Ligne 5
m=m-1 % Ligne 6
end ; % Ligne 7
if abs(y-10^m)>abs(y-10^(m-1)) % Ligne 8
m=m-1 % Ligne 9
end % Ligne 10
else % Ligne 11
while y>10^(m+1), % Ligne 12
m=m+1 % Ligne 13
end ; % Ligne 14
if abs(y-10^m)>abs(y-10^(m+1)) % Ligne 15
m=m+1 % Ligne 16
end % Ligne 17
end % Ligne 18
endfunction % Ligne 19

Exercice 2
on veut élaborer une fonction Scilab nommée maximat dont
les deux arguments d'entrée sont dans l'ordre :
- une matrice M   mi , j 1i p , à composantes mi, j réelles
1 j  q

- un entier d ,
les deux arguments de sortie de maximat sont dans l'ordre :

- un vecteur v   vi  , à composantes vi réelles,


1i p ou q

- un vecteur c  ci  , à composantes ci entières,


1i  p ou q

et qui doit effectuer la recherche suivante :


Si d  1 , on recherche le long de chaque colonne n° j de M , l'élément de plus grande
valeur que l' on place comme composante n° j du vecteur v . v sera alors un vecteur ligne.
La composante n° j du vecteur c est remplie avec le numéro de ligne où se situe l'élément
maximal de colonne n° j de M . c sera alors également un vecteur ligne de composantes à
valeur entière.
Par contre si d  1 , on recherche le long de chaque ligne n° i de M , l'élément de plus
grande valeur que l' on place comme composante n° i du vecteur v . v sera alors un vecteur
colonne. La composante n° i du vecteur c est remplie avec le numéro de colonne où se situe
l'élément maximal de ligne n° i de M . c sera alors également un vecteur colonne.

2.a. En supposant que vous disposez de la fonction maximat déjà écrite (correctement),
que contiennent les variables v et c après exécution du script ?
M=[1 2 3 4;-1 -4 -3 -2;103 10 104 11;-21. 300.15 100 -29];
d=1;
[v,c]=maximat(M,d)
c =[3. 4. 3. 3.]
v =[103. 300.15 104. 11.]

2.b. On vous propose ci-dessous une version de la fonction maximat incomplète et remplie
d'erreurs:
function [victor, compo,nini]=maximat(Matr, dimens)//Ligne 1
dimM=size(Matr);//Ligne 2
if dimens==1//Ligne 3
victor=zeros(dimM(1),1);//Ligne 4
compo=victor;//Ligne 5
for j=[Link]imM(2)//Ligne 6
victor(j)=Matr(1,j);//Ligne 7
compo(j)=1;//Ligne 8
for i=[Link]imM(1)//Ligne 9
if Matr(i,j)>vector(j)//Ligne 10
victor(j)=Matr(i,j);//Ligne 11
compo(i)=i;//Ligne 12
//Ligne 13
end//Ligne 14
end//Ligne 15
else//Ligne 16
...
end //Ligne 29
endunction//Ligne 30

Indiquer les 7 erreurs (en tenant compte du cahier des charges concernant la fonction
maximat).
Erreur 1 Ligne 1 : paramètre de sortie nini excédentaire.
Erreur 2 Ligne 4 : on explore la matrice le long de chaque colonne donc victor devrait être un vecteur
ligne d'après le cahier des charges. De plus, ...
Erreur 3 Ligne 4 : ...la plus grand dimension de victor devrait être égale au nombre de colonnes,
soit dimM(2). au finish,
victor=zeros(1,dimM(2));//Ligne 4
Erreur 4 Ligne 10 : victor(j) et non vector(j)
Erreur 5 Ligne 12: compo(j)=i;//Ligne 12
Erreur 6 Ligne 13: il manque end de fin de structure 'if'

Erreur 7 endfunction//Ligne 30

2.c. Compléter la fonction maximat précédente entre les lignes 16 et 29 de façon à ce que
la totalité des tâches que l'énoncé décrit soit bien effectuée.
else//Ligne 16
victor=zeros(dimM(1),1);//Ligne 17
compo=victor;//Ligne 18
for i=[Link]imM(1)//Ligne 19
victor(i)=Matr(i,1);//Ligne 20
compo(i)=1;//Ligne 21
for j=[Link]imM(2)//Ligne 22
if Matr(i,j)>victor(i)//Ligne 23
victor(i)=Matr(i,j);//Ligne 24
compo(i)=j;//Ligne 25
end//Ligne 26
end//Ligne 27
end//Ligne 28
end //Ligne 29

Vous aimerez peut-être aussi