Retour à la page personnelle de Bernard Parisse.



Ce document décrit des fonctionnalités de la HP49/49+/50 pour les candidats au Capes. Pour bénéficier de l'ensemble des fonctionnalités décrites (géométrie et tableur), il faut mettre à jour la ROM de votre calculatrice, en allant sur le site :
http://www-fourier.ujf-grenoble.fr/~parisse/#hpgeo
Les HP49G+ et 50G n'étant pas rétroprojettables (sur tablette, il existe des émulateurs pour PC), ce sont des HP49G qui sont susceptibles d'être utilisées, elles sont de l'ordre de 2 à 3 fois moins rapides que les HP49G+ ou HP50G,

Vous trouverez l'index à la page suivante, il est suivi par la table des matières, puis le texte lui-même. La dernière section A donne quelques astuces de dépannage.

Index


Table des matières

1  Prise en main, configuration

Dans les sections suivantes, on abordera plus en détails les possibilités de l'historique, puis les applications telles que les tracés de graphes, le tableur, les statistiques, les calculs financiers et la programmation.

Exercices: Ces exercices sont destinés à vous familiariser avec la saisie de commandes (au clavier, mode alphabétique, utilisation des menus) et les changements de mode sur la calculatrice.
  1. Calculer sin(3) en mode radian et en mode degrés.
  2. Calculer 10! en mode exact
  3. Passez en mode approché et refaites le même calcul
  4. Repassez en mode exact. Développer puis factoriser le polynôme (X+3)7 × (X−5)6. Utiliser les menus pour trouver la fonction EXPAND ou FACTOR, essayez aussi de les saisir au clavier.

2  Calculs

2.1  Les nombres: représentation exacte et approchée

On distingue : Rappel sur les nombres flottants : L'écriture d'un flottant normalisé x de mantisse m=0.m1...mk et d'exposant e en base b (b=10 ici) est
x = (m1 b−1 + ... + mk bk) be,    m1 ∈ [1,b−1], ..., mk ∈ [0,b−1]
k est le nombre de chiffres significatifs. Par exemple 0.12E7 qui représente le nombre approché 1 million 200 mille, a pour mantisse m1=1, m2=2, m3=...=mk=0 et pour exposant 7. Les HP disposent de deux représentation de flottants, qui diffèrent par la valeur de k, celui qui a la plus grande valeur de k est utilisé en interne pour améliorer la précision des calculs intermédiaires.

Erreurs d'arrondi et de représentation : La mantisse étant de taille finie, à chaque calcul ou dès qu'on représente un rationnel qui n'est pas de la forme un entier divisé par 10 à une puissance petite, on fait une erreur relative sur le nombre représenté (par exemple si on représente 1/3). Cette erreur relative peut atteindre 1E−11 pour les réels et 1E−15 pour les réels utilisés en interne.

Lorsqu'on effectue une multiplication, les erreurs relatives s'additionnent (en toute rigueur, il faut y ajouter le produit des* erreurs, souvent négligeable et une erreur relative d'arrondi). Pour les additions et soustractions ce sont les erreurs absolues qui s'additionnent, donc si les mantisses se compensent presque, l'erreur relative peut augmenter considérablement, par exemple (1.0+1E−12)−1.0 donne comme résultat un flottant nul.

Exercices (Calcul exact et approché sur les entiers et réels)
  1. Y-a-t-il une limite sur la plus grande factorielle calculable exactement et approximativement sur votre calculatrice?

  2. Trouver n le plus petit possible tel que (1.0+10n)−1.0 renvoie 0.0

  3. Calculer les premières valeurs de un en mode exact et approché avec :
    un+1=2(un−1/3) = 2un −2/3,    u0=2/3
    Comparer les résultats, en mode approché obtient-on la même suite selon la formule de récurrence entrée?

  4. Calculer en mode approché en croissant ou en décroissant
    n
    Σ
    j=1
    1
    j
    pour quelques valeurs de n. Pour le calcul en décroissant, on pourra utiliser Σ0n−1 1/nj

2.2  Types, variables, évaluation, simplification

Les calculs lancés dans l'historique sont effectués par un mini-logiciel de calcul formel. Comme dans tout logiciel de calcul formel, on peut utiliser des variables formelles (qui n'ont pas de valeur numérique affectée) et faire des calculs littéraux. On peut aussi stocker des résultats intermédiaires dans des variables (qui ne sont plus alors formelles, on dit qu'elles sont affectées) ou faire des hypothèses (sur HP, on peut seulement supposer qu'une variable est dans un intervalle de R et les inégalités strictes sont remplacées par des inégalités larges).
Description Fonction Exemple Résultat
Affectation STO 1 STO> A 1
Suppression PURGE PURGE(A) NOVAL
Hypothèse ASSUME ASSUME(A>1) A≥ 1
On peut aussi gérer les variables affectées avec l'application Filer (touche shift-FILES).

Lorsqu'on tape une commande dans l'historique, il s'agit d'abord d'une chaine de caractères, qui est ensuite transformée en un objet par l'interpréteur (en anglais parser), puis évaluée en fonction des variables affectées et des modes et/ou simplifiée ou non. L'évaluation consiste à remplacer les variables qui ont été affectées par leur valeur, et à propager ces remplacement dans les calculs. La simplification consiste à appliquer certaines règles : en mode algébrique, les expressions entrées sont réécrites sous forme d'une unique fraction rationnelle irréductible après simplification éventuelle des radicaux (en mode RPN, il n'y a aucune simplification). On peut empêcher l'évaluation en utilisant le symbole ' (quote) ou la fonction QUOTE, on peut forcer une évaluation avec l'instruction EVAL. L'évaluation d'une variable non affectée peut être modifiée en faisant une hypothèse (par exemple ASSUME(A>=0) permet de simplifier A2 en A), ou en déclarant la variable comme réelle en mode complexe (la liste des variables supposées réelles est contenue dans la variable REALASSUME du répertoire CASDIR (utiliser shift-FILES puis EDIT du bandeau pour modifier la liste REALASSUME).

Les principaux types d'objets manipulables dans l'historique sont:
Types Exemple Remarques
Entier 1  
Réel 0.12E7 ou 1200000.
Complexe exact 1+2*i  
Complexe approché (1.2,2.3)  
Variable M  
Expression 1+2*SIN(X) STO> EQ OBJ>(EQ) décompose EQ
Liste \{ 1, 2 \} STO> L L[1] 1ier élément de la liste L
Vecteur [1, 2] STO> V V[1] 1ier élément du vecteur V
Matrice [[1,2],[3,4]] STO> M GET(M,{2,1}) (ou M[3]) ligne 2 colonne 1
Chaine "Bonjour"  
Il existe d'autres types par exemple les objets-unités (pour la physique), les objets graphiques, les programmes (délimiteur << >>), etc.

Comme dans les logiciels de calcul formel, le langage des calculatrices formelles est non typé, c'est-à-dire que les instructions s'adaptent dans la mesure du possible aux différents types de données passées en argument, par exemple il existe une même instruction + qui permet d'additionner des réels ou des entiers ou des chaines de caractères (concaténation). Il est toutefois important de comprendre que les opérations peuvent être très différentes selon le type des objets passé (et les modes). On peut utiliser tous les types d'objets en argument d'une fonction, à l'exception des objets de types programme en mode algébrique. Notez qu'une instruction a toujours le même nombre d'arguments sur les HP49. Il existe en effet un mode de saisie, dit RPN (reverse polish notation), dans lequel on doit donner les arguments d'une instruction avant l'instruction, elle ne peut donc pas avoir un nombre variable d'arguments comme le font couramment les logiciels de calcul formel ou les calculatrices d'autres constructeurs.

2.3  Principales commandes

Les commandes de calcul formel sont accessibles à partir de la touche SYMB (menu principal) ou de des touches de menu spécialisé ALG (algèbre, par exemple pour factoriser et développer), CALC (calculus, pour calculer une limite, faire un développement de Taylor, etc.), S.SLV (résoudre exactement une équation), EXP & LN et TRIG (réécriture), ARIT (arithmétique). L'aide en ligne donne la syntaxe de la commande, avec un exemple (touche TOOL puis NXT puis F2 (HELP) puis tapez la touche alpha et la première lettre de la commande, puis les touches de direction pour sélectionner une commande). Nous ne donnons ici que les principales commandes, le guide de référence du calcul formel de la HP49 est téléchargeable sur
http://www-fourier.ujf-grenoble.fr/~parisse/degraeve/louijean.pdf

2.3.1  Arithmétique des entiers

Description Fonction Exemple Résultat
Division euclidienne IDIV2 IDIV2(7,5) {1,2}
  IQUOT IQUOT(7,5) 1
  IREMAINDER IREMAINDER(7,5) 2
  MOD 7 MOD 5 2
PGCD GCD GCD(15,25 5
PPCM LCM LCM(15,25) 75
Bézout IEGCD IEGCD(15,25) {5,2,-1}
  IABCUV IABCUV(15,25,5) {2,-1}
Liste des diviseurs DIVIS DIVIS(15) {1,3,5,15}
Factorisation FACTOR FACTOR(100) 2^2*5^2
Restes chinois ICHINREM ICHINREM( [-12,35]
    [2,7],[3,5]) (−12 (mod 35 ))
Indicatrice d'Euler EULER EULER(15) 8
Pseudo-primalité ISPRIME? ISPRIME?(97) 1.
Premier suivant NEXTPRIME NEXTPRIME(96) 97
Premier précédent PREVPRIME PREVPRIME(96) 93
Puissance modulo rapide POWMOD POWMOD(11,12) 1 (mod 13 )
En mode pas à pas (touche MODE, configuration CAS, cocher Step/Step), l'algorithme de la potence (division euclidienne), les opérations de l'algorithme d'Euclide et l'algorithme de Bézout sont affichées étape après étape.

2.3.2  Arithmétique des polynômes

Description Fonction Exemple ou arguments Résultat
Division euclidienne DIV2 (X^3-1,X^2+1) {X,-(1+X)}
Quotient euclidien QUOT QUOT(X^3-1,X^2+1) X
Reste euclidien REMAINDER ...(X^3-1,X^2+1)) -(1+X)
puissances croissantes DIVPC DIVPC(1,1+X,3) 1-X+X^2-X^3
PGCD, PPCM GCD, LCM GCD(X^2-1,X^3-1) X-1
Bézout EGCD, ABCUV EGCD(X^2-1,X^3-1) {X-1 -X 1}
Factorisation FACTOR FACTOR(X^2-1) (X-1)(X+1)
Eléments simples PARTFRAC PARTFRAC(2/(X^2-1)) 1/(X-1)-1/(X+1)
Fraction propre PROPFRAC PROPFRAC((X^3-1)/(X^2+1)) X-(1+X)/(X^2+1)
Résultant RESULTANT ...(X^3+P*X+Q,3*X^2+P) 27Q^2+4P^3
On peut aussi travailler avec des polynômes à coefficients dans Z/nZ, il suffit de stocker n dans la variable MODULO (touche MODE, configuration du CAS) puis d'appeler les mêmes instructions avec le préfixe MOD.

2.3.3  Réécriture

On peut appliquer ces règles de réécriture en ligne de commande, ou sur la sélection dans l'éditeur d'équation (prendre la commande depuis l'un des menus ALGB, EXP&LN, TRIG) :
Description Fonction Remarque
Substituer SUBST une variables par une valeurs
Développer EXPAND fraction rationnelle
Réordonner REORDER fraction rationnelle
Regrouper COLLECT fraction rationnelle
Simplifier SIMPLIFY recherche de relations algébriques
Vers exponentielle et ln EXPLN  
Vers fonctions trigonométriques SINCOS  
Développer exp, ln, sin, cos, tan TEXPA à 2iπ près
Linéariser des exponentielles LIN  
Rassembler des logarithmes LNCOLLECT à 2iπ près
Rassembler des sin/cos TCOLLECT, TLIN  
Il existe d'autres règles de réécriture, par exemple pour la trigonométrie :

2.3.4  Analyse

Description Fonction Exemple ou arguments Résultat
Dérivée DERIV DERIV(SIN(X),X) COS(X)
Variations TABVAR TABVAR((X+1)/(X+2) ...
Primitive RISCH RISCH((2*X^2+1)*EXP(X^2) X*EXP(X^2)
Intégrale ∫(0,1,1/(X2+1)4,X) (15π+44)/192
Par parties IBP IBP(LN(X),X) {X*LN(X),-1}
Limite LIMIT LIMIT(SIN(X)/X,X=0) 1
(à droite)   LIMIT(SQRT(1-COS(X))/X,X=0+0) 2/2
Taylor TAYLR TAYLR(SIN(X),X,5) 1/120X^5-1/6X^3+x
Séries SERIES SERIES((EXP(X)-1)/SIN(X),X=0,4) { Limit:1 ...}
(en +∞)   SERIES((1+1/X)^(X),X=+∞,3 { Limit:e ...}
(à gauche)   SERIES(SQRT(1-COS(X))/X,X=0,-3.0) { Limit:...}
Notez que :

2.3.5  Matrices

Rappelons que pour entrer une matrice on utilise l'éditeur de matrices, ou on tape directement la matrice (délimiteurs [], séparateur ,). Les opérations arithmétique + - * ^ NEG INV s'appliquent aussi aux matrices. Attention à l'usage ambigu de /, car le produit de matrice n'est pas commutatif.
Description Fonction Exemple ou arguments Résultat
matrice identité IDN IDN(2) [[1,0],[0,1]]
matrice constante CON CON({2,2},X) [[X,X],[X,X]]
matrice aléatoire RANM RANM({2,3}) matrice 2x3
Mi,j=f(i,j) LCXM LCXM(2,2,1/(I+J-1) [[1,1/2],[1/2,1/3]]
accéder élément GET GET([[1,4]],{1,2}) 4
modifier élément PUT PUT([[1,4]],{1,2},3) 3
transposée TRAN TRAN([[1,-1],[2,4]]) [[1,2],[-1,4]]
trace TRACE TRACE([[1,-1],[2,4]]) 5
coeff. * coeff. HADAMARD ...([[1,3]],[[3,2]]) [[3,6]]
exécuter sur MAP MAP(RANM({3,3}),X MOD 2) matrice 3x3 de coeffs 0 ou 1
pivot de Gauss RREF RREF([[1,-1,1],[2,4,1]]) [[1,0,5/6],[0,1,-1/6]]
pivot de Gauss rref rref([[1,-1,1],[2,4,1]]) {...[[6,0,5],[0,6,-1]]}
déterminant DET DET(-IDN(3)) -1
diagonalisation EGV EGV([[1,-1],[2,4]]) {[[-1,-1],[2,1]],[3,2]}
Notez que rref (en minuscules) n'effectue pas de division par les pivots et renvoie la liste des pivots, ce qui permet de traiter les cas particuliers de systèmes linéaires lorsqu'il y a des paramètres sans utiliser le déterminant. De plus rref, RREF et INV affichent les étapes intermédiaires du pivot de Gauss en mode pas à pas lorsque la matrice est à coefficients exacts.

On peut par exemple utiliser les matrices pour coder un graphe (orienté ou non). On utilise une matrice (symétrique si le graphe est non orienté) ne contenant que des 0 et des 1 (1=arête présente) Pour en générer une de manière aléatoire,
RANM({4,4}) STO> M
TRAN(M)+M STO> M (pour graphe non orienté)
MAP(M,X MOD 2) STO> M
Ensuite par exemple GET(M^4,{1,2}) donne le nombre de chaines de longueur 4 reliant le sommet 1 au sommet 2, TRACE(M^5) donne le nombre de cycles de longueur 5.

On peut également étudier une matrice de transition d'un graphe probabiliste avec la fonction puissance, le produit matriciel et vérifier la convergence vers l'état propre correspondant à la valeur propre de norme maximale.
[[.7,.2,.1],[.6,.1,.3].[.0,.5,.5]] STO> P
[.1,.5,.4] STO> V
TRAN(P)*V STO> V
on répète plusieurs fois pour observer la convergence de V vers [.5,.25..25], qui est vecteur propre de la transposée de P EGV(TRAN(P)) correspondant à la valeur propre 1 de module maximal. On peut aussi calculer Pn pour n assez grand, par exemple P^20.

2.3.6  Racines de polynômes.

Rappelons que l'on peut exprimer les racines des polynômes de degré inférieur ou égaux à 4 avec des radicaux. Toutefois, les formules générales en degré 3 et à fortiori en degré 4 sont trop complexes à manipuler sur une calculatrice.

Sur la HP49, un polynôme dont on cherche les racines par la fonction ZEROS ou SOLVE est donc d'abord factorisé sur Z, puis les racines des facteurs de degré 1 et 2 sont calculées (en fonction du mode complexe). S'il reste des facteurs de degré 3 ou plus, la recherche s'arrête, sauf si on est en mode approché ou si on a coché Num factorize (touche MODE, FLAGS, fléche vers le haut jusqu'au numéro 109, puis OK deux fois). Indépendamment du mode, la recherche numérique des racines complexes d'un polynome se fait avec PROOT. La fonction inverse est PCOEF.

Exemple Mode Résultat
ZEROS(X^3-8,X) Réel 2
ZEROS(X^3-8,X) Complexe { −21−i3/2, −21+i3/2,2 }
ZEROS(X^3+X+1,X) Réel {}
ZEROS(X^3+X+1,X) Réel, num factorize {-.68...}
ZEROS(X^3+X+1,X) Complexe, num factorize {(.34,-1.16),(.34,1.16),-.68}
PROOT([1,0,1,1]) Indifférent [(.34,-1.16),(.34,1.16),-.68]


2.3.7  Résolution exacte et approchée

Les solveurs exacts permettent de Les solveurs numériques permettent de

Type Exemple Résultat
Exact équation SOLVE(COS(3*X)-COS(X)=0,X) { X=−2π n1, ... }
Approché équation ROOT(COS(X)-X,X,0.0) 0.739
Exact système poly. SOLVE([X^2+Y^2=5,X+Y=3],[X,Y]) {[Y=1,X=2],[Y=2,X=1]}
Exact système lin. LINSOLVE([X+2Y=3,X+Y=2],[X,Y]) {...,[Y=1,X=1]}
Approché système MSLV([X^2+EXP(Y)=5,EXP(X)+Y=3],  
  [X,Y],[0,0]) {...,[.3471,1.5850]}
y'+xy=1 DESOLVE(X*d1Y(X)+Y(X)=1,Y(X)) Y(X)=(X+cC0)*1/X
y'+y=sin(x) LDEC(SIN(X),X+1)) 1+2cC0/2 eX −(cos(X)/2+...


2.3.8  Conversions

Les menus de conversion sont accessibles à partir de la touche shift gauche-6 (CONVERT).

On peut convertir des types d'objets en autres types, mais aussi des unités d'angle en autres unités d'angles, et plus générallement une unité physique en une autre unité physique.
Instruction HP Exemple Résultat
Matrice vers liste AXL AXL(IDN(2)) {{1,0},{0,1}}
Liste vers matrice AXL AXL({1,0}) [1,0]
Rendre approché ->NUM ->NUM(1/2) 0.5
Rendre exact XQ XQ(0.5) 1/2
Vers chaine de caractères ->STR ->STR(1/2) "1/2"
De chaine de caractère STR-> STR->("1/2") 1/2
Unités d'angles CONVERT CONVERT(3.14_r,1_grad) 199.8986_grad
Unités physiques CONVERT CONVERT(20_mph,1_kph) 32.1869_kph
Unités de temps CONVERT CONVERT(1_h+20_min+30_s,1_s) 4830_s


2.4  Les listes

On utilise les { } pour délimiter une liste avec comme séparateur ,.
  1. Attention!!! Il ne faut pas confondre cette notation avec la notion d'ensemble en mathématiques : dans un ensemble l'ordre des éléments n'a pas d'importance mais dans une liste l'ordre est important...
  2. {} désigne la liste vide et {1, 2, 3} est une liste de 3 éléments, + concatène deux listes, par exemple :
    {1, 2, 3}->TAB
    TAB+4 ->TAB
    Maintenant TAB contient {1,2,3,4}.
    De nombreuses fonctions prenant une liste en argument sont appliquées à chaque élément un à un. Par exemple :
    COS(->NUM(TAB))
    renvoie la liste des valeurs approchées des cosinus des 4 éléments de TAB.
    Remarquez que + concatène deux listes même si elles ont la même longueur, c'est la commande ADD) qui permet d'ajouter deux listes terme à terme.
  3. On obtient la taille de la liste avec la commande SIZE. On obtient le P-ième élément de L (où P est compris entre 1 et la taille de la liste) en tapant :
    L[P] ou L(P) ou GET (L,P).
  4. Si on veut modifier le Pième élément de L (par exemple le mettre à 0) on écrira :
    PUT(L, P, 0) STO▷ L
    ou PUT('L', P, 0)
    En effet PUT(L, P, 0) renvoie la liste modifiée (sans modifier L) alors que PUT ('L', P, 0) modifie la liste L.
  5. La commande SEQ permet de constituer une liste à partir d'une formule, par exemple si on tape :
    SEQ('X*X','X',4,10,1)
    on obtient :
    {16,25,36,49,64,81,100}
  6. La commande SORT(L) trie une liste L de valeurs numériques par ordre croissant, REVLIST(L) renverse l'ordre de L, SUB(L,2,4) extrait les termes d'ordre 2 à 4, ...

2.5  Les chaines de caractères

Les chaines de caractère utilisent le délimiteur ". Quelques fonctions :
Description Fonction Exemple Résultat
longueur SIZE SIZE("Bonjour") 7
concaténation + "12"+"34" "1234"
partie de chaine SUB SUB("12345",2,4) "234"
code ASCII CHR ΣLIST(CHR({65,66})) "AB"
code ASCII NUM NUM("ABC") 65
Le code ASCII permet de faire des petits programmes de cryptographie en codant ou en décodant une liste de nombres provenant d'une chaine de caractères. Voir la section 9.2.14 pour traduire une chaine de caractères en liste de codes ASCII.

2.6  Exercices

  1. Créez un objet de chaque type en mode ligne de commande, stockez-le dans une variable, par exemple
    1.1, 12, 1+2i, (0.5,2.3), 1/2, x, x*sin(x)-x, [1,2],
    une matrice aléatoire 2 par 2, la liste des objets précédents.
  2. Vérifiez le type de la variable avec TYPE
  3. Essayez de décomposer l'objet si on peut le faire (selon le type d'objet).
  4. Testez ce que font les opérations +, inverse, *, /, avec chaque type de variable.
  5. Testez l'accès à un élément d'une liste, d'un vecteur, d'une matrice.
  6. Testez les environnements de saisie pour entrer une équation, une matrice.
  7. Calculez les intégrales (utilisez l'éditeur d'équation pour les saisir) et simplifiez le résultat:
    1
    ex−1
    dx,   
    1
    xln(x)
    ln(ln (x)) dx,    (2x2+1)ex2 dx,    xsin(x)ex dx
    Vérifiez en dérivant les expressions obtenues.

  8. Déterminer la valeur de:
    2


    1
    1
    (1+x2)3
    ,   
    2


    1
    1
    x3+1
    dx


  9. Calculer les sommes suivantes
    N
    Σ
    k=1
    k,
    N
    Σ
    k=1
    k2,
    Σ
    k=1
    1
    k2


  10. Développer sin(3x), linéariser l'expression obtenue et vérifier qu'on retrouve l'expression initiale.

  11. Calculer le développement de Taylor en x=0 à l'ordre 4 de:
    ln(1+x+x2),  
    exp(sin(x))−1
    x+x2
    ,   
    1+ex
    ,   
    ln(1+x)
    exp(x)−sin(x)


  12. Résoudre le système linéaire


    x + y + az = 1
    x + a y + z = 2
    ax + y + z = 3
    en utilisant soit l'instruction rref sur la matrice augmentée, soit la formule A−1 b.
  13. tester la recherche de racines numérique/exactes de x3+x+1=0, exp(x)+x=3, sin(x)2−2=0.
  14. Trouver l'intersection du cercle de centre l'origine, rayon 1 et de l'ellipse d'équation x2+2xy+3y2 +3x−3y=3. Résoudre sin(x)+y=2, x+cos(y)=2.
  15. Résoudre l'équation différentielle ex y'=y+1, calculer la valeur de y vérifiant y'=√sin(y+x)2+1−cos(x), y(0.0)=1.2 en x=1.0.
  16. Simplifier sin(3x)/sin(x)
  17. Donner la valeur de 5k (mod k ) avec k=10007.
  18. Vérifier que le polynôme x5+x+1 n'a que des racines simples et déterminer son nombre de racines réelles. Faire son tableau de variations.
  19. Chercher les extremas locaux de la fonction (x+y+1)(x−2y−3)(xy−1)
  20. Calculer une valeur approchée de ∫0 exp(−x2) dx en faisant le changement de variable x=tan(t).
  21. Donner une primitive (à coefficients approchés) de 1/(x4−3x3+5x+1)
  22. Calculer le terme d'ordre n du développement de Taylor en x=0 de 1/((x2−1)(x+2)). Vérifiez pour les 5 premiers termes.

3  Représentations graphiques: fonction, courbes paramétrées et équation différentielles.

Les principaux types de graphes (hors statistiques) sont : Lorsqu'on effectue une représentation graphique, la calculatrice va échantilloner la (ou les) fonction(s) définissant la courbe en fonction des paramètres de discrétisation (l'écart entre deux évaluations successives et les valeurs limites des paramètres), puis tracer les points correspondants et éventuellement les relier entre eux par de petits segments de droite.

Sur la calculatrice, il faut configurer le type de graphe à représenter puis indiquer l'équation ou les équations de la courbe et les paramètres. Pour cela,
  1. taper simultanément sur shift-gauche et F4 (2D/3D) puis choisir le type parmi (Function, Parametric, Polar, Diffeq, Slopefield (champ des tangentes), Fast3D), puis donner l'expression à tracer en fonction de la variable indépendante et d'éventuelles informations complémentaires en fonction du type de tracé (pour tracer plusieurs graphes, entrer une liste).
  2. L'expression ou la liste des expressions à représenter doit être stockée dans la variable EQ. On peut le faire depuis l'historique ou en tapant sur shift-gauche puis F1 (Y=) :
  3. Pour les tracés dans le plan, les paramètres H-Tick et V-Tick indiquent le décalage entre 2 marques (ticks) successives sur les axes, donnés en pixels ou en unités (selon que Pixels est coché ou non).
  4. Le réglage des paramètres de discrétisation et de la fenêtre d'affichage se fait en appuyant simultanément sur shift gauche-F2 (WIN) puis régler H-Win et W-Win.
  5. On trace enfin en appuyant sur F6 (on efface souvent l'écran graphique au préalable par F5).
  6. Les menus permettent ensuite de changer les paramètres d'affichage (zoom), mais attention cette opération prend du temps, car la machine recalcule le graphe.
    Pour les tracé de fonctions, on peut utiliser le menu FUNC pour trouver une racine numérique de f(x)=0, afficher la tangente au graphe, calculer l'aire sous la courbe entre deux points,...
    On peut aussi déplacer le curseur sur l'une des courbes tracées et regarder la valeur des coordonnées du point, etc.
    On peut aussi ajouter divers objets géométriques à l'image en allant dans le menu EDIT (l'objet graphique affiché est sauvegardé dans la variable PICT)
  7. Pour les fonctions d'une variable, on peut afficher un tableau de valeurs de la fonction, taper sur shift gauche F5 pour régler la valeur initiale de X et la valeur du saut, puis shift gauche F6 pour afficher le tableau, les flèches vers le haut et vers le bas permettent de changer la valeur initiale.
Remarques Exercices :

4  Calculs financiers

L'application Time Value of Money permet principalement de calculer des mensualités de remboursement pour un emprunt à taux t et remboursement r fixes. Les mathématiques sous-jacentes sont les suites géométriques. Si uk est la valeur empruntée l'année k, la valeur de uk+1 s'obtient en enlevant le remboursement r et en ajoutant les intérêts sur uk
uk+1= uk(1+t) −r
Il s'agit alors de trouver l'une des valeurs n, r, t ou u0 pour que un=0. Pour cela on calcule uk, en cherchant C pour que vk=ukC soit une suite géométrique de raison 1+t :
vk+1=uk+1C=uk(1+t)−rC=(vk+C)(1+t)−rC=(1+t)vk+tCr
Donc C=r/t, et vk=(1+t)n v0 d'où :
vn=unC=−C=(1+t)n v0=(1+t)n (u0C)
finalement :
(1+t)n=
C
u0C
=
r
ru0 t


Sur HP, taper shift gauche-FINANCE. Remplir les champs sauf celui cherché et taper sur le menu SOLVE. Par exemple pour un emprunt de 10000 euros à 3% sur 5 ans, on remplira 60 mensualités (N), le taux à droite, puis -10000 pour PV, 0 pour FV, on déplace le curseur sur FMT et on tape sur SOLVE.

Exercices :

5  Statistiques descriptives

Les calculs statistiques utilisent une variable réservée ΣDAT qui est la matrice statistique. On peut utiliser l'éditeur de matrice pour entrer les données, l'appui sur shift 5 (STATS) stocke la matrice dans la variable ΣDAT et ouvre le menu de statistiques. On peut aussi entrer une matrice directement depuis l'historique avec STO>.

5.1  Statistiques à une variable.

Taper shift-5 (STATS), et choisir Single Var. Cochez ensuite les fonctions que vous voulez calculer et le type de statistiques (population entière ou échantillon, ce qui change la formule de la variance). Pour des statistiques avec fréquence il faut installer une librairie de statistiques comme Stat49Pro (disponible sur www.hpcalc.org).

Les calculs statistiques peuvent aussi être effectués en ligne de commande depuis l'historique. Supposons par exemple que l'on a entré la matrice (dans l'historique ou dans l'éditeur de matrice) :
TRAN([[13,18,14,16,12,13]]) STO> ΣDAT
Voici la liste des commandes :
Description Fonction Résultat sur l'exemple
Moyenne MEAN 14.3333
Maximum MAXΣ 18.
Minimum MINΣ 12.
Écart type (échantillon) SDEV 2.2509
Variance (échantillon) VAR 5.0667
Écart type (population) PSDEV 2.0548
Variance (population) PVAR 4.2222
Total TOT 86.
Notez que : On peut représenter graphiquement les données par un histogramme des effectifs : touche shift-2d/3d choisir Histogram comme type, régler dans WIN, horizontalement les valeurs extremes prises par la série statistique, verticalement entre 0 et l'effectif maximal d'une classe, ainsi que la largeur d'une classe (dans l'exemple ci-dessus, on pourrait par exemple prendre H-View entre 0 et 20, V-View entre 0 et 5 et Bar Width 3).

5.2  Statistiques à 2 variables, modèles de régression.

On utilise cette fois 2 colonnes de la matrice de données ΣDAT. On peut effectuer le calcul de la corrélation, de la covariance, des régressions de divers types (linéaire, exponentielle, logarithmique, puissance). Comme ci-dessus, on utilise l'application statistiques (shift-5 puis Fit) ou on tape directement les commandes dans l'historique. Par exemple si on a entré dans ΣDAT
[[1,3],[3,5],[4,8],[6,11],[7,13],[8,13]]
Description Fonction Résultat sur l'exemple
Corrélation CORR 0.9857
Covariance COV 10.967
Choix régression linéaire LINFIT NOVAL
Choix régression logarithmique LOGFIT NOVAL
Choix régression exponentielle EXPFIT NOVAL
Choix régression puissance POWFIT NOVAL
Régression LR (linéaire) {1.2238,1.5741}
Meilleure des 4 BESTFIT  
Prédiction de y PREDY(5) (linéaire) 9.0957
Prédiction de x PREDX(14) 8.1155


On peut représenter graphiquement les données par un nuage de points (choisir Scatterplot dans le champ type de 2D/3D). Le graphe de la droite de régression s'obtient en tapant sur le menu STATL du bandeau.

5.3  Fonctions de probalité, statistiques et dénombrement.

Description Fonction Exemple Résultat
Factorielle FACT FACT(5) 120
Nombre de combinaisons COMB COMB(13,5) 1287
Nombre de permutations PERM PERM(13,5) 154400
Réel aléatoire ∈ [0,1] RAND RAND aléatoire
Initialise RAND RDZ RDZ(0.3) NOVAL
Notez que RAND renvoie un nombre pseudo-aléatoire compris entre 0 et 1, distribué selon la loi uniforme et que RDZ(R) initialise le générateur aléatoire (R est un nombre réel, si R est nul, l'horloge système est utilisée).

Les fonctions UTPC, UTPF, UTPN, UTPT renvoient la probabilité qu'une variable aléatoire soit supérieure à leur dernier argument si la variable aléatoire suit respectivement la loi du Chi 2, de Snedecor F, la loi normale ou la loi de Student. Les premiers arguments de ces fonctions sont respectivement nombre de degrés de liberté, nombre de degrés de liberté au numérateur et au dénominateur, moyenne et variance, nombre de degrés de liberté. Ces fonctions (et leurs inverses) sont utilisés en particulier pour les statistiques inférentielles (cf. infra).

6  Statistiques inférentielles

L'exploitation de données peut prendre plusieurs formes :
  1. L'inférence statistique ou "théorie de l'estimation" : connaissant un échantillon, on désire émettre une estimation sur la population totale. Dans ce cas, on n'a pas d'idée a priori sur le paramètre à estimer : on construira un intervalle de confiance Iα au seuil α. Cet intervalle Iα dépend de l'échantillon et contient, en général, la valeur du paramètre sauf dans α % des cas c'est à dire, il y a seulement α % des échantillons qui ont un Iα qui ne contient pas le paramètre (on dit qu'on a un risque d'erreur égal à α).
  2. Le test d'hypothèses permet de savoir si il y a accord entre théorie et expérience. Dans ce cas on a une idée a priori sur la valeur que doit avoir le paramètre : on construit le test d'hypothèses (deux hypothèses H0 et H1 seront en concurrence), puis on prélève un échantillon et on regarde si cet échantillon vérifie le test ce qui permet d'accepter ou de refuser l'hypothèse privilégiée H0.
    Par exemple : on veut contrôler qu'une fabrication correspond bien à ce qui a été décidé, pour cela on fabrique un test d'hypothèses, puis on teste l'hypothèse H0 sur un échantillon de la production.
  3. Le test d'homogénéite permet de comparer une distribution expérimentale à une distribution théorique. Dans les deux cas précédents, on a seulement comparé ou estimé des valeurs caractéristiques comme fréquences ou moyennes, Ici on compare deux distributions.
Pour des échantillons assez grands, le théorème qui permet de faire ces estimations est la loi des grands nombres. Ainsi, si on calcule la moyenne X d'un échantillon de n variables aléatoires indépendantes de même loi (de moyenne μ et d'écart-type σ), la loi de X tend lorsque n tend vers l'infini vers une loi normale de moyenne μ et d'écart-type σ/√n. Si n n'est pas assez grand (typiquement n≤ 30), on peut encore faire ce type de statistiques inférentielles si on sait par ailleurs que la loi commune des variables aléatoires de la population est une loi normale.

Sur la HP, certaines fonctions sont en ROM, pour des fonctions complémentaires, il faut installer l'application Stat Pro 49.

6.1  Estimation d'une moyenne

Supposons par exemple qu'on veuille calculer la moyenne de la population au vu d'un grand échantillon et qu'on cherche par exemple un intervalle de confiance centré à 5% sur la moyenne μ de la population. On connait la moyenne m de l'échantillon qui est la valeur d'une variable aléatoire X qu'on suppose suivre une loi normale de moyenne μ et écart-type σ (c'est asymptotiquement le cas lorsque n tend vers l'infini). Si on ne connait pas σ, lorsque l'échantillon est assez grand, on peut estimer σ à partir de l'écart-type de l'échantillon (qui est lécart-type de la population multiplié par √n/(n−1), fonction SDEV sur la 49). On cherche ensuite la distance C telle que la probabilité que |m−μ|>Cσ soit de 5%. Comme la loi de X est la loi normale, cela revient à calculer pour quelle valeur de C on a l'équation
(
C


−∞
+
+∞


C
) e
t2
2
 
= 0.05
+∞


−∞
e
t2
2
 
calcul lié à celui de la fonction UTPN de la HP
UTPN(m,v,x)=
1
2 π v


x
exp(−
(tm)2
2v
) dt


Si l'échantillon est trop petit (typiquement n<30) et si la loi suivie est normale, on utilise une autre statistique car l'estimation de l'écart-type de la population par σ √n/(n−1) n'est plus valide. On montre que la variable aléatoire
T=
X
−μ
1
n(n−1)
n
Σ
j=1
(Xj
X
)2
suit la loi de Student S(n−1,x) à n−1 degrés de liberté :
S(n,x)=
Γ


n+1
2



Γ


n
2



n π
(1+
x2
n
)
n+1
2
 
,    où Γ(x)=(x−1)!
N.B.: l'abréviation de cette loi est T et non S (par exemple UTPT sur HP49).

Sur les HP49, on peut calculer des intervalles de confiance et faire des tests d'hypothèses sur la moyenne d'une population ou de l'égalité de moyenne de 2 populations pour des échantillons grands, on utilise Z si l'écart-type est connu, et T s'il est estimé. Tapez sur shift droit-STATS puis 6 ou 5, puis choisissez le type de test/distribution. Tapez sur HELP pour plus de détails sur le test effectué.

Pour faire des statistiques sur de petits échantillons suivant la loi normale, il faut poser soi-même les calculs, en s'aidant de la fonction UTPT, dont le permier argument est le nombre de degré de liberté et le deuxième x, par exemple pour résoudre UTPT(n−1,x)=0.025 pour n=8 on tape
ROOT('UTPT(7,X)-0.025',X,0.0)
en faisant de même en 0.975 on obtient un intervalle de confiance centré à 5%.

Exercice :
On a effectué 10 pesées indépendantes sur une balance d'une même masse μ et on a obtenu :
10.008,10.012,9.990,9.998,9.995,10.001,9.996,9.989,10.000,10.015
On suppose que la pesée est une variable aléatoire suivant la loi normale. On cherche à déterminer la masse μ au vu de l'échantillon. Tester l'hypothèse H0 : μ=10 contre H1 : μ>10 au seuil de 5%. Même question pour H1 : μ ≠ 10. Calculer un intervalle de confiance pour μ à 5%.

6.2  Estimation d'un écart type

Lorsque la population suit une loi normale, on peut aussi estimer l'écart-type à partir d'un échantillon et en calculer un intervalle de confiance, en utilisant la distribution du χ2. On pose
Z2=
1
n
n
Σ
k=1
(Xk−μ)2
On peut montrer que n Z22 suit une loi du χ2 ayant n degrés de liberté.

Sur les HP49, les calculs se font à la main, en s'aidant de la fonction UTPC, qui donne la probabilité qu'une variable aléatoire suivant la loi du χ2 à n degrés de liberté soit plus grande que le 2ème argument de UTPC.

Exercice :
On reprend les mêmes données que ci-dessus, mais on suppose que μ=10 est connu et on veut calculer un intervalle de confiance à 5% près sur la précision de la balance.
Calculer la valeur z2 (n=10) de Z2 pour l'échantillon (on trouve environ 0.00007).
Pour σ donné, on calcule a=n z22 et on regarde la probabilité que nZ22 (qui suit la loi du χ2 à n degrés de liberté) soit plus grand que a, en calculant UTPC(10,a). On dira qu'on a un intervalle de confiance à 5% sur σ si UTPC(10,a) du a correspondant est compris entre 0.975 et 0.025. On cherche donc les valeurs de σ qui correspondent à un UTPC de 0.975 et 0.025. On calcule a1 et a2 par exemple avec la fonction de recherche numérique de solutions de la calculatrice. On en déduit les valeurs σ1 et σ2 de l'intervalle de confiance à 5% de σ.

7  Tableur

Notez que sur une calculatrice, l'exécution d'un tableur non trivial est très lente, il n'est donc pas recalculé automatiquement par défaut. Cette application permet néanmoins de manipuler les mêmes notions qu'un tableur sur un ordinateur. Pour lancer le tableur, taper la touche APPS puis Spreadsheet.

La syntaxe est proche de celle des tableurs sur micro-ordinateur. Montrons encore comment utiliser le tableur pour calculer les premiers termes d'une suite récurrente. Par exemple, soit la suite définie par :
un+1=f(un),    f(x)=1/2(1+2/x), u1=2
On définit la fonction dans l'historique
DEFINE F(X)=1/2*(1+2/X)
On tape sur la touche APPS, puis Spreadsheet. On met la valeur initiale u1=2 dans la cellule A1, puis on définit A2 par la formule de récurrence F(A1), on sélectionne la cellule avec shift droit-BEGIN, shift droit-END, shift droit-COPY, et on la recopie sur quelques cellules vers le bas. Si on remplace A1 par 2.0, on obtient des valeurs approchées.

Exercices:

8  Suites numériques récurrentes

On peut utiliser le tableur (cf. section précédente) mais on peut aussi calculer une suite dans l'historique, par exemple :
DEFINE F(X)=1/2*(1+2/X)
DEFINE(U(N)=IFTE(N>1,F(U(N-1)),2)
Remarques : Le graphe d'une suite récurrente définie par un+1=f(un) (en toile d'araignée) se trace à partir de l'application de géométrie, avec la commande plot. Par exemple ici, on tape APPS puis Geometrie, puis Fich->Nouveau, puis Ajouter->Courbe->plot, puis on trace le graphe de la fonction f plot(1/2*(1+2/X)), puis à nouveau Ajouter->Courbe->plot, et on trace les trois premiers termes de la suite plot({1/2*(1+2/X),2.0,3}).

Exercices :

9  Programmation

L'essentiel de cette section est tiré d'un texte écrit par Renée De Graeve qui traite de nombreuses autres calculatrices http://www-fourier.ujf-grenoble.fr/~degraeve/grouge.ltx

9.1  Edition, correction, exécution

9.1.1  Comment éditer et sauver un programme

Un programme s'écrit dans la ligne de commande entre les délimiteurs ≪   ≫
Pour le sauver, il suffit de faire suivre le dernier ≫ par :
STONOMDUPROGRAMME


9.1.2  Comment corriger un programme

Si la syntaxe est mauvaise, la machine vous met automatiquement le curseur là où le compilateur a détecté l'erreur. Il suffit donc de corriger!!!
Si l'erreur est détectée au cours de l'exécution du programme il faut taper :
VISIT('NOMDUPROGRAMME')
qui édite votre programme. On corrige, puis ENTER sauve votre programme corrigé.

9.1.3  Comment exécuter un programme

Si le programme n'a pas de paramètres, il suffit de taper son nom dans la ligne de commande ou d'utiliser le menu VAR. S'il y a des paramètres, on fait suivre le nom du programme de parenthèses dans lesquelles on met les valeurs des paramètres séparées par une virgule. Par exemple :
PGCD(45,75)


9.1.4  Comment améliorer puis sauver sous un autre nom un programme

On tape RCL('NOMDUPROGRAMME') puis EDIT du bandeau. On fait les améliorations et on fait suivre le dernier ≫ par :
STONOUVEAUNOM


9.2  Les différentes instructions

9.2.1  Les commentaires

Il faut prendre l'habitude de commenter les programmes. En algorithmique un commentaire commence par // et se termine par un passage à la ligne. Pour la HP49G, on écrira simplement le commentaire dans une chaine de caractères suivi par ;. On peut aussi saisir une ligne commençant par @ et se terminant par un passage à la ligne ou une chaine entourée de deux @. (le caractère @ est obtenu en tapant shift-rouge ENTER) mais le compilateur efface les commentaires... donc pour garder ce type commentaires, il faut écrire votre programme sous la forme d'un texte qu'il faut ensuite compiler avec STR ce qui complique un peu...

9.2.2  Les variables

Ce sont les endroits où l'on peut stocker des valeurs, des nombres, des expressions. Les noms des variables sont libres. On distingue les variables globales (définies dans l'historique) et les variables locales (définies seulement à l'intérieur d'un programme).

Les variables locales sont déclarées et initialisées une par une (initialisation obligatoire!) grâce à (shift-rouge 0). Chaque déclaration doit être suivie par un sous programme (délimiteurs ≪ ≫) en écrivant :
≪ 1 → A ≪ 2 → Bcorps du programme ≫ ≫ ≫
La flèche doit être entourée d'espaces, ces espaces sont mis automatiquement quand on n'est pas en mode Alpha. Par exemple :
≪ 3.14 → PI ≪ 2*PI*R ≫ ≫ STOPER
Dans cet exemple, on a écrit le programme PER, PI est une variable locale qui est déclarée et affectée par 3.14 → PI . Cette variable est locale pour le programme qui suit sa déclaration (ici ≪ 2*PI*R). Par contre, R est une variable globale (qui doit exister avant l'exécution du programme PER). Si, au cours d'un programme, on veut stocker une valeur dans une variable (locale ou globale) il faut bien sûr utiliser STO.

Pour déclarer plusieurs variables locales en une seule fois, on peut aussi utiliser le couple d'instructions LOCAL et UNBIND.

9.2.3  Notion de paramètres

Quand on écrit une fonction il est possible d'utiliser des paramètres, comme pour les fonctions internes de la 49. Par exemple si A et B sont les paramètres de la fonction PGCD on appellera PGCD en tapant dans l'historique :
PGCD(A,B)
Ces paramètres se comportent comme des variables locales, la seule différence est qu'ils sont initialisés lors de l'appel de la fonction. On les déclare en début de fonction, en commencant la fonction par ≪ → suivi par les variables locales puis << >>.

Par exemple, si on veut que R soit le paramètre de la fonction PER on écrit :
≪ → R ≪ 3.14 → PI ≪ 2*PI*R ≫ ≫ ≫ STOPER
L'exécution se fait en tapant par exemple PER(5).

9.2.4  Les Entrées

Pour que l'utilisateur puisse entrer une valeur dans la variable A au cours de l'exécution d'un programme, on écrira :
...PROMPTSTO('A')

9.2.5  Les Sorties

Seul le dernier résultat s'inscrit dans l'historique. Pour afficher des résultats intermédiaires on tape :
MSGBOX( "A="+→ STR(A))
(ici le + effectue la concaténation de deux chaines de caractères).

On peut aussi gérer ligne par ligne l'écran avec la commande DISP. Ainsi
DISP("A="+A,3)
affichera en ligne 3. Les fonctions de gestion de l'écran sont CLLCD() (efface l'écran) et FREEZE(7) (gèle l'affichage et permet de visualiser les 7 lignes de l'affichage).

9.2.6  La séquence d'instructions ou action

Une action est une séquence d'une ou plusieurs instructions.
Pour la HP49G, le ; est un séparateur d' instructions.
Le ; s'obtient en tapant en même temps sur shift-rouge SPC.

9.2.7  L'instruction d'affectation

L'affectation est utilisée pour stocker une valeur ou une expression dans une variable. On utilise la touche STO qui se traduit à l'écran de la calculatrice par : ▷ (que l'on notera : STO)

9.2.8  Les instructions conditionnelles

IF condition THEN action END
IF condition THEN action1 ELSE action2 END
Exemple (Attention au == pour traduire la condition d'égalité) :
IF A == 10 OR A < B THEN B-A STO▷ B ELSE A-B STO▷ A END


9.2.9  Les instructions "Pour"

FOR (I, A, B) action NEXT
FOR (I, A, B ) action STEP P
L'instruction FOR déclare I comme variable locale et l'initialise automatiquement.

9.2.10  L'instruction “Repeter”

DO action UNTIL condition END


9.2.11  L'instruction “Tant que”

WHILE condition REPEAT action END


9.2.12  Les conditions ou expressions booléennes

Une condition est une fonction qui a comme valeur un booléen, à savoir elle est soit vraie soit fausse.
  1. Les opérateurs relationnels
    Pour exprimer une condition simple on utilise les opérateurs :
    == < > ≤ ≥ ≠
    Attention pour les calculatrices HP le test d'égalité se traduit, comme en langage C, par ==
  2. Les opérateurs logiques
    Pour traduire des conditions complexes, on utilise les opérateurs logiques ou et non qui se traduisent sur les calculatrices par :
    OR AND NOT

9.2.13  Les fonctions

Dans une fonction on ne fait pas de saisie de données : on utilise des paramètres qui seront initialisés lors de l'appel. Dans une fonction on veut pouvoir réutiliser le résultat : on n'utilise pas de commande d'affichage. Par exemple, pour additionner deux nombres de cette manière
≪ → A B
A +B
STOADDITION
Pour tester, on tape :
ADDITION(4,5)


9.2.14  Exemples

L'algorithme itératif de Bézout, équivalent de l'instruction IEGCD, écrit en langage HP49. Le principe consiste à calculer des égalités
a li[1] +b li[2] = li[3]
on initialise l1 et l2 avec { 1,0,a } et {0,1,b}, le dernier élément de la liste li sera successivement la suite des restes de l'algorithme d'Euclide. On passe à la ligne suivante en faisant la combinaison linéaire
li+2=liqli+1
q est le quotient euclidien des deux restes li[3] et li+1[3]. Rappelons que pour saisir ; il faut taper simultanément sur shift droit et ,.
≪ → L1 L2 ≪
{1,0,L1} STO> L1;
{0,1,L2} STO> L2;
0 → L3 ≪
WHILE L2[3]≠0 REPEAT
L1-IQUOT(L1[3],L2[3])*L2 STO> L3;
L2 STO> L1;
L3 STO> L2;
END;
L1


≫ STO> BEZOUT
On peut alors taper BEZOUT(7,5).

Pour obtenir la liste des codes ASCII d'une chaine, on peut utiliser le programme suivant
<< -> S <<
{} -> L <<
FOR(I,1,SIZE(S)) L+NUM(SUB(S,I,I)) STO> L NEXT;
L >>
>>
>> STO> ASCII
On peut alors taper par exmeple ASCII("Bonjour").

9.3  Exercices

  1. Ecrire une fonction calculant le cube d'un entier. En utilisant cette fonction afficher la liste des cubes des entiers de 1 à 10.
  2. Ecrire une fonction calculant les 2 racines d'une équation du second degré donnée par a, b et c.
  3. Ecrire une fonction calculant la somme de j variant de 1 à n de 1/j. De même en faisant varier j en décroissant.
  4. Ecrire une fonction testant si un nombre est premier en recherchant un diviseur inférieur à √n.
  5. Ecrire une fonction calculant le pgcd de 2 entiers par l'algorithme d'Euclide.
  6. Ecrire une fonction calculant l'indicatrice d'Euler d'un entier en utilisant la fonction précédente.
  7. Même question pour l'identité de Bézout.
  8. Ecrire une fonction calculant a (mod pq ) connaissant a =b (mod p ) et a=c (mod q ) (la fonction interne s'appelle ICHINREM).

  9. Calculer en mode approché en croissant ou en décroissant
    n
    Σ
    j=1
    1
    j
    pour quelques valeurs de n ?

10  Géométrie interactive

L'application de géométrie de la HP49 permet de faire de la géométrie dynamique et de la géométrie analytique. Vous devez installer la ROM contenant la géométrie depuis le site
http://www-fourier.ujf-grenoble.fr/~parisse/#hpgeo
Attention, lorsque vous utilisez l'application de géométrie sur la 49, celle-ci passe en mode complexe. Pour passer rapidement du mode complexe au mode réel, tapez simultanément sur les tocuhes shift-gauche TOOL (pour i).

10.1  Principes

10.1.1  Géométrie dynamique

Une application de géométrie permet d'effectuer une construction géométrique, c'est-à-dire définir des objets géométriques (points, droites, segments, cercles, perpendiculaire, ...) indépendants ou dépendants des objets précédents. Par exemple, on crée trois points, puis le triangle défini par ces 3 points, les médianes issues des 3 sommets puis le point d'intersection des 3 médianes. On dit que l'application est dynamique si on peut déplacer certains objets géométriques soit dans le plan s'ils sont indépendants des objets précédents, soit sur une courbe du plan s'ils sont sur une courbe, le logiciel recalcule alors la nouvelle position de tous les objets géométriques et affiche la figure mise à jour. On peut ainsi observer si une propriété de la figure (par exemple concourrance de trois droites, tangence, ...) est fortuite ou semble toujours vraie. Si le logiciel de géométrie interagit avec un logiciel de calcul formel, on peut aussi prouver une propriété en faisant des calculs de géométrie analytique.

Les calculatrices ont un écran un peu trop petit pour faire des constructions complexes, de plus le temps de calcul de la figure devient vite trop grand pour avoir une interactivité agréable, néanmoins, elles permettent d'effectuer de petites constructions et d'expérimenter ce type de logiciels dont le principe de fonctionnement est identique sur ordinateur.

10.1.2  Affichage

L'écran d'une calculatrice ou d'un ordinateur est composé de pixels, les objets géométriques doivent être discrétisés pour être représentés. Sur un écran d'ordinateur, il y a suffisamment de pixels pour que l'oeil est l'impression de voir de “vrais” objets géométriques, sur une calculatrice on distingue souvent clairement la discrétisation.

Il existe des algorithmes permettant d'effectuer rapidement cette discrétisation pour les objets géométriques courants (segments, cercles), le plus connu est l'algorithme de Bresenham. Il faut aussi tenir compte du cadrage, et ne représenter que la partie visible à l'écran des objets (par exemple une droite sera toujours représentée par un segment). Pour plus de détails, chercher le mot clef Bresenham sur Internet, cf. par exemple
http://raphaello.univ-fcomte.fr/IG/Algorithme/Algorithmique.htm

10.1.3  Géométrie analytique

Le logiciel de géométrie de la HP49 utilise une représentation analytique (approchée ou exacte) des objets manipulés (par exemple deux nombres complexes approchés pour un segment de droite, ou un complexe et un réel approchés pour un cercle) correspondant à un repère orthonormé qui est affiché ou non. Les liens entre un objet et les objets précdents se font en utilisant des fonctions à un ou plusieurs arguments comme par exemple le centre (d'un cercle), l'intersection (de 2 objets),...

Une figure est une liste de noms de variables et d'expressions permettant de calculer ces variables en fonction des objets définis précédemment. On peut accéder depuis l'historique aux objets de la dernière figure géométrique affichée (ils sont stockés dans des variables). On peut alors effectuer dans l'historique des calculs sur ces objets géométriques, par exemple obtenir l'équation d'une droite ou l'affixe d'un point.

Sur les HP, les commandes de création d'objet sont “explicites”, la plupart du temps elles se font par l'intermédiaire d'une ligne de commande qui est préremplie par l'utilisation des menus. Les objets ont tous un nom de variable, et peuvent avoir un label affiché à l'écran (on reprend alors le nom de variable) ou non. Le format d'un nom d'objet est composé du label affiché à l'écran et du nom de variable séparé par :, par exemple A:A: pour un objet nommé A et affiché A, ou ::A pour un objet nommé A mais sans légende à l'écran. L'application peut utiliser des coordonnées exactes, et on a accès depuis l'historique à toutes les informations analytiques sur tous les objets construits (on passe en argument d'une commande les noms de variables des objets géométriques, par exemple abscisse(A)). On peut également tracer des objets non géométriques, par exemple une courbe représentative, une tangente à un point, etc. On peut définir des objets géométriques à l'aide de fonctions (définies dans l'historique comme une fonction normale).

10.2  Premier exemple d'utilisation

Pour commencer nous allons construire un triangle défini par trois points et son cercle circonscrit.
  1. Touche APPS, puis Géométrie.
  2. Si votre calculatrice est en anglais, tapez F6 (Config) et sélectionnez Francais (si c'est English qui apparait, tapez sur la touche ON pour annuler)
  3. Vous pouvez supprimer les axes en tapant F6 (Config) puis en sélectionnant Enlever axes
  4. Tapez F1 (Fich.) puis choisissez Nouveau, donnez un nom de variable pour votre construction, par exemple CIRCON
  5. Tapez F2 (Ajouter) puis choisissez Points puis aleatoire, donnez alors 3 noms de points, par exemple A B C (le clavier est en mode alphabétique). Vous avez construit 3 points aléaoires.
  6. Tapez F2 (Ajouter) puis choisissez Lignes puis mediatrice, vous voyez apparaitre
    mediatrice()
    le curseur se trouve après la parenthèse ouvrante, donnez alors le nom des 2 points A et B séparés par une virgule, vous devez avoir la ligne
    mediatrice(A,B)
    tapez sur ENTER, donnez ensuite le label de la médiatrice (c'est le nom qui apparaitra à l'écran) et le nom de variable de la médiatrice, par exemple :c:c. Vous pouvez aussi ne pas afficher de label pour la médiatrice en tapant ::c. Par contre vous devez toujours donner un nom de variable à la médiatrice.
  7. Recommencez pour créer la médiatrice b des points A et C et la médiatrice a des points B et C.
  8. Tapez à nouveau F2, sélectionnez Points puis inter, indiquez en argument les noms de variable des deux médiatrices, par exemple a et b, donnez un label et un nom de variable pour le point d'intersection, par exemple :O:O.
  9. À nouveau F2, puis Courbes, puis cercle, donnez en argument le centre O et l'un des 3 points, par exemple A, donnez un nom de label et de variable au cercle par exemple :S:S. Notez qu'on pouvait construire directement un cercle circonscrit à partir de 3 points (en choisissant circonscrit au lieu de cercle).
  10. Tapez sur F1 puis Sauver pour sauver la figure CIRCON
  11. Pour faire varier un des points et observer comment la figure se modifie, tapez F4 (Déplacer), sélectionnez A, B ou C et faites bouger le point avec les flèches (vous pouvez précéder les flèches par les touches shift pour déplacer plus rapidement ou alpha moins rapidement). Tapez sur Ok pour accepter la nouvelle position ou sur Annul pour annuler le déplacement.
  12. Pour quitter, tapez F1 puis Quitter.
  13. Vous pouvez maintenant taper des commandes de géométrie analytique, comme par exemple affixe(A), rayon(S) directement au clavier (taper deux fois sur alpha puis sur la touche shift gauche puis sur alpha pour bloquer le clavier en mode alphabétique minuscule, taper à nouveau sur shift gauche alpha pour revenir en mode majuscule), ou en utilisant le menu Mesures.
  14. Pour revoir cette figure ultérieurement, lancez à nouveau l'application, puis si nécessaire F1 et charger CIRCON.
  15. Vous pouvez aussi modifier la construction dans son ensemble en l'éditant soit depuis le menu F4 (Déplacer), sous-menu Edit figure, soit en dehors de l'application de géométrie en éditant la variable CIRCON. Dans les deux cas, vous éditez une liste d'objets géométriques, chaque objet géométrique étant constitué d'une formule de calcul et d'un label/nom de variable.

10.3  Lancement de l'application

Vous pouvez lancer l'application de géométrie par la touche APPS puis 12.Geometry. Si l'historique est vide, l'application interactive démarre et ouvre la figure FIGURE si elle existe. Sinon, si le dernier niveau de l'historique contient : Vous pouvez aussi utiliser la commande GEO('arg') pour lancer l'application interactive sur la figure de nom arg. Attention aux ', si vous tapez GEO(arg), vous obtiendriez une liste avec le graphique de la figure et le temps d'évaluation. On peut enfin taper GEO(0) pour afficher le menu de géométrie dans l'historique sans lancer l'application,

10.4  Menu Ajouter (F1)

Les noms ci-dessous apparaissant en gras ne sont pas des commandes, mais permettent d'accéder à un assistant, par opposition aux noms en fonte de taille fixe, qui sont des commandes (utilisables dans l'historique).

10.4.1  Sous-menu points (raccourci P)

10.4.2  Sous-menu lignes (raccourci L)

10.4.3  Sous-menu cercles, courbes (raccourci S)

10.4.4  Sous-menu Triangle, quadrilatères

Pour créer des polygones ayant plus de 4 cotés, on peut utiliser les commandes zxpnt avec en argument le vecteur des affixes des points, ou on écrit un programme dans lequel on utilise la commande point avec, pour un n-gone, en 1er argument le vecteur L “fermé” des n+1 points et se terminant par n+1 (L[0]=L[n], L[n+1]=n+1) et en 2ème argument l'entier binaire #0.
On utilise le sous-menu Commandes pour cela. Si on souhaite tracer plusieurs polygones ayant un nombre fixé de coté, on peut aussi définir depuis l'historique une fonction pentagone de la manière suivante : Commentaires :

10.4.5  Transformations

Notez qu'on peut définir une fonction à un argument qui est une transformation dont les paramètres sont fixés, par exemple, en tapant dans l'historique :
DEFINE(rA(X)=rotation(A,pi/3,X))
on définit la rotation rA de centre A et d'angle pi/3 qu'on peut ensuite utiliser dans le sous-menu commande (par exemple rA(B) pour calculer l'image de B par la rotation rA, cf 10.4.8).

10.4.6  Sous-menu légende

Permet d'afficher en légende la valeur d'une formule. La légende est composée d'une partie fixe et d'une formule qui sera évaluée et affichée après la partie fixe. La légende s'affiche à un endroit déterminé par un nom de point ou par un nombre complexe.

Par exemple, pour afficher à l'endroit déterminé par le point de coordonnées (2,1), la valeur de l'abscisse du point M, on tape d'abord la formule abscisse(M) (déselectionnez le mode alpha en tapant sur la touche alpha, puis taper F6 pour faire apparaitre le sous-menu Mesures, tapez alors sur abscisse, puis alpha puis M), puis les coordonnées du point d'affichage (2,1) (on peut aussi taper le nom de ce point pour afficher la légende en ce point), puis la partie “fixe” de la légende (par exemple "Mx="). Si le point M a pour abscisse par exemple −1.21, on verra à l'écran au point d'affixe (2,1) la légende "Mx=-1.21". Si on déplace M, la légende indiquera la nouvelle valeur de l'abscisse de M au cours du déplacement.

10.4.7  Enregistrer formule

Permet d'enregistrer une liste de formules dans une variable. Lorsqu'on réévalue la figure, par exemple en déplaçant un point, la liste de valeurs est recalculée et ajoutée à la variable. On peut ensuite étudier les valeurs enregistrées dans la variable en quittant l'application de géométrie. Par exemple, on peut transformer la liste des variables enregistrées en une matrice avec la commande AXL, puis exécuter l'application de statistiques.

10.4.8  Menu commande

Permet de saisir une commande pour définir un objet géométrique. La commande est soit un objet algébrique (expression ne comportant ni liste ni vecteur...), soit un programme.

Voici quelques exemples à saisir en mode algébrique : Vous pouvez utiliser toutes les commandes et toutes les fonctions de la HP49. Lorsque votre ligne de commande est délimitée par << >>, ce doit être une fonction qui a zéro argument et renvoie un objet géométrique. Sinon, votre ligne de commande doit désigner un objet géométrique (en mode RPN, les quotes sont implicitement rajoutées). Notez qu'en mode RPN on ne peut pas utiliser de listes ou de vecteurs dans un objet algébrique, il faut alors traduire la définition de l'objet géométrique en une fonction délimitée par << >>.

10.5  Menu Effacer (F3)

Permet de sélectionner un objet à effacer.

10.6  Menu Déplacer (F4)

Permet de sélectionner un point à déplacer à l'aide des flèches de déplacement, ou permet d'éditer l'ensemble de la figure.

Si on déplace un point, il faut attendre quelques secondes, le temps que le système calcule la partie fixe de l'image. Ensuite si on a sélectionné un point libre, le déplacement se fait avec les flèches de déplacement dans toutes les directions. Si on a sélectionné un point sur une courbe, le déplacement se fait sur la courbe. Utilisez les touches shift et alpha pour faire varier le nombre de pixels du déplacement. Si vous tapez plusieurs fois de suite sur une flèche de déplacement, la figure peut ne pas avoir le temps de se retracer en entier. Tapez Ok ou ENTER pour accepter la nouvelle position, ou sur Annul pour revenir à la position initiale. Lors du premier déplacement, si on vous demande de passer en mode approx, répondez oui.

Il n'est pas possible de déplacer un point si un lieu géométrique en dépend. Par contre si le lieu géométrique est défini antérieurement au point, le déplacement est possible. S'il est défini postérieurement, il faut éditer la figure globalement.

Si on édite globalement la figure, l'éditeur de matrice apparait, chaque ligne correspond à un objet géométrique avec :

10.7  Pict (F5)

Permet d'accéder à l'application graphique intégrée de la HP49. En particulier, l'appui sur la touche F2 (X,Y), permet de déplacer le curseur dans la figure pour connaitre les coordonnées approximatives des objets géométriques de la figure. Taper sur ON pour revenir à l'application de géométrie.

10.8  Menu Config (F6)

Permet de configurer l'application.

10.9  Les autres touches du clavier

Les touches de déplacement permettent de changer la fenêtre de visualisation de la figure géométrique. Les touches + et - permettent d'effectuer un zoom avant ou arrière (utiliser les touches shift et alpha auparavant pour régler le facteur de zoom). L'ensemble des raccourcis claviers peut être visualisé en tapant sur F1 (Fich.) puis Aide.

10.10  Exercices

  1. Faites la même construction pour le centre de gravité ou/et le cercle inscrit, l'orthocentre d'un triangle.
  2. Théorème de Napoléon
    Soit ABC un triangle quelconque, on construit sur ses cotés trois triangles équilatéraux, il s'agit de caractériser le triangle formé par les 3 centres des triangles équilatéraux.
  3. On se donne un point M sur un cercle passant par A, soit MAPN le carré direct de coté MA. Quel est le lieu de N lorsque M parcourt le cercle?
  4. On se donne un point F et un cercle C de centre O et de rayon r. Soit M un point sur le cercle C, N la médiatrice du segment FM. Quelle est l'enveloppe des médiatrices N lorsque M parcourt le cercle C?
  5. Théorème de Morley
    Soit ABC un triangle, on trace les trissectrices des angles en chaque sommet, puis on appelle M, N et O les points d'intersection de la première trissectrice issue d'un sommet avec la deuxième trissectrice issue du sommet suivant. Il s'agit de caractériser le triangle MNO.

11  Un exemple associant géométrie, statistiques, calcul formel et numérique.

On se donne un carré ABCD, un point E parcourant le segment BC. On construit le cercle inscrit au triangle ABE et le cercle tangent aux cotés EA, EC, CD. Il s'agit de savoir pour quelle position de E les deux cercles ont même rayon, et pour quelle position de E les deux cercles sont tangents à la droite EA au même point.

unit=5.0000cm linewidth=.5pt arrowsize=2pt 4 (-0.1000,-0.1000)(1.1000,1.1000) linecolor=black [linestyle=dashed]->(-0.1000,0.0000)(1.1000,0.0000) [linestyle=dashed]->(0.0000,-0.1000)(0.0000,1.1000) linecolor=black [dotstyle=*](0.0000,0.0000) 0.0100[45.0000](0.0000,0.0000)A linecolor=black [dotstyle=*](1.0000,0.0000) 0.0100[45.0000](1.0000,0.0000)B linecolor=black [dotstyle=*](1.0000,1.0000) 0.0100[45.0000](1.0000,1.0000)C linecolor=black [dotstyle=*](1.0000,0.3000) 0.0100[45.0000](1.0000,0.3000)E linecolor=black [dotstyle=*](0.0000,1.0000) 0.0100[45.0000](0.0000,1.0000)D linecolor=black [fillcolor=black]( 0.000000, 0.000000)( 1.000000, 0.000000)( 1.000000, 1.000000)( 0.000000, 1.000000)( 0.000000, 0.000000) linecolor=black (0.0000,0.0000)(1.0000,0.3000) linecolor=black [fillcolor=black](0.8720,0.1280)0.12800.0000360.0000 0.0100[45.0000](0.8720,0.1280)C1 linecolor=black [dotstyle=*](0.8720,0.1280) 0.0100[45.0000](0.8720,0.1280)O1 linecolor=black [dotstyle=*](0.5986,0.5986) 0.0100[45.0000](0.5986,0.5986)O2 linecolor=black [fillcolor=black](0.5986,0.5986)0.40140.0000360.0000 0.0100[45.0000](0.5986,0.5986)C2


11.1  Recherche d'une solution numérique

On entre dans l'application de géométrie.

11.2  Géométrie et statistiques.

Nous allons maintenant enregistrer les valeurs de r2r1 et de l'angle t pour quelques valeurs de y et essayer d'affiner la solution par du fitting. On utilise la fonction Enregistrer formule du menu ajouter, on donne comme formule
{'ordonnee(E)' 'rayon(C2)-rayon(C1)' 'angle(T,E,O2)'}
puis répondre par exemple DATA pour la variable où enregistrer. Déplacer ensuite E sur quelques positions. Quitter ensuite l'environement de géométrie, et copier la variable
AXL(DATA) STO> ΣDAT
puis lancer l'environnement de statistiques (shift droit STATS), sélectionner les colonnes 1 et 2 ou 1 et 3 et testez les régressions linéaires ou cubiques pour estimer les solutions en y de r1=r2 ou de t=π/2.

11.3  Méthode formelle

On place A en l'origine, B en (0,1), on note t l'ordonnée de E. On impose au paramètre t d'être entre 0 et 1
ASSUME(t>0)
ASSUME(t<1)
Il est essentiel de faire ces deux hypothèses dès maintenant, sinon les valeurs absolues ne seront pas simplifiées dans les calculs de cercles inscrits et de bissectrices.

Depuis l'historique, on définit les points A, B, C et E
point(0,0) STO> A
point(1,0) STO> B
point(1,t) STO> E
point(1,1) STO> C


Pour le cercle inscrit, on utilise l'instruction cercle avec 2 arguments, comme suit :
centre(cercle({A,B,E},1)) STO> O1
Pour le centre de l'autre cercle, on cherche l'intersection de la bissectrice de l'angle EA, EC avec la bissectrice de EC et CD, qui est la 1ère bissectrice d'équation YX=0
inter(bissectrice(E,A,C),eqxpnt(Y-X)) STO> O2
Le vecteur O1O2 a pour affixe
affixe(O2)-affixe(O1) STO> O1O2
Pour que les cercles aient même rayon, les abscisses de O1 et O2 doivent être identiques, on calcule donc
abscisse(O1O2) STO> E1
On peut utiliser le solver numérique
ROOT(E1,t,0.6)
Il faut alors purger t (PURGE(t)) avant de continuer. On peut aussi éditer E1 dans l'éditeur d'équation, en multipliant à la main par l'expression conjuguée (mettre le terme sans la racine au carré et le terme en racine au carré). L'équation obtenue est :
2t3−2t2+2t−1=0
Solution approchée 0.647798871261.

Pour que les cercles soient tangents, la droite joignant O1 à O2 doit être orthogonal à la droite OE. On calcule l'affixe de O1 et de O2, la différence doit être orthogonale au vecteur (1,t)
abscisse(O1O2)+t*(ordonnee(O1O2)) STO> E2
On peut faire les mêmes manipulations, on obtient l'équation
2t3−2t2−2t+1=0
Solution approchée 0.403031716763

A  Dépannage.

Retour à la page personnelle de Bernard Parisse.
Ce document a été traduit de LATEX par HEVEA