Introduction▲
Installation de Scilab▲
Scilab est un logiciel de calcul numérique que chacun peut télécharger gratuitement. la version utile au lycée est la version de base du logiciel à laquelle un module complémentaire appelé « module lycée » est ajouté. Ce module contient des fonctions spécifiques à l'enseignement des mathématiques au lycée. Le fonctionnement par défaut de Scilab est modifié par le module lycée pour adapter son utilisation en classe. Par exemple, les axes des tracés graphiques passent toujours par le point (0,0) et la division par 0 retourne Inf au lieu d'une erreur.
Disponible sous Windows, Linux et Mac OS X, Scilab est téléchargeable à l'adresse suivante :
Une fois Scilab téléchargé et installé, il faut ajouter le module lycée.
Pour cela, il suffit :
- d'être connecté à Internet,
- de lancer Scilab,
- dans la barre de menus, de cliquer sur Applications > Gestionnaire de Modules - ATOMS puis dans la fenêtre qui apparaît sur Education > Module lycée.
Sur la fenêtre ci-dessous :
- cliquez sur le bouton Installer.
- quittez Scilab, relancez-le, le module est installé.
Cette opération ne se fait qu'une fois, désormais le module lycée se chargera automatiquement à chaque démarrage de Scilab.
Si vous ne disposez pas de connexion à Internet, connectez-vous depuis un autre poste relié à Internet pour connaître la marche à suivre à l'adresse suivante :
http://www.Scilab.org/fr/community/education/maths/install
Vous pouvez être averti des sorties de nouvelles versions de ce module en vous inscrivant sur une liste de diffusion (voir ci-après). la mise à jour du module sera réalisée en suivant les opérations précédemment décrites et en cliquant cette fois sur le bouton Mettre à jour.
Liste de diffusion et d'information▲
Pour faciliter l'échange entre les utilisateurs de Scilab du monde de l'éducation, une liste de diffusion leur est dédiée. Le principe est simple. Les personnes inscrites peuvent communiquer les unes avec les autres par courrier électronique (questions, réponses, partage de documents, retour d'expériences…). Il suffit d'envoyer son message à l'adresse , pour que celui-ci soit redistribué automatiquement à tous les inscrits de la liste.
Pour s'inscrire, il suffit de compléter un formulaire en ligne à l'adresse suivante :
http://lists.scilab.org/mailman/listinfo/enseignement.
Vous recevrez une confirmation de votre inscription.
Ressources complémentaires▲
Si vous disposez d'une connexion à Internet, vous pouvez accéder au site Web de Scilab sur lequel vous trouverez une rubrique consacrée à l'utilisation de Scilab pour l'enseignement (http://www.scilab.org/fr/community/education), avec des liens et des documents utiles, dont le présent livret au format PdF, des exercices et des corrigés d'épreuves pratiques, pouvant être téléchargés et imprimés librement.
I. Chapitre 1 - Se familiariser à Scilab▲
l'espace de travail utile au lycée dans Scilab est constitué de plusieurs fenêtres :
- la console pour faire des calculs,
- l'éditeur pour écrire des programmes,
- les fenêtres graphiques pour afficher des graphiques,
- l'aide.
I-A. L'environnement général et la console▲
Après avoir double-cliqué sur l'icône de Scilab pour lancer le logiciel, l'environnement par défaut de Scilab présente les fenêtres suivantes dockées - console, navigateurs de fichiers et de variables, historiques des commandes (voir « Gérer les fenêtres et personnaliser son espace de travailGérer les fenêtres et personnaliser son espace de travail ») :
Dans la console, après l'invite de commande « --> », il suffit de saisir une commande et d'appuyer sur la touche Entrée (Windows et linux) ou Retour (Mac OS X) du clavier pour obtenir le résultat correspondant.
--> 57
/4
ans =
14
.25
--> (2
+9
)^5
ans =
161051
.
Devant le résultat, ans s'affiche pour « answer » (« réponse » en anglais).
Il est possible de revenir en arrière à tout moment, avec les flèches du clavier ← ↑ → ↓ ou avec la souris ; les touches gauche et droite permettant de modifier les instructions et les touches haut et bas, donnant la possibilité de revenir sur une commande précédemment exécutée.
I-A-1. Calculs numériques simples▲
Tous les calculs effectués par Scilab sont numériques.
Scilab calcule avec des matrices (voir le chapitre IIChapitre 2 - Programmer).
Les opérations se notent « + » pour l'addition, « - » pour la soustraction, « * » pour la multiplication, « / » pour la division, « ^ » pour les exposants. la virgule des nombres décimaux est notée avec un point. Par exemple :
-->2
+3
.4
ans =
5
.4
Il est nécessaire de bien respecter la casse (majuscules et minuscules) pour que les calculs s'effectuent correctement. Par exemple, avec la commande sqrt qui permet de calculer la racine carrée :
-->sqrt(9
)
ans =
3
.
alors que :
-->SQRT(9
)
!--error 4
Variable non définie:
SQRT
Des nombres particuliers
%e et %pi représentent respectivement e et π :
%i représente la variable complexe i en entrée et s'affiche i en sortie :
-->2
+3
*%i
ans =
2
. + 3
.i
Pour ne pas afficher le résultat
En ajoutant un point virgule « ; » à la fin d'une ligne de commande, le calcul s'effectue mais le résultat ne s'affiche pas.
-->(1
+sqrt(5
))/2
;
-->(1
+sqrt(5
))/2
ans =
1
.6180339887499
Pour se rappeler le nom d'une fonction
Les noms des principales fonctions sont récapitulés au chapitre 4 de ce livret (Exemple 48Exemple 48).
Par exemple :
-->exp(10
)/factorielle(10
)
ans =
0
.0060699034928
les fonctions disponibles sont également listées dans l'aide accessible en cliquant dans la barre de menus sur : ? > aide de Scilab
Il est possible d'utiliser la touche tabulation →│ de son clavier, pour compléter le nom d'une fonction ou d'une variable dont on a donné les premières lettres.
Par exemple, si l'on tape dans la console :
-->fact
Et que l'on tape sur la touche tabulation, une petite fenêtre apparaît permettant de choisir entre toutes les fonctions et noms de variables commençant par fact, comme factorielle et factorise. Il suffit alors de double-cliquer sur la fonction souhaitée ou de la sélectionner avec la souris ou avec les flèches du clavier ↑ ↓ et d'appuyer sur la touche Entrée (Windows et linux) ou Retour (Mac OS X) pour l'insérer.
I-A-2. La barre de menus▲
Vous serez amené à utiliser tout particulièrement les menus listés ci-dessous.
Applications
- L'historique des commandes permet de retrouver toutes les commandes des sessions précédentes et de la session courante.
- Le navigateur de variables permet de retrouver toutes les variables utilisées précédemment au cours de la même session.
Édition
Préférences (dans le menu Scilab sous Mac OS X) permet de régler et de personnaliser les couleurs, les polices et la taille des caractères dans la console et dans l'éditeur, ce qui est très utile quand on projette sur un écran devant une classe.
Cliquez sur Effacer la console pour effacer tout le contenu de la console. Dans ce cas, l'historique est conservé et les calculs effectués lors de la session restent en mémoire. Vous pourrez toujours revenir sur une commande qui a été effacée en utilisant les flèches du clavier.
Contrôle
Pour interrompre un programme en cours d'exécution, on peut :
- taper pause dans le programme ou cliquer sur Contrôle > Interrompre dans la barre de menus (Ctrl X sous Windows et Linux ou Commande X sous Mac OS X), si le programme est déjà lancé. Dans tous les cas, l'invite de commande « --> » se transformera en « -1-> », puis en « -2-> »…, si l'opération est répétée ;
- pour revenir au moment de l'interruption du programme, taper resume dans la console ou cliquer sur Contrôle > Reprendre ;
- pour arrêter définitivement un calcul sans possibilité de retour, taper abort dans la console ou cliquer sur Contrôle > Abandonner dans la barre de menus.
Lycée
À partir du menu lycée, deux applications vous sont proposées pour illustrer votre cours en classe :
- ajustement affine par la méthode des moindres carrés,
- calcul d'aire pour l'encadrement de l'aire du domaine compris entre une courbe et l'axe des abscisses par la méthode des rectangles.
I-B. L'éditeur▲
Taper directement dans la console a deux inconvénients : l'enregistrement n'est pas possible, et si plusieurs lignes d'instructions ont été tapées, les modifications ne sont pas aisées. Pour enchaîner plusieurs instructions, l'éditeur est l'outil approprié.
I-B-1. Ouvrir l'éditeur▲
Pour ouvrir l'éditeur à partir de la console, cliquez sur la première icône dans la barre d'outils ou sur Applications > SciNotes dans la barre de menus.
L'éditeur s'ouvre avec un fichier par défaut qui s'intitule « Sans titre 1 ».
I-B-2. Écrire dans l'éditeur▲
On tape du texte dans l'éditeur comme dans n'importe quel traitement de texte.
Dans l'éditeur de texte, l'apparition des parenthèses, ouvrantes et fermantes et des commandes de fin de boucle, de fonction et de test est automatique.
On peut cependant désactiver ces deux fonctionnalités dans le menu Options > Complétion automatique, en cliquant sur les deux entrées ci-dessous activées par défaut :
- (,[,…
- if,function,…
En principe, il faut aller à la ligne après chaque instruction, mais il est possible de taper plusieurs instructions sur une même ligne en les séparant par un point virgule « ; ».
Un décalage de début de ligne appelé indentation se fait automatiquement lorsqu'on commence une boucle ou un test.
Dans l'exemple suivant, on calcule 10 termes de la suite (kitxmlcodeinlinelatexdvpu_{n}finkitxmlcodeinlinelatexdvp) définie par : kitxmlcodeinlinelatexdvp\left\{ \begin{aligned} &u_{1}=1\\ &u_{n+1}=2u_{n}-3 \end{aligned} \right.finkitxmlcodeinlinelatexdvp
Pour écrire des commentaires qui ne seront pas pris en compte dans les calculs, les faire précéder de « // ».
- Pour changer la police, cliquez sur Options > Préférences.
- À l'écriture d'un programme, l'indentation est automatique. si toutefois cela n'était pas le cas, cliquez sur Format > Corriger l'indentation pour la rétablir (Ctrl I sous Windows et Linux ou Commande I sous Mac OS).
I-B-3. Enregistrer▲
Il est possible d'enregistrer tout fichier en cliquant sur Fichier > Enregistrer sous.
L'extension « .sce » à la fin du nom de fichier déclenchera automatiquement le lancement de Scilab à l'ouverture du fichier (excepté sous linux et Mac OS X).
I-B-4. Copier dans la console, exécuter le programme▲
En cliquant sur Exécuter dans la barre de menus, trois options sont proposées :
- exécuter « …fichier sans écho » (Ctrl maj e sous Windows et linux, Cmd maj e sous Mac OS X) : le fichier est exécuté sans que le programme ne s'écrive dans la console (en ayant enregistré le fichier au préalable).
- exécuter « …fichier avec écho » (Ctrl l sous Windows et linux, Cmd l sous Mac OS X) : réécrit le fichier dans la console et l'exécute.
- exécuter « …jusqu'au curseur, avec écho » (Ctrl e sous Windows et linux, Cmd e sous Mac OS X) : réécrit la sélection choisie avec la souris dans la console et l'exécute ou exécute les données du fichier jusqu'à la position du curseur définie par l'utilisateur).
On peut aussi utiliser le copier / coller classique.
I-C. La fenêtre graphique▲
I-C-1. Ouvrir une fenêtre graphique▲
Une fenêtre graphique s'ouvre pour tout tracé.
il est possible de tracer des courbes, des surfaces, des nuages de points, des histogrammes (voir le chapitre IIChapitre 2 - Programmer).
On obtient un exemple de courbe en tapant dans la console :
-->plot
- Pour effacer un tracé précédent, tapez clf (« clear figure » en anglais).
- Pour ouvrir une autre fenêtre graphique, tapez scf; (« set current figure » en anglais). si plusieurs fenêtres graphiques ont été ouvertes, on peut choisir celle dans laquelle on veut faire son tracé en tapant scf(n); où n est le numéro de la fenêtre (indiqué en haut à gauche).
I-C-2. Modifier un tracé▲
La loupe permet de faire un zoom. Pour effectuer un zoom en deux dimensions, cliquez sur l'icône et avec la souris créez un rectangle qui constituera la nouvelle vue agrandie. Pour effectuer un zoom en trois dimensions, cliquez sur l'icône et créez le parallélépipède qui constituera la nouvelle vue agrandie. Il est également possible de zoomer en utilisant la molette de la souris.
Pour revenir à l'écran initial, cliquez sur l'autre loupe .
L'icône permet de faire tourner la figure (particulièrement utile en 3d) avec des actions de clic droit qui seront guidées par des messages en bas de la fenêtre graphique.
Pour faire apparaître un quadrillage, tapez dans la console quadrillage.
Pour des modifications plus précises, cliquez sur Édition > Propriétés de la figure ou Propriétés des axes et laissez-vous guider (cette option n'est pas encore disponible sous Mac OS X).
I-D. L'aide en ligne▲
Pour accéder à l'aide en ligne, cliquez sur ? > Aide Scilab dans la barre de menus, ou tapez dans la console :
-->help
Une partie de l'aide est disponible en français, le reste est en anglais. des exemples d'utilisation peuvent être exécutés dans Scilab et édités dans SciNotes en utilisant les boutons associés dans le cadre de l'exemple. l'aide sur les fonctions du module lycée (en bas de la liste) est entièrement disponible en français.
Pour obtenir de l'aide sur des fonctions, tapez dans la console help et le nom de la fonction souhaitée. Par exemple :
-->help
sin
affichera l'aide de la fonction sin (sinus).
I-E. Gérer les fenêtres et personnaliser son espace de travail▲
Comme pour l'environnement par défaut de Scilab, rassemblant les fenêtres de la console, les navigateurs de fichiers et de variables et l'historique des commandes, toutes les autres fenêtres de Scilab peuvent être repositionnées dans une seule et même fenêtre. Par exemple, l'utilisateur peut choisir de placer l'éditeur dans l'environnement par défaut de Scilab.
Pour placer une fenêtre dans une autre, on repère d'abord la barre horizontale bleue sous Windows et noire sous Mac OS X et Linux située en haut de la fenêtre sous la barre d'outils, contenant un point d'interrogation à droite.
- sous Windows et Linux, cliquez sur cette barre avec le bouton gauche de la souris, et, en maintenant ce bouton enfoncé, déplacez la flèche de la souris dans la fenêtre souhaitée.
- sous Mac OS X, cliquez sur cette barre et en maintenant le clic sur la souris, déplacez-la dans la fenêtre souhaitée.
Un rectangle apparaît indiquant le positionnement futur de la fenêtre. Lorsque la position est celle que vous souhaitez, relâchez le bouton de la souris. Pour annuler et faire ressortir la fenêtre, cliquez sur la petite flèche à droite de la même barre.
II. Chapitre 2 - Programmer▲
Dans les exemples donnés dans ce livret, toute ligne précédée de « --> » est une commande, les autres lignes sont les retours (résultats de calcul, messages d'erreur…). il ne faut pas écrire « --> » dans l'éditeur. Nous l'avons introduit uniquement pour bien différencier les lignes de commande des retours de calculs, l'affichage se faisant ainsi dans la console après un copier / coller. Présentées dans un tableau (sans « --> » et sans retour de calcul), les commandes sont donc représentées telles qu'elles devront être tapées dans l'éditeur.
II-A. Variables, affectation et affichage▲
II-A-1. Les variables▲
Scilab n'est pas un logiciel de calcul formel. il calcule uniquement avec des nombres. Tous les calculs sont en réalité faits avec des matrices, mais cela peut passer inaperçu. bien que la notion de matrice ne soit pas connue dans la plupart des classes de lycées, on utilise les vecteurs et les suites de nombres qui sont, en fait, des matrices 1 × n ou n × 1, de même qu'un nombre est une matrice de dimension 1 × 1.
Les variables n'ont pas besoin d'être déclarées à l'avance, mais toute variable doit avoir une valeur.
Par exemple, demander la valeur de la variable a sans lui avoir donné de valeur auparavant, produit une erreur :
-->a
!--error 4
Variable non définie :
a
si l'on affecte une valeur à la variable a, il n'y a plus d'erreur :
-->a=%pi
/4
a =
0
.7853981633974
-->a
a =
0
.7853981633974
On peut utiliser n'importe quel nom de variable qui n'est pas déjà défini par le système :
-->Pisur2=%pi
/2
Pisur2 =
1
.5707963267949
Tout comme les fonctions Scilab, un nom de variable ne doit pas comporter d'accents ou de caractères spéciaux.
Si l'on n'affecte pas le résultat d'un calcul à une variable, la valeur sera affectée automatiquement à la variable appelée ans :
-->3
*(4
-2
)
ans =
6
.
-->ans
ans =
6
.
II-A-2. Les fonctions▲
Les fonctions sont le moyen le plus simple et le plus naturel pour faire des calculs à partir de variables et
Obtenir des résultats à partir de celles-ci.
La définition d'une fonction commence par function et finit par endfunction. Par exemple, pour transformer des euros (e) en dollars (d) avec un taux de change (t), définissons la fonction dollars. Les variables sont e et t et l'image est d.
-->function
d=dollars(e,t); d=e*t; endfunction
-->dollars(200
,1
.4
)
ans =
280
.
Le plus souvent, on utilise au lycée des fonctions numériques à une variable réelle. Par exemple, deux fonctions f et g sont définies à l'aide des commandes ci-dessous :
-->function
y=f(x); y=36
/(8
+exp(-x)); endfunction
-->function
y=g(x); y=4
*x/9
+4
; endfunction
- Les variables x et y sont des variables muettes, leurs noms pouvant être réutilisés dans la définition d'autres fonctions ou dans Scilab.
- La commande return permet de sortir d'une fonction (exemple 34Exemple 34).
Les fonctions ayant été définies, elles peuvent être utilisées pour calculer des valeurs :
-->f(10
)
ans =
4
.4999744626844
-->g(12
.5
)
ans =
9
.5555555555556
II-A-3. Demander l'affectation d'une valeur▲
L'affectation se fait de façon simple avec le symbole « = ».
Pour demander avec une phrase la valeur à attribuer à une variable, on utilise input, en mettant la phrase entre des guillemets droits « "" ».
Reprenons l'exemple du calcul des dollars à partir d'euros :
Éditeur Scilab |
Console Scilab |
---|---|
Sélectionnez
|
Sélectionnez
|
Avec input, le programme attend une valeur.
Pour exécuter correctement le programme, enregistrez-le puis cliquez sur Exécuter > …fichier sans écho dans la barre de menus. Renseignez alors dans la console, les valeurs au fur et à mesure qu'elles vous sont demandées (dans l'exemple, on a tapé 200, entrée, puis 1.4, entrée).
si vous cliquez sur Exécuter > …fichier avec écho ou sur Exécuter > …jusqu'au curseur, avec écho, ou lors d'un copier / coller, vous obtiendrez une erreur car le programme étant recopié, la valeur attendue pour e sera t, qui n'est pas un nombre.
II-A-4. L'affichage▲
Écrire
Taper le nom d'une variable affiche sa valeur, sauf avec « ; » en fin de commande.
Les crochets
Les crochets permettent de définir des matricesL'arithmétique.
Comme énoncé précédemment, le calcul matriciel est à la base des calculs effectués dans Scilab.
Un espace ou une virgule permet de passer d'une colonne à la suivante et un point virgule, d'une ligne à l'autre.
Pour définir un vecteur colonne et obtenir un affichage en colonne :
-->v=[3
;-2
;5
]
v =
3
.
- 2
.
5
.
Pour définir un vecteur ligne et obtenir un affichage en ligne :
-->v=[3
,-2
,5
]
v =
3
. - 2
. 5
.
Il est aussi possible de taper cette commande sous la forme : v=[3 -2 5]
Pour définir une matrice et afficher un tableau :
-->m=[1
2
3
;4
5
6
;7
8
9
]
m =
1
. 2
. 3
.
4
. 5
. 6
.
7
. 8
. 9
.
Il est aussi possible de taper cette commande sous la forme : m=[1,2,3;4,5,6;7,8,9]
La fonction afficher
afficher est le nom francisé de la fonction disp utilisée dans Scilab sans le module lycée. elle est toujours suivie de parenthèses.
Avec le vecteur v précédent :
-->v(2
)
ans =
- 2
.
-->afficher(v(2
))
- 2
.
Pour afficher une chaîne de caractères (en général une phrase), on la met entre guillemets :
-->afficher("
Bob
a
gagné
"
)
Bob a gagné
Pour mélanger des mots et des valeurs, utilisez la commande string qui transforme les valeurs en caractères, et « + » entre les différentes parties :
-->d=500
;
-->afficher("
Bob
a
gagné
"
+string(d)+"
dollars
"
)
Bob a gagné 500
dollars
Si la phrase contient une apostrophe, il est nécessaire de la doubler dans la chaîne de caractères pour qu'elle s'affiche correctement :
-->afficher("
C''est
juste
"
)
C'est juste
II-B. Les boucles▲
II-B-1. L'incrémentation▲
L'opérateur « : » permet de définir des vecteurs de nombres dont les coordonnées sont en suite arithmétique. On donne « la première valeur : le pas : la dernière valeur » (pas forcément atteinte). Si le pas n'est pas mentionné, sa valeur est 1 par défaut.
Par exemple, pour définir un vecteur ligne d'entiers qui s'incrémentent de 1 entre 3 et 10 :
-->3
:
10
ans =
3
. 4
. 5
. 6
. 7
. 8
. 9
. 10
.
ou qui s'incrémentent de 2 entre 1 et 10 :
-->1
:
2
:
10
ans =
1
. 3
. 5
. 7
. 9
.
ou qui se décrémentent de 4 entre 20 et 2 :
-->u=20
:
-4
:
2
u =
20
. 16
. 12
. 8
. 4
.
II-B-2. For▲
La structure de boucle la plus simple pour un nombre connu d'itérations s'écrit avec for … end qui signifie « Pour … fin de pour ».
Exemple : Calcul de 20 termes d'une suite définie par récurrence par : kitxmlcodeinlinelatexdvpU_{1}=4\mathrm{\ et\ }u_{n+1}\:=\:u_{n}+2n+3finkitxmlcodeinlinelatexdvp
Algorithme |
Éditeur Scilab |
---|---|
Mettre 4 dans u(1) |
Sélectionnez
|
Cette suite a été posée au bac en donnant kitxmlcodeinlinelatexdvpu_{o}=1finkitxmlcodeinlinelatexdvp, mais pour définir le vecteur kitxmlcodeinlinelatexdvp\vec{u}finkitxmlcodeinlinelatexdvp, nous devons commencer à kitxmlcodeinlinelatexdvpu\left ( 1 \right )finkitxmlcodeinlinelatexdvp, première coordonnée de kitxmlcodeinlinelatexdvpufinkitxmlcodeinlinelatexdvp.
II-B-3. While▲
Si l'on veut que la boucle s'arrête lorsqu'un objectif donné est atteint, on utilisera la forme while … end qui signifie « Tant que … fin de tant que ».
Exemple : J'ai replanté en 2005 un sapin de noël qui mesurait 1,20 m. il grandit de 30 cm par an. J'ai décidé de le couper quand il dépasserait 7 m. En quelle année vais-je couper mon sapin ?
Algorithme |
Éditeur Scilab |
---|---|
mettre 1,2 dans h (h = hauteur du sapin) |
Sélectionnez
|
Quand une commande est trop longue pour être écrite sur une seule ligne, l'éditeur va automatiquement à la ligne. On peut aussi mettre « .. » avant d'aller à la ligne.
II-C. Les tests▲
II-C-1. Les opérateurs de comparaison▲
Comparer des nombres ou vérifier si une affirmation est vraie ou fausse sont des tests utiles. Voici les commandes correspondantes :
Égal |
Différent |
Inférieur |
Supérieur |
Inférieur ou égal |
Supérieur ou égal |
---|---|---|---|---|---|
== |
<> |
< |
> |
≤ |
>= |
Vrai |
Faux |
Et |
Ou |
Non |
---|---|---|---|---|
%T |
%F |
& |
| |
~ |
Attention à la précision. Les calculs faits étant approchés, le test « == » donne parfois des réponses fausses (voir les problèmes de précisionProblèmes de précision).
Lorsque l'on veut comparer deux vecteurs (ou deux matrices), les tests « == » et « <> » comparent terme à terme. Par exemple :
-->X=[1
,2
,5
]; Y=[5
,3
,5
];
-->X==Y
ans =
F F T
Pour tester si les vecteurs sont égaux, on utilise isequal, et s'ils sont différents, ~isequal :
-->isequal(X,Y)
ans =
F
-->~isequal(X,Y)
ans =
T
II-C-2. If…then▲
Les structures classiques sont les suivantes :
- if … then … else … end (« si…alors…sinon…fin de si »),
- if … then … elseif … then … else … end (« si…alors…ou si…alors … ou … fin de si »).
if … then doivent être écrits sur la même ligne, de même que elseif … then.
Exemple
Alice lance trois dés :
- si elle obtient trois 6, elle gagne 20 €,
- si elle obtient trois résultats identiques différents de 6, elle gagne 10 €,
- si elle obtient deux résultats identiques, elle gagne 5 €,
- sinon, elle ne gagne rien.
Simulez un lancer et calculez le gain d'Alice, en utilisant les fonctions :
- tirage_entier (simulations et statistiquesSimulations et statistiques),
- unique(D) qui ne garde qu'une fois les valeurs qui apparaissent plusieurs fois dans D,
- taille(unique(D)) qui donne la taille du vecteur ainsi obtenu, donc 1 si les trois termes sont égaux, 2 si deux termes sont égaux.
Algorithme |
Éditeur Scilab |
---|---|
Mettre les trois valeurs dans d |
Sélectionnez
|
II-D. Les tracés en 2 et 3 dimensions▲
Les tracés dans le plan se font avec la commande plot. On peut choisir la couleur et l'aspect en mettant les indications de couleur et de style de points entre guillemets :
- les couleurs
"b" = bleu (par défaut), "k" = noir, "r" = rouge, "g" = vert, "c" = cyan, "m" = magenta, "y" = jaune, "w" = blanc. - les styles de points
Reliés (par défaut), ou ".", "+", "o", "x", "*".
D'autres options sont disponibles avec : "s", "d", "v", "<", et ">".
II-D-1. Tracés de base▲
- Pour tracer un point
Tracer le point a (1 ; 2) avec un point rouge.
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
- Pour tracer un segment
Tracer le segment [ab] en bleu (par défaut) avec a (1 ; 2) et b (3 ; 5).
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
- Pour tracer un cercle
Tracé du cercle de centre a (1 ; 2) et de rayon 5 en jaune dans un repère orthonormé.
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
II-D-2. Tracés de courbes planes définies par des fonctions y=f(x)▲
Pour une fonction kitxmlcodeinlinelatexdvpx\rightarrow f(x)finkitxmlcodeinlinelatexdvp définie sur un intervalle de , donnez avec la commande linspace les valeurs de x, en écrivant : x = linspace(a,b,n); où a est la plus petite valeur de la variable x, b est la plus grande valeur de x, et n le nombre de valeurs qui seront calculées entre a et b.
Ne pas oublier le « ; » sinon les n valeurs de x s'afficheront.
Par exemple, soient deux fonctions kitxmlcodeinlinelatexdvpffinkitxmlcodeinlinelatexdvp et kitxmlcodeinlinelatexdvpgfinkitxmlcodeinlinelatexdvp définies sur [-2 ; 5] par :
kitxmlcodelatexdvpf\left( x \right) =\left( x^{2}+2x \right)e^{-x}\mathrm{\ et\ } g\left( x \right)=sin\left( \frac{x}{2} \right)finkitxmlcodelatexdvpCi-dessous avec ce programme, on obtient le tracé de la courbe de kitxmlcodeinlinelatexdvpffinkitxmlcodeinlinelatexdvp, en bleu par défaut.
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
En ajoutant le programme ci-dessous, on obtient le tracé des deux courbes, celle de f en rouge et celle de g en vert. Le tracé précédent a été effacé grâce à la commande clf (« clear figure » en anglais).
Éditeur Scilab |
Fenêtre graphique |
Sélectionnez
|
Les arguments de la fonction plot sont toujours des nombres réels. si l'on donne des nombres complexes comme arguments, la fonction plot utilise leur partie réelle sans donner de message d'erreur.
Par exemple, si l'on trace la courbe de la fonction ln entre -10 et 10 en utilisant la commande x = linspace(-10,10,100) ; plot(x,ln(x)), la fonction plot tracera entre -10 et 10 la partie réelle du logarithme. On aura ainsi ln(3) comme image de -3 puisque kitxmlcodeinlinelatexdvp\ln (-3) = \ln (3e^{i\pi }) = \ln (3) + i\pi + 2ki\pi.finkitxmlcodeinlinelatexdvp
II-D-3. Tracés de nuages de points▲
Termes d'une suite
Le cas le plus courant est celui où l'on veut tracer les points kitxmlcodeinlinelatexdvpM\left ( n, u\left ( n \right ) \right )finkitxmlcodeinlinelatexdvp après avoir calculé les coordonnées kitxmlcodeinlinelatexdvpu\left ( n \right )finkitxmlcodeinlinelatexdvp d'un vecteur kitxmlcodeinlinelatexdvp\vec{u}finkitxmlcodeinlinelatexdvp. On écrit alors plot(u,"*r") en spécifiant la forme et la couleur des points du nuage entre guillemets.
On a choisi ici des étoiles de couleur rouge qui ne sont pas reliées. Par défaut, les points sont bleus et reliés.
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
Statistiques doubles
les nuages statistiques sont donnés sous la forme de deux vecteurs : appelons les X et Y, on écrira alors plot(X,Y,"<") pour tracer le nuage des points kitxmlcodeinlinelatexdvpM\left ( X_{i};Y_{i} \right )finkitxmlcodeinlinelatexdvp avec des triangles bleus.
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
II-D-4. Tracés en trois dimensions▲
Scilab permet de tracer des surfaces et des courbes dans l'espace avec un grand nombre d'options pour le traitement des faces cachées, la couleur des faces, les points de vue, etc. Nous ne donnerons ici que deux exemples.
La fonction kitxmlcodeinlinelatexdvpsurffinkitxmlcodeinlinelatexdvp permet de tracer une surface. Cette fonction prend trois variables d'entrée, x, y et z.
kitxmlcodeinlinelatexdvp\vec{x}finkitxmlcodeinlinelatexdvp et kitxmlcodeinlinelatexdvp\vec{y}finkitxmlcodeinlinelatexdvp sont des vecteurs de taille respective kitxmlcodeinlinelatexdvpmfinkitxmlcodeinlinelatexdvp et kitxmlcodeinlinelatexdvpnfinkitxmlcodeinlinelatexdvp correspondant à des points des axes kitxmlcodeinlinelatexdvp(O_{x})finkitxmlcodeinlinelatexdvp et kitxmlcodeinlinelatexdvp(O_{x})finkitxmlcodeinlinelatexdvp. z est une matrice de dimension kitxmlcodeinlinelatexdvpn\times mfinkitxmlcodeinlinelatexdvp dont l'élément kitxmlcodeinlinelatexdvpz_{ij}finkitxmlcodeinlinelatexdvp est la cote du point de la surface d'abscisse kitxmlcodeinlinelatexdvpx_{i}finkitxmlcodeinlinelatexdvp et d'ordonnée kitxmlcodeinlinelatexdvpy_{j}finkitxmlcodeinlinelatexdvp.
Pour tracer la surface définie par une fonction du type kitxmlcodeinlinelatexdvpz=f\left ( x,y \right )finkitxmlcodeinlinelatexdvp, il faut donc :
- définir la fonction kitxmlcodeinlinelatexdvpffinkitxmlcodeinlinelatexdvp
- calculer z=feval(x,y,f)
'
feval(x,y,f) retourne la matrice kitxmlcodeinlinelatexdvpm\times nfinkitxmlcodeinlinelatexdvp dont l'élément kitxmlcodeinlinelatexdvpijfinkitxmlcodeinlinelatexdvp est kitxmlcodeinlinelatexdvpf=\left ( x_{i},y_{i} \right )finkitxmlcodeinlinelatexdvp que l'on va transposer en utilisant l'apostrophe « ' ». - appliquer surf(x,y,z).
Le tracé de la surface kitxmlcodeinlinelatexdvpz=2x^{2}+2y^{2}finkitxmlcodeinlinelatexdvp (paraboloïde elliptique) :
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
La fonction param3d permet de tracer une courbe dans l'espace. param3d prend trois arguments, x, y et z qui sont des vecteurs de même taille correspondant aux points kitxmlcodeinlinelatexdvp(x_{i}, y_{i}, z_{i})finkitxmlcodeinlinelatexdvp de la courbe.
Le tracé de l'hélice définie par kitxmlcodeinlinelatexdvp\left ( x=\cos\left ( t \right ),y=\sin\left ( t \right ), z=t \right )finkitxmlcodeinlinelatexdvp :
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
II-D-5. Simulations et statistiques▲
De nombreuses fonctions ont été créées dans le module lycée pour faciliter les simulations de façon rapide et performante.
Tirages aléatoires avec ordre et remise
- tirage_entier(p,m,n) retourne un vecteur de p tirages entiers aléatoires pris entre m et n avec p entier positif, m et n entiers et m ≤ n.
-->t=tirage_entier(4
,1
,6
)
t =
3
. 1
. 3
. 6
.
- tirage_reel(p,a,b) retourne un vecteur de p tirages réels aléatoires pris entre a et b avec p entier positif, a et b réels et a ≤ b.
-->tr=tirage_reel(2
,-1
,1
)
tr =
- 0
.7460263762623
0
.9377355421893
- frequence(n,s) retourne la fréquence de n dans la suite de nombres s avec n entier.
Par exemple, pour obtenir la fréquence d'apparition du 6 dans 1 000 lancers de dé :
-->t=tirage_entier(1000
,1
,6
);
-->frequence(6
,t)
ans =
0
.173
Tirages aléatoires sans ordre ni remise
Définir un ensemble
- la fonction ensemble permet de créer un ensemble :
->E=ensemble("
e1
"
,"
e2
"
,"
e3
"
)
E =
{e1,e2,e3}
-->E(1
)
ans =
e1
Les éléments de l'ensemble e1, e2,… sont des chaînes de caractères. Un ensemble est non ordonné et n'a pas d'éléments dupliqués. Par exemple, {a,b,c} et {b,a,c,a} représentent le même ensemble. lorsqu'un ensemble est créé, les éléments dupliqués sont supprimés et, par commodité, ces éléments sont ordonnés par ordre alphabétique.
Il est possible d'attribuer des valeurs à des éléments d'un ensemble, par exemple pour des ensembles de pièces, de billets ou de cartes à jouer avec des valeurs. la valeur est donnée en la mettant entre parenthèses à la fin du nom de l'élément.
Par exemple, pour un ensemble U contenant trois boules rouges numérotées 1, 2, 3 et deux boules noires numérotées 1, 2, tapez :
-->U=ensemble("
n(1)
"
,"
n(2)
"
,"
r(1)
"
,"
r(2)
"
,"
r(3)
"
);
Il est également possible d'avoir des vecteurs de chaînes de caractères comme arguments de la fonction ensemble. Cela permet, par exemple, de créer facilement un ensemble dont les éléments sont des nombres entiers :
-->ensemble(string(1
:
9
))
ans =
{1
,2
,3
,4
,5
,6
,7
,8
,9
}
- la fonction valeur donne alors le vecteur des valeurs des éléments, permettant ainsi de les utiliser dans des calculs.
-->valeur(U)
ans =
1
. 2
. 1
. 2
. 3
.
- la fonction taille donne le nombre d'éléments d'un ensemble.
Pour comparer deux ensembles, on utilise l'opérateur habituel « == ».
On dispose aussi des fonctions ajouter, appartient, complémentaire, enlever, inclus, intersection, union.
- faire un tirage aléatoire dans un ensemble
On utilise la fonction tirage_ensemble en indiquant combien d'éléments on souhaite tirer.
Supposons que l'on tire deux boules dans l'ensemble U précédent et que l'on souhaite vérifier si elles sont rouges :
-->U=ensemble("
n(1)
"
,"
n(2)
"
,"
r(1)
"
,"
r(2)
"
,"
r(3)
"
);
-->R=ensemble("
r(1)
"
,"
r(2)
"
,"
r(3)
"
);
-->T=tirage_ensemble(2
,U)
T =
{n(1
),r(3
)}
-->if
inclus (T,R)==%T
then
--> afficher ("
Les
deux
boules
sont
rouges
"
)
-->else
--> afficher("
Les
deux
boules
ne
sont
pas
rouges
"
)
Les deux boules ne sont pas rouges
-->end
ensemble() crée un ensemble vide
II-D-6. Statistiques▲
Toutes les fonctions statistiques habituelles sont listées à la page 85.
Gardez particulièrement en mémoire :
- la fonction bar(x,n,couleur) qui trace des diagrammes en barres :
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
- pour un diagramme en barres représentant deux séries côte à côte : soit la série de valeurs X, et les deux séries d'effectifs n1 et n2. Pour le tracé, n1 et n2 doivent être des vecteurs colonne, c'est pourquoi dans l'exemple ci-dessous, on prend les transposées :
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
- la fonction histogramme(a,n,couleur) qui permet de tracer l'histogramme d'une série statistique où les valeurs de la variable sont regroupées dans des intervalles. a est le vecteur donnant les bornes des intervalles dans l'ordre croissant et n est le vecteur des effectifs ou des fréquences correspondants. le vecteur a a un élément de plus que le vecteur n.
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
Pour ces deux fonctions, l'argument optionnel couleur définit la couleur comme dans la fonction plot.
II-E. L'arithmétique▲
Toutes les fonctions arithmétiques habituelles sont récapitulées à la cette pageChapitre 4 - Fonctions Scilab utiles.
Gardez particulièrement en mémoire :
- la fonction reste qui donne le reste dans la division euclidienne.
-->reste(75
,4
)
ans =
3
.
-->reste(-75
,4
)
ans =
1
.
- la fonction diviseurs qui donne tous les diviseurs positifs.
-->diviseurs(75
)
ans =
1
. 3
. 5
. 15
. 25
. 75
.
- la fonction factorise qui donne la décomposition en facteurs premiers.
-->factorise(75
)
ans =
3
. 5
. 5
.
II-F. Compléments sur les matrices et les vecteurs▲
II-F-1. Accéder aux éléments▲
Les crochets permettent de définir une matrice. Un espace ou une virgule permet de passer d'une colonne à la suivante et un point virgule, d'une ligne à l'autre.
-->m=[1
2
3
;4
5
6
]
m =
1
. 2
. 3
.
4
. 5
. 6
.
Il est aussi possible de taper cette commande sous la forme : m=[1,2,3;4,5,6]
Les parenthèses permettent d'accéder aux éléments ou de les modifier.
-->m(2
,3
)
ans =
6
.
-->m(2
,3
)=23
m =
1
. 2
. 3
.
4
. 5
. 23
.
L'opérateur « : » sert à désigner toutes les lignes ou toutes les colonnes d'une matrice.
Pour avoir la deuxième ligne de la matrice m, tapez :
-->m(2
,:
)
ans =
4
. 5
. 23
.
et la troisième colonne :
-->m(:
,3
)
ans =
3
.
23
.
Pour obtenir la transposée d'une matrice ou d'un vecteur, on utilise l'apostrophe « ' » :
-->m'
ans =
1
. 4
.
2
. 5
.
3
. 23
.
II-F-2. Opérations▲
Les opérations « * », « / » sont des opérations matricielles. Pour faire des opérations élément par élément, on fera précéder le signe opératoire d'un point : « .* », « ./ ».
Sélectionnez
|
|
Sélectionnez
|
|
Sélectionnez
|
Multiplication matricielle |
Sélectionnez
|
Les dimensions ne sont pas bonnes |
Sélectionnez
|
Multiplication élément par élément |
Sélectionnez
|
L'opération se fait sur chaque élément car 2 est un nombre |
Sélectionnez
|
Donne la matrice X telle que X*a = a |
Sélectionnez
|
Donne la matrice divisée élément par élément |
Dans le cas des vecteurs :
Sélectionnez
|
|
Sélectionnez
|
Les dimensions ne sont pas bonnes |
Sélectionnez
|
Il est aussi possible d'écrire C^2 car, pour les vecteurs, l'écriture avec un exposant se traduit par une opération élément par élément. Ce n'est pas le cas pour les matrices. |
Sélectionnez
|
Dans ce cas spécifique aux vecteurs, on trouve le vecteur X tel que C*X = 1 |
Sélectionnez
|
Inverse élément par élément |
II-F-3. Résolutions de système▲
Pour résoudre le système linéaire AX = Y, où A est une matrice carrée, utilisez l'antislash « \ »
X = A \ Y ou bien la puissance -1 : X = A^(-1)*Y.
Attention, l'opération Y / A donnera (à condition que les dimensions soient bonnes) un autre résultat, soit la matrice Z telle que Z A = Y. l'opération X = A^(-1)*Y sera beaucoup plus coûteuse en temps de calcul.
Pour résoudre le système : kitxmlcodeinlinelatexdvp\begin{pmatrix} 1 & 2 & 3\\ 4 & 5 & 6 \end{pmatrix}\times X=\begin{pmatrix} 1\\1 \end{pmatrix}finkitxmlcodeinlinelatexdvp
-->A=[1
2
3
;4
5
6
];
-->Y=[1
;1
];
-->X=A\Y
X =
- 0
.5
0
.
0
.5
-->A*X
ans =
1
.
1
.
II-F-4. Quelques fonctions utiles▲
Trier
La fonction trier permet d'ordonner par ordre croissant ou décroissant les éléments d'un vecteur.
-->v=[2
,6
,9
,6
,-4
,0
,2
]
v =
2
. 6
. 9
. 6
. - 4
. 0
. 2
.
-->trier(v)
ans =
- 4
. 0
. 2
. 2
. 6
. 6
. 9
.
-->trier(v,"
>
"
)
ans =
- 4
. 0
. 2
. 2
. 6
. 6
. 9
.
-->trier(v,"
<
"
)
ans =
9
. 6
. 6
. 2
. 2
. 0
. - 4
.
Taille
La fonction taille retourne le nombre de coordonnées dans le cas d'un vecteur, et les dimensions (lignes, colonnes) dans le cas d'une matrice.
-->m=[1
2
3
;4
5
6
];
-->taille(m)
ans =
2
. 3
.
-->U=[1
:
10
]
U =
1
. 2
. 3
. 4
. 5
. 6
. 7
. 8
. 9
. 10
.
-->taille(U)
ans =
10
.
Somme et produit
Les fonctions sum et prod calculent respectivement la somme et le produit des éléments de leur argument.
On reprend le vecteur U, vu au point précédent :
-->U=[1
:
10
];
-->sum(U)
ans =
55
.
-->prod(U)
ans =
3628800
.
Unique
La fonction unique ne garde qu'une fois les éléments dans un vecteur (même si ceux-ci sont répétés plusieurs fois) et les ordonne par ordre croissant. Elle peut être très utile pour faire des tests (voir l'exemple 23Exemple 23).
-->v=[2
,6
,9
,6
,-4
,0
,2
]
v =
2
. 6
. 9
. 6
. - 4
. 0
. 2
.
-->unique(v)
ans =
- 4
. 0
. 2
. 6
. 9
.
Trouver
La fonction find permet de rechercher des éléments dans un vecteur ou une matrice et retourne un vecteur contenant les indices correspondants.
Pour trouver tous les éléments du vecteur w plus petits que 5 :
-->w=[1
,5
,3
,8
,14
,7
,3
,2
,12
,6
]; find(w<5
)
ans =
1
. 3
. 7
. 8
.
Le vecteur résultat (1,3,7,8) nous indique que les éléments w1, w3, w7 et w8 sont plus petits que 5.
Pour trouver tous les éléments du vecteur w égaux à 3 :
-->w=[1
,5
,3
,8
,14
,7
,3
,2
,12
,6
]; find(w==3
)
ans =
3
. 7
.
Le vecteur résultat (3,7) indique que les éléments w3 et w7 sont égaux à 3.
II-G. Problèmes de précision▲
II-G-1. Pour le calcul▲
Les nombres ont une valeur absolue comprise entre environ 2,2 × 10-308 et 1,8 × 10+308.
Le nombre %eps égal à 2.220446049D-16 donne la plus petite précision relative que l'on puisse espérer dans le calcul, soit environ 16 chiffres.
Exemple 1 : calcul de kitxmlcodeinlinelatexdvp\sin\left ( \pi \right )finkitxmlcodeinlinelatexdvp
-->sin(%pi
)
ans =
1
.224646799D
-16
La valeur de kitxmlcodeinlinelatexdvp\sin\left ( \pi \right )finkitxmlcodeinlinelatexdvp ci-dessus n'est pas 0, mais on la considère comme nulle. en effet, par rapport a la valeur maximale de la fonction sinus (soit 1), elle est égale a 0 avec une erreur inférieure a %eps.
Exemple 2 : testons si le triangle de cotes √3, 1 et 2 est rectangle :
Sélectionnez
|
|
Sélectionnez
|
|
Sélectionnez
|
|
Sélectionnez
|
le programme répond faux car la valeur de a^2+b^2 est approchée |
Sélectionnez
|
le programme répond faux car la précision demandée est absolue |
Sélectionnez
|
le programme répond vrai car la précision demandée est relative |
II-G-2. Pour l'affichage▲
Par défaut, les résultats sont affichés avec 16 caractères, comprenant le point décimal et le signe. la fonction format permet d'afficher plus de chiffres. Pour avoir 20 chiffres, vous taperez alors format(20).
Reprenons a = √3 :
Sélectionnez
|
ici, il y a 13 décimales, on ne voit pas l'erreur |
Sélectionnez
|
ici, il y a 17 décimales, on voit l'erreur |
II-H. Résolution d'équations différentielles▲
Nous montrerons ici comment on peut trouver les solutions d'un système explicite d'équations différentielles. le principe consiste à se ramener à des équations différentielles d'ordre 1 :
kitxmlcodelatexdvp\left\{\begin{aligned} y'(t)&=f(t,y(t))\\ y(t_{0})&=y_{0} \end{aligned}\right. \quad t\in \mathbb{R},y(t)\in \mathbb{R}^{n},t_{0}\in \mathbb{R},y_{0}\in \mathbb{R}^{n}finkitxmlcodelatexdvppuis, à appliquer la fonction ode : y=ode(y0,t0,t,f), avec :
- y0 : condition initiale, vecteur de dimension n,
- t0 : instant initial,
- t : vecteur de dimension T des instants où l'on veut avoir la solution. Ce vecteur doit commencer par t0,
- f : fonction définissant le système sous la forme :
function
yprim=f(t,y)
yprim(1
)=...
yprim(2
)=...
...
.
yprim(n)=...
endfunction
La solution y est une matrice de dimension kitxmlcodeinlinelatexdvpn \times Tfinkitxmlcodeinlinelatexdvp :
kitxmlcodelatexdvp\begin{pmatrix} y_{1}\left ( 1 \right )y_{1}\left ( 2 \right )...y_{1}\left ( T \right )\\ y_{2}\left ( 1 \right )y_{2}\left ( 2 \right )...y_{2}\left ( T \right )\\ ...\\ y_{n}\left ( 1 \right )y_{n}\left ( 2 \right )...y_{n}\left ( T \right ) \end{pmatrix}finkitxmlcodelatexdvpExemple : résoudre l'équation différentielle kitxmlcodeinlinelatexdvp\left\{\begin{aligned} &y^{n}=-4y\\ &y\left ( 0 \right )=3,y'\left ( 0 \right )=0 \end{aligned}\right.finkitxmlcodeinlinelatexdvp
On ramène cette équation d'ordre 2 à un système de deux équations d'ordre 1 en posant :
kitxmlcodelatexdvpY=\binom{Y(1)}{Y(2)}=\binom{y}{y'},Yprim=\binom{Yprim(1)}{Yprim(2)}=\binom{y'}{y''}\; et\; \begin{aligned} &Yprim(1)=Y(2)\\ &Yprim(2)=-4 \times Y(1) \end{aligned}finkitxmlcodelatexdvp
Commentaire |
Éditeur Scilab |
---|---|
On définit la fonction qui aux deux variables t et y (qui est un vecteur) fait correspondre le vecteur Y' |
Sélectionnez
|
II-I. Codage et décodage▲
Pour coder ou décoder un texte, il faut d'abord transformer les lettres en nombres. Pour cela, on utilise le code ascii avec la commande Scilab ascii:
- les lettres minuscules a à z sont codées de 97 à 122,
- les lettres majuscules a à Z sont codées de 65 à 90.
-->ascii("
c
"
)
ans =
99
.
-->ascii("
G
"
)
ans =
71
.
La commande ascii opère aussi en sens inverse :
-->ascii(100
)
ans =
d
-->ascii(81
)
ans =
Q
Pour récupérer le texte à coder ou décoder, on peut soit l'écrire entre guillemets, soit aller chercher le fichier « .txt » avec le chemin qui le définit. Pour cela, on utilise la commande : mgetl("Chemin menant au fichier.txt")
nous n'utiliserons ici que des textes sans accent, sans ponctuation, sans retour à la ligne, écrits entièrement soit en minuscules, soit en majuscules. Par exemple, si m est le message à coder :
m="
QUELLE
BELLE
JOURNEE
"
;
ou bien :
m=mgetl("
D:\Documents\Cryptographie\texte1.txt
"
);
Exemple de codage avec le code de césar de clé 15, le texte est écrit en majuscules
Algorithme |
Éditeur Scilab |
---|---|
la clé k prend la valeur 15 |
Sélectionnez
|
III. Chapitre 3 - Exemples d'utilisation▲
III-A. Variables, affectation, affichage▲
III-A-1. Exemple 1▲
Calculez le prix TTC d'un article à partir de son prix HT, avec un taux de TVA à 19,6 %.
Algorithme
Lire le prix hors taxes et le mettre dans HT
Calculer le prix avec taxes et le mettre dans TTC
Afficher TTCA
Console Scilab
- dalcul et affichage simple :
-->HT=540
;
-->TTC=HT*1
.196
TTC =
645
.84
- demande de valeur et affichage mis en forme :
-->HT=input("
Prix
hors
taxe
:
"
);
Prix hors taxe :
3789
-->TTC=HT*1
.196
;
-->afficher("
Le
prix
avec
taxes
..
est
"
+string(TTC))
Le prix avec taxes est 4531
.644
- fonction :
-->function
TTC=f(HT);
--> TTC=HT*1
.196
;
-->endfunction
-->f(540
)
ans =
645
.84
-->f(3789
)
ans =
4531
.644
les exemples sont illustrés soit par un affichage dans la console avec les commandes (précédées de « --> ») et les retours, soit par un affichage dans l'éditeur (sans « --> » et sans retours) et/ou par un graphique. dans tous les cas, pour reproduire les exemples, ne tapez pas « --> » (celui-ci est affiché par défaut devant les lignes de commande dans la console et ne doit pas figurer dans l'éditeur).
III-A-2. Exemple 2▲
Convertissez un temps donné en secondes, en heures, minutes et secondes.
Algorithme
Lire le temps en secondes, le mettre dans t
Mettre dans q le quotient de t par 60 (nombre de minutes)
Mettre dans s le reste (nombre de secondes)
Mettre dans h le quotient de q par 60 (nombre d'heures)
Mettre dans m le reste (minutes restantes)
Afficher heures, minutes, secondes
Console Scilab
- calcul et affichages simple :
-->t=12680
;
-->q=quotient(t,60
); s=reste(t,60
);
-->h=quotient(q,60
); m=reste(q,60
);
-->[h,m,s]
ans =
3
. 31
. 20
.
- demande de valeur et affichage mis en forme :
-->t=input("
Heure
en
secondes
:
"
);
Heure en secondes :
4586
-->q=quotient(t,60
);s=reste(t,60
);
-->h=quotient(q,60
);m=reste(q,60
);
-->afficher(string(h)+"
heures
"
+string(m)+"
minutes
"
+..
string(s)+"
secondes
"
)
1
heures 16
minutes 26
secondes
- fonction :
-->function
y=f(t)
--> q=quotient(t,60
);s=reste(t,60
);
--> h=quotient(q,60
);m=reste(q,60
);
--> y=[h,m,s]
-->endfunction
-->f(12680
)
ans =
3
. 31
. 20
.
-->f(4586
)
ans =
1
. 16
. 26
.
III-A-3. Exemple 3▲
Calculez l'hypoténuse d'un triangle connaissant les deux côtés de l'angle droit.
Algorithme
Mettre le premier côté dans a
Mettre le deuxième côté dans b
Calculer kitxmlcodeinlinelatexdvp\sqrt{a^{2}+b^{2}}finkitxmlcodeinlinelatexdvp, le mettre dans c
Afficher c
Console Scilab
- calcul et affichage simple :
-->a=3
; b=4
;
-->c=sqrt(a^2
+b^2
)
c =
5
.
- demande de valeur et affichage mis en forme :
-->a = input("
Premier
côté
:
"
);
Premier côté :
1
-->b = input("
Deuxième
côté
:
"
);
Deuxième côté :
sqrt(3
)
-->c = sqrt(a^2
+b^2
);
-->afficher("
Hypoténuse
:
"
+string(c))
Hypoténuse :
2
- fonction :
-->function
c=Hypotenuse(a,b)
--> c=sqrt(a^2
+b^2
)
-->endfunction
-->Hypotenuse(4
,5
)
ans =
6
.4031242374328
Le nom d'une fonction ne doit pas contenir d'accent.
III-B. Boucles▲
III-B-1. Exemple 4▲
Calculez les carrés des entiers naturels de 1 à 100.
Les 100 carrés constituent alors les coordonnées du vecteur c
Algorithme |
Éditeur Scilab |
---|---|
Pour n allant de 1 à 100 |
Sélectionnez
|
-->c(74
)
ans =
5476
.
III-B-2. Exemple 5▲
Calculez 30 termes de la suite définie par : kitxmlcodeinlinelatexdvp\left\{\begin{aligned} &u_{0}=1\\ &u_{n+1}=u_{n}+2n+3 \end{aligned}\right.finkitxmlcodeinlinelatexdvp
Affichez les indices et les termes de la suite calculés, puis tracez le nuage de points.
Algorithme |
Éditeur Scilab |
---|---|
Mettre 4 dans u(1) |
Sélectionnez
|
La commande « or » spécifie que le tracé sera constitué de ronds (« o »), de couleur rouge (« r »).
III-B-3. Exemple 6▲
Calculez le quotient q d'un nombre positif n par 11, par la méthode des soustractions successives (voir l'affectation d'une valeurDemander l'affectation d'une valeur).
Algorithme |
Éditeur Scilab |
---|---|
Lire n |
Sélectionnez
|
III-B-4. Exemple 7▲
Bob place 5 000 € à intérêts composés à un taux de 2,7 % par an en 2009.
- calculez les sommes obtenues pendant les 20 prochaines années,
- tracez le nuage des sommes.
Algorithme
mettre 5 000 dans s(1) qui sera la somme de l'année 2008 + 1
(Par la suite S(n) sera la somme de l'année 2008 + n)
Pour n allant de 1 à 20
Mettre kitxmlcodeinlinelatexdvps(n)finkitxmlcodeinlinelatexdvp multipliée par 1,027 dans kitxmlcodeinlinelatexdvps(n+1)finkitxmlcodeinlinelatexdvp.
Afficher l'année et la somme
Fin de pour
Tracé du nuage
- effacez l'écran graphique,
- tracez le nuage des points (kitxmlcodeinlinelatexdvpn ; s(n)finkitxmlcodeinlinelatexdvp) avec des croix rouges.
Console Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
Écrivez un programme lui permettant de savoir en quelle année il aura 7 000 €.
Algorithme |
Console Scilab |
---|---|
Mettre la somme 5 000 dans s |
Sélectionnez
|
III-B-5. Exemple 8▲
Calculez 40 termes des suites an et bn définies par : kitxmlcodeinlinelatexdvp\left\{\begin{matrix} a_{i}=20\\ b_{i}=60 \end{matrix}\right.finkitxmlcodeinlinelatexdvp
et pour tout entier naturel n, kitxmlcodeinlinelatexdvp\left\{\begin{matrix} a_{n+1}=\frac{2a_{n}+b_{n}}{4}\\ b_{n+1}=\frac{a_{n}+2b_{n}}{4} \end{matrix}\right.finkitxmlcodeinlinelatexdvp
puis calculez les termes des suites kitxmlcodeinlinelatexdvp(u_{n})finkitxmlcodeinlinelatexdvp et kitxmlcodeinlinelatexdvp(v_{n})finkitxmlcodeinlinelatexdvp définies par : kitxmlcodeinlinelatexdvpu_{n} = a_{n} + b_{n} \:finkitxmlcodeinlinelatexdvp et kitxmlcodeinlinelatexdvpv_{n} = b_{n} - a_{n} \:finkitxmlcodeinlinelatexdvp.
Algorithme |
Éditeur Scilab |
---|---|
Initialiser a(1) et b(1) |
Sélectionnez
|
On pressent que u et v sont géométriques, vérifiez alors que le quotient de deux termes consécutifs est constant :
for
n=1
:
40
U(n)=u(n+1
)/u(n);V(n)=v(n+1
)/v(n)
end
afficher([U,V])
On remarque, à partir d'un certain rang, que les valeurs de v, au lieu d'être constantes, varient, puis affichent Nan (« not a number » en anglais). Cela est dû au fait que v tend vers 0 et devient trop petit pour la division :
0
.75
0
.25
0
.75
0
.3
0
.75
0
.1666666666667
0
.75
1
.
0
.75
0
.
0
.75
Nan
0
.75
Nan
III-B-6. Exemple 9▲
En l'an 2000, le lycée a compte 2 000 élèves et le lycée b compte 8 000 élèves. Une étude montre que, chaque année :
- 10 % des élèves du lycée A quittent leur lycée pour aller au lycée B,
- 15 % des élèves du lycée B quittent leur lycée pour aller au lycée A.
Au bout de combien de temps le lycée a comptera-t-il plus d'élèves que le lycée b ?
Algorithme |
Éditeur Scilab |
---|---|
Mettre 2 000 dans a |
Sélectionnez
|
III-B-7. Exemple 10▲
Les suites kitxmlcodeinlinelatexdvp(u_{n})\mathrm{\ et\ } (v_{n})finkitxmlcodeinlinelatexdvp sont définies par :
kitxmlcodelatexdvpu_{n}=1+\frac{1}{2}+\frac{1}{3}+...+\frac{1}{n}-\ln (n+1)\ et\ v_{n}=1+\frac{1}{2}+\frac{1}{3}+...+\frac{1}{n}-\ln (n+1)finkitxmlcodelatexdvpCalculez 200 termes de chaque suite et trouvez à partir de quel rang leur différence est inférieure à 0,01 puis calculez une valeur approchée de la limite commune aux deux suites à 0,01 près
Algorithme |
Éditeur Scilab |
---|---|
Pour n allant de 1 à 200 |
Sélectionnez
|
- [1:n] définit le vecteur des entiers de 1 à n.
- [1:n]^(-1) définit le vecteur des inverses des entiers de 1 à n.
- sum([1:n]^(-1)) donne alors la somme des inverses.
Cet exemple peut être traité plus simplement en affichant uniquement le rang à partir duquel la différence est inférieure à 0,01 et non pas les valeurs des termes des suites
Algorithme |
Éditeur Scilab |
---|---|
Initialiser n à 1 et d à u(1)-v(1) |
Sélectionnez
|
III-C. Tests▲
III-C-1. Exemple 11▲
Calculez la distance entre deux nombres.
Algorithme |
Éditeur Scilab |
---|---|
Soit y l'image du couple (a , b) par la fonction d qui calcule la distance. |
Sélectionnez
|
Distance entre 3 et -5 :
-->d(3
,-5
)
ans =
8
.
III-C-2. Exemple 12▲
Virginie lance trois dés numérotés de 1 à 6. si elle obtient une somme de 18, elle gagne 50 euros, entre 10 et 17, elle gagne 5 euros, sinon elle ne gagne rien.
Algorithme |
Éditeur Scilab |
---|---|
Mettre dans T trois nombres entiers tirés au hasard entre 1 et 6 |
Sélectionnez
|
III-C-3. Exemple 13▲
Étant donné les trois côtés d'un triangle, élaborer un programme qui permet de déterminer si ce triangle est isocèle, équilatéral ou quelconque (voir l'affectation d'une valeurDemander l'affectation d'une valeur).
Algorithme |
Éditeur Scilab |
---|---|
Lire le premier côté, le mettre dans a |
Sélectionnez
|
III-C-4. Exemple 14▲
Dichotomie
Rechercher une valeur approchée du nombre d'or, solution positive de l'équation kitxmlcodeinlinelatexdvp\: x^{2}=x+1finkitxmlcodeinlinelatexdvp
- définissez la fonction kitxmlcodeinlinelatexdvpf\: :\: f(x)=x^{2}-x-1finkitxmlcodeinlinelatexdvp
- tracez la courbe sur l'intervalle kitxmlcodeinlinelatexdvp[-5;5]finkitxmlcodeinlinelatexdvp
On remarque que la solution recherchée est entre 1 et 2.
- écrivez un programme permettant par dichotomie d'encadrer la solution recherchée dans un intervalle d'amplitude 10-4, en partant des valeurs 1 et 2.
Algorithme |
Éditeur Scilab |
---|---|
Définition de la fonction f |
Sélectionnez
|
III-C-5. Exemple 15▲
La suite de syracuse est définie par : kitxmlcodeinlinelatexdvpu_{1}finkitxmlcodeinlinelatexdvp est donné, et pour :
kitxmlcodelatexdvpn\geq 1, u_{n+1}=\left\{\begin{aligned} &\frac{u_{n}}{2}\: si\: u_{n}\: est\: pair\\ &3u_{n}+1\: sinon \end{aligned}\right.finkitxmlcodelatexdvpCalculez les termes et vérifiez que, quel que soit u1, on finit toujours par arriver a 4, 2, 1. Pour cela, on définit la fonction syracuse qui donnera, en fonction du premier terme, le rang auquel on arrive a 1 et les termes de la suite.
Algorithme |
Éditeur Scilab |
---|---|
Fonction syracuse |
Sélectionnez
|
III-D. Tracés de courbes▲
III-D-1. Exemple 16▲
Tracez la courbe de la fonction cube entre - 2 et +2.
Commentaires |
Éditeur Scilab |
---|---|
Attention à ne pas confondre f qui est la fonction et y qui est l'image de x. |
Sélectionnez
|
Tracez en rouge la fonction kitxmlcodeinlinelatexdvpffinkitxmlcodeinlinelatexdvp définie par kitxmlcodeinlinelatexdvpf(x)=x+ \ln \left (\frac{x-1}{2x+3} \right )finkitxmlcodeinlinelatexdvp pour x entre 1 et 5.
Calculez les images de 2 et de kitxmlcodeinlinelatexdvp\sqrt{3}finkitxmlcodeinlinelatexdvp.
Console Scilab
-->function
y=f(x); y=x+ln((x-1
)/(2
*x+3
)); endfunction
-->x=linspace(1
,5
,100
);
-->clf
-->plot(x,f,"
r
"
)
-->f(2
)
ans =
0
.0540898509447
-->f(sqrt(3
))
ans =
- 0
.4461185918724
III-D-2. Exemple 17▲
Tracez les courbes des fonctions kitxmlcodeinlinelatexdvpf_{p}finkitxmlcodeinlinelatexdvp définies sur [0 ; 4] par : kitxmlcodeinlinelatexdvpf_{p}(x)=p\sqrt{x^{2}+9}+4-xfinkitxmlcodeinlinelatexdvp
Pour p = 2, puis pour p variant de 1 à 2 par pas de 0,1 et repérez un minimum éventuel.
Éditeur Scilab
function
y=f(x); y=p*sqrt(x^2
+9
)+4
-x; endfunction
x=linspace(0
,4
,100
);
p=2
;
clf
; plot(x,f)
for
p=1
:
0
.1
:
2
plot(x,f);
end
cliquer
- si on tape cliquer dans la console, on clique alors avec la souris sur un point dans la fenêtre graphique et les coordonnées du point s'affichent dans la console.
- si on tape quadrillage dans la console, on fait apparaître un quadrillage dans la fenêtre graphique.
III-D-3. Exemple 18▲
Tracez la représentation graphique de la fonction kitxmlcodeinlinelatexdvpffinkitxmlcodeinlinelatexdvp définie par : kitxmlcodeinlinelatexdvp\left\{\begin{aligned} &f(x)=0\: si\: x\in [0;2[\\ &f(x)=x-2\: si\: x\in [2;4[\\ &f(x)=2x-6\: si\: x\in [4;7[ \end{aligned}\right.finkitxmlcodeinlinelatexdvp
Éditeur Scilab
function
y=f(x); y=0
; endfunction
function
y=g(x); y=x-2
; endfunction
function
y=h(x); y=2
*x-6
; endfunction
clf
x=linspace(0
,2
,100
); plot(x,f,"
r
"
)
x=linspace(2
,4
,100
); plot(x,g)
x=linspace(4
,7
,100
); plot(x,h,"
k
"
)
Le tracé n'est pas très lisible, en particulier celui du segment sur l'axe des abscisses. Cliquez sur Édition > Propriétés des axes, une nouvelle fenêtre s'ouvre (cette option n'est pas encore disponible sous Mac OS X).
Cliquez sur Compound (3) > Polyline (3) et choisissez d'augmenter l'épaisseur à 3 (Line). Vous remarquerez que les courbes sont numérotées dans l'ordre inverse de celui où elles ont été définies.
Avant :
Après :
III-D-4. Exemple 19▲
Tracez la surface définie par : kitxmlcodeinlinelatexdvpz=4\times y^{2}+x+3yfinkitxmlcodeinlinelatexdvp, pour x entre -10 et 10 et y entre -5 et 5.
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
On peut faire tourner la figure en cliquant sur l'icône , ou dans la barre de menus sur outils > rotation 2D / 3D.
III-E. Simulations, statistiques et probabilités▲
III-E-1. Exemple 20▲
Calculez la fréquence d'apparition du 6 lors de la simulation de 10 000 lancers d'un dé à 6 faces numérotées de 1 à 6.
Algorithme |
Éditeur Scilab |
---|---|
Simuler 10 000 lancers de dés |
Sélectionnez
|
III-E-2. Exemple 21▲
Simulez le lancer d'une pièce de monnaie sur 100 échantillons de taille 1 000. Tracez en bleu le nuage des 100 fréquences d'apparition du côté pile. Simulez avec des échantillons de taille 10 000. Tracez en rouge le nuage pour comparer les fluctuations.
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
III-E-3. Exemple 22▲
Une puce se déplace sur un axe gradué. À chaque saut, elle se déplace d'une unité, de manière aléatoire et équiprobable vers la droite ou vers la gauche. Elle part de l'origine et effectue une marche de 30 sauts.
Proposez un algorithme donnant la position d'arrivée de la puce. Enrichissez l'algorithme précédent pour donner la liste des positions d'arrivée de n marches aléatoires. Tracez les fréquences des différentes positions.
Algorithme |
Éditeur Scilab |
---|---|
Mettre 0 dans x (qui sera l'abscisse de la puce) |
Sélectionnez
|
- Algorithme
La fonction f associe à n marches aléatoires les n positions de la puce, mises dans la liste P |
- Editeur Scilab
function
P=f(N)
for
n=1
:
N
P(n)=0
;
for
i=1
:
30
P(n)=P(n)+2
*tirage_entier(1
,0
,1
)-1
;
end
end
endfunction
Calcul et tracé des fréquences pour N = 200
Éditeur Scilab |
Fenêtre graphique |
---|---|
Sélectionnez
|
III-E-4. Exemple 23▲
Élaborez un programme pour approcher la probabilité que dans une même classe de 30 élèves, 2 élèves au moins soient nés le même jour, en faisant 10 000 fois la simulation.
Définissez une fonction associant au nombre d'élèves de la classe la fréquence de cet événement, pour 1 000 simulations. À partir de combien d'élèves cette fréquence est-elle supérieure à 0,5 ?
Algorithme 1 |
Éditeur Scilab |
---|---|
Mettre 0 dans y (qui donnera la fréquence de l'événement « 2 élèves au moins ont la même date de naissance ») |
Sélectionnez
|
La fonction date existant déjà dans Scilab, nous choisissons de nommer ici la variable dates.
Algorithme 2 |
Éditeur Scilab |
---|---|
Appelons fr la fonction qui calcule la fréquence de l'événement « 2 élèves au moins ont la même date de naissance », en fonction du nombre e d'élèves. l'image de e par fr s'appelle y. |
Sélectionnez
|
III-E-5. Exemple 24▲
J'ai dans ma poche deux pièces de 10 centimes, une pièce de 20 centimes, trois pièces de 50 centimes, une pièce de 1 euro et deux pièces de 2 euros. Quelle est la probabilité pour qu'en sortant deux pièces au hasard de ma poche, je puisse payer une baguette à 1 euro ?
Algorithme |
Éditeur Scilab |
---|---|
Définir l'ensemble P des pièces de la poche |
Sélectionnez
|
III-E-6. Exemple 25▲
En 2000, dans le village de Xicun, en Chine, 20 enfants sont nés, parmi lesquels 16 garçons.
Dans la réserve d'Aamjiwnag, au Canada, entre 1999 et 2003, 132 enfants sont nés dont 46 garçons.
On supposera que la proportion habituelle de garçons à la naissance est de 50 % (elle est en réalité d'environ 51,2 %).
- Faire 100 simulations de chaque situation. Que peut-on en déduire ?
//
Xicun
for
k=1
:
100
T=tirage_entier(20
,0
,1
);
GX(k)=taille(find(T==1
)); ou bien GX(k)=frequence(1
,T)*20
;
end
clf
; quadrillage; plot(GX,"
.
"
)
//
AAmjiwnaag
for
k=1
:
100
T=tirage_entier(132
,0
,1
);
GA(k)=taille(find(T==1
)); ou bien GA(k)=frequence(1
,T)*132
;
end
clf
; quadrillage; plot(GA,"
.
"
)
Les résultats prouvent que moins de 5 % des réponses concordent avec la réalité. il y a donc autre chose que le hasard dans les deux cas.
III-E-7. Exemple 26▲
Deux points a et b sont pris « au hasard » sur un segment de longueur 1. Quelle est la probabilité de l'événement : « la longueur ab est supérieure à 0,5 » ?
- Simuler une expérience aléatoire.
- Faire ensuite une boucle pour simuler 1000 fois l'expérience et construire le nuage des fréquences successives.
//
On
prend
aléatoirement
2
nombres
entre
0
et
1.
On
cherche
la
//
fréquence
avec
laquelle
la
distance
entre
eux
est
supérieure
à
0,5.
On nomme kitxmlcodeinlinelatexdvpf (k)finkitxmlcodeinlinelatexdvp la fréquence avec laquelle la distance est supérieure à 1,5 lors de la kième simulation.
On initialise arbitrairement cette fréquence à 1.
N=1000
; f(1
)=1
;
for
k=1
:
N
T=tirage_reel(2
,0
,1
);
d=abs(T(1
)-T(2
));
D=floor(d+0
.5
);
f(k+1
)=(k*f(k)+D)/(k+1
);
end
clf
;quadrillage;plot(f,"
.
"
)
d donne la distance entre les deux nombres. si 0 ≤ d < 0,5, alors D=0 et si 0,5 ≤ d ≤ 1, alors D=1.
Pour calculer kitxmlcodeinlinelatexdvpf (k+1)finkitxmlcodeinlinelatexdvp, on calcule de deux façons différentes le nombre de fois où la distance est supérieure à 0,5 lors de la (k+1)ième simulation : kitxmlcodeinlinelatexdvp(k+1) f (k+1) = k f (k) + Dfinkitxmlcodeinlinelatexdvp.
On trouve que la fréquence se stabilise vers 0,25. On peut le prouver en admettant que la probabilité est égale à l'aire du domaine des points m (x,y) avec x et y dans [0 ; 1] et |x-y| > 0.5.
III-E-8. Exemple 27▲
Jean-Claude Dusse s'inscrit pour 6 jours de cours de ski. On lui annonce qu'il ne peut pas choisir son moniteur, mais que celui-ci sera tiré au hasard chaque matin parmi l'équipe, qui comprend autant d'hommes que de femmes. Inquiet, Jean-Claude se demande quelles sont ses chances d'avoir une femme comme monitrice. il simule 100 000 semaines de cours de ski.
for
k=1
:
100000
t=tirage_entier(6
,0
,1
);
N(k)=taille(find(t==1
));
end
for
k=0
:
6
fr(k+1
)=frequence(k,N);
afficher([k,fr(k+1
)])
end
clf
; bar(fr)
Après réflexion, Jean-Claude cherche seulement à approcher la probabilité d'avoir une monitrice au moins trois jours dans la semaine.
N=10000
;
f=0
;
for
k=1
:
N
t=tirage_entier(6
,0
,1
);
if
taille(find(t==1
))>=3
then
f=f+1
/N;
end
end
afficher(f)
III-E-9. Exemple 28▲
Un groupe de citoyens demande à la municipalité d'une ville la modification d'un carrefour en affirmant que 40 % des automobilistes tournent en utilisant une mauvaise file. Un officier de police constate que sur 500 voitures prises au hasard, 190 prennent une mauvaise file.
- Déterminer, en utilisant la loi binomiale sous l'hypothèse p = 0,4, l'intervalle de fluctuation au seuil de 95 %.
N=500
;p=0
.4
;
RB=rep_binomiale(N,p);
m=find(RB>0
.025
); M=find(RB>=0
.975
);
afficher([(m(1
)-1
)/N,(M(1
)-1
)/N])
- D'après l'échantillon, peut-on considérer, au seuil de 95 %, comme exacte l'affirmation du groupe de citoyens ?
On trouve [0,358 ; 0,444].
Comme f = 0,38. l'affirmation est considérée comme exacte.
III-E-10. Exemple 29▲
Programmer le calcul des coefficients du binôme de newton sous forme de tableaux (triangle de Pascal).
On va utiliser une matrice. Notons la P (comme Pascal). l'élément P(i,j) est la valeur figurant à la ligne i et la colonne j. La numérotation des lignes et des colonnes commence obligatoirement à 1, on aura donc un décalage :
kitxmlcodelatexdvp\begin{pmatrix} P(1,1) & P(1,2) & P(1,3)\\ P(2,1) & P(2,2) & P(2,3)\\ P(3,1) & P(3,2) & P(2,3) \end{pmatrix} = \begin{pmatrix} \begin{pmatrix} 0\\0 \end{pmatrix} & 0 & 0\\ \begin{pmatrix} 1\\0 \end{pmatrix} & \begin{pmatrix} 1\\1 \end{pmatrix} & 0\\ \begin{pmatrix} 2\\0 \end{pmatrix} & \begin{pmatrix} 2\\1 \end{pmatrix} & \begin{pmatrix} 2\\2 \end{pmatrix} \end{pmatrix}finkitxmlcodelatexdvpOn utilise le fait que pour tout entier naturel n, on a kitxmlcodeinlinelatexdvp\begin{pmatrix} n\\ 0\end{pmatrix} = \begin{pmatrix} n\\ n\end{pmatrix}=1finkitxmlcodeinlinelatexdvp
et que pour tous entiers naturels n et k tels que kitxmlcodeinlinelatexdvpk\leq n,\begin{pmatrix}n\\k\end{pmatrix}+ \begin{pmatrix}n\\k+1\end{pmatrix}= \begin{pmatrix}n+1\\k+1\end{pmatrix}finkitxmlcodeinlinelatexdvp
Une matrice étant toujours rectangulaire (ici carrée) les éléments qui n'auront pas été calculés seront automatiquement remplacés par des zéros. Faisons le calcul pour n lignes, ici par exemple n=10.
N=10
;
P(1
,1
)=1
;
for
i=2
:
N
P(i,1
)=1
;
for
j=2
:
i-1
P(i,j)=P(i-1
,j-1
)+P(i-1
,j);
end
P(i,i)=1
;
end
afficher(P)
III-E-11. Exemple 30▲
Des œufs en chocolat sont vendus par boîtes de 3. Certains œufs contiennent une figurine. Une collection est composée de 9 figurines. le problème à résoudre est de savoir combien il faudra acheter de boîtes d'œufs en moyenne pour avoir la collection complète, et combien cela va coûter.
Dans chaque boîte de 3 œufs, un seul contient une figurine. On suppose que les figurines sont uniformément réparties dans les boîtes, et on achète les boîtes une par une.
- Simuler avec Scilab en tirant au hasard parmi les entiers de 1 à 9. On créera une liste T qui au départ contient 9 zéros, et on remplacera le 0 par un 1 lorsque le numéro correspondant est tiré. On s'arrête lorsque tous les zéros sont remplacés par des 1, ce qui se teste facilement en calculant la somme des éléments de la liste T.
- Afficher le nombre n de boîtes qu'il a fallu acheter pour obtenir tous les entiers.
- Refaire 1000 fois cette simulation.
Simulation pour une collection
T=zeros(1
,9
);
n=0
;
while
sum(T)<>9
n=n+1
;
A=tirage_entier(1
,1
,9
);
T(A)=1
;
end
afficher(n)
1000 simulations
for
k=1
:
1000
T=zeros(1
,9
);
n(k)=0
;
while
sum(T)<>9
n(k)=n(k)+1
;
A=tirage_entier(1
,1
,9
);
T(A)=1
;
end
end
- Faire une étude plus précise de la série statistique des valeurs de n obtenues : médiane et quartiles, moyenne et écart-type.
- Quel est le pourcentage de cas où il aura suffi d'acheter 25 boîtes ?
- Une boîte de 3 œufs en chocolat dont un seul contient une figurine vaut 2 euros. Combien doit-on dépenser en moyenne pour avoir la collection ?
//
Calcul
des
indicateurs
me=mediane(n); afficher("
Médiane
:
"
+string(me))
Q=quartiles(n); afficher("
Quartiles
:
"
+string(Q(1
))+"
et
"
+string(Q(2
)))
m=moyenne(n); afficher("
Moyenne
:
"
+string(m))
e=ecart_type(n); afficher("
Ecart-type
:
"
+string(e))
//
Pourcentage
de
cas
où
25
achats
suffisent
t=taille(find(n<=25
));
afficher("
Dans
"
+string(t/1000
)+"
%
des
cas,
25
achats
suffisent.
"
)
//
Moyenne
des
dépenses
afficher("
On
doit
dépenser
en
moyenne
"
+string(2
*m)+"
euros
pour..
avoir
la
collection
entière.
"
)
III-E-12. Exemple 31▲
Écrire un programme qui permet de trouver la valeur de u pour que kitxmlcodeinlinelatexdvp\: P (-u<Z<u)= pfinkitxmlcodeinlinelatexdvp aveckitxmlcodeinlinelatexdvp\: Zfinkitxmlcodeinlinelatexdvp variable aléatoire suivant une loi normale centrée réduite et p prenant différentes valeurs entre 0 et 1, dont les valeurs classiques 0,95 et 0,99.
p=0
.95
;
u=1
;
while
2
*loi_normale(u,0
,1
)-1
<p
u=u+0
.01
;
end
afficher("
Pour
p
=
"
+string(p)+"
on
a
u
=
"
+string(u))
X est une variable aléatoire suivant la loi normale de paramètres m et s.
Écrire un programme qui calcule les probabilités que X appartienne à un intervalle de la forme kitxmlcodeinlinelatexdvp[m-ks\: ;\: m+ks]finkitxmlcodeinlinelatexdvp pour k = 1, 2 et 3 (voir l'affectation d'une valeurDemander l'affectation d'une valeur).
m=input("
Moyenne
de
X
:
"
);
s=input("
Ecart-type
de
X
:
"
);
for
k=1
:
3
p=1
-2
*loi_normale(m-k*s,m,s);
afficher([k,p])
end
III-E-13. Exemple 32▲
Comment déterminer les différents intervalles de fluctuation ?
Déterminer les intervalles de fluctuation avec la loi binomiale au seuil de 0.95 :
- si l'on veut symétriser les probabilités que X soit à l'extérieur de l'intervalle,
- si l'on veut le plus petit intervalle centré autour de l'espérance,
- si l'on veut l'intervalle d'amplitude minimale.
Nous choisissons d'établir les intervalles de fluctuation autour de la fréquence. dans ce corrigé, n=100 et p=0,3, ces valeurs peuvent être changées. On rajoute les intervalles de fluctuation calculés avec les formules du cours de seconde et de terminale.
n=100
; p=0
.3
;
//
Symétrisation
des
probabilités
que
X
soit
à
l'extérieur
de
l'intervalle
RB=rep_binomiale(n,p);
m=find(RB>0
.025
); M=find(RB>=0
.975
);
afficher("
Intervalle
symétrique
"
)
afficher([(m(1
)-1
)/n,(M(1
)-1
)/n])
//
Intervalle
centré
sur
l'espérance
e=n*p;
k=0
;
while
rep_binomiale(n,p,e+k)-rep_binomiale(n,p,e-k)<0
.95
k=k+1
;
end
afficher("
Intervalle
centré
sur
l''espérance
"
)
afficher([(e-k)/n,(e+k)/n])
//
Le
plus
petit
intervalle
for
j=1
:
n
for
i=1
:
j
d(i,j)=rep_binomiale(n,p,j)-rep_binomiale(n,p,i-1
);
end
end
[i,j]=find(d>=0
.95
);
[diff,k]=min(j-i)
afficher("
Plus
petit
intervalle
"
)
afficher([i(42
)/n,j(42
)/n])
//
L'intervalle
vu
en
seconde
afficher("
Intervalle
vu
en
seconde
"
)
afficher([p-1
/sqrt(n),p+1
/sqrt(n)])
//
L'intervalle
de
fluctuation
asymptotique
au
seuil
de
0.95
u=1
.96
;
afficher("
Intervalle
de
fluctuation
asymptotique
"
)
afficher([p-u*sqrt(p*(1
-p)/n),p+u*sqrt(p*(1
-p)/n)])
III-F. Arithmétique▲
III-F-1. Exemple 33▲
Déterminez le quotient et le reste dans la division de a par b, a et b positifs.
Algorithme |
Éditeur Scilab |
---|---|
Entrer a et b |
Sélectionnez
|
On définit la fonction diveucl qui, aux deux variables a et b (a>b>0), associe deux valeurs : le quotient et le reste.
III-F-2. Exemple 34▲
Déterminez si un nombre entier a est premier, avec a > 2.
On définit la fonction prem qui, au nombre entier a, associe la phrase « a est premier » si a est premier et « a est composé » sinon. On regarde à part la divisibilité par 2 qui permet ensuite de ne tester que les diviseurs impairs.
Algorithme |
Éditeur Scilab |
---|---|
Entrer a |
Sélectionnez
|
- Il existe dans Scilab la fonction premier. premier(a) retourne %T si a est premier et %F sinon.
- La fonction return permet d'arrêter le programme et de sortir de la fonction. On n'exécute donc pas les instructions suivantes, qui sont inutiles.
III-F-3. Exemple 35▲
Décomposez un entier positif a en facteurs premiers.
On définit la fonction decomp qui, au nombre entier positif a, associe la liste de ses diviseurs premiers.
Algorithme |
Éditeur Scilab |
---|---|
Entrer a |
Sélectionnez
|
Il existe dans Scilab la fonction factorise.
factorise(a) donne la liste des diviseurs premiers de a.
III-F-4. Exemple 36▲
Déterminez le plus grand commun diviseur de deux entiers strictement positifs a et b. On définit la fonction PGCD qui, au couple (a,b), associe son plus grand commun diviseur.
Algorithme |
Éditeur Scilab |
---|---|
Pour n allant de 1 à 50 |
Sélectionnez
|
III-G. Codage et décodage▲
III-G-1. Exemple 41▲
Coder le message « j aime les mathematiques » en utilisant le codage progressif : la première lettre est décalée de 1, la deuxième de 2… la kième de k.
Algorithme |
Éditeur Scilab |
---|---|
Mettre le fichier texte dans m |
Sélectionnez
|
III-G-2. Exemple 42▲
Le texte suivant : « CGQXXQnQXXQVaGdZQQ » a été codé avec la méthode de César. en testant successivement toutes les clés possibles, décodez-le.
Algorithme |
Éditeur Scilab |
---|---|
Mettre le fichier texte dans m |
Sélectionnez
|
III-G-3. Exemple 43▲
Pour décoder un message secret, il peut être utile de compter la fréquence d'apparition des lettres dans un texte. Pour cela, on a mis le texte écrit en majuscules, sans accent, dans un fichier texte enregistré sous le nom de « Texte.txt ». le programme va compter et afficher la fréquence de chaque lettre présente dans le texte.
Algorithme |
Éditeur Scilab |
---|---|
Mettre le fichier texte dans m |
Sélectionnez
|
- gca() signifie « get current axes » en anglais et permet d'accéder aux propriétés des axes de la figure.
- strsplit signifie « string split » en anglais (diviser la chaîne de caractères) et transforme la suite ABC… en caractères séparés « A », « B », « C »,…qui constitueront les étiquettes de l'axe des abscisses.
III-H. Divers▲
III-H-1. Exemple 44▲
Simulez le jeu du lièvre et de la tortue.
On lance un dé équilibré. si on obtient le 6, le lièvre a gagné, et une nouvelle partie commence. Sinon, la tortue avance et on relance le dé. La tortue doit avancer 5 fois pour gagner (5 tirages consécutifs sans le 6).
On cherche à simuler un grand nombre de parties pour approcher la probabilité de gagner de chacun.
Algorithme |
Éditeur Scilab |
---|---|
L représentera le nombre de parties gagnées par le lièvre. |
Sélectionnez
|
- while %T réalise une boucle sans fin.
- La commande break permet de sortir de la boucle while. On la met ici dès que la partie est finie.
III-H-2. Exemple 45▲
Résolvez l'équation différentielle kitxmlcodeinlinelatexdvp\left\{\begin{aligned} &y'(x)=y(x)\\ &y(0) =1 \end{aligned}\right.finkitxmlcodeinlinelatexdvp par la méthode d'Euler et Comparez le résultat obtenu à la solution exacte kitxmlcodeinlinelatexdvpy (x) = e^{x}finkitxmlcodeinlinelatexdvp. La suite obtenue par la méthode d'Euler est donnée par : kitxmlcodeinlinelatexdvp\left\{\begin{aligned} &y_{1}=1\\ &y_{i} =y_{i-1}+\mathrm{d}x\ y_{i-1} \end{aligned}\right.finkitxmlcodeinlinelatexdvp où dx est le pas en x.
Algorithme |
Éditeur Scilab |
---|---|
On définit la fonction f : fonction exponentielle |
Sélectionnez
|
III-H-3. Exemple 46▲
Approximation d'une aire.
Étant donné une fonction kitxmlcodeinlinelatexdvpffinkitxmlcodeinlinelatexdvp positive et monotone sur [a ; b], on veut encadrer l'intégrale de f entre a et b par les sommes des aires des rectangles.
Application à la fonction racine carrée entre 0 et 10 :
kitxmlcodelatexdvp\left\{\begin{aligned} &s_{n}=\frac{b-a}{n}\sum_{n-1}^{k=0}f(a+k\frac{b-a}{n})\\ &S_{n}=\frac{b-a}{n}\sum_{n}^{k=1}f(a+k\frac{b-a}{n}) \end{aligned}\right.finkitxmlcodelatexdvp
Algorithme |
Éditeur Scilab |
---|---|
La fonction sommes retournera les deux sommes. |
Sélectionnez
|
III-H-4. Exemple 47▲
Dans une ville, des trains roulant dans les deux sens relient la gare (G), la plage (P), le musée (M) et le belvédère (B) selon le graphe suivant :
- Donnez la matrice a associée au graphe GPMB.
- Calculez A6 et déduisez combien de chaînes de longueur 6 commencent et se terminent à la gare.
-->A=[0
1
0
1
;1
0
1
0
;0
1
0
1
;1
0
1
0
]
A =
0
. 1
. 0
. 1
.
1
. 0
. 1
. 0
.
0
. 1
. 0
. 1
.
1
. 0
. 1
. 0
.
-->B=A^6
B =
32
. 0
. 32
. 0
.
0
. 32
. 0
. 32
.
32
. 0
. 32
. 0
.
0
. 32
. 0
. 32
.
-->afficher ("
Il
y
a
"
+string(B(1
,1
))+"
chaînes
de
..
longueur
6
commençant
et
se
terminant
à
la
gare.
"
)
Il y a 32
chaînes de longueur 6
commençant et se terminant à la gare.
III-H-5. Exemple 48▲
n personnes numérotées de 1 à n jouent.
Le meneur de jeu donne un ticket à la première, puis saute 1, donne un ticket à la troisième, puis saute 2, donne un ticket à la sixième, etc, et recommence en tournant et en sautant une personne de plus à chaque fois. si la personne a déjà un ticket, on ne lui en redonne pas.
- Pour quelles valeurs de n tous les joueurs auront-ils un ticket ?
- Si le meneur de jeu fait payer chacun 1 euro et donne 2 euros à toutes les personnes ayant un ticket, pour quelles valeurs de n est-il gagnant ?
Les réponses à ces questions ne sont pas évidentes du tout. On peut prouver qu'au bout de 2n distributions de tickets, on boucle sur les mêmes personnes. On définira une fonction qui au nombre n de joueurs fait correspondre le vecteur u à n coordonnées égales à 1 si le joueur correspondant a un ticket, à 0 sinon.
- Editeur Scilab
function
u=f(n)
i=1
;
k=1
;
u=zeros(1
,n);
u(1
)=1
;
for
k=1
:
2
*n
j=reste(i+k,n)+1
;
u(j)=1
;
if
sum(u)==n then
break
end
i=j;
end
endfunction
- Cherchons dans quel cas tous les joueurs auront un ticket :
for
a=1
:
500
if
sum(f(a))==a then
afficher(a)
end
end
- Le meneur de jeu prend 1 euro par personne et donne 2 euros à ceux qui ont un ticket. Définissions la fonction gain de ce qu'il gagne :
function
y=gain(x);
y=x-2
*sum(f(x));
endfunction
x=linspace(1
,50
,50
);
clf
quadrillage
plot(x,gain,"
*
"
)
IV. Chapitre 4 - Fonctions Scilab utiles▲
Les fonctions précédées de # sont spécifiques au module lycée.
Il n'y a jamais d'accent dans le nom d'une fonction Scilab.
IV-A. Pour l'analyse▲
- sqrt(x) retourne la racine carrée de x pour x réel positif ou nul, et la racine complexe de partie réelle positive sinon.
- # ln(x) retourne le logarithme népérien de x avec x nombre réel ou complexe.
- exp(x) retourne l'exponentielle de x avec x nombre réel ou complexe.
- abs(x) retourne la valeur absolue du réel x (ou le module si x est complexe).
- int(x) retourne la troncature du réel x (entier avant la virgule).
- floor(x) retourne la partie entière du réel x (entier n tel que n ≤ x < n + 1).
- ceil(x) pour x réel retourne l'entier n tel que n - 1 < x ≤ n.
IV-B. Pour l'arithmétique▲
- # pair(n) retourne %T si n est pair et %F sinon avec n entier positif ou nul (%T signifie « True » c'est-à-dire vrai et %F signifie « False » c'est-à-dire faux).
- # impair(n) retourne %T si n est impair et %F sinon avec n entier positif ou nul.
- # quotient(m,n) retourne le quotient de m par n avec m entier et n entier non nul.
- # reste(m,n) retourne le reste de la division de m par n avec m entier et n entier non nul.
- # pgcd(m,n) retourne le plus grand commun diviseur de m et n avec m et n entiers.
- # ppcm(m,n) retourne le plus petit commun multiple de m et n avec m et n entiers.
- # premier(n) retourne %T si n est premier et %F sinon avec n entier positif ou nul.
- # liste_premiers(n) retourne la suite des nombres premiers inférieurs à n avec n entier positif ou nul.
- # diviseurs(n) retourne la suite des diviseurs du nombre n avec n entier positif.
- # factorise(n) retourne la suite des facteurs premiers de n avec n entier positif ou nul.
- # change_base(m,b1,b2) transforme le nombre m écrit en base b1 sous forme de chaîne de caractères en un nombre écrit en base b2 lui aussi sous forme de chaîne de caractères.
IV-C. Pour les probabilités et statistiques▲
- sum(n) retourne la somme des valeurs du vecteur n (sert à calculer un effectif total).
- cumsum(n) retourne le vecteur des valeurs cumulées croissantes du vecteur n (sert à calculer les effectifs cumulés croissants).
- # taille(v) retourne le nombre de coordonnées du vecteur v.
- # trier(v) ou # trier(v,">") retourne trié le vecteur de nombres ou de chaînes de caractères v dansl'ordre croissant.
- # trier(v,"<") retourne trié le vecteur de nombres ou de chaînes de caractères v dans l'ordre décroissant.
- # moyenne(v) retourne la moyenne du vecteur de nombres v.
- # moyenne_ponderee(v,n) retourne la moyenne du vecteur de nombres v pondérée par le vecteur de nombres n avec v et n de même dimension et n un vecteur de nombres positifs ou nuls mais non tous nuls.
- # ecart_type(v) retourne l'écart type du vecteur de nombres v.
- # ecart_type_pondere(v,n) retourne l'écart type du vecteur de nombres v pondéré par le vecteur de nombres n avec v et n de même dimension et n un vecteur de nombres positifs ou nuls mais non tous nuls.
- # variance(v) retourne la variance du vecteur de nombres v.
- # variance_ponderee(v,n) retourne la variance du vecteur de nombres v pondérée par le vecteur de nombres n avec v et n de même dimension et n un vecteur de nombres positifs ou nuls mais non tous nuls.
- # mediane(v) retourne la médiane du vecteur de nombres v.
- # mediane_ponderee(v,n) retourne la médiane du vecteur de nombres v pondérée par le vecteur de nombres n avec v et n de même dimension et n un vecteur de nombres positifs ou nuls mais non tous nuls.
- # quartiles(v) retourne les deux quartiles du vecteur de nombres v.
- # quartiles_ponderes(v,n) retourne les deux quartiles du vecteur de nombres v pondérés par le vecteur de nombres n avec v et n de même dimension et n un vecteur de nombres positifs ou nuls mais non tous nuls.
- # deciles(v) retourne les déciles D1 et D9 du vecteur de nombres v.
- # deciles_ponderes(v,n) retourne les déciles D1 et D9 du vecteur de nombres v pondérés par le vecteur de nombres n avec v et n de même dimension et n un vecteur de nombres positifs ou nuls mais non tous nuls.
- bar(v,n,couleur) trace le diagramme en barre avec v en abscisse, n en ordonnée, v et n étant des vecteurs lignes de même dimension. Par défaut, bar(n) trace le diagramme en barres de n en bleu avec 1,2,3… en abscisses.
- bar(v,[n1',n2']) trace un diagramme en barre double avec v en abscisse, n1 en ordonnée en bleu et n2 en ordonnée en vert, avec v, n1 et n2 vecteurs lignes de même dimension.
- # regression_y_en_x(x,y) retourne les coefficients a et b de la droite de régression de y en x par la méthode des moindres carrés, d'équation y = ax + b, avec x et y des vecteurs de nombres de même dimension et x un vecteur de nombres non tous égaux.
- # histogramme(a,n,couleur) permet de tracer l'histogramme d'une série statistique où les valeurs de la variable sont regroupées dans des intervalles. a est le vecteur donnant les bornes des intervalles dans l'ordre croissant. n est le vecteur des effectifs ou des fréquences correspondants. couleur (argument optionnel) définit la couleur comme dans la fonction plot.
IV-D. Pour simuler▲
- # tirage_entier(p,m,n) retourne un vecteur de p tirages entiers pris entre m et n avec p entier positif, m et n entiers et m ≤ n.
- # tirage_reel(p,a,b) retourne un vecteur de p tirages réels pris entre a et b avec p entier positif, a et b réels et a ≤ b.
- rand(n,p) avec n avec p entiers positifs, retourne une matrice n × p de nombres pris aléatoirement entre 0 et 1.
- rand() retourne un nombre réel pris aléatoirement entre 0 et 1.
- floor(x) retourne la partie entière du nombre réel x. En particulier, si p est un réel compris entre 0 et 1, floor(rand()+p) vaudra 1 avec une probabilité et 0 avec une probabilité 1 - p.
- # frequence(n,s) retourne la fréquence de n dans la suite de nombres s avec n entier.
- # frequence_tirage_entier(p,m,n) retourne la suite des fréquences de p tirages entiers pris entre m et n avec p entiers positif, m et n entiers et m ≤ n.
- # ensemble("r(1)","r(2)","r(3)","v(1)","v(2)") définit un ensemble, ici l'ensemble de trois boules rouges numérotées 1, 2, 3 (leurs valeurs) et deux vertes numérotées 1, 2 (leurs valeurs).
- # tirage_ensemble(n,ens) retourne un ensemble de n éléments pris parmi ceux de l'ensemble ens.
- # valeur(ens) retourne le vecteur des valeurs des éléments de l'ensemble ens.
- # ajouter("a",ens) ajoute un élément a à l'ensemble ens.
- # appartient("a",ens) détermine l'appartenance d'un élément a à l'ensemble ens.
- # complementaire(A,B) retourne le complémentaire de l'ensemble A dans l'ensemble B.
- # enlever("a",ens) enlève l'élément a de l'ensemble ens.
- # inclus(A,B) détermine si un ensemble A est inclus dans un ensemble B.
- # intersection (A,B) retourne l'intersection de deux ensembles A et B.
- # jeu_32, jeu_52, jeu_54, jeu_tarot retournent les ensembles des cartes respectivement de jeux de 32, 52, 54 cartes ou d'un jeu de tarot.
- # union(A,B) retourne l'union des deux ensembles A et B.
IV-E. Pour définir des lois▲
- # factorielle(n) retourne la factorielle de n avec n entier positif ou nul.
- # arrangement(n,p) retourne le nombre d'arrangements de p éléments pris parmi n avec n et p entiers positifs ou nuls et kitxmlcodeinlinelatexdvpp\leq nfinkitxmlcodeinlinelatexdvp.
- # combinaison(n,p) retourne le nombre de combinaisons de p éléments pris parmi n avec n et p entiers positifs ou nuls et kitxmlcodeinlinelatexdvpp\leq nfinkitxmlcodeinlinelatexdvp.
- # loi_binomiale(n,p) où n est un entier positif et p un réel entre 0 et 1 retourne le vecteur ligne des probabilités kitxmlcodeinlinelatexdvpp(X = k)finkitxmlcodeinlinelatexdvp, pour k allant de 0 à n, lorsque X suit la loi binomiale de paramètres n et p. On peut aussi utiliser binomial(p,n).
- # loi_binomiale(n,p,k) avec k entier entre 0 et n retourne la probabilité kitxmlcodeinlinelatexdvpp(X = k)finkitxmlcodeinlinelatexdvp lorsque X suit la loi binomiale de paramètres n et p.
- # rep_binomiale(n,p) retourne le vecteur ligne des probabilités cumulées kitxmlcodeinlinelatexdvpp(X\leq k)finkitxmlcodeinlinelatexdvp pour k allant de 0 à n, lorsque X suit la loi binomiale de paramètres n et p.
- # rep_binomiale(n,p,t) retourne la probabilité kitxmlcodeinlinelatexdvpp(X\leq t)finkitxmlcodeinlinelatexdvp lorsque X suit la loi binomiale de paramètres n et p.
- # loi_geometrique(n,p) où n est un entier positif et p un réel entre 0 et 1 retourne le vecteur ligne des probabilités kitxmlcodeinlinelatexdvpp(X = k)finkitxmlcodeinlinelatexdvp, pour k allant de 0 à n, lorsque X suit la loi géométrique tronquée de paramètres n et p.
- # loi_geometrique(n,p,k) avec k entier entre 0 et n retourne la probabilité kitxmlcodeinlinelatexdvpp(X = k)finkitxmlcodeinlinelatexdvp lorsque X suit la loigéométrique tronquée de paramètres n et p.
- # loi_exp(lambda,t) retourne la probabilité kitxmlcodeinlinelatexdvpp(X\leq t)finkitxmlcodeinlinelatexdvp lorsque X suit la loi exponentielle de paramètre kitxmlcodeinlinelatexdvp\lambdafinkitxmlcodeinlinelatexdvp avec kitxmlcodeinlinelatexdvp\lambdafinkitxmlcodeinlinelatexdvp positif.
- # loi_normale(t,xbar,sigma) retourne la probabilité kitxmlcodeinlinelatexdvpp(X\leq t)finkitxmlcodeinlinelatexdvp lorsque X suit la loi normale de paramètres et kitxmlcodeinlinelatexdvp\sigmafinkitxmlcodeinlinelatexdvp avec kitxmlcodeinlinelatexdvp\sigmafinkitxmlcodeinlinelatexdvp positif.
IV-F. Pour afficher et tracer▲
- clf signifie « clear figure » et efface la figure présente sur la fenêtre graphique.
- plot permet de tracer des courbes ou des nuages de points en dimension 2.
- linspace(a,b,n), avec a et b réels et n entier, définit un vecteur de n valeurs régulièrement espacées entre a et b.
- scf permet d'ouvrir ou de sélectionner d'autres fenêtres graphiques.
- surf permet de tracer des surfaces en dimension 3.
- bar(X,Y) où X et Y sont des vecteurs, dessine le diagramme en bâtons de la série des valeurs de X ayant pour effectifs les valeurs de Y.
- # quadrillage fait apparaître un quadrillage dans la fenêtre graphique.
- plot(X,Y,"*") trace le nuage des points de coordonnées kitxmlcodeinlinelatexdvp(X(i),Y(i))finkitxmlcodeinlinelatexdvp sous forme d'étoiles. On peut préciser la couleur.
- plot(Y,"+") trace le nuage des points de coordonnées kitxmlcodeinlinelatexdvp(i,Y(i))finkitxmlcodeinlinelatexdvp sous forme de croix.
- # afficher("Phrase") affiche ce qui est écrit entre les guillemets.
- # afficher(A) où a est une matrice de nombres affiche le tableau des valeurs de A.
- # afficher("Phrase"+string(x)) affiche la phrase et la valeur du nombre x.
- # orthonorme bascule en une représentation orthonormée ou non orthonormée du tracé de la fenêtre graphique.
- # cliquer retourne les coordonnées du point cliqué sur la fenêtre graphique.
- # cercle permet de tracer des cercles.
IV-G. Utilitaires▲
- unique(v) retourne le vecteur v avec une seule occurrence de ses éléments dupliqués.
- sum(v) retourne la somme de tous les éléments du vecteur ou de la matrice v.
- prod(v) retourne le produit de tous les éléments du vecteur ou de la matrice v.
- find(test sur v) retourne les indices des éléments du vecteur v vérifiant le test.
- # afficher(x,y,…) affiche les valeurs de ses arguments dans la console.
- string(x) transforme le nombre x en chaîne de caractères.
- format(n) où n est un entier supérieur ou égal à 2 fixe l'affichage à n caractères, y compris le signe et la virgule.
- zeros(n,p) définit une matrice kitxmlcodeinlinelatexdvpn \times pfinkitxmlcodeinlinelatexdvp ne contenant que des 0.
- feval(x,y,f) où x et y sont des vecteurs de tailles respectives m et n , définit la matrice kitxmlcodeinlinelatexdvpm \times nfinkitxmlcodeinlinelatexdvp dont l'élément kitxmlcodeinlinelatexdvp(i , j)finkitxmlcodeinlinelatexdvp est kitxmlcodeinlinelatexdvpf(x (i) , y (j))finkitxmlcodeinlinelatexdvp.
- help fonction ouvre le navigateur d'aide à la page de la fonction.
- tic déclenche un chronomètre.
- toc arrête le chronomètre.