TP 1. Prise en main de Scilab
opération usuelles symboles
addition +
soustraction −
multiplication ∗
division /
exposant ∧
fonctions usuelles commande
racine carrée sqrt
logarithme népérien log
exponentielle exp
valeur absolue abs
partie entière oor
comparaison/tests symboles
est égal ==
est strictement inférieur <
est inférieur ou égal <=
est strictement supérieur >
est supérieur ou égal >=
est diérent <>
opérateurs logiques symboles
"et" &
"ou" |
1
Exercice I.
1. Directement dans la Console Scilab (également appelée "fenêtre de commandes"), recopier et exécuter (touche "Entrée") successivement les instructions suivantes (d'abord la1ere colonne, etc...) :
x=3 x=7 ; disp(x) disp('x') disp(X)
x=x+2 4x 4*x ans x=ans-25 ;
disp(x,'x contient :') ; x=x+7, x=x/6
%pi
%e
format(13) ; %pi
format(5) ; %pi x=2∧3
oor(-1.3)
x=input('entrez un nombre :') disp(x+7)
2. Expliquer précisément ce qui se passe à l'issue de chaque instruction (fonctionnement, erreurs éventuelles, etc...)
Exercice II.
1. Ouvrir Scinotes. (Depuis la Console Scilab, cliquer sur l'onglet "Applications", puis sur
"Scinotes".)
2. Y recopier le programme suivant : x=3
x=2*x+4 ; x=15-x disp(x) ;
3. L'exécuter de deux manières diérentes :
a. avec "Enregistrer et exécuter" (onglet "Exécuter" ou touche F5) b. avec "...chier avec écho" (onglet "Exécuter" ou touche Ctrl+L) 4. Quelles diérences constate-t-on dans l'achage des résultats ?
Exercice III.
1. Dans Scinotes, recopier, puis exécuter le programme suivant : function y=f(x) ;
y=3*x∧2-5*x+2 ; endfunction ;
a=f(4) ; disp(a) ; disp(f(7)) ;
2. Vérier les résultats obtenus à la main.
3. Fermer Scinotes. Directement dans la console, taper alorsf(6). Que constatez-vous ?
Exercice IV.
Ecrire un programme qui demande à l'utilisateur d'entrer un nombrex, et qui ache :
le carré, la racine carrée, la partie entière, l'inverse, l'exponentielle, le logarithme, la valeur absolue du nombre.
Le tester.
2
Exercice V.
1. Dans la Console Scilab, exécuter les instructions 0 :0.25 :1, 6 :2 :18 et 30 :10 :143.
2. Expliquer le fonctionnement de la commande a :p :b.
3. Dans la Console Scilab, exécuter les instructions linspace(0,1,4), linspace(0,1,5) et linspace(-15,38,7).
4. Expliquer le fonctionnement de la commande linspace(a,b,n).
5. Donner l'instruction permettant d'obtenir une subdivision de l'intervalle[−10; 20], de pas3. 6. Donner l'instruction permettant d'obtenir une subdivision de l'intervalle[9.4; 17.7], de pas0.4
7. Donner l'instruction permettant d'obtenir une subdivision de l'intervalle[0; 10], en10parties de même longueur.
8. Donner l'instruction permettant d'obtenir une subdivision de l'intervalle[−150; 150], en50 sous-intervalles.
Exercice VI.
1. Dans la Console Scilab, exécuter les instructions x=0 :1 :4, y=x*x et y=x.*x.
2. Tapez ensuite plot(x,y)
3. Quels commentaires pouvez-vous faire ?
Exercice VII.
Les programmes suivants permettent, de3 manières diérentes, de tracer la courbe représentative de la fonction f :x7−→xe−x sur l'intervalle [−1; 4].
programme A. programme B. programme C.
x=linspace(-1,4,100) ; y=x.*exp(-x) ;
plot2d(x,y,style=2) ; xtitle('graphe de f') ;
function y=f(x) ; y=x*exp(-x) ; endfunction ;
x=linspace(-1,4,100) ; y=feval(x,f) ;
plot2d(x,y,3,rect=[0,0,2,0.5]) ; xtitle('graphe de f') ;
de('y=f(x)','y=x*exp(-x)') ; x=linspace(-1,4,100)' ; fplot2d(x,f,-1,axesag=5) ; xgrid(1) ;
legend('graphe de f') ;
1. Recopier et exécuter ces programmes.
2. Comprendre l'eet des instructions en gras, en modiant notamment les valeurs des paramètres "style",
"rect", "xgrid" et "axesag".
Exercice VIII.
Dans cet exercice, on pourra, si on le souhaite, utiliser la commande "subplot", an de tracer plusieurs courbes dans la même fenêtre, mais dans plusieurs sous-fenêtres.
1. Ecrire un programme qui ache le graphe de la fonction carrée, sur un intervalle bien choisi.
Même question avec les graphes des fonctions : 2. racine carrée
3. partie entière 4. inverse 5. exponentielle 6. logarithme népérien 7. valeur absolue
8. f :x7−→x3−x2ln(x) + 1
3
Exercice IX.
Observer le programme suivant, sans l'exécuter :
x=input('donnez x :') ; y=input('donnez y :') ;
x=x+y ; //A
y=x-y ; //B
x=x-y ; //C
disp('après traitement :') ; disp(y, 'et y=', x, 'x=') ;
1. Faire un tableau donnant les valeurs contenues par les va- riables xet y au cours du programme (notamment suite à chacune des instructions A, B et C) dans les cas où x= 2 ety= 3.
2. Même question avecx=−5ety=−3. 3. Expliquer le fonctionnement du programme.
4. Compter le nombre d'opérations usuelles (additions, sous- tractions,...) eectuées lors de ce programme, et compter également le nombre d'aectations.
(On dit que l'on détermine la complexité de l'algorithme.) 5. Proposer un programme moins complexe qui aurait pu abou-
tir au même résultat. (Une3e variable est nécessaire) 6. Compter le nombre d'opérations et d'aectations eectuées
avec ce nouveau programme.
Exercice X.
Ecrire un programme qui demande le temps, exprimé en secondes, et qui le transforme en h : m : s.
On utilisera éventuellement les fonctions prédénies oor et modulo (reste entier).
Exercice XI.
1. Dans quel cas le programme ci-contre renvoie-t-il : true (T) ? false (F) ?
2. Ecrire un programme qui demande deux nombres, et ren- voie true si le premier est plus grand que le second.
3. Ecrire un programme qui demande quatre nombres, et renvoie true si les deux premiers sont plus petit que le troisième ou que le quatrième.
x=input('donnez x') ; y=input('donnez y') ; z=input('donnez z') ;
disp(((x<y) | (x<z)) & (y<z)) ;
4