| WANG 452
|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| Capacités | Clavier | Calculs arithmétiques | Calculs scientifiques | Les registres | La programmation | Mémoire |
C'est une étonnante calculatrice programmable :
|
Par contre, je ne l'ai jamais vu... Dommage! ![]() |
Le clavier est séparé en 5 zones:
|
![]() |
| Note | Accumulateur gauche | Accumulateur droit | Affichage |
|---|---|---|---|
| Premier calcul intermédiaire | 8.9 STORE 43 + 12 ÷= |
+4.325000000000 |
|
| Qu'on stocke à droite | STORE | +4.325000000000 |
|
| Second calcul intermédiaire | 52 STORE 4.1 ×= |
+213.2000000000 |
|
| Qu'on ajoute à droite | + | +217.5250000000 |
![]() |
![]() |
| Pour les fonctions blanches, SP vers le bas et la touche blanche K(x) appuyée |
Pour les fonctions noires, SP vers le bas et la touche noire k(x) appuyée |
| Note | Accumulateur gauche | Affichage |
|---|---|---|
| On passe en fonction blanche | πSTORE |
+3.141592653590 |
| Calcul du dénominateur | 5 X! |
+120.0000000000 |
| On divise ! | ÷= |
+.0261799387799 |
| On passe en fonction noire | √X |
+.1618021593800 |
|
![]() |
|
La WANG 452 vos apporte 16 registres numériques. Pour les utiliser, chacune des 16 touches multifonctions représente l'un de ces registres (notez
le nombre au centre de l'étiquette). On indique ensuite, avec le sélecteur de fonction, ce que l'on veut faire sur le regsitre en question. La touche SP doit être en position haute
sauf pour la fonction Ex (en position basse).
Les fonctions disponibles sont celles déjà connues:
|
|
| Demandez moi un accès à mon Cloud pour obtenir le manuel d'utilisation et des shémas techniques. | ![]() |
Son site se trouve ici. |
| Pour programmer, on bascule en mode LEARN avec l'appui de la touche correspondante. L'affichage est celui ci-contre:
|
![]() |
|
|
A noter: lorsqu'on utilise l'accumulateur gauche, c'est le registre 15 qui est concerné. Pour l'accumulateur droit, c'est le registre 14. De ce fait, la touche "+" de l'accumulateur gauche génèrera le code 0215. La touche RECALL de l'accumulateur droit, génèrera le code 0714. |
|
| Fonction Noire | LOGa(x) | LOG10(x) | LOGe(x) | RAD->DEG | SIN | COS | TAN | √X | a^x | 10^x | e^x | DEG->RAD | SIN-1 | COS-1 | TAN-1 | X² |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Codes | 1200 | 1201 | 1202 | 1203 | 1204 | 1205 | 1206 | 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 |
| Fonction Blanche | ×a | π | n, Σx, Σx² | REC->POL | SINh | COSh | TANh | INT | ÷a | X! | x, σ², σ | POL->REC | SINh-1 | COSh-1 | TANh-1 | ABS |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Codes | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | 1312 | 1313 | 1314 | 1315 |
| Fonction | Codes | Note |
|---|---|---|
| LABEL + touche | 0900 + xxxx | Place une étiquette, la touche est au choix parmi tous les codes possibles. |
| LABEL + f(x)nn | 0900 + 10nn | Cas particulier: marque le début de la fonction utilisateur accessible par f(x) + touche fonction. La fonction doit se terminer par RETURN. |
| LABEL + F(x)nn | 0900 + 11nn | Cas particulier: marque le début de la fonction utilisateur accessible par F(x) + touche fonction. La fonction doit se terminer par RETURN. |
|
![]() Accès aux fonctions utilisateur |
|
Les deux pas sautés servent en particulier à l'insertion d'un saut GOTO + étiquette. Mais ils peuvent être utilisés autrement, par exemple, le rappel d'un registre qui serait le résultat suivi d'un code STOP: 0714 rappelle l'accumulateur droit 0903 stoppe le programme. |
|
Pour obtenir les codes suivants:
|
0000 0002 2 0001 0000 0 0002 0614 STORE right Stocke 20 à droite, ça sera le compteur. 0003 0002 2 0004 0615 STORE left Stocke 2 à gauche, valeur de départ 0005 0715 RECALL left (début première boucle) 0006 1207 √X 0007 0615 STORE left Remplace l'accu gauche par sa racine carrée. 0008 0001 1 0009 0314 - right Décrémente l'accu de droite 0010 0804 SKIP IF X=0 c'est terminé quand on atteint zéro 0011 1505 1510 GOTO -6 retour début de boucle 0013 0002 2 0014 0000 0 0015 0614 STORE right Remet le compteur à 20. 0016 0715 RECALL left (début de seconde boucle) 0017 0415 ×= left met la valeur au carré 0018 0001 1 0019 0314 - right Décrémente l'accu de droite 0020 0804 SKIP IF X=0 c'est terminé quand on atteint zéro 0021 1505 1511 GOTO -5 retour début de boucle 0023 0715 RECALL left affiche la valeur finale 0024 0903 STOP Et arrête le programme 0025 0914 END Marque la fin physique du programme |
Toujours le test d'Hebdogiciel. A partir de 2, on calcule 20 fois la racine carrée. Puis on remet 20 fois au carré. On compare avec 2. Pour lancer le programme, SET P.C. 0000 (retour au premier pas) Puis touche GO. Ici le résultat est plutôt bon!
Note pour les sauts: Sur un octet, -6 se note comme 256-6 = 250 = FA = (15)(10). |
0000 0900 1000 LABEL f(x) 00 début de la fonction 00 0002 0600 STORE 0 borne a dans le registre 0 0003 0915 RETURN 0004 0900 1001 LABEL f(x) 01 début de la fonction 01 0006 0601 STORE 1 borne b dans le registre 1 0007 0915 RETURN 0008 0900 1002 LABEL f(x) 02 début de la fonction 02 0010 0605 STORE 5 valeur n dans le registre 5 0011 0701 RECALL 1 0012 0615 STORE left 0013 0700 RECALL 0 0014 0603 STORE 3 au passage met x=a 0015 0315 - left 0016 0705 RECALL 5 0017 0515 ÷= left calcule h=(b-a)/n 0018 0602 STORE 2 h dans le registre 2 0019 0000 0 0020 0604 STORE 4 intégrale à zéro 0021 0703 RECALL 3 début de boucle: rappelle x 0022 1015 CALL f(x) 15 calcule f(x) 0023 0204 + 4 l'ajoute à l'intégrale 0024 0702 RECALL 2 0025 0203 + 3 ajoute h à x 0026 0001 1 0027 0305 - 5 décrémente mon compteur n 0028 0804 SKIP IF X=0 si 0, c'est fini 0029 1505 1508 GOTO -8 sinon, retour au début de boucle 0031 0702 RECALL 2 0032 0404 ×= 4 multipie l'intégrale par h 0033 0915 RETURN 0034 0900 1015 LABEL f(x) 15 début fonction à intégrer 0036 1215 X² 0037 0915 RETURN |
Pour calculer l'intégrale ![]() On choisit un nombre d'intervalles n et on pose ![]() On dit finalement que , c'est la méthode des rectangles
qui est très peu performante!Dans le programme:
Autre exemple avec ![]() Avec 100 intervalles, on obtient I=+3.16... en 24 secondes. |
09 00 LABEL 10 00 fx0 début programme f(0) 06 15 STO left initialise le générateur aléatoire 00 00 0 met à zéro... 06 01 STO 01 le compteur de valeurs "en dessous" 06 02 STO 02 le compteur total 09 15 RETURN 09 00 LABEL 10 01 fx1 début programme f(1) 06 00 STO 00 initialise le compteur de boucle 02 02 STO+ 02 et met à jour le compteur total 07 15 RCL left début de la boucle principale, rappelle l'ancienne valeur x 13 01 π 02 15 + left 00 05 5 12 08 a^x calcule (x+π)^5 06 15 STO left 13 07 INT 03 15 - left en conserve la partie décimale 12 15 x² au carré 06 14 STO right 00 10 , 00 05 5 03 14 - right comparé à 0.5 08 05 SKIP IF X>0 si trop haut, saute 00 02 2 sinon ajoute 2 au compteur "en dessous" 02 01 STO+ 01 00 01 1 met à jour le compteur de boucle 03 00 STO- 00 08 04 SKIP If X=0 tant que ce n'est pas zéro, on boucle. 15 05 GOTO 14 13 -19 07 01 RCL 01 calcule la féquence 06 14 STO right 07 02 RCL 02 05 14 ÷= right 09 15 RETURN |
Ceci est assuré par une fonction récurrente On dit que la probabilité que
est la même que .
Ainsi, après plusieurs tests, la fréquence d'apparition des valeurs au carré en dessous de un demi se rapproche de racine carrée de deux sur deux. C'est cette fréquence qui est renvoyée, à ceci-près que je compte pour deux chaque valeur en-dessous. Ainsi, la fréquence est Le programme ne donne pas de bons résultats car le générateur aléatoire est mal équilibré. Au lieu de 1,41, on obtient plutôt des valeurs autour de 1,38 ou 1,39. Utilisation:
|
Il occupe 8 octets et est représenté en notation scientifique avec 13 chiffres. Le nibble signs n'utilise que ses deux bits de poids faible.
45 20 00 00 00 00 00 02 |
![]() |
Présentons deux fonctions supplémentaires :
|
Pour les 16 premiers registres, ceci est inutile et inefficace puisqu'il faut deux pas de programme contre un seul avant. Mais, ces instructions
donnent accès à de nouveaux registres qui se superposent à la mémoire programme.
|
|
D'abord, tapez ce petit programme qui facilitera les opérations RECALL/STORE.
On utilisera la fonction 00 pour RECALL et la fonction 01 pour STORE. Note: avec 320 pas, remplacez les mentions du pas 0056 par le pas 0312. |
0000 0900 1000 LABEL f(x) 00 0002 0801 0100 RECALL 16 0004 0915 RETURN 0005 0900 1001 LABEL f(x) 01 0007 0901 0100 STORE 16 0009 0915 RETURN |
Essayons ceci : 3 1/x f(x)01pour stocker 0.33333... dans le registre 16. Editions les pas 0056 à 0063: 0303 0303 0303 0303 0303 0303 0302 0001Cela signifie 3.333333333333 × 10^-1. Que se passe t-il si on met autre chose que des chiffres dans ce registre16? Editons au pas 0056 avec ces codes: 1011 1213 1415 1011 1213 1415 1011 1213Ensuite f(x) 00 pour en afficher la valeur, voyez ci-contre le résultat ! |
![]() Les valeurs de 10 à 15 affichent ceci:
|