Programmes Quelques conseils TERMINALE Convergence Somme des termes d'une suite Intégration Méthode de Newton Produit vectoriel QUELQUES CONSEILS Si votre programme ne fonctionne pas... • La première source d'erreur est l'oubli d'une ou plusieurs lignes. Vérifiez également l'absence d'erreur de copie. • Quelques erreurs peuvent aussi provenir d'une confusion entre la lettre O et le chiffre 0, même problème avec la lettre I et le chiffre 1. • N'oubliez pas également que le nom de variable Y1 sur TI-80, TI-82 et TI-83, est distinct de Y1 (produit de la variable Y par le nombre 1). Pour obtenir ce nom, appuyez sur : ) sur TI-80 ) sur TI-82, r a ¢ sur TI-83. • Sur TI-82 et TI-83, pour écrire le nom des matrices [A], [B], [C], ... n'utilisez pas les crochets [, ] associés aux lettres A, B, C, ... Il faut utiliser la touche p , puis taper le numéro de la matrice désirée. • Dans le texte des programmes, le signe → s'obtient avec la touche ¡ . • De même, (-) correspond au signe - utilisé pour écrire l'opposé d'un nombre. On l'obtient en appuyant sur la touche ® . • Attention également à ne pas inclure des espaces entre certaines commandes comme par exemple : A¡ B, ou Prompt A,B. • Ö Frac est la quatrième option du menu FRAC sur TI-80, c'est la première option du menu MATH sur TI-82 et TI-83. Sur cette dernière machine, vous la trouverez également dans le menu CATALOG. • On peut être amené dans un programme à faire appel à un autre programme. Voir par exemple le programme SYST3 pour la résolution d'un système sur TI-80, ou les programmes SUITARIT et SUITGEO sur les suites arithmétiques et géométriques. • Pour introduire cette instruction dans un programme, vous devez appuyer sur q , choisir l'option EXEC, sélectionner le nom du programme désiré, appuyer sur , ou plus simplement sur le numéro correspondant du programme. Pour encore plus de souplesse... De très nombreux programmes utilisent la fonction définie dans Y1. Pour travailler avec une autre fonction (de Y2 à Y4 sur TI-80, de Y2 à Y0 sur TI-82 et TI-83), placez dans le registre Y1 un renvoi vers la fonction que vous désirez utiliser. Par exemple, pour utiliser Y3, écrivez Y1 = Y3 après avoir appuyé sur . Pour une meilleure utilisation de la mémoire, pensez à effacer régulièrement les variables inutilisées, en particulier s'il s'agit de listes ou de matrices. Retour à l'Index TERMINALE CONVERGENCE Soit une suite définie par récurrence ( ), convergeant vers , le programme suivant recherche le premier indice n tel que vérifie . Il est ainsi possible d'étudier la vitesse de convergence d'une suite. L'expression de la fonction f utilisée pour cette définition étant placée dans Y1. Ce programme comporte une boucle afin de pouvoir tester différentes valeurs de sans avoir à réintroduire le premier terme de la suite et la valeur de la limite étudiée. On sort de cette boucle en choisissant une valeur de inférieure ou égale à 0. TI-80 TI-82 & TI-83 PROGRAM:CONV saisie de l'indice PROGRAM:CONV saisie de l'indice initial initial ERG ERG saisie du premier :DISP "N0":INPUT saisie du premier :Input "N0 =", A terme terme A :Input "UN0=", B saisie de la limite :DISP "UN0":INPUT saisie de la limite :Input "L =", L début de boucle :Lbl 1 début de boucle B "epsilon" :DISP "L":INPUT L "epsilon" :Input saisie de epsilon saisie de epsilon :LBL 1 "EPSILON=",E sortie de boucle si :If E7 0 sortie de boucle si :DISP "EPSILON":INPUT :Stop initialisation des :A → N initialisation des E variables variables :IF E7 0:STOP :B → X début de boucle de :While abs(X-L)8 E début de boucle :A → N:B → X calcul "while" :LBL 2 :Y1 → X contrôle de la incrémente valeur de :IF ABS(X-L)8 E :N+1 → N convergence N :THEN :End alors fin de boucle "while" :Y1 → X :Disp "N=",N incrémente valeur de :Goto 1 affichage de N :N+1 → N N fin de boucle :GOTO 2 fin de boucle de calcul "epsilon" :ELSE sinon :DISP "N=",N affichage de N :GOTO 1 fin de boucle :END "epsilon" fin de "if then else" Exemple d'utilisation sur TI-80 Étudions le comportement de la suite définie par montrer que cette suite converge vers et . Il est possible de . Combien de termes faudra-t-il calculer pour avoir , puis, pour avoir ? Après avoir entré la fonction dans Y1, on lance le programme, à chaque demande on donne la valeur désirée, suivie de . Lorsque la valeur de epsilon est validée, le programme affiche la valeur de n cherchée, puis demande une nouvelle valeur de epsilon. Il faudra donc calculer au moins 79 termes pour obtenir le second résultat. Retour à l'Index SOMME DES TERMES D'UNE SUITE Ce programme permet de déterminer la somme des termes d'une suite définie par une formule du type . Il suffit de placer l'expression de la fonction f à utiliser dans le registre Y1 sous la forme Y1=f(X). On obtient une expression rationnelle du résultat quand cela est possible. TI-80 TI-82 & TI-83 PROGRAM:SOMM saisie de l'indice PROGRAM:SOMM initial E E :DISP "N1=": INPUT saisie de l'indice final :Input "N1=", D initialisation de S à 0 :Input "N2=", F D :DISP "N2=": INPUT début de boucle :0 → S S est remplacé par F :For(X,D,F) S+Y1 :0 → S :S+Y1 → S fin de boucle :FOR(X,D,F) :End affichage du résultat :Disp S,S Ö Frac :S+Y1 → S :END :DISP S,S Ö FRAC Exemple d'utilisation sur TI-82 ou TI-83 Montrons que . On doit d'abord définir l'expression de calcul du terme général dans Y1, puis lancer le programme SOMME. En fait, sur TI-80, TI-82 et TI-83, il est même inutile de faire un programme pour répondre à ce type de question. Il suffit d'utiliser les instructions sum (somme des termes d'une liste) et seq (construction d'une liste) en écrivant : sum seq(f(N), N, N1, N2,1) Le premier argument permet de définir l'expression (fonction de N) à utiliser, le deuxième indique que N varie entre les valeurs N1 et N2, définies par les troisième et quatrième arguments de la fonction seq. Enfin, le dernier argument, le plus souvent égal à 1, indique l'écart (le pas) entre deux valeurs de N. (Argument optionnel sur la TI-83.) La seule limitation à l'utilisation de cette fonction sur TI-80, ou sur TI-82, réside dans l'obligation de travailler avec des listes de moins de 100 nombres. Lorsque le nombre de termes à sommer dépasse cette limite, il est nécessaire d'utiliser le programme précédent. Sur TI-83, on est seulement limité par la taille mémoire disponible. Retour à l'Index INTÉGRATION CALCUL APPROCHÉ D'INTÉGRALES La TI-80 ne dispose pas d'un programme de calcul d'intégrales. Le programme suivant (méthode de Simpson, voir formule ci-dessous) permet de remédier à cette absence. . TI-80 TI-82 & TI-83 PROGRAM:SIMPS saisie des bornes et de Utilisation directe de N fnInt ON initialisation de S à 0 (menu MATH) :DISP "A,B,N" largeur de la :INPUT A subdivision :INPUT B début de boucle de :INPUT N calcul de la somme :0 → S fin de boucle "for" :(B-A)/2N → W affichage du résultat :FOR(J,1,N) :A+2(J-1)W → L :A+2JW → R :(L+R)/2 → M :L → X :Y1 → L :M → X :Y1 → M :R → X :Y1 → R :W(L+4M+R)/3+S →S :END :DISP "INT=",S Ö FRAC Exemple d'utilisation du programme SIMPSON sur TI-80 Valeur approchée de l'intégrale avec : Utilisation de la fonction fnInt sur TI-82 ou TI-83 Sur les trois machines, la fonction Ö FRAC permet d'obtenir un affichage rationnel du résultat. INTÉGRATION (suite) MÉTHODES DES RECTANGLES ET DES TRAPÈZES Présentons maintenant un programme plus pédagogique, il utilise la méthode des rectangles en calculant les deux sommes : et . La moyenne de ces deux sommes donne la formule correspondant à la méthode des trapèzes : TI-80 PROGRAM:RECTA NG :CLRHOME :DISP "A,B,N?" :INPUT A :INPUT B :INPUT N :(B-A)/N → H :A → X:Y1 → S:ANS → C :FOR(I,2,N) :X+H → X:Y1+S → S :END :B → X :S+Y1-C → T :DISP "S1",SH :DISP "S2",TH :DISP "T",(S+T)H/2 efface l'écran saisie de la borne inf. saisie de la borne sup. saisie # de subdivisions calcul du pas initialisation des variables début de boucle de calcul de la somme fin de boucle calcul de T affichage des 3 résultats . TI-82 & TI-83 PROGRAM:RECTA NGL :ClrHome :Prompt A,B,N :(B-A)/N → H :A → X:Y1 → S:Ans →C :For(I,2,N) :X+H → X:Y1+S → S :End :B → X :S+Y1-C → T :Disp SH :Disp TH :Disp (S+T)H/2 :Disp fnInt(Y1,X,A,B)Ö Frac :Output(4,1,"S1") :Output(5,1,"S2") :Output(6,1,"T") :Output(7,1,"I") Exemple d'utilisation sur TI-82 ou TI-83 Calcul par la méthode des rectangles et des trapèzes de . efface l'écran saisie des paramètres calcul du pas initialisation des variables début de boucle de calcul de la somme fin de boucle calcul de T affichage des 3 résultats... ... et de la valeur donnée par la fonction fnInt Le dernier résultat, désigné par I, est celui que l'on obtient en utilisant directement la fonction fnInt de la machine. Cela permet une comparaison facile entre les différentes valeurs obtenues : valeurs de S1 et S2, associées à la méthode des rectangles, valeur de la moyenne T de ces deux sommes, ce qui correspond à la méthode des trapèzes, et valeur "exacte" de l'intégrale. Retour à l'Index RACINES, f(x)=0 MÉTHODE DE NEWTON Nous allons voir un deuxième programme de résolution d'équation f(x)=0, utilisant la méthode de Newton. Ce programme travaille sur la fonction définie dans Y1 et recherche une solution dans l'intervalle Xmin, Xmax correspondant à la fenêtre graphique. TI-80 TI-82 & TI-83 PROGRAM:NEWT initialisation de X Utilisation directe de début de boucle "1" ON root sur TI-82 zero sur TI-83 :(XMAX+XMIN)/2→ stocké (menu CALC) X dans R :LBL 1 contrôle de la Sur TI-83 il est également possible :Xconvergence d'utiliser le solveur Y1/nDERIV(Y1,X,X) alors →R X reçoit la valeur de intégré accessible par o ¬ :IF ABS (X-R)>ABS R fin de boucle "1" (X/1E10) sinon :THEN affichage du résultat :R → X fin du "if then else" :GOTO 1 :ELSE :DISP "RACINE=",R :END Exemple d'utilisation sur TI-80 Après avoir défini la fonction dans Y1, et choisi un zoom permettant d'afficher une racine, il vous suffit de lancer le programme NEWTON. Voici un exemple avec : UTILISATION DES FONCTIONS DE LA TI-82 ET DE LA TI-83 Après avoir défini la fonction dans Y1, ici , à partir de l'écran graphique, on utilise l'option root dans le menu CALC (option zero sur la TI-83). Retour à l'Index PRODUIT VECTORIEL Sur TI-80, entrez les deux vecteurs sous forme de listes dans L1 et L2. Sur TI-82 et TI-83, entrez-les sous forme de matrices (une colonne) dans [A] et [B] avant d'appeler ce programme. TI-80 TI-82 & TI-83 PROGRAM:PROVE utilisation des listes PROGRAM:PROD initialisation des dim. L1 et L2 de [C] CT VECT :{ L1(2)L2(3)- formule stockée dans :{3,1} → dim ( [C] ) formule stockée dans L1(3)L2(2) , L3 Y4 :"[A](I,1)[B](J,1)affichage du résultat [A](J,1)[B](I,1)" → calcul des éléments de L1(3)L2(1)L1(1)L2(3) , [C] Y4 efface le contenu de L1(1)L2(2):1 → I:2 → J Y4 L1(2)L2(1) } → L3 :Y4 → [C](3,1) :DISP L3 Ö FRAC :3 → J:(-)Y4 → affichage du résultat [C](2,1) :2 → I:Y4 → [C](1,1) :"" → Y4 :Disp [C] Ö Frac Exemple d'utilisation sur TI-80 Saisie des vecteurs sous forme de listes et calcul du produit vectoriel : Exemple d'utilisation sur TI-82 ou TI-83 Saisie des vecteurs en utilisant le menu MATRX, option EDIT et calcul du produit vectoriel : Retour à l'Index RÉCRÉATION Pour des raisons de place les commentaires de ce programme sont inclus dans le texte de ce dernier. Ils sont en italique et précédés du symbole ©, ne les tapez pas lors de la saisie sur votre machine. TI-82 & TI-83 PROGRAM:MASTR © on tire au hasard 4 :Lbl Z :Lbl 1 chiffres A, B, C, D MND :If F=B:Then :If C=G and D=H :ClrHome:Fix 0 :int Mrand+1 → A © si le chiffre des 100 © si C=G et D=H :For(A,2,7 :int Mrand+1 → B (F=B) est correct, :Then :For(B,2,15 :int Mrand+1 → C affichage d'un 'B'. © "C'EST GAGNÉ !":Output(4,4,"WELCO :int Mrand+1 → D Aller au label Y ME TO :For(U,1,8) © le nombre ABCD :Output(X,14,"B" :Output(A,B,"* :Goto Y:End :For(R,1,20) :Output(5,4,"MASTER MIND :End:End :For(I,1,50 :Output(4,3," PROGRAM BY :Output(5,3," G.EGBERT :End :Lbl 9 :Menu("NIVEAU: ", "FACILE",5,"MOYEN" ,6, "DIFFICILE",7 :Lbl 5:6 → M:Goto 8 © niveau facile : choix des chiffres entre 1 et 6 :Lbl 6:8 → M:Goto 8 © niveau moyen : choix des chiffres entre 1 et 8 :Lbl 7:9 → M © niveau difficile : choix des chiffres entre 1 et 9 :Lbl 8 :ClrHome :Disp "LA MACHINE VA", "COMPOSER UN CODE", "DE 4 CHIFFRES", "CHOISIS DE 1 A ", "AVEC REPETITIONS", "POSSIBLES" :Output(4,16,M :Pause :ClrHome :Disp "APRES UN ESSAI, ", "LA MACHINE", "REPOND PAR UN B ", "POUR LE BON", "CHIFFRE A LA", "BONNE PLACE ET", "UN W POUR LE" :Pause :ClrHome :Disp "BON CHIFFRE A", "UNE MAUVAISE", "PLACE. ","", est stocké dans L6 :{1000A+100B+10 C+D} → L6 :ClrHome :Disp "LA MACHINE EST","PRETE. APPUYEZ", "SUR ENTER, PUIS", "FAITES VOTRE", "PREMIER ESSAI." :Pause :ClrHome :Lbl 3 © label correspondant aux différents essais :Input I © un essai, réponse dans I © décomposition du nombre I=EFGH en 4 chiffres E, F, G, H :iPart (I/1000) → E :iPart ((I1000E)/100) →F :iPart ((I-1000E100F)/10) →G :(I-1000E-100F10G) → H :{I} → L1 © le nombre I est stocké dans la liste L1 :Output(X,1, L1 © affichage de I :If E=A:Then © si le chiffre des 1000 (A=E) est correct, affichage d'un 'B'. Aller au label Z :Output(X,13,"B" :Goto Z:End :3 → dim L4 © autrement, L4 liste à 3 éléments :{E,E,E}={B,C,D} → L4 © autrement, teste si F est un des autres chiffres :{F,F,F}={A,C,D} → L4 :If sum L4 0 © si oui, affichage d'un 'W' :Output(X,14,"W" :Lbl Y :If G=C:Then © si le chiffre des 10 (G=C) est correct, affichage d'un 'B'. Aller au label X :Output(X,15,"B" :Goto X:End © autrement, teste si G est un des autres chiffres :{G,G,G}={A,B,D} → L4 :If sum L4 0 © si oui, affichage d'un 'W' :Output(X,15,"W" :Lbl X :If H=D:Then © si le chiffre des unités (H=D) est correct, affichage d'un 'B'. Aller au label :Output(X,16,"B" :Goto :End © autrement, teste si H est un des autres chiffres :{H,H,H}={A,B,C} → L4 :If sum L4 0 © si oui, affichage d'un 'W' :Output(X,16,"W" :Lbl :If A=E and B=F © si A=E et B=F, aller en 1 :Goto 1 © autrement aller en 2 :Output(8,1," GAGNE!! " :End :For(R,1,20 :Output(8,1," " :End :End :Goto P :End :Lbl 2 © compteur d'essais :X+1 → X :If X=8 © nombre d'essais dépassé, aller en Q :Goto Q © autrement, un nouvel essai, aller en 3 :Output(8,11,"ESS AI?" :Goto 3 :Lbl Q © "C'EST PERDU..."/ :Output(1,7,"DES OLE, :Output(2,7,"VOU S :Output(3,7,"AVEZ :Output(4,7,"PER DU :Output(5,7,"COD E: :Output(6,7, L6 :Pause :Lbl P :Menu("UNE AUTRE PARTIE", "OUI",9,"NON",J © désirez-vous rejouer ? oui, aller en 9; non, aller en J :Lbl J :ClrHome :Stop "VOUS AVEZ", © teste si E est un :Goto 2 des autres chiffres "7 ESSAIS." :If sum L4 0 :Pause :1 → X © si oui, affichage d'un 'W' :Output(X,13,"W" Retour à l'Index