![](//s1.studylibfr.com/store/data-gzf/4e1f5e3edb44140539c76df91014f2a5/1/004665626.htmlex.zip/bg3.jpg)
Corrigés – SCILAB Page 3
On peut aussi résoudre des inéquations en créant les
vecteurs uA, uB et uC contenant les valeurs des montants
des forfaits A, B et C pour des durées entières inférieures à
200 minutes. Par exemple :
for n=1:200 uA(n)=forfaitA(n); end;
for n=1:200 uB(n)=forfaitB(n); end;
for n=1:200 uC(n)=forfaitC(n); end;
find(uA<=uC)//ne pas mettre de point-
virgule pour afficher le résultat.
On obtient ainsi l'affichage de toutes les durées entières
inférieures à 200 minutes pour lesquelles le forfait A est
plus avantageux que le forfait C.
21 2) On peut éventuellement écrire un algorithme pour
résumer la démarche avant de le transcrire en langage
Scilab :
n=input("nombre de SMS = ?");
A=20;
B=0.15*n;
C=12+0.05*n;
if A<=B & A<=C then
afficher(A,"forfait A pour le montant :");
end;
if B<=A & B<=C then
afficher(B,"forfait B pour le montant :");
end;
if C<=A & C<=B then
afficher(C,"forfait C pour le montant :");
end;
3) On utilise le programme précédent en testant plusieurs
valeurs de n et en procédant par encadrements successifs.
Comme on souhaite exécuter le programme un certain
nombre de fois, on peut penser à créer une fonction :
function forfait(n)
A=20;
B=0.15*n;
C=12+0.05*n;
if A<=B & A<=C then
afficher(A,"forfait A pour le montant :");
end;
if B<=A & B<=C then
afficher(B,"forfait B pour le montant :");
end;
if C<=A & C<=B then
afficher(C,"forfait C pour le montant :");
end;
endfunction;
On peut aussi penser à tracer les représentations
graphiques des "suites" forfaitA, forfaitB et
forfaitC associées aux différents forfaits, définies par :
forfaitA(n) est le montant du forfait A pour n SMS ;
forfaitB(n) est le montant du forfait B pour n SMS ;
forfaitC(n) est le montant du forfait C pour n SMS.
On trace leurs représentations graphiques sur l'intervalle
[1 ; 200] :
for n=1:200 forfaitA(n)=20; end;
for n=1:200 forfaitB(n)=0.15*n; end;
for n=1:200 forfaitC(n)=12+0.05*n; end;
plot(forfaitA,"r");//en rouge
plot(forfaitB,"b");//en bleu
plot(forfaitC,"g");//en vert
On obtient dans la fenêtre graphique :
On peut aussi résoudre des inéquations. Par exemple :
find(forfaitB<=forfaitC)//ne pas mettre
point-virgule pour afficher le résultat.
On obtient alors l'affichage de tous les nombres de SMS
inférieurs à 200 pour lesquels le forfait B est plus
avantageux que le forfait C.
22 2) b) On peut éventuellement écrire un algorithme pour
résumer la démarche avant de le transcrire en langage
Scilab :
popA=20000; popB=80000; n=0;
while popA<popB
n=n+1; a=popA; b=popB;
popA=a*0.9+b*0.2;
popB=a*0.1+b*0.8;
end;
afficher
(n,"le nombre d années nécessaires
est :");
3) On modifie le programme précédent de façon à obtenir
les tailles des populations (popA et popB) des villes A et B
en fonction du nombre d'années écoulées (n). La démarche
peut être résumée par l'algorithme :
Variables :
n,i : entier ;
popA,popB,a,b : réels ;
Début
Entrer(n) ;
popA←20000 ; popB←80000 ;
Pour i allant de 1 à n faire
a←popA ; b←popB ;
popA← a×0,9+b×0,2 ;
popB← a×0,1+b×0,8 ;
FinPour ;
Afficher("la taille de la ville A est ",popA);
Afficher("la taille de la ville B est ",popB);
Fin.
Il se transcrit en langage Scilab par :
n=input("nombre d annes = ?");
popA=20000; popB=80000;
for i=1:n
a=popA; b=popB;
popA=a*0.9+b*0.2;
popB=a*0.1+b*0.8;
end;
afficher(popA,"taille de la ville A :");
afficher(popB,"taille de la ville B :");