Home

 Logithèque

HP42S

Traceur de courbe avec stockage du graphe


Code

LBL "PLOT2"

MVAR "XMIN"

MVAR "XMAX"

MVAR "YMIN"

MVAR "YMAX"

LCLBL

CF 00

SF 27

SF 34

SF 35

RTN


LBL A

"Remise a Zero"

AVIEW

LBL 18

8

STO 06

66

STO 07

2

22

NEWMAT

STO "GRAPH"

INDEX "GRAPH"

"÷÷÷÷÷÷"

ASTO ST X

LBL 01

STOEL

I+

FC? 77

GTO 01

CLST

RTN


LBL B

VARMENU "PLOT2"

"PARAMETRES"

AVIEW

STOP

"Fonction ?"

AVIEW

CLA

SF 25

ARCL "FCN"

CF 25

AON

STOP

AOFF

ASTO "FCN"

VARMENU IND "FCN"

STOP

ASTO 00

EXITALL


LBL C

"Trace"

AVIEW

RCL "XMAX"

RCL "XMIN"

STO IND 00

-

131

÷

STO 02

FS?C 01

XEQ15

15

RCL "YMIN"

RCL - "YMAX"

÷

STO 03

1,131

STO 01

CLLCD

XEQ 10

LBL 03

XEQ IND "FCN"

RCL - "YMAX"

RCL 03

x

1

+

RCL 01

XEQ 05

RCL 02

STO + IND 00

ISG 01

GTO 03

SF 27

GTO 06

LBL 05

IP

X<>Y

IP

X<=0?

RTN

17

X<=Y?

RTN

RDN

X<>Y

PIXEL

STO 04

5

+

6

÷

IP

X<>Y

STO 05

8

÷

IP

1

+

X<>Y

SF 25

STOIJ

FC?C 25

RTN

RCLEL

CLA

ARCL ST X

RCL 04

1

-

6

MOD

AROT

ATOX

RCL 05

8

MOD

2

X<>Y

Y^X

OR

XTOA

RDN

1

+

+/-

AROT

ASTO ST X

STOEL

RTN

LBL 10

RCL "YMAX"

RCL 03

x

1

-

X>0?

-20

RCL "XMIN"

RCL 02

÷

1

-

X<0?

GTO 11

RDN

-200

LBL 11

PIXEL

RTN

LBL 17

CLLCD

INDEX "GRAPH"

RCLIJ

LBL 07

RCLEL

CLA

ARCL ST X

RDN

AGRAPH

6

+

J+

FC? 76

GTO 07

9

1

FC? 77

GTO 07

GTO 10


LBL D

XEQ 17

LBL 06

"££4H"

RCL 06

RCL 07

AGRAPH

GETKEY

RDN

AGRAPH

RUP

CLA

XTOA

ASTO ST X

"££££"

30

XTOA

RDN

POSA

X<0?

GTO 06

2

-

X=0?

GTO 09

ABS

2

X=Y?

GTO 08

LAST X

STO + 07

GTO 06

LBL 08

LAST X

SIGN

STO + 06

GTO 06

LBL 09

XEQ 12

VIEW ST X

RTN

GTO D

LBL 12

RCL "YMAX"

1

RCL 06

-

RCL 03

÷

-

RCL "XMIN"

1

RCL 07

-

RCL 02

x

-

RTN


LBL E

"Zoom"

AVIEW

STO 04

X<>Y

STO 05

RCL "XMAX"

RCL "YMAX"

COMPLEX

2

÷

RCL "XMIN"

RCL "YMIN"

COMPLEX

2

÷

+

ENTER

ENTER

LAST X

-

LAST X

-

COMPLEX

X<>Y

RCL x 04

X<>Y

RCL x 05

COMPLEX

+

ENTER

ENTER

LAST X

-

LAST X

-

COMPLEX

STO "YMIN"

RDN

STO "XMIN"

RDN

COMPLEX

STO "YMAX"

RDN

STO "XMAX"

FC? 02

XEQ 18

GTO C


LBL F

XEQ 13

"F(X)="

ARCL ST X

AVIEW

RTN


LBL G

"ROOT"

AVIEW

XEQ 12

STO IND 00

PGMSLV IND "FCN"

SOLVE IND 00

"Root="

ARCL ST X

AVIEW

RTN


LBL H

"Slope"

AVIEW

XEQ 13

STO 01

1E-8

1

+

STO x IND 00

XEQ IND "FCN"

RCL 01

-

1E8

x

RCL IND 00

÷

t"="

ARCL ST X

AVIEW

RTN


LBL 13

XEQ 12

STO IND 00

XEQ IND "FCN"

RTN


LBL I

XEQ 12

FS?C 00

GTO 14

SF 00

STO "LLIM"

"MARK"

AVIEW

RTN

LBL 14

"S"

AVIEW

STO "ULIM"

1E-3

STO "ACC"

PGMINT IND "FCN"

INTEG IND 00

"S="

ARCL ST X

AVIEW

RTN


LBL 15

t"-Autoscaling"

AVIEW

1,13104

STO 01

1E499

STO 04

+/-

STO 05

LBL 16

XEQ IND "FCN"

ENTER

RCL 04

X<>Y

X<Y?

STO 04

RCL 05

X<>Y

X>Y?

STO 05

RCL 02

STO + IND 00

ISG 01

GTO 16

RCL "XMIN"

STO IND 00

RCL 04

STO "YMIN"

RCL 05

STO "YMAX"

FC? 02

GTO 18

END

 

Taille : 894 octets.


Mode d'emploi

Il faut d'abord programmer la ou les fonctions à grapher sous la forme de programmes prenant une valeur sur la pile en X et renvoyant le résultat en X. La pile est librement utilisable dans le programme.

XEQ "PLOT2" initialise de façon non destructrice. Ensuite, les touches utilisateur A à I sont actives et offrent les fonctions suivantes :

A   Remise à zéro. Efface le graphe
B   Entrée du domaine, de la fonction, puis tracé
C   Tracé de la courbe + passage en mode curseur
D   Réaffichage de la courbe + passage en mode curseur
E   Zoom. >1 => zoom out. En X : zoom en x, en Y : zoom en y (>0)
F   Calcule f(x)
G   Racine la plus proche du X courant
H   Pente en X
I   Intégrale. Premier appel=borne inférieure, 2ème=borne supérieure et calcul.

On notera que comme le graphe est sauvegardé, on peut à tout moment programmer une nouvelle fonction ou réaliser des calculs sans perdre ce dernier. L'effacement de l'écran doit toujours être demandé explicitement (par A), ce qui permet de superposer un nombre quelconque de graphes. La fonction C permet de faire ce que l'on veut sans craindre de perdre le graphe, il sera réaffiché à volonté.

Pour des raisons évidentes la fonctionnalité de trace n'est pas implémentée...

Les fonctions B, C et D aboutissent à l'affichage de la courbe et au passage en mode curseur, c'est à dire qu'on peut déplacer le curseur à l'écran avec les touches suivantes :

8

4

6

2

Si on lève (manuellement) le drapeau 01, il y a autoscaling à l'appel de B ou C.

Si on lève le drapeau 02, le zooming n'efface pas mais se superpose aux graphes précédents.


Fonctionnement du programme

Ce programme dérive de celui listé dans le manuel de la machine. Il a été étendu pour permettre de conserver le graphe entre deux appels successifs, ce qui permet des saisies de paramètres et de revoir le graphe, de superposer des courbes...

Le pilotage se fait avec les labels locaux, mode sélectionné par LCLBL au début.

Le principale caractéristique du programme est le stockage des pixels de l'écran, qui est fait dans une matrice alphabétique ! Cette possibilité n'est présente que sur la HP42S ou des machines haut de gammes bien ultérieures...

La matrice fait 2 lignes de 22 colonnes, ce qui correspond à la taille de l'affichage (lignes x colonnes). On l'initialise avec des chaînes de 6 caractères de code zéro, qui sont "÷" (voir LBL 18). Elle contient directement les chaînes de 6 caractères codant 6 colonnes de 8 points utilisable pour AGRAPH.

La création d'un curseur et son déplacement est facile en utilisant AGRAPH dans le mode graphique XOR.

La détection de la touche pressée en mode curseur se base sur une chaîne de caractères et la fonction POSA, qui combinées donnent l'équivalent d'un ON ... GOTO Basic (voir LBL 06). Les codes de la chaîne correspondante sont XX XX XX XX. La chaîne de caractères sur la ligne suivant le LBL 06 a elle les codes XX XX XX XX, c'est le curseur - vous pouvez le modifier à loisir. Enfin, le caractère S dans le LBL 14 est le caractère d'intégrale.

Les labels autres que les fonctions ou de simples boucles ont les rôles suivants (X et Y sont les registres de la pile) :

05
  Affiche et mémorise le pixel de coordonnées (X, Y)

06
  Affiche le curseur et gère les déplacements

10
  Affiche ou efface le curseur

12
  Renvoie les X et Y courants du curseur

13
  Renvoie f(X) pour le X courant

14
  2ème étape du calcul d'intégrale

15
  Autoscaling

17
  Affiche le buffer écran

18
  Effacement du buffer écran

Les variables nommées utilisées sont :

XMIN Borne inférieure des X à grapher
XMAX Borne supérieure des X à grapher
YMIN Borne inférieure des Y à grapher
YMAX Borne supérieure des Y à grapher
GRAPH Buffer écran (matrice)
FCN Nom du programme contenant la fonction
(Registre 00) Nom de la variable indépendante
LLIM Limite inférieure de l'intervalle d'intégration
ULIM Limite supérieure de l'intervalle d'intégration
ACC Précision de calcul de l'intégrale

Il reste un label local non utilisé, J, mais je ne vois pas quoi y mettre.