Vous êtes sur la page 1sur 4

ECT 1 lyc´ee Errazi 2015-2016 TP Scilab no 2

TP Scilab no 2

I. Structures conditionnelles
1) Un peu de théorie
But : Expliquer à l’ordinateur qu’une instruction n’est à exécuter que si une certaine condition est vérifiée.
La syntaxe est la suivante :
if <condition> then <instructions 1>;
else <instructions 2>;
end;
Les <instructions 1> sont exécutées si la <condition> est vérifiée, sinon ce sont les <instructions 2>
qui sont exécutées.

conditions symboles
est égal à ==
est différent de <> opérateurs logiques symboles
est strictement inférieur à < et &
est inférieur ou égal à <= ou |
est strictement supérieur à >
est supérieur ou égal à >=

2) La pratique
Exercice 1.
Lire le programme suivant (il N’est PAS demandé de le taper dans Scilab) :
x=input(’Donner une valeur de x reelle : ’);
if (x>0)&(x<=5) then disp(’oui’)
else disp(’non’)
end;
Que va renvoyer ce programme si l’utilisateur propose la valeur x = 3 ? . . . . . .
Et s’il propose la valeur x = −3 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . et x = 5 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comment résumer ce que fait ce programme ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Exercice 2.
Sur le même modèle que l’exercice
précédent, écrire un programme Scilab . ......................................................... .
qui teste si un nombre x est dans l’ensem- . ......................................................... .
ble ] − ∞; −3] ∪ ]4; +∞[.
. ......................................................... .
Que devrait renvoyer ce programme :
si x = −1 ? . . . . ......................................................... .
si x = 11 ? . . .

Exercice 3.
Compléter le programme suivant, qui demande à l’utilisateur de donner deux valeurs réelles a et b et qui
renvoie le plus grand des deux.
a=input(’Donner une valeur de a reelle : ’);
b=input(’Donner une valeur de b reelle : ’);
if ................. then disp(’Le plus grand est a.’)
else disp(’Le plus grand est b.’)
end;
Taper et tester votre programme avec a = 3 et b = 5

1/4
Exercice 4.
1. Voici un programme incomplet.
a=input(’coefficient de x^2 : ’);
b=input(’coefficient de x : ’);
c=input(’terme constant : ’);
delta=...................;
if delta<0 then disp(’pas de racine’); end;
if delta==0 then .......................; end;
if .............. then disp(’deux racines’); end;
(a) Compléter les . . . pour que ce programme renvoie le nombre de racines du polynôme ax2 + bx + c.
(b) Que devrait afficher ce programme pour a = −1, b = 3 et c = 2 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Et pour a = 4, b = − 27 et c = 11
3 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
(c) Taper ce programme dans l’éditeur de texte SciNotes et le tester (vérifier en particulier vos réponses
de la question précédente).
2. On va maintenant améliorer ce programme pour qu’il calcule et affiche les racines lorsqu’il y en a.
Ci-dessous la structure du programme modifié.
a=input(’coefficient de x^2 : ’);
b=input(’coefficient de x : ’);
c=input(’terme constant : ’);
delta=...................;
if delta<0 then disp(’pas de racine’); end;
if delta==0 then x=..................; disp(x, ’la racine est :’); end;
if .............. then x1=.........................; x2=.........................;
disp(x1,x2,’les deux racines sont : ’) end;
(a) Compléter les . . . et modifier le fichier de votre précédent programme.
(b) Tester le programme sur les polynômes suivants :
(i) x2 + 2x + 1 (iii) x2 − 4 (v) 72x2 − 336x + 392
(ii) x2 − 5x + 6 (iv) −2x2 + 7x − 8 (vi) 147x2 + 561x − 422
(c) Comment vérifier avec Scilab les racines données sont bonnes ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. ................................................................................................ .

II. Quelques graphiques


Taper dans la console, les lignes de commande suivantes :
--> x=[1,2,3,7,8]
--> y=[3,-1,1,0,-3]
--> plot2d(x,y)
Que fait la commande plot2d ? À quoi correspond le tracé ?
.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
Pour tracer la courbe représentative d’une fonction f , on demandera à Scilab de placer et relier plein de
points de la courbe f , par exemple pour la fonction cube : x 7→ x3 (fermer la fenêtre graphique avant de
faire un nouveau tracé) :
--> x=[1,2,3,4,5]
--> y=[1^3,2^3,3^3,4^3,5^3]
--> plot2d(x,y)
La courbe est-elle jolie ? . . . .
Pour une représentation mathématiquement acceptable, il n’y a pas assez de points ! Pour en rajouter, il
faudrait modifier x et y, leur mettre plus de nombres . . . cela serait fastidieux. Heureusement, il existe des
moyens de faire cela automatiquement.

2/4
1) Listes de valeurs, manipulations de tableaux en ligne
Taper dans la console et comprendre le fonctionnement des commandes suivantes :
--> x=[1:5] --> x=[1:0.1:2] --> x=linspace(0,3,5)
--> x=[-3:7] --> x=[-15:2:13] --> x=linspace(1,2,10)

Exercice 5.
1. Quelle instruction permet d’obtenir la liste de tous les entiers entre −4 et 6 ? . . . . . . . . . . . . . . . . . . . . . . . . . .
2. Donner l’instruction permettant d’obtenir la réponse complète suivante : [-4,-3.8,-3.6,-3.4,...,5.8,6]
. ..................................................................................................... .
3. Quelle instruction permet d’obtenir une ligne de 50 réels équirépartis entre −4 et 6 ? . . . . . . . . . . . . . . . . . .

Voilà pour obtenir facilement une longue liste d’abscisses x très proches les unes des autres. Mais comment
faire pour déterminer rapidement la liste y de toutes leurs ordonnées ?
On peut en fait faire des opérations sur les nombres de ces tableaux, avec quelques précautions toutefois !

Essayer les instructions suivantes, en essayant de comprendre les résultats :


--> x=[1:4] --> 2*x
--> y=[3,0,-1,2] --> x*y
--> x+y --> x.*y
--> x-y
De la même façon que .*, on peut utiliser ./ et .^ ou encore sqrt( ) qui effectuent ces opérations termes
à termes sur les éléments du tableau.

2) Tracés de courbes représentatives de fonctions


On peut maintenant tracer une belle représentation graphique de la fonction cube sur [1; 5] :
--> x=[1:0.1:5]
--> plot2d(x,x.^3)

Exercice 6.
1. Que trace la succession d’instructions suivante ?
--> x=[-4:0.1:4]
--> plot2d(x,-7*x.^2+11*x+18)
2. Tracer avec Scialb la courbe représentative de la racine carrée sur [0, 10].
3. Tracer avec Scilab la courbe du polynôme défini par P (x) = 3x2 − 5x + 1 sur [−3; 5].

III. Exercices complémentaires

Exercice 7.
1. Quelle est la courbe représentée par la commande -->plot2d(x,0*x) ?
2. En traçant un graphique approprié (on pourra essayer plusieurs x différents), donner le nombre de racines
des polynômes suivants, et une approximation de leurs valeurs (on ne demande pas ici de calculer ∆ . . . ).
On pourra s’aider de 1. pour une approximation précise.
(a) −2x3 + 17x − 4 (c) 11x2 − 5x √ +7
17 2
(b) 3 x − 143x + 82 (d) −5x2 + 30 2x − 90

Exercice 8.
Représenter graphiquement les deux fonctions suivantes sur les intervalles demandés (attention aux paren-
thèses et aux opérations sur les tableaux !) :
√ x2 + 2x − 5
f (x) = x + 2 sur [−2; 10] et g(x) = sur [−1; 10].
2x + 3

3/4
Exercice 9. Encore des droites.
1. Ici on demande de construire un programme qui teste si un point A est sur une droite donnée. Ouvrir
un nouveau fichier dans SciNotes, et taper le début du programme suivant.
m=input(’coefficient directeur ? ’);
p=input(’ordonnee a l origine ? ’);
x=input(’abscisse du point A ? ’);
y=input(’ordonnee du point A ? ’);
...

Compléter les ... de sorte que le programme affiche T (True) si le point est sur la droite, et F (False) si il
n’est pas sur la droite.
Le tester avec la droite y = −3x + 11 et les points A(7; −8) et B(−64; 203).
2. Construire un nouveau programme qui, à partir de deux points A et B donnés, calcule le coefficient
directeur et l’ordonnée à l’origine de la droite qui passe par ces deux points.

xA=input(’abscisse de A ? ’);
yA=input(’ordonnee de A ? ’);
xB=input(’abscisse de B ? ’);
yB=input(’ordonnee de B ? ’);
...

BILAN

Structures conditionnelles (bis) :


if <condition> then <instructions 1>;
else <instructions 2>;
end;

exemples de <condition> : (x<3)|(x>=5) signifie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


. . . . . . . . . . . . . . . . . . . . . . signifie x est inférieur ou égal à 5 et x est différent de 2.

exemples d’<instructions> : x=7*4-11 signifie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


. . . . . . . . . . . . . . . . . . . . . . . . . . . . . signifie afficher ≪ 1 racine ≫.

Tableaux :
x=[2:0.1:4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
x=linspace(2,4,10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Opérations élément par élément sur les nombres du tableau : + - .* ./ .^
[1,0.5,-3].*[-2,4,0] donne comme résultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
[1,0.5,-3].^2 donne comme résultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Graphiques :

--> x=[0:0.1:7];
..................................................................... .
--> plot2d(x,2x.^3-11*x-2)

4/4

Vous aimerez peut-être aussi