TP d’Informatique et Algorithmique
ECS1B 2020/2021 – Lycée Carnot
Matthias Gorny
www.ecs1b.matthiasgorny.fr
Table des matières
Introduction . . . . 3
1 Découverte de Scilab . . . . 4
2 Premiers programmes et fonctions en Scilab . . . . 8
3 Structures conditionnelles . . . . 11
4 Structures répétitives : boucle for . . . . 12
5 Structures répétitives : boucle while . . . . 15
6 Calcul approché d’intégrales . . . . 17
7 Représentation graphique avec Scilab . . . . 20
8 Matrices et systèmes avec Scilab . . . . 23
9 Résolution de manière approchée de l’équation f(x) = 0 . . . . 27
10 Simulation de phénomènes aléatoires . . . . 31
11 Convergences et approximations de variables aléatoires . . . . 36
Introduction
La plupart des feuilles de TP sont découpées en deux parties :
• une partie « entrainement » dont le but est d’aider la compréhension du cours d’informatique et d’algorith- mique. Il est donc indispensable d’avoir lu attentivement le cours avant la séance de TP.
• une partie regroupant plusieurs exercices d’application, de difficultés variables.
Quelques instructions :
• Lorsque l’on entame une nouvelle feuille de TP, commencez par créer le dossier..\ECS1B_TPInfo\TP**\ (en replaçant ** par le numéro du TP) et faites-en le répertoire courant de Scilab. Tous les scripts devront être sauvegardés dans ce dossier.
• Avant de commencer un exercice, tapez la commandeclear dans la console.
• Pour vous y retrouver plus facilement, veuillez écrire
— en commentaire au début de chaque programme ou fonction le numéro du TP et de l’exercice concerné.
— sur la feuille de TP, le nom que vous avez donné au programme (extension en .sce) ou la fonction (extension en.sci).
• Vous devez tester dans la console Scilab tous les programmes et fonctions que vous écrivez (sans oublier de les exécuter au préalable).
Pour faciliter ma lecture de vos écrans, veuillez organiser les fenêtres de votre environnement Scilab comme ceci :
FeuilledeTPno1
Découverte de Scilab
LorsdevotreinscriptionaulycéeCarnot,uncompteinformatiqueàvotrenoma étécréé.Votreloginestcomposédelapremièrelettredevotreprénom,suivide votrenom(enminusculeetsansespace).Votremotdepasseestvotredatede naissancesouslaforme:jjmmaaaa. Unefoisconnectésurvotrecompte,créezundossierintituléECS1B_TPInfo. Danscedossier,créezunnouveaudossierintituléTP1.I Prise en main de Scilab
•OuvrirScilab(laversion5.4.1)etconstaterquequelafenêtrequiapparaîtse composedequatresous-fenêtres:laconsoleScilab,lenavigateurdefichier,le navigateurdevariablesetl’historiquedescommandes. •Repérerlesquatrebandesbleues(ounoiresselonlesystèmed’exploitation utilisé)surlesquellessetrouventlesnomsdessous-fenêtres.Cliquersurlape- titecroixdunavigateurdevariables.PuisallersurApplicationsetcliquersur Navigateurdevariablespourlefaireréapparaitre. •Fermerlaconsole.Quesepasse-t-il? •Réorganiserl’environnementdetravailenplaçantlenavigateurdevariables etl’historiqueendessousdunavigateurdefichier(ilsuffitdemaintenirleclic gauchedelasourisenfoncésurlabandebleueounoirepourdéplacerlafenêtreà l’endroitvoulu). •Danslenavigateurdefichier,sélectionnerledossier..\ECS1B_TPInfo\TP1\ quidevientalorslerépertoirecourantdeScilab,c’est-à-direlerépertoiredans lequelsetrouventlesfichiersaveclesquelsontravaille •Cliquersurl’icônepourouvrirl’Aideenlignedansunenouvellefenêtre (onpeutégalementtaperlacommandehelpdanslaconsole).II Calculs sur les nomb res réels
•Pourexécuterunecommande,onplacelecurseuraprèslesymbole-->dansla consoleScilab,onrentrelacommandeetonappuiesurlatoucheEntréepour quecettecommandesoitinterprétée.Exécuterlescommandessuivantes:-->2 -->5 -->2+5 -->2-5 -->2*5 -->2/5
-->2∧5 -->2**5 •Placerlecurseursur-->sansécriredecommande.Utiliserplusieursfoisles touches↑et↓.Qu’estcequ’ellesfont? •Jeterunœilsurl’historiquedescommandesetconstaterqu’ilrésumelescom- mandeseffectuéesdanslaconsole.Effectuerunclicdroitsurlaconsoleetcliquer surEffacerl’historique. •Exécuterlescommandessuivantes:
-->2.5 -->2,5 -->2.5*4.6,
32/128 Aquoiserventlepointetlavirgule? Enn’utilisantqu’uneseulelignedecode,calculer85−71−36,17×19,4/3,28 et3+14159·10−5 . •Commeenmathématiques,lesopérationsontuncertainordredepriorité.Il fautdoncutiliserdesparenthèses.Exécuterlescommandessuivantes: -->345/7/3,(345/7)/3,345/(7/3), -->216/28,216/7*4,216/4*7,(216/7)*4,(216/4)*7,216/(4*7) -->7∧15,7∧3*5,7∧5*3,(7∧5)*3,7∧(3*5) -->6∧2∧4,(6∧2)∧4,6∧(2∧4) LycéeCarnot-ECS1B4MatthiasGorny
Calculer265 9∗13,73.6∗2.51 ,45/3 ,987 et−7+4 7−4+7 4×7. •Exécuterlescommandessuivantes: -->%e,%e∧2,%e∧(-1) -->%pi,%pi/2,%pi/3,%pi/4 •Exécuterlescommandessuivantes: -->sqrt(2),sqrt(3),sqrt(4),sqrt(3)∧2,sqrt(7.9∧2) -->exp(1),%e,log(2),log(exp(-12.5)),exp(log(14.3)),log(0) -->floor(%pi),floor(-5.67542) -->abs((-1)∧53) -->cos(%pi/2),cos(%pi/3),sin(%pi/4),sin(%pi/6) -->(cos(4.76))∧2+(sin(4.76))∧2 -->tan(%pi),tan(%pi/3) Calculertan (π+e)7√ 2
etcos π 3 ln
1−e√ 19 . •Scilabpermetégalementlamanipulationdesnombrescomplexes.Exécuterles commandessuivantes: -->%i,%i∧2 -->(3+2*%i)*(4-5*%i),(6*%i-8)/(7-%i) -->exp(%i*%pi)+1,exp(%i*%pi/2),exp(%i*%pi/3),exp(%i*%pi/4)
-->sqrt(-5) -->abs(8-7*%i),
sqrt(8∧2+(-7)∧2) Calculer(1+i)17 −1 (1+i)17+1et 3−13i√ 2 i−9
19 . •Exécuterlescommandessuivantes:
-->exp(709) -->exp(710) -->%inf -->help
%inf
-->1/%inf -->1/0 -->%eps -->help
%eps •Exécuterhelpformatdanslaconsole.Aquoisertlacommandeformat?
II I Création de va riables pa r affectation
•Exécuterlescommandessuivantes:-->exp(%pi) -->ans -->log(2) -->ans
Quecontientlavariableans? •Exécuterlescommandessuivantes:
-->x -->x=5 -->x -->2*x-11 -->x -->x=2*x-11 -->x -->y=3,
z=x+y,x,y,z •Jeterunœilsurlenavigateurdevariablesetconstaterqu’ilrésumetoutesles variablesaffectéesjusqu’ici(ans,x,y,z).Exécuterlescommandessuivantes: -->clearz -->ans,x,y,z
-->clear -->ans,
x,y,z Quefaitlacommandeclear?Quecontientdésormaislenavigateurdevariables? •Exécuterlescommandessuivantes: -->a=4,b=5,c=b∧a -->a=4;b=5;c=b∧a Aquoisertlepointvirgule?Quelleestsadifférenceparrapportàlavirgule? •Pourchacunedesinstructionssuivantes,anticipercequiseraaffichédansla console.Puisexécuterpourvérifier: -->x=1/2;x=2*x+1;x=2*x+1;x=2*x+1 -->y=7;y=1/y;y=1/y;y=1/y;y=1/y -->z=2;z=1-z∧2;z=1-z∧2;z=1-z∧2 -->t=4;t=t*%i;t=t*%i;t=t*%i LycéeCarnot-ECS1B5MatthiasGorny
•Exécuterlescommandessuivantes: -->var=2;Var=3;var,Var, -->var1=5,var_1=5,var!=5,var$=5,var#=5,var?=5 -->var%=5,var.1=5,1var=5,var-1=5, -->intergouvernementalisations=5 •Exercice:Siaetbsontdeuxvariables,quellesuited’instructionspermetà Scilabd’échangerlecontenudeaetb? •Affecteràlavariable%jlavaleurducomplexej=e2iπ/3 .Quevalentj3 et 1+j+j2 ?
IV V a riables b o oléennes et op érateurs de compa raison
•Exécuterlescommandessuivantes:-->clear -->%t,
%f
-->typeof(%f) -->
∼%t,∼%f -->%t|%t,%t|%f,%f|%t,%f|%f -->%t&%t,%t&%f,%f&%t,%f&%f •Exécuterlescommandessuivantes:
-->1==2 -->1=2 -->x=%e
∧2;log(x)<>2 -->y=%pi/4;z=(y>=0)&(y<1);z •Exécuterlacommandesqrt(3)∧2==3.Lerésultatestsurprenant,n’est-cepas? Pourcomprendred’oùprovientl’erreur,étudionsl’écartrelatifentresqrt(3)∧2 et3etcomparonslaaveclaprécisionεdeScilab(stockéedanslavariable%eps). -->abs(sqrt(3)∧2-3)<%eps -->abs(sqrt(3)∧2-3)<3*%eps
•Exercice:Onaffecteunnombreréelàunevariablex.Écrireuneinstruc- tionbooléenneenScilab,faisantintervenirx,quiestvraiesietseulementsix appartientàl’intervalle[−1,2]. Mêmequestionavec]−∞,1]∪]5,+∞[. •Exercice:Onaffecteunnombreréelàunevariablex.Écrireuneinstruction booléenneenScilab,faisantintervenirx,quiestvraiesietseulementsixestun entier. Onaffectedeuxentiersnaturelsnonnulsauxvariablesnetp.Écrireuneinstruc- tionbooléenneenScilab,faisantintervenirnetp,quiestvraiesietseulementsi nestunmultipledep.
V Chaines de ca ractères
•Tapercleardanslaconsoleetexécuter. •Exécuterlescommandessuivantes:-->Bonjour -->"Bonjour" -->’Bonjour’ -->x="Bonjour";
x -->y="Jem’appelleBond,JamesBond." -->y="Jem’’appelleBond,JamesBond."
-->x+y -->z=x+".
"+y LycéeCarnot-ECS1B6MatthiasGorny
•Exécuterlescommandessuivantes: -->a=5;b="5";c=7;d="7";
-->a+d -->a+c,
b+d -->typeof(a),typeof(b) •Exécuterlescommandessuivantes: -->e=string(a);e+d -->z+""+"Monnomdecodeest00"+string(c)+"." -->"Unevaleurapprochéedepiest"+string(%pi)+’.’ Aquoisertlacommandestring?
VI V ecteurs/li stes
•Exécuterlescommandessuivantes:-->clear -->v=[1,3,5,7,9,11,13,15] -->-1:8 -->2:0.1:3 -->linspace(1,5,100) -->ones(1,4) -->zeros(1,5)
•Exécuterplusieursfoislacommanderand(1,5). •Onpeutmodifier/supprimer/ajouterdescoordonnéesàunvecteur.Exécuter lescommandessuivantes: -->length(v),v(5),v($),v(10) -->v(2)=-6;v(3)=[];v -->v(2:5),v(5:2)
-->v(4:5)=[0,-1] -->v(1:2)=[] -->v=[v,%pi] -->v=[-%pi/2,v]
•Onpeutréaliserdesopérationsusuellessurlesvecteursouleurappliquerdes fonctions.Exécuterlescommandessuivantes: -->v=[1,3,5,7,9];w=[-5,%pi,1,-3,2];x=4; -->v+w,v-w,v*x,v/x
-->v+[5,-1,2] -->v*w -->v.*w,
v./w,v.∧w -->log(v),exp(v),sqrt(v) -->sin(w),cos(w),tan(w),abs(w),floor(w) •Pourl’instant,nousn’avonsrencontréquedesvecteurslignes.Maisonpeut égalementmanipulerdesvecteurscolonnes(etplusgénéralementdesmatrices). Exécuterlescommandessuivantes: -->u=[-1,0,3,5];u’ -->u+u’ Nousyreviendrons... •Enfin,onpeutappliquerdesopérateursdecomparaisonavecdesvecteurs demêmetailleetutiliserdesvecteursdebooléens.Exécuterlescommandes suivantes: -->v=[1,2,3,4];w=[-2,0,sqrt(10),%pi];x=[1,-%e,7,5];
-->(v>w)&(v<=x) -->u=[%t,%t,%f,%t];
or(u),and(u) LycéeCarnot-ECS1B7MatthiasGorny
Feuille de TP no2
Premiers programmes et fonctions en Scilab
Ce TP accompagne le chapitre 2 (Informatique et Algorithmique) :Programmes et fonctions en Scilab.
I L’éditeur de texte SciNotes
•Cliquer sur l’icône . L’éditeur de texte SciNotes s’ouvre dans une nouvelle fenêtre. A l’aide de la bande bleue (ou noire), insérer SciNotes dans l’environnement Scilab à droite de la console comme sur la figure de la page 4.
•Lorsqu’on clique sur la sous-fenêtre SciNotes, plusieurs icônes apparaissent en haut à gauche de l’environnement de travail. Cliquer sur l’icône afin d’ouvrir un nouveau script SciNotes.
•Dans le script que l’on vient d’ouvrir, écrire u0=7; q=-1/2; n=25; u=u0*q∧n
En cliquant sur le menu Ficher (en haut à gauche) puis Enregistrer sous, sauvegarder le script sous le nom script1.scedans le dossier..\ECS1B_TPInfo\TP2\.
•On va maintenant exécuter ce script dans la console. Cliquer sur Exécuter (en haut à gauche) puis..Exécuter sans écho. Un raccourci est Ctrl + Maj + E . Que se passe-t-il dans la console ? Exécuter la commande u dans la console.
•Observer que les variables u0,q,net uont été affectées.
•Modifier la première ligne du script comme cela :u0=-5; q=2; n=20; puis remarquer la présence d’une petite astérisque dans le titre de l’onglet correspondant au script. Elle signifie que le script n’a pas été enregistré et donc que les modifications n’ont pas été prises en compte. Il faut toujours enregistrer un script (avec le raccourci
Ctrl + S par exemple) quand on l’a modifié avant de l’exécuter.
•Lorsqu’on aura créé de nombreux scripts et qu’on voudra les consulter dans plusieurs mois, il ne sera pas évident de se rappeler ce leurs utilités et subtilités. Voilà pourquoi il faut prendre dès maintenant l’habitude d’ajouter des commentaires aux scripts. Le symbole// marque le début d’un commentaire : ce qui suit ce symbole ne sera pas exécuté. Modifier le script comme cela :
u0=-5; q=2; n=20;
u=u0*q∧n//Ce programme calcule le n-ième terme de la suite géométrique //de raison q et de terme initiale u0
Enregistrer le script et exécuter-le sans écho puis avec écho.
•Cliquer sur l’icône afin d’ouvrir un nouveau script. Constater qu’un nouvel onglet apparait à côté de l’onglet précédent. Cela permet de passer d’un script à l’autre très rapidement.
II Entraînement
1) Interaction avec l’utilisateur
Le script que l’on vient de créer n’est pas très pratique : si on veut modifier les valeurs de u0, qet n, il faut systématiquement modifier le script, l’enregistrer et l’exécuter à nouveau. Par ailleurs le programme implémenté dans le script renvoie le résultat stocké dans une variableumais il serait plus clair qu’une phrase soit affichée pour indiquer ce que représente le résultat (ici lenièmeterme de la suite géométrique de raison qet de terme initialu0).
Nous allons voir comment écrire un programme qui demande à l’utilisateur de préciser le contenu des variables d’entrée et qui affiche une phrase contenant éventuellement les variables de sortie.
•Dans la console, exécuter les commandes suivantes une par une : -->n=input("Entrer un nombre entier : ")
-->5 -->n
-->nom=input("Comment vous appelez-vous ? ") -->James Bond
-->nom=input("Comment vous appelez-vous ? ",
"string") -->James Bond
-->nom Que fait la commandeinput? A quoi sert l’option string?
•Dans la console, exécuter la commande suivante
-->n=7; s=n*(n+1)/2; disp(’La somme des entiers de 1 à’ + string(n) + ’ est ’ + string(s) + ’.’) Que fait la commandedisp?
•Créer un nouveau script appelé suitegeom.sceavec le contenu suivant :
u0=input('Entrer le terme initial de la suite géométrique : ') q=input('Entrer la raison de la suite géométrique : ')
n=input('Entrer un rang : ')
//Ce programme calcule le n-ième terme de la suite géométrique //de raison q et de terme initial u0
u=u0*q∧n
disp('La valeur du '+string(n)+'-ième terme de la suite géométrique de raison '+
string(q)+' et de terme initial '+string(u0)+' est '+string(u)+'.')
Enregistrer le script et exécuter-le sans écho (tester-le avec différentes valeurs). Le résultat est plutôt satisfaisant n’est-ce pas ?
2) Fonctions en Scilab
Nous avons vu que Scilab dispose de nombreuses commandes et fonctions prédéfinies. Nous allons à présent voir comment créer nos propres fonctions.
• On peut coder des fonctions de la variable réelle à valeurs réelles. Par exemple la fonctionf :x7−→ sin(x) 1 +x2, s’implémente comme cela en Scilab :
function y=fct1(x) y=sin(x)/(1+x∧2);
endfunction
Recopier ce code dans un script Scilab. En écrivanty=fct1(x), nous avons choisi de :
• stocker dans la variablexl’argument d’entrée de la fonction.
• stocker dans la variableyl’argument de sortie de la fonction
• appeler fct1la fonction.
Il faut absolument sauvegarder ce script sous le nomfct1.sci (fct1 car c’est le nom que l’on a donné à la fonction et.sci car c’est l’extension pour les fonctions Scilab).
Exécuter le script sans écho dans la console. Désormaisfct1 s’ajoute à la liste des fonctions Scilab. Tester les commandes suivantes :
-->clear
-->fct1(0), fct1(%pi), fct1(1), x, y
Constater que les variablesxet yne sont pas affectées. C’est normal ce sont des variables muettes.
Tester la commande suivante : y=fct1(-1); y. Que dire cette fois ?
•On a vu dans le TP1 que les fonctions usuelles (exp, log, sqrt, ans, floor, sin, cos, tan) peuvent prendre en entrée des vecteurs et renvoient un vecteur de même taille dont chaque coordonnée est évaluée par la fonction. Est-ce que cela fonctionne toujours avec la fonction que nous avons définie ?
Exécuter la commande fct1([1,2,3])dans la console.
Elle renvoie un message d’erreur. C’est normal car notre fonction n’est pas compatible avec les opérations algébriques sur les vecteurs. Faites les modifications nécessaires (c’est-à-dire remplacer*par ‘.*,/par./ et∧ par .∧) et tester-la (après l’avoir enregistrée et exécutée à nouveau) avec la commande fct1([1,2,3]).
Cette méthode ne fonctionne pas si la fonction contient des structures conditionnelles, comme on le verra dans les prochains chapitres.
•On peut aussi créer des fonctions qui prennent plusieurs arguments d’entrée et/ou plusieurs arguments de sortie.
Recopier la fonction ci-contre qui prend en arguments deux réelsx,q et un entier naturelq et qui renvoie les nièmestermes de la suite géométrique et de la suite arithmétique de raison q et de terme initial x :
function [u,v]=SuiteGeomArith(x,q,n) u=x*q∧n; v=x+q*n
endfunction
Tester les commandes suivantes : -->SuiteGeomArith(3,5,40) -->u=SuiteGeomArith(3,5,40); u -->[u,v]=SuiteGeomArith(3,5,40)
III Exercices
Tous les programmes et fonctions doivent être exécutés dans la console et testés avec plusieurs valeurs.
Exercice 1.(H) Écrire un programme qui demande à l’utilisateur deux entiers p etn(avec p6n) et qui affiche trois phrases indiquant les valeurs de
n
X
k=p
k,
n
X
k=p
k2 et
n
X
k=p
k3.
On utilisera les formules, vues en cours, donnant une expression de ces sommes en fonction de netp.
Exercice 2.(H) Écrire une fonction qui prend en entrée deux entiers pet n(avecp6n) et deux réels xet q et qui renvoie la valeur de
n
X
k=p
uk, où(uk)k∈N est la suite géométrique de raisonq et de terme initial x.
Exercice 3. (H) Écrire un programme qui demande à l’utilisateur d’entrer trois réels a, b et c, qui calcule le discriminant du polynômeaX2+bX+c et qui affiche une phrase du type «Le polynôme aX2+bX+c admet pour discriminant...»
Exercice 4.(H) Écrire un programme qui demande à l’utilisateur d’entrer deux vecteurs de taille 2 représentant les coordonnées de pointsA etB du plan muni d’un repère orthonormé (un vecteur par point), et qui affiche
• une phrase indiquant les coordonnées du milieuI de[AB],
• une phrase indiquant la longueur du segment[AB].
Transformer ensuite ce programme en une fonction.
Exercice 5. (H) Écrire un programme qui demande à l’utilisateur une durée T exprimé en secondes et qui le transforme en heures/minutes/secondes.
On utilisera la commandefloor.
Exercice 6.(H) Implémenter en Scilab les fonctions suivantes : f :x7−→ ex−e−x
ex+e−x, g:x7−→ 1
√2πexp
−x2 2
, h:x7−→
1− |x| si x∈[−1,1]
0 si x /∈[−1,1] , Pour la fonction h, on pourra s’aider de la fonction maxpour éviter le recours à une structure conditionnelle.
Exercice 7.(HH) Implémenter en Scilab la fonctionf qui est 2-périodique sur Ret qui vérifie
∀x∈[−1,1], f(x) =xp 1−x2. On pourra s’aider de la commande x-2*floor(x/2).
Feuille de TP no3
Structures conditionnelles
Ce TP accompagne le chapitre 3 (Informatique et Algorithmique) :Structures conditionnelles.
Tous les programmes et fonctions doivent être exécutés dans la console et testés avec plusieurs valeurs.
Exercice 1. (H) Construire un programme qui demande à l’utilisateur de rentrer une année et qui affiche un message précisant si l’année est bissextile ou non.
Une année est bissextile (elle a 366 jours), si elle est divisible par 4 et non divisible par 100, ou si elle est divisible par 400.
Exercice 2.(H) Écrire un programme qui demande à l’utilisateur un chiffre entre 0 et 9 et qui renvoie ce chiffre écrit en lettres. Il pourra renvoyer un message d’erreur si la réponse de l’utilisateur n’est pas un entier entre 0 et 9.
Exercice 3. (H) Écrire une fonction qui prend en entrée trois réels et qui renvoie un vecteur composés de ces trois réels rangés dans l’ordre croissant.
Exercice 4.(H) Implémenter en Scilab les fonctions suivantes :
φ:x7−→
sin(x)
x si x6= 0 1 si x= 0
et ψ:x7−→
sin(x) ln(−x) si x <0
0 si x= 0
x−3/2(1−cos(2x)) si x >0 .
Exercice 5.(H) Implémenter en Scilab la fonctionf :x7−→ 4 r
1− 5 3 +x.
Un message d’erreur sera affiché lorsqu’on évalue f en un réel en lequel elle n’est pas définie.
Exercice 6.(H)
1) Écrire un programme qui demande à l’utilisateur d’entrer deux réelsb, c et qui résout l’équation bx+c= 0 d’inconnue x∈R(le programme devra proposer une sortie adéquate y compris dans le cas où b= 0).
2) Écrire un programme qui demande à l’utilisateur d’entrer trois réels a, b, c et qui résout l’équation ax2+bx+c= 0 d’inconnue x∈R.
3) Écrire une variante du programme précédent qui résout l’équation dansC.
Exercice 7.(H) Écrire un programme qui demande à l’utilisateur trois réels a,b etc et qui donne le domaine de définition de la fonctionx7−→ln(ax2+bx+c).
Exercice 8.(HH) Écrire une fonction qui prend en entrée quatre réels a,b6= 0,x,y et qui renvoie la valeur du nièmeterme de la suite(un)n∈N définie paru0 =x,u1 =y et pour toutn∈N,un+2=aun+1+bun.
On utilisera les formules vues en cours donnant, pour toutn∈N, une expression deun en fonction denselon le discriminant de l’équation caractéristique associée à la suite.
On utilisera la commande atan(imag(z),real(z)) qui renvoie un argument du complexe z.
Exercice 9.(HH) Écrire un programme qui simule la saisie du code confidentiel d’une carte bancaire : l’utilisateur a trois essais pour taper le bon code et ensuite la carte est bloquée (on peut prendre par exemple2019 comme code confidentiel).
Feuille de TP no4
Structures répétitives : boucle for
Ce TP accompagne le chapitre 4 (Informatique et Algorithmique) :Structures répétitives.
I Entrainement
En général, la construction d’une boucle forau sein d’un programme se base sur quatre étapes :
• On identifie les variables d’entrées (qui proviennent du début du programme, qui sont des arguments d’entrée d’une fonction ou encore qui sont fournies par l’utilisateur via la commandeinput).
• On définit des variables qui vont être modifiées lors de la bouclefor. C’est l’étape d’initialisation.
• On écrit la boucle en tant que telle (for· · ·end). Elle utilise les variables d’entrées et, à chaque étape de la boucle, les variables définies à l’étape d’initialisation sont mises à jour.
• On renvoie les variables de sorties (affichées éventuellement dans une phrase via la commandedisp) qui sont en général des fonctions des quantités calculées pendant la boucle.
•Étudier en détail l’exemple du chapitre 2 (calcul de la somme
n
X
i=1
ip,n etp étant fournis par l’utilisateur).
•Écrire un script contentant le programme suivant :
n=input('Entrer un entier strictement positif : ') q=input('Entrer un réel : ')
u=1; s=1;
for i=1:n
u=u*q; s=s+u;
enddisp('La somme des ' + string(q) + '∧k pour k allant de 0 à ' + string(n)+ ' est ' + string(s) + '.')
Analyser ce programme en détail : identifier les quatre étapes recensées en début de paragraphe et ajouter des commentaires au programme (on pourra s’aider d’un tableau comme dans le chapitre 2).
Enregistrer-le sous le nomSommeGeom.sceet exécuter-le sans écho dans la console (tester-le avec plusieurs valeurs denet q) et comparer avec la formule du cours.
• Dans le programme précédent, auriez-vous procédé ainsi pour calculer les puissances ? En quoi la solution précédente est-elle « meilleure » que la vôtre ?
•Écrire un script contentant le programme suivant : for j=1:10
t=0for i=1:10 t=t+j;
disp(string(i)+'x'+string(j)+'='+string(t));
disp('###################')end end
Après avoir identifié ce que fait ce programme, enregistrer-le avec nom approprié et exécuter-le sans écho dans la console. Ajouter des commentaires au code et modifier le programme pour qu’il affiche une phrase précisant ce qu’il fait. Enregistrer et exécuter-le sans écho à nouveau.
II Quelques programmes/fonctions à savoir faire absolument
... c’est écrit dans le programme officiel d’ECS1 ! 1) Calcul de n!
Écrire une fonction qui prend en entrée un entier naturelnet qui calculen!en utilisant une structure répétitive.
2) Calcul de
n
p
Écrire une fonction qui prend en entrée deux entiers naturelsnet p (avecp6n) et qui calcule n
p
en utilisant une structure répétitive.
III Exercices
Tous les programmes et fonctions doivent être exécutés dans la console et testés avec plusieurs valeurs.
Exercice 1.(H) Écrire un programme qui demande à l’utilisateur deux entiers naturels net p, qui renvoie np (en utilisant une structure répétitive) sip6net qui renvoie un message d’erreur si n > pou sin oup ne sont pas des entiers naturels.
Exercice 2. (H) Soit(un)n∈N la suite définie par u0 ∈Ret, pour tout n∈N, un+1 = cos eun + un
2 . Écrire une fonction en Scilab qui prend en entrée un entier natureln et un réelu0 et qui calculeun.
Exercice 3.(H) Écrire une fonction en Scilab qui prend en entréen et qui calcule X
16i<j6n
1 i+j. Exercice 4.(HH) Pour toutn∈N, posonsSn= X
16i6k6n
(k2−i+ 1)
1) a) Calculer Sn en fonction den∈N.
b) Écrire une fonction qui prend en entrée un entier naturelnet qui calcule Sn à l’aide de la formule de la question précédente.
2) Écrire une fonction qui prend en entrée un entier naturelnet qui calcule Sn à l’aide de bouclesfor. Exercice 5.(HH) Soient(un)n∈N et (vn)n∈N deux suites définies paru0=−2,v0= 1 et
∀n∈N, un+1= 5un+ 4vn et vn+1 = 4un+ 5vn.
Écrire un programme qui prend en entrée un entier naturel net qui calcule un et vn. Comparer avec le résultat théorique de l’exercice 3 de la feuille d’exercice no5.
Exercice 6. (HH) Écrire une fonction en Scilab qui prend en entrée un entier n et quatre réels a, b, x, y et qui renvoie la valeur du nième terme de la suite (un)n∈N définie par u0 = x, u1 = y et pour tout n ∈ N, un+2=aun+1+bun.On utilisera la formule de récurrence et une boucle for.
Tester cette fonction avec (n, a, b, x, y) = (10,6,7,−2,−1) et comparer avec la valeur théorique donnée par une formule du cours.
Exercice 7.(HH) Implémenter en Scilab :
1) une fonctionsomme qui prend en entrée un vecteur et qui calcule la somme de ses coordonnées.
2) une fonction minmaxqui prend en entrée un vecteur composé de nombres réels et qui renvoie en sortie la plus grande et la plus petite de ses coordonnées.
Exercice 8.(HH) Pour tousx∈Ret n∈N, notons Sn(x) =
n
X
k=0
xk k!.
1) Écrire une fonction qui prend en entrée un entier natureln et un réelxet qui calcule Sn(x) (sans utiliser le symbole∧).
2) ComparerSn(x) et exp(x) pour plusieurs valeurs dex∈Ret n∈N. Commenter.
Exercice 9.(HHH) Pour toutn∈N, notons Sn la fonction définie par
∀x∈R, Sn(x) =
n
X
k=0
(−1)kx2k (2k)! .
1) Écrire une fonction en Scilab nomméesommecos qui prend en entrée(x, n)∈R×Net qui renvoie la valeur deSn(x) (sans utiliser le symbole∧).
2) Comparer les fonctionscoset Sn sur [−kπ, kπ]pour différentes valeurs des entiersk etn.
Exercice 10. (HH) Pour tout n∈N∗, posons Sn=
n
X
k=1
(−1)k+1
k . Nous montrerons dans le chapitre Dérivées successives et formules de Taylor que(Sn)n∈N∗ converge versln(2)et que, pour toutn∈N∗,|Sn−ln(2)|6 1
n+ 1. 1) Déterminer un rangntel que, |Sn−ln(2)|60,01.
2) Écrire un programme qui détermine une valeur approchée deln(2)à 10−2 près.
Exercice 11 – Conjecture de Syracuse. (HH) La suite de Syracuse est la suite (un)n∈N définie paru0∈Net, pour toutn∈N,
un+1=
( un
2 si un est pair, 3un+ 1 sinon.
1) Caractériser la suite de Syracuse quandu0= 1.
2) Écrire une fonction qui prend en entrée deux entiers naturelsnetu0 et qui affiche lesn+ 1 premiers termes u0, . . . , unde la suite de Syracuse (on pourra par exemple retourner un vecteur contenant cesn+ 1valeurs).
3) Tester cette fonction pour différentes valeurs. Que peut-on conjecturer1?
Exercice 12.(HHH) Le nombre4150possède une propriété remarquable : il est égal à la somme des puissances cinquièmes de ses chiffres. En effet
4150 = 45+ 15+ 55+ 05.
1) En raisonnant par l’absurde, montrer que si un nombre vérifiant cette propriété a au plus 6 chiffres.
2) En déduire que seul un nombre fini d’entiers vérifie cette propriété.
3) Écrire un programme Scilab qui renvoie la liste des nombres satisfaisant cette propriété.
1. La conjecture de Syracuse n’est pas démontrée à ce jour... mais elle a été vérifiée par ordinateur au moins jusque l’entier 1,25×262.
Feuille de TP no5
Structures répétitives : boucle while
Ce TP accompagne le chapitre 4 (Informatique et Algorithmique) :Structures répétitives.
I Entrainement
Une boucle whilepermet de répéter une séquence d’instructions tant qu’une certaine condition, appelée test d’arrêt, est vraie. Elle s’arrête dès que cette condition est fausse.
•Sans l’écrire dans un script, dire ce que fait le programme suivant : n=input('Entrer un entier naturel : ')
k=0; s=1;
while k<n
k=k+1; s=s+1/(k+1);
enddisp(s)
Pour nous aider à le comprendre, complétons le tableau suivant : on fournitn=4, alors valeurs en début de boucle
k<n valeurs en fin de boucle
k s k s
0 1 vrai
Remplacer la boucle while par une boucle for (effectuer cette modification sur cette feuille à côté du script initial).
En pratique, on n’utilisera une bouclewhileque lorsqu’elle est véritablement nécessaire : quand on ne connaît pas à l’avance le nombre d’itérations à effectuer. C’est le cas dans l’exemple suivant.
•Sans l’écrire dans un script, dire ce que fait le programme suivant : p=input('Entrer un entier naturel p : ')
A=input('Entrer un réel A : ') n=0; s=0;
while s<A
n=n+1; s=s+n∧p;
enddisp(n)
Pour nous aider à le comprendre, complétons le tableau suivant : on fournitp=5et A=1000, alors
valeurs en début de boucle
s<A valeurs en fin de boucle
n s n s
0 0 vrai
• Étudier en détail l’exemple du chapitre 2 (calcul du plus petit rang n∈N∗ pour lequel
n
X
k=1
1
k >A, A étant fourni par l’utilisateur).
II Exercices
Tous les programmes et fonctions doivent être exécutés dans la console et testés avec plusieurs valeurs.
Exercice 1.(H) Pour n∈N∗, posons Sn=
n
X
k=1
1
k2. On admet que la suite(Sn)n∈N∗ converge vers π2 6 . 1) Écrire un programme qui calcule une approximation de π2
6 à l’aide de la valeur de S1000. 2) Écrire une fonction qui prend en entrée un réelε >0et qui détermine le premier rangntel que
Sn−π2 6
6ε.
Exercice 2.(H) Soit (un)n∈N la suite telle que u0 ∈R∗+ et, pour tout n∈N,un+1= 1 + 2 un.
Nous avons vu dans le chapitre 6 que cette suite converge vers2. Écrire une fonction qui prend en entrée deux réels strictement positifs u0 etεet qui renvoie le premier rang npour lequel |un−2|6ε.
Exercice 3.(HH) Considérons(un)n∈N la suite telle que u0 = 1 et, pour toutn∈N,un+1 = 1−eun. 1) Étudions la convergence de la suite (un)n∈N.
a) Montrer que, pour tout n∈N,un∈[−2,1].
b) Déterminer les points fixes def◦f oùf :x∈R7→1−ex. c) Montrer que les suites (u2n)n∈Net (u2n+1)n∈N sont monotones.
d) En déduire que(un)n∈Nconverge vers 0.
2) Écrire une fonction en Scilab qui calcule le premier rangnpour lequel |un|60,01.
Exercice 4 – Conjecture de Syracuse (suite). (H) La suite de Syracuse est la suite (un)n∈N définie par u0 =x∈N et, pour toutn∈N,
un+1=
( un
2 si un est pair, 3un+ 1 sinon.
La conjecture de Syracuse affirme que,pour tout x∈N, il existe nx∈N tel queunx = 1.
Écrire une fonction qui prend en entrée un entierx et calcule le plus petit rangntel que un= 1.
Exercice 5. (HH) Écrire un programme qui choisit au hasard un entier entre 1 et 100, qui demande à l’utilisateur de deviner le nombre choisi et qui répondplus oumoins selon la valeur proposée par l’utilisateur. Le programme continue d’interroger l’utilisateur jusqu’à ce qu’il devine la bonne réponse.
Indication : La commande rand()renvoie un nombre aléatoire tiré au hasard dans l’intervalle ]0,1[. Si n∈N∗, alors la commande 1+floor(n*rand()) renvoie donc un entier tiré au hasard entre1 etn. On y reviendra plus en détail lors des TP de Probabilités...
Feuille de TP no6
Calcul approché d’intégrales
I Méthode des rectangles
1) Rappels et compléments sur les sommes de Riemann a) Convergence des sommes de Riemann
Soitf une fonction continue sur[a, b]avecaet bdeux réels tels que a < b. Fixonsn∈N∗ et notons
Sn(f) = b−a n
n−1
X
k=0
f
a+kb−a n
,
Tn(f) = b−a n
n−1
X
k=0
f
a+ (k+ 1)b−a n
,
Mn(f) = b−a n
n−1
X
k=0
f
a+
k+1 2
b−a n
.
× x
a ×
b
En rouge la courbe représentative de f. Colorée en gris, la somme de Riemann Sn(f).
× x
a ×
b
Colorée en gris, la somme de Riemann Tn(f).
× x
a ×
b
Colorée en gris, la somme de Riemann Mn(f).
Les suites(Sn(f))n>1,(Tn(f))n>1et(Mn(f))n>1convergent vers Z b
a
f(t)dt. Cela fournit une méthode numérique permettant d’approcher des intégrales par ces sommes. Cette méthode d’approximation est appelée la méthode des rectangles (à gauche si l’on considère (Sn(f))n>1, à droite si l’on considère (Tn(f))n>1, au milieu si l’on considère(Mn(f))n>1).
b) Cas des fonctions continues et croissantes
Supposons quef est continue et croissante sur [a, b]. Pour toutn∈N∗,
∀k∈J0, n−1K, ∀t∈ k
n,k+ 1 n
, f
a+kb−a n
6f(a+t(b−a))6f
a+ (k+ 1)b−a n
donc, en intégrant,
∀k∈J0, n−1K, 1 nf
a+kb−a n
6
Z (k+1)/n k/n
f(a+t(b−a))dt6 1 nf
a+ (k+ 1)b−a n
.
On somme et on utilise la relation de Chasles : ∀k∈J0, n−1K, Sn(f) b−a 6
Z 1 0
f(a+t(b−a))dt6 Tn(f) b−a. Le changement de variable x=a+t(b−a) donne enfin : Sn(f)6
Z b a
f(x) dx6Tn(f).
Combien d’itérations sont-elles nécessaires pour queSn(f) et Tn(f) soient des approximations de Z b
a
f(t)dt à ε-près ? On remarque que, pour tout n∈N∗,
06Tn(f)−Sn(f)6 b−a n
n−1
X
k=0
f
a+ (k+ 1)b−a n
−f
a+kb−a
n = (b−a)(f(b)−f(a)) n
car on reconnait une somme télescopique. Si n0 ∈ N∗ est tel que (b−a)(f(b)−f(a))
n0 6 ε, par exemple n0=
(b−a)(f(b)−f(a)) ε
+ 1, alors Sn0(f) (resp. Tn0(f)) est une approximation de Z b
a
f(t)dt à ε-près par défaut (resp. excès).
c) Cas des fonctions continues et décroissantes
Supposons quef est continue et décroissante sur [a, b]. On se ramène au cas précédent en considérant −f : Pour toutn∈N∗, Tn(f)6
Z b a
f(x) dx6Sn(f). Si n0 ∈N∗ est tel que n0 =
(b−a)(f(a)−f(b)) ε
+ 1,
alors Sn0(f) (resp.Tn0(f)) est une approximation de Z b
a
f(t)dt àε-près par excès (resp. défaut).
d) Cas des fonctions de classe C1
Sif est de classe C1 sur[a, b], alors on a des informations sur la vitesse de convergence de cette méthode (cf.
chapitre 14) :
∀n∈N∗,
Sn(f)− Z b
a
f(t)dt
6 (b−a)2
2n max
[a,b]
|f0|.
Cette inégalité permet de contrôler le terme d’erreur dans l’approximation de Z b
a
f(t)dtparSn(f). Plus précisément si n0 ∈ N∗ est tel que (b−a)2
2n0 max
[a,b] |f0|6 ε, par exemple n0=
(b−a)2 2ε max
[a,b] |f0|
+ 1, alors Sn0 est une approximation de
Z b a
f(t)dt àε-près.
2) Mise en oeuvre avec Scilab
Tous les programmes et fonctions doivent être exécutés dans la console et testés avec plusieurs valeurs.
Exercice 1.(HH) Supposons que l’on dispose de réels aet btels que a < b et d’une fonction continue sur[a, b].
1) Recopier le programme et enregistrer-le dans un script nommé MethodeRectangle1.sce.
//Choix de a et b a=0; b=1;
//Définition de la fonction f function y=f(x)
y=1./(1+x.*x);
endfunction
//Méthode des rectangles
eps=input('précision : eps=? ') n=floor((b-a)*(f(a)-f(b))/eps)+1;
Vous vous en doutez, on s’apprête à calculer une approximation de Z 1
0
dx 1 +x2 = π
4. Le choix dendans l’algorithme nous est dicté par le fait que la fonctionf est décroissante sur [0,1].
2) En utilisant une boucle for, compléter ce programme pour qu’il renvoie une approximation par défaut (utilisantTn(f)dans ce cas) et par excès (utilisant Sn(f) dans ce cas) de π
4.
3) Quelle commande Scilab constuit un vecteur Scilab contenant (dans l’ordre croissant) les nombres a+kb−a
n , k∈J0, n−1K.
En utilisant cette commande etsum, modifier ce programme pour qu’il n’utilise plus de boucle for.
4) Modifier ce programme en changeant la valeur denen exploitant le fait que f :x7−→ 1
1 +x2 est de classe C1 sur [0,1]. Est-ce intéressant dans ce cas ?
5) Modifier ce programme à l’aide d’une bouclewhileafin qu’il renvoie le nombre d’itérations nécessaires à l’obtention d’une approximation de π
4 à10−8 près. Noter ici le nombre d’itérations : Exercice 2.(HH) Calculer des approximations (à10−4 près) de
1) ln(2) = Z 1
0
dx
1 +x 2) π =
Z 1 0
4p
1−x2dx 3) Z π
0
ecos(t)dt 4) Z 2021
0
e−x2dt
Exercice 3.(HH) Écrire une fonction, appeléeArctan, qui prend en entréex∈Ret ε >0 et qui renvoie une approximation deArctan(x) àεprès.
On commencera par écrireArctan(x) sous la forme d’une intégrale dont les bornes dépendent dexet on utilisera la méthode des rectangles.
Exercice 4.(HH) Écrire une fonction, appeléeWallis, qui prend en entréen∈Net ε >0 et qui renvoie une approximation deWn=
Z π/2 0
sinn(t)dt àεprès.
II Méthode des trapèzes
La méthode des trapèzes consiste à remplacer les rectangles des sommes de Riemann par des trapèzes rectangles de même base. On approche alors
Z b a
f(t)dt par les sommes
b−a 2n
n−1
X
k=0
f
a+k
n(b−a)
+f
a+k+ 1 n (b−a)
= 1
2(Sn(f) +Tn(f)), n∈N∗.
On peut montrer que, sif est de classe C2 sur [a, b], alors
∀n∈N∗, 1
2(Sn(f) +Tn(f))− Z b
a
f(t)dt
6 (b−a)3 12n2 max
[a,b]
|f00|.
Autrement dit cette quantité converge vers l’intégrale avec une vitesse 1
n2 (contre 1
n pour la méthode des rectangles).
Exercice 5.(HH)
1) Écrire un programme qui calcule une approximation de Z 1
0
dx
1 +x2 avec la méthode des trapèzes.
2) A l’aide d’une boucle while, vérifier que cette méthode fournit une approximation de π
4 à10−8 près en beaucoup moins d’itérations que la méthode des rectangles.
Feuille de TP no7
Représentation graphique avec Scilab
Ce TP accompagne le chapitre 5 (Informatique et Algorithmique) :Représentation graphique en Scilab.
I Entrainement
1) Relier des points avec plot ou plot2d
•Exécuter les commandes suivantes dans la console : -->X=[0,1,4,11,10,15,5,4,2,1.5,1,0.5,0];
-->Y=[0,2,4,4,7,10,10,8,7.5,7.5,9.5,8.5,8.5];
-->plot(X,Y) -->plot2d(X,Y) -->plot(Y,X) -->plot2d(Y,X)
Par défaut, les tracés successifs se superposent. Il faut penser à utiliser la commander clf(); pour effacer le contenu de la fenêtre graphique avant de tracer une nouvelle figure.
•Exécuter les commandes suivantes dans la console : -->clf(); plot(X,Y,’r’)
-->clf(); plot(X,Y,’g’) -->clf(); plot(X,Y,’x’) -->clf(); plot(X,Y,’o’) -->clf(); plot(X,Y,’c*’) -->clf(); plot(X,Y,’go:’)
-->clf(); plot2d(X,Y,1) -->clf(); plot2d(X,Y,2) -->clf(); plot2d(X,Y,5) -->clf(); plot2d(X,Y,0) -->clf(); plot2d(X,Y,-2) -->clf(); plot2d(X,Y,-6)
•Exécuter les commandes suivantes dans la console : -->clf(); plot(X,Y,-X,Y)
-->clf(); plot(X,Y,’k’,-X,Y,’k’) -->clf(); plot(X,Y,’r-’,-X,Y,’g*’)
•Lorsque l’on désire tracer plusieurs courbes ayant le même vecteur d’abscisses X, on peut n’écrire qu’une seul fois Xet regrouper les vecteurs ordonnées. Exécuter les commandes suivantes :
-->X=[5,9,11,13,14,17,20,21];
-->EM=[23.5,24,23,23.5,22,24,25,24];
-->MLP=[23.5,24,23,22.5,22,23,20,21.8];
-->FF=[19,17,19,20,19,19.5,19,19.5];
-->JLM=[17,18,17,18.5,20,18,19,19.3];
-->clf(); plot(X,[EM;MLP;FF;JLM])
Il s’agit de courbes de sondages(elles correspondent aux intentions de votes pour les quatre candidats de tête à l’élection présidentielle de 2017 relevées à 8 dates d’avril 2017). Les couleurs choisies par Scilab ne correspondent pas vraiment aux couleurs usuellement attribuées aux candidats. Hélas avec cette syntaxe on ne peut pas changer les couleurs. Plusieurs options s’offrent à nous :
• L’ancienne syntaxe :
-->clf(); plot(X,EM,’c’,X,MLP,’k’,X,FF,’b’,X,JLM,’r’)
• L’utilisation de la fonction plot2d qui fonctionne essentiellement comme plot mais avec des variantes dans la syntaxe, notamment pour la gestion des options (les couleurs sont symbolisées par des numéros) : -->clf(); plot2d(X’,[EM’,MLP’,FF’,JLM’],style=[4,1,2,5])
Les apostrophes après chaque vecteur servent à les transposer (c’est-à-dire les transformer en vecteurs lignes).
On lira attentivement le chapitre 5 pour d’autres détails sur les fonctions plot etplot2det sur leurs différences.
2) Représentation graphique de suites
SoitN ∈N. Représenter graphiquement lesN premiers termes d’une suite(un)n∈Nconsiste à relier successivement les points(0, u0),(1, u1),(2, u2),. . .,(N, uN).
Exécuter les commandes suivantes : -->N=20; u=1;
-->U=[u]; for k=1:N; u=1+2/u; U=[U,u]; end;
-->plot(0:N,U) Que peut-on conjecturer ?
•Exécuter les commandes suivantes : -->N=100; s=0;
-->S=[]; for k=1:N; s=s+(-1)∧(k+1)/k; S=[S,s]; end;
-->plot(1:N,S)
-->plot([1,N],[log(2),log(2)],’r’) Que peut-on conjecturer ?
3) Tracé de courbes représentatives de fonctions
Tracer la courbe représentative d’une fonction sur un intervalle, revient à tracer une infinité de points. Or il n’est évidemment pas possible pour un ordinateur de réaliser une infinité d’instructions. Pour tracer une courbe avec Scilab, on va représenter un nombre fini de points et de les relier par une ligne continue. Nous allons pour cela utiliser la commande linspace.
•Exécuter les commandes suivantes :
-->function y=fct1(x); y=sin(x)/(1+x∧2); endfunction
-->x=linspace(-15,15,10);
-->clf(); plot(x,fct1(x),’r’)
•Il faut bien sûr un plus grand nombre de points pour que l’approximation de la courbe par une ligne brisée donne l’illusion de courbe.
-->x=linspace(-15,15,20); clf(); plot(x,fct1(x),’r’) -->x=linspace(-15,15,30); clf(); plot(x,fct1(x),’r’) -->x=linspace(-15,15,1000); clf(); plot(x,fct1(x),’r’)
•Il y a d’autres syntaxes pour tracer la courbe représentative d’une fonction. Exécuter ensuite les commandes suivantes :
-->x=linspace(-15,15,1000);
-->clf(); plot(x,fct1,’r’) -->clf(); plot2d(x,fct1(x),5) -->clf(); fplot2d(x,fct1,5)
4) Diagrammes à barres et histogrammes
•Exécuter les commandes suivantes : -->x=1:5; y=[10,5,9,7,1];
-->clf(); bar(x,y,’r’) -->z=[6,3,3,5,2];
-->clf(); bar(x,[y’,z’])
-->clf(); bar(x,[y’,z’],’stacked’)
•Exécuter plusieurs fois les commandes suivantes : -->x=2*rand(1,50)-1;
-->clf(); histplot(5,x) -->clf(); histplot(10,x)
-->clf(); histplot(10,x,normalized=%f) -->clf(); histplot([-1,-0.5,0.5,0.75,1],x)
II Exercices
Tous les programmes et fonctions doivent être exécutés dans la console et testés avec plusieurs valeurs.
Exercice 1.(H) Pour n∈N∗, posons Sn=
n
X
k=1
(−1)k+1
k .
1) Écrire un programme qui représente graphiquement les50 premiers termes de la suite (Sn)n>1. 2) Modifier le programme afin qu’il superpose au tracé la fonction constante égale àln(2). Commenter.
Exercice 2 – Suite de Syracuse. (H) Pour toutk∈N, notons (un(k))n∈N la suite de Syracuse de terme initial k. Dans l’exercice 4 du TD no5, nous avons implémenté une fonction appelée Syracuse qui prend en entrée k∈N∗ et qui renvoie le premier rang nk tel queunk = 1 (s’il existe, ce qu’affirme la conjecture de Syracuse).
Représenter graphiquement les 1000 premières valeurs de la suite(nk)k∈N. Commenter.
Exercice 3.(H) Pour tout c∈R, on introduit (zn)n∈N tel quez0= 0 et
∀n∈N, zn+1 =z2n+c.
Représenter les 50 premières valeurs de la suite(zn)n∈N pour c∈
−1,−1 4,−2
5,1 5,1
4,1 3,1
et commenter.
Exercice 4.(H) Tracer la courbe représentative de fonctions des exercice 6 et 7 du TP no2 et des exercices 4 et 5 du TP no3, sur des intervalles bien choisis et sur six graphiques différents.
Exercice 5.(HH) Pour touta >0, posonsγa:x7−→
0 si x <0 xa−1e−x si x >0 .
1) Implémenter une fonction en Scilab qui prend en entréex eta et qui calculeγa(x) (et qui soit compatible avec un traitement vectoriel pour la première coordonnée).
2) Représenter successivement la fonction ga sur l’intervalle [−1,5] poura∈ 1
100,1 2,1,3
2,2,5 2,3,100
.
Exercice 6. (HH) Dans le TP4, nous avons implémenté en Scilab les fonctionsSn:x7−→
n
X
k=0
(−1)kx2k
(2k)! ,n∈N, sous le nomsommecos, et nous les avons comparées avec la fonction cosinus.
1) Représenter les fonctions coset Sn sur l’intervalle[−2π,2π]pourn∈ {5,6,10,20}.
2) Représenter les fonctions coset Sn sur l’intervalle[−10π,10π]pour n∈ {20,30,40,50}.
Exercice 7. (H) On admet que, si n∈N∗ etp∈]0,1[, la commandesum(rand(1,n)<p)renvoie une réalisation d’une variable aléatoire de loi B(n, p). Pour n ∈ {10,20,100} et p ∈ {0.3,0.5,0.7}, exécuter 1000 fois cette commande et construire l’histogramme renormalisé de ces 1000 valeurs.
On reverra tout ça dans les TP de probabilités.
Exercice 8.(H) Représenter le diagramme à barres traduisant le tableau ci-dessous :
k 2 3 4 5 6 7 8 9 10 11 12
pk
1 36
1 18
1 12
1 9
5 36
1 6
5 36
1 9
1 12
1 18
1 36
Nous avons vu dans le chapitre Variables aléatoires réelles finies que(pk)26k612 est la loi d’une variable aléatoire représentant la somme des chiffres lorsqu’on lance deux dés.