Quelques programmes pour HP-71B

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2368
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Quelques programmes pour HP-71B

Message par jxano » 22 avr. 2010 15:04

Bonjour à tous,

Dans le fil (voué à disparaître) sur la vente d'un HP-71B, on m'avait demandé des programmes...

Depuis hier, j'ai pris le temps de tapoter sur le clavier de ma nouvelle acquisition. Voici un premier résultat :

Code : Tout sélectionner

10 DISP "PRODUIT MATRICES"
12 DESTROY ALL @ OPTION BASE 1
13 INTEGER O,I,J,H,K
14 INPUT "ORDRE MATR CARREE ";O
15 INPUT "(P)RODUIT/(C)ARRE ";C$
16 DIM A(O,O),B(O,O)
18 FOR H=1 TO 3 @ IF H=2 AND C$="C" THEN GOTO 42
20 FOR I=1 TO O @ FOR J=1 TO O
22 DISP CHR$(64+H);"(";STR$(I);",";STR$(J);")";
24 IF H=1 THEN INPUT " ";A(I,J)
25 IF H=1 AND C$="C" THEN B(I,J)=A(I,J)
26 IF H=2 THEN INPUT " ";B(I,J)
28 IF H<3 THEN GOTO 40
30 S=0 @ FOR K=1 TO O @ S=S+A(I,K)*B(K,J) @ NEXT K
32 DISP "=";S @ PAUSE
40 NEXT J @ NEXT I
42 NEXT H
C'est un classique produit de matrices, mais avec quelques améliorations de mon cru :
  • Factorisation des boucles en I, J et de l'affichage du nom de cellule (ligne 22), ce qui évite d'écrire tout ça trois fois ;
  • Choix du mode produit A.B ou carré de A.
Des commentaires (sur la machine, etc.) et d'autres morceaux de code suivront, mais j'ai rendez-vous...
Programmeur abscons.

Avatar de l’utilisateur
Chris
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 220
Inscription : 20 oct. 2007 19:01

Re: Quelques programmes pour HP-71B

Message par Chris » 22 avr. 2010 15:41

Laisse moi un peu de temps pour que je tape ton programme pour voir.

Pour les améliorations, une interface graphique de type HP48 pour la saisie et la modification des valeurs :wink:

Tu calcules un déterminant quelque part ?

A++
Chris.
HP : 11C 17BII 28S 48SX 50G 71B LX100
Sharp : PC-1403 PC-1600 PC-G850V
TI : TI-74

Avatar de l’utilisateur
kweeky
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1640
Inscription : 05 oct. 2007 19:46
Localisation : Pas très loin de Bordeaux

Re: Quelques programmes pour HP-71B

Message par kweeky » 22 avr. 2010 16:08

Salut et merci pour le test du HP-71B, jxano
Chris a écrit :Tu calcules un déterminant quelque part ?
Pas besoin pour faire un produit de matrice. Un peu plus utile si tu veux inverser une matrice.

@+

Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7180
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

Re: Quelques programmes pour HP-71B

Message par gege » 22 avr. 2010 19:02

Bien, mais ça tient en un appel de fonction si tu branches ton module Math... :wink:
G.E.

Avatar de l’utilisateur
charognard
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4411
Inscription : 06 juin 2007 19:28
Localisation : Indre et loire
Contact :

Re: Quelques programmes pour HP-71B

Message par charognard » 22 avr. 2010 21:49

Le séparateur c'est l'@ !!
y a t'il des instructions/fonctions non standard et originales sur le 71 ?
as-tu des exemples ?

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2368
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: Quelques programmes pour HP-71B

Message par jxano » 22 avr. 2010 22:57

gege a écrit :Bien, mais ça tient en un appel de fonction si tu branches ton module Math... :wink:
Je me prépare surtout à ne plus l'avoir !
Programmeur abscons.

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2368
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: Quelques programmes pour HP-71B

Message par jxano » 22 avr. 2010 23:10

charognard a écrit :y a t'il des instructions/fonctions non standard et originales sur le 71 ?
as-tu des exemples ?
Je ne sais pas encore ce que cette machine a vraiment d'original ; par contre, je sais à qui elle ressemble :
  • La touche RUN et l'instruction PAUSE me rappellent mon TI-74 Basicalc ;
  • Les touches de curseur pour l'éditeur les Sharp Basic ;
  • Les commandes OPTION BASE et DEF FN mon Sanco ;
  • Il faut faire CONT après les pauses de l'affichage comme sur mon fx-702P...
Cela dit, je ne peux pas enchaîner les IF comme sur les Casio ; la ligne 25 aurait dû être au bout de la 24. Mais la 71 a plus d'un tour dans son sac, je verrai bien s'il y a une tournure plus élégante pour ce test.
Programmeur abscons.

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2368
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: Quelques programmes pour HP-71B

Message par jxano » 22 avr. 2010 23:20

Chris a écrit :Pour les améliorations, une interface graphique de type HP48 pour la saisie et la modification des valeurs :wink:
C'est une version suffisamment dépouillée pour la taper directement. Sinon, j'ai écrit des choses plus sophistiquées pour fx-730P, avec introduction des valeurs et présentation des résultats par rangées entières, et non seulement cellule par cellule (donc plus ergonomique que l'HP-48...) J'en fait aussi avec des complexes de la forme a+bi. J'ai même un programme sur un brouillon pour des polynômes à plusieurs variables, pour faire comme sur une TI-92. Faut que je le teste.
Programmeur abscons.

Avatar de l’utilisateur
Marcus von Cube
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 914
Inscription : 20 avr. 2006 13:48
Localisation : Wehrheim, Allemagne
Contact :

Re: Quelques programmes pour HP-71B

Message par Marcus von Cube » 23 avr. 2010 01:16

Le BASIC da la 71b est très fort à une coté et très faible a l'autre : les nons des variables sont très limités - seulement des lettres A-Z et des combinaisons lettre+chiffre. Vous trouverez des détails dans mon tableau.

Avec un peu de mémoire et l'interface HP-IL dans la machine et dans un PC il est possible de implanter les fonctions du module Math dans une machine sans : http://www.hpmuseum.org/cgi-sys/cgiwrap ... i?read=908

Avatar de l’utilisateur
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2483
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Quelques programmes pour HP-71B

Message par C.Ret » 26 avr. 2010 22:44

Bonsoir,

Sympa ce petit programme de calcul matriciel !

Mais j'y vois un inconvénient, certe seul le carré d'une matrice carrée ne peut être calculé, mais comment utiliser ce programme pour calculer par exemple le produit :

Code : Tout sélectionner

 |  4  0 -1 |
 | -3  3  7 |   | -1  5 |
 | -9  2  5 | x | -6 -6 |
 |  5 -1  3 |   |  1  4 | = ?
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803 + SD2iec. | TI-57 LCD | HP-28S + HP82240A | TI-74 BasiCalc | HP-41C + (2 memory + stat + IR) | HP-15C | HP Prime Color Touchscreen Graphing Calculator| TI-92 II | CASIO fx-602p + FA-1 | HP-71B 64K+JPC-ROM+HPIL+card reader . Sommaire des M.P.O..

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2368
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: Quelques programmes pour HP-71B

Message par jxano » 27 avr. 2010 12:44

Regarde bien : mon programme a deux modes : produit et carré.

C'est vrai qu'il ne prend pas en compte ce cas-là... Mais c'est voulu : quelles sont les applications pratiques du produit de matrices rectangulaires ? Pour ce faire, mon programme aurait une structure beaucoup plus commune en trois parties : entrée de A, entrée de B, calcul et affichage de C, qui ne m'a pas semblé intéressante de montrer.

Je parlais dans l'autre fil d'une application autour d'un tableau creux à deux entrées. Il est en préparation...
Programmeur abscons.

Avatar de l’utilisateur
Chris
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 220
Inscription : 20 oct. 2007 19:01

Re: Quelques programmes pour HP-71B

Message par Chris » 27 avr. 2010 15:52

kweeky a écrit :Salut et merci pour le test du HP-71B, jxano
Chris a écrit :Tu calcules un déterminant quelque part ?
Pas besoin pour faire un produit de matrice. Un peu plus utile si tu veux inverser une matrice.

@+
Oui, en effet !

Je devais déjà être à la phase suivante de développement du programme...
jxano a écrit :
Chris a écrit :Pour les améliorations, une interface graphique de type HP48 pour la saisie et la modification des valeurs :wink:
C'est une version suffisamment dépouillée pour la taper directement. Sinon, j'ai écrit des choses plus sophistiquées pour fx-730P, avec introduction des valeurs et présentation des résultats par rangées entières, et non seulement cellule par cellule (donc plus ergonomique que l'HP-48...) J'en fait aussi avec des complexes de la forme a+bi. J'ai même un programme sur un brouillon pour des polynômes à plusieurs variables, pour faire comme sur une TI-92. Faut que je le teste.
L'HP 48 te permet déjà de rentrer les valeurs par rangée entière, tu n'es pas obligé de passer par la présentation type "feuille de calcul".
La difficulté reste un écran assez petit pour restituer lisiblement le résultat.

Sauf à changer de police de caractère pour gagner de la place (autre idée de fonctionnalité à implémenter ?).

Ton programme est sympa, il ouvre la voie à une bibliothèque de fonctions utilisable par d'autres programmes (pour ceux qui n'ont pas l'extension Math par exemple).
HP : 11C 17BII 28S 48SX 50G 71B LX100
Sharp : PC-1403 PC-1600 PC-G850V
TI : TI-74

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2368
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: Quelques programmes pour HP-71B

Message par jxano » 27 avr. 2010 20:45

Chris a écrit :Sauf à changer de police de caractère pour gagner de la place (autre idée de fonctionnalité à implémenter ?).
J'ai beaucoup donné là-dedans, sur d'autres machines et applications. Pour le 71, plusieurs choix sont possibles :
  • Redessiner les caractères par colonne de points, ce qui permet d'afficher en « espacement variable » ;
  • Bidouiller les caractères redéfinissables pour afficher deux lettres ou chiffres à la place d'un(e).
Chris a écrit :Ton programme est sympa, il ouvre la voie à une bibliothèque de fonctions utilisable par d'autres programmes (pour ceux qui n'ont pas l'extension Math par exemple).
Vu la limitation indiquée par C.Ret, ce n'est pas l'objet... quoique je viens de penser à une façon de la faire sauter tout en gardant ma construction qui fusionne l'entrée, le calcul et la sortie.

Je vais m'intéresser quand même à ce que le module Math m'apporte...
Programmeur abscons.

Avatar de l’utilisateur
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2483
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Quelques programmes pour HP-71B

Message par C.Ret » 28 avr. 2010 08:19

La solution n'est pourtant pas bien compliquée, il suffit d'ajouter des "zéro de remplissages" (padding zero) afin de coller à l'ordre attendu par le programme.

Bon, c'est sûr cela ne facilite pas les saisies des matrice ni leur affichage, mais cette solution simple justifie le structure simplifiée du programme qui peut donc aussi bien servir pour les matrices carrées que rectangulaires.

Code : Tout sélectionner

 |  4  0 -1 |   | -1  5 |    |  4  0 -1 0 |   | -1  5 0 0|   | -5  16  0  0|
 | -3  3  7 |   | -6 -6 |    | -3  3  7 0 |   | -6 -6 0 0|   | -8  -5  0  0| 
 | -9  2  5 | x |  1  4 | =  | -9  2  5 0 | x |  1  4 0 0| = |  2 -37  0  0|
 |  5 -1  3 |                |  5 -1  3 0 |   |  0  0 0 0|   |  4  43  0  0|
Quand aux applications pratiques des matrices rectangulaires, c'est là tout mon quotidien et je m'en sert très souvent lors d'analyses chimiques et d'interprétation spectrales en tout genre.
Les matrices sont souvent des matrices d'observation où chaque ligne correspond à la répétition de chaque analyse spectrale, les colones les très nombreux pics ou raies caractéristiques élémentaires détectés. Et évidemment, elles ne sont jamais carrées !
Le produit matriciel de ces matrices spectrales par la matrice des compositions chimique des produits recherchés, permet de déterminer rapidement les masses moléculaires et combinaisons de ces masses qu'il faut rechercher dans les analyses chimiques moléculaires ou macro-moléculaires.

Et comme aucun des instruments du labo n'est livré avec un logiciel permettant d'exploiter les résultats des autres spectromètres, il faut bien calculer tout cela soit même, sur son pocket comme cela pas besoin de courrir s'assoir à chaque fois devant son ordinateur à l'étage et ainsi rester debout devant la paillasse à surveiller tout cela...

Autre application, c'est la constitution du plan d'expérience qui avec les matrices d'Hadamard permet de limiter considérablement le nombre d'analyses à réaliser tout en étudiant simultanément un maximum de facteur. Là aussi les matrices d'expériences ne sont pas carrée, d'autant plus qu'il faut effectuer un certains nombre de blancs et de répétition (réplica) afin de palier convenablement aux incertitudes instrumentales des spectromètres.

En fait, je suis constament en train d'utiliser des matrices, mais elles ne sont presque jamais carrées, sauf lorsqu'elles sont matrices de corrélation ou speudo-inverse pour les régressions partielles et l'ajustement selon les méthodes des moindres carrés...
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803 + SD2iec. | TI-57 LCD | HP-28S + HP82240A | TI-74 BasiCalc | HP-41C + (2 memory + stat + IR) | HP-15C | HP Prime Color Touchscreen Graphing Calculator| TI-92 II | CASIO fx-602p + FA-1 | HP-71B 64K+JPC-ROM+HPIL+card reader . Sommaire des M.P.O..

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2368
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: Quelques programmes pour HP-71B

Message par jxano » 28 avr. 2010 14:33

C.Ret a écrit :La solution n'est pourtant pas bien compliquée, il suffit d'ajouter des "zéro de remplissages" (padding zero) afin de coller à l'ordre attendu par le programme.
Tu te compliques un peu la vie, justement. Hier, j'ai effectué les modifications suivantes à mon programme :

Code : Tout sélectionner

...
14 INPUT "NB LIG A,COL A/LIG B,COL B ";O1,O2,O3
15 INPUT "(P)RODUIT/(C)ARRE ";C$
16 DIM A(O1,O2),B(O2,O3),O(6)
17 O(1)=O1 @ O(4)=O2 @ O(2)=O2 @ O(5)=O3 @ O(3)=O1 @ O(6)=O3
18 FOR H=1 TO 3 @ IF H=2 AND C$="C" THEN GOTO 42
20 FOR I=1 TO O(H) @ FOR J=1 TO O(H+3)
...
30 S=0 @ FOR K=1 TO O2 @ S=S+A(I,K)*B(K,J) @ NEXT K
...
C'est mieux de ne pas avoir trop de zéros dans les matrices, surtout quand on doit les prendre en compte à l'entrée (là, je suis sûr de me tromper !) et les sauter en sortie quand on fait défiler les résultats avec deux doigts sur [f] et [CONT] avec le 71.

Code : Tout sélectionner

 |  4  0 -1 |   | -1  5 |    | -5  16|
 | -3  3  7 |   | -6 -6 |    | -8  -5| 
 | -9  2  5 | x |  1  4 | =  |  2 -37|
 |  5 -1  3 |                |  4  43|
Je n'ai pas poussé suffisamment loin mes études scientifiques (ayant tout de suite bifurqué sur les maths et l'informatique) pour connaître toutes ces applications des matrices non carrées. Tout ce que tu dis justement me fait penser qu'à chaque batterie de calculs, beaucoup de valeurs dépendantes des matériels et des composés mesurés pourraient être mises en réserve, et qu'il ne faudrait taper dans des champs bien spécifiques que les mesures effectuées. Ce n'est plus trop le champ d'application du poquette, mais d'un bon vieux 8086 à même la paillasse, avec un Turbo Pascal des familles dans le ventre. J'aurais adoré écrire ce genre de programme...
Programmeur abscons.

Répondre

Revenir vers « Tous les Pockets »