Les fonctions scientifiques sans fonctions scientifiques

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
Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7180
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

Les fonctions scientifiques sans fonctions scientifiques

Message par gege » 09 nov. 2010 01:45

Bonjour,
En regardant les vieux clous que sont les machines programmables les plus antiques, on peut se demander quel usage utile on peut tirer de trucs qui ne savent en gros que calculer les 4 opérations et la racine carrée...

Pourtant, sur par exemple la IME86S, ou la Canola SE-600 (wow introuvable celle-là !! :slime: ), il existe des bibliothèques de fonctions scientifiques : log, exponentielle, cosinus, sinus...
On pourrait penser approcher ces fonctions par des polynômes, mais la précision est souvent faible sauf à entrer une quantité de coefficients. Or ces machines n'ont que quelques mémoires disponibles.
Pour cette même raison, le CORDIC est impossible (d'ailleurs il n'a été inventé qu'en 1969, mais chronologiquement ce serait possible).

En fouillant dans des souvenirs brumeux il m'est revenu que l'IME86S proposait un programme de logarithmes basé sur la racine carrée. Avec cet élément, j'ai fini par trouver la recette suivante :

Code : Tout sélectionner

Entrer X
Prendre 10 fois la racine carrée
Soustraire 1
Stocker en mémoire
Diviser par 2
Soustraire 1
Changer le signe
Multiplier par le contenu de la mémoire
Multiplier par 1024
Hop ! Vous avez le log avec 7 ou 8 chiffres pour un argument d'entrée entre 1 et 10 !

Et en inversant la formule, on trouve l'exponentielle :

Code : Tout sélectionner

Entrer X
Diviser par 512
Soustraire 1
Changer le signe
Prendre la racine carrée
Soustraire 2
Changer le signe
Elever au carré 10 fois
Hop ! Vous avez l'exponentielle !

Encore ? Allez le cosinus (moins facile à tapoter) :

Code : Tout sélectionner

Entrer X
diviser par 1024
Elever au carré
Diviser par 2
Soustraire 1
Changer le signe
+Faire 10 fois ceci :
+ + Elever au carré
+ + Multiplier par 2
+ + Soustraire 1
Hop le cosinus !

Devinez.... Oui le sinus :

Code : Tout sélectionner

Entrer X
Diviser par 1024
Elever au carré
+Faire 10 fois ceci :
+ + Mettre en mémoire
+ + Soustraire 1
+ + Multiplier par la mémoire
+ + Multiplier par 4
Changer le signe si négatif
Prendre la racine carrée
Dans les deux derniers "programmes", on peut faire moins de boucles en remplaçant 1024 par 2 à la puissance le nombre de "boucles".

Et pour finir la tangente :

Code : Tout sélectionner

Entrer X
Diviser par 1024
Mettre en mémoire
Diviser par 3
Soustraire 1
Multiplier par la mémoire
+Faire 10 fois ceci :
+ + Mettre en mémoire
+ + Elever au carré
+ + Soustraire 1
+ + Diviser par la mémoire
+ + Prendre l'inverse
+ + Multiplier par 2
Changer le signe si négatif
Et voilàààà...

C'est fou ce qu'on peut faire avec une racine carrée, hein ?
G.E.
Dernière édition par gege le 09 nov. 2010 01:58, édité 1 fois.

Avatar de l’utilisateur
Woodstock
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1969
Inscription : 17 mai 2008 11:19
Localisation : Au fin fond du Santerre ...

Re: Les fonctions scientifiques sans fonctions scientifiques

Message par Woodstock » 09 nov. 2010 01:57

Et si je comprends bien, c'est ça, les "fonctions scientifiques sur cassette" dont parlait un article de l'Ordinateur de poche évoquant la Wang 700 (enfin, c'est un témoignage qui comparait la Wang à une TI-59, si je me souviens bien)...
I'm the operator
Of my pocket calculator
I am adding
And substracting...
(Kraftwerk, Computer World, 1981)

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: Les fonctions scientifiques sans fonctions scientifiques

Message par gege » 09 nov. 2010 02:05

Probablement pas, la Wang 700 devait avoir toutes les fonctions scientifiques en ROM.
C'était la machine la plus puissante de l'époque.
D'ailleurs An Wang, le fondateur, a pu lancer son entreprise lorsqu'il a inventé un circuit capable de calculer très rapidement le logarithme. C'était tellement bon, que ses premièrs machines calculaient la multiplication en passant par les logarithmes !!
Les fonctions sur cassettes devaient être des extensions genre trigonométrie hyperbolique, calcul sur les complexes, fonctions genre Bessel and co, répartitions statistiques (t, poisson, chi2...), etc.

Ah sinon j'oubliais, sur les vieux clous pour inverser un nombre il suffit souvent de taper : / = =
Vous devinez pourquoi ?
A+
G.E.

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: Les fonctions scientifiques sans fonctions scientifiques

Message par kweeky » 09 nov. 2010 08:02

Salut

J'avais posté un article là-dessus sur (feu) mon blog. C'était un article scanné d'un vieux S&V (il faudra que je retrouve les références). Mais l'article est toujours en ligne : Lien.

@+

Tipoucet
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3767
Inscription : 10 janv. 2009 14:47

Re: Les fonctions scientifiques sans fonctions scientifiques

Message par Tipoucet » 09 nov. 2010 10:56

Très intéressantes ces formules. Du coup j'ai tenté de "programmer" la formule log sur une Casio FX-junior, seule machine à ma connaissance qui soit à la fois programmable (affectation de formules à F1/F2) ET dépourvue de fonctions scientifiques. Mais mes formules n'ont pas été acceptées ... dommage. Y-a t'il un expert qui ait 10000 heures de vol sur une fx-junior ...
Dominique

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: Les fonctions scientifiques sans fonctions scientifiques

Message par gege » 10 nov. 2010 03:10

kweeky a écrit :Salut

J'avais posté un article là-dessus sur (feu) mon blog. C'était un article scanné d'un vieux S&V (il faudra que je retrouve les références). Mais l'article est toujours en ligne : Lien.

@+
Bien, mais on reste dans le domaine de l'approximation polynomiale.
Je vais tester par rapport à mes formules.
A+
G.E.

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: Les fonctions scientifiques sans fonctions scientifiques

Message par gege » 14 nov. 2010 10:45

Voulant expérimenter ces algorithmes, j'ai sorti du grenier une vieille Facit 2254 qui avait tout à  fait le profil : quatre opérations plus la racine carrée seulement, et un nombre de chiffres de calcul plutôt confortable.

Image

Ces machines que j'appelle "d'épicier" pour traduire leurs modestes capacités mathématiques, sont très courantes, celle-ci étant de plus assez ancienne ce qui ne gâche rien, au contraire comme j'allais m'en rendre compte...

Donc allumage, l'utilisation est assez compliquée car autant l'addition et la soustraction suivent la logique du commerçant qui tape le nombre suivi de + pour ajouter ou - pour soustraire, autant les multiplications et divisions utilisent la notation algébrique normale : A x B =
Le problème est que ces deux systèmes se mélangent mal, chaque machine réagissant de façon spécifique.

Horreur, la touche de la racine carrée ne réagit pas, même en utilisant de psychologie (au sens Obélixien du terme). Le projet tombe donc à l'eau, mais par curiosité j'ouvre, on ne sait jamais ça pourrait être réparable sur un modèle aussi ancien ? On voit alors ceci :

ImageImageImage

Je ne vous fais pas la visite, cette machine est très banale. Un détail attire mon attention, on dirait qu'un composant est arraché sur la face arrière du clavier, apparemment une diode selon la sérigraphie. Espoir fou, ce pourrait être la source du problème.
Il y a bien des diodes sur un vieux circuit que j'ai trouvé dans une vieille télé, j'en sélectionne une (au bout du tournevis). Pour ce genre d'usage, toutes les petites diodes se valent :

Image

Hop déssoudée, pattes coupées à dimension, je ressoude :
(on devrait voir que la diode est partie du vieux circuit télé et est maintenant sur la Facit, mais la photo est ratée)

Image

On remet les circuits en place mais on teste avant de refermer le boîtier... un réflexe qui s'acquiert après s'être planté "suffisamment"... je tape 5 suivi de la touche racine carrée et ..... !

Image

Ca MARCHE !! Elle est vivaaaannnnnnte !!!
C'est la première machine à calculer que je répare de façon pas trop élémentaire :-)

On retourne donc à la question du début, à titre d'exemple je vais chercher le logarithme de 10.
Donc (disons que "V" symbolise a touche racine carrée) :
10 V V V V V V V V V V V V + 1 - x 4096 =
Donne 2.30323236864, or la machine à 1 neuro la plus proche qui traîne donne log(10) = 2.302585093, on a donc une erreur de 7 au 5ème chiffre, ce n'est pas génial.
Je pousse à 17 extractions de racines carrées :
10 V V V V V V V V V V V V V V V V V + 1 - x 131072 =
Donne (rappel 2^17=131072) :

Image

Soit une erreur de 2.10^-5, ça commence à être moins mauvais.
On peut donc trouver des logarithmes relativement précis en tapant seulement 28 touches sur une machine ultra-basique !
Cependant cette petite expérience montre bien l'incroyable précision et rapidité des algorithmes Cordic.

Voilà, c'est fini pour aujourd'hui.
G.E.

Tipoucet
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3767
Inscription : 10 janv. 2009 14:47

Re: Les fonctions scientifiques sans fonctions scientifiques

Message par Tipoucet » 14 nov. 2010 11:27

Waaah superbe machine ! j'en ai une similaire (vieille Adler) que j'ai trouvée sur un trottoir et que j'ai remise à neuf (juste nettoyage en profondeur) mais elle n' a pas la racine et "juste" 12 chiffres. Au fait sait-on quel est l'algorithme de la racine carrée pour ces machines ?

Chapeau pour l'intuition de la diode, il fallait quand même oser ... J'ai aussi une petite Busicom d'épicier avec racine, je vais essayer les formules ...

Bon dimanche tous
Dominique

Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1428
Inscription : 27 oct. 2010 20:46

Re: Les fonctions scientifiques sans fonctions scientifiques

Message par Gilles59 » 15 nov. 2010 21:32

gege a écrit :
C'est fou ce qu'on peut faire avec une racine carrée, hein ?
G.E.
en effet... D'ailleurs on peut programme la fonction racine carrée juste avec une boucel et des additions et divisions par 2. Je ne me souviens plus des détails mais j'avais fait çà sur un micro processeur Z80. partant de là, on peut donc faire les log, cos etc.

tres beau reportage photo !
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49G+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+

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: Les fonctions scientifiques sans fonctions scientifiques

Message par C.Ret » 15 nov. 2010 22:34

Superbe article !
Superbe réparation !
Superbe demonstration !

C'est tout l'ntérêt de ces machines anciennes, elles peuvent être démonter (avec précaussion et en respectant les bonnes pratiques) sans trop de dégats et si la panne est simple, on a une chance de pouvoir intervenir.

Sur les Pockets et sur l'électronique actuelle, les pannes sont maintenant dans les circuits intégrés, moulées ou enfouis tout au fond des circuits CMS et sans un microscope, un FIB et tout le tra-lala, plus moyen d'intervenir.
De toute façon, rien que le démontage ou l'extraction d'un circuit bouzille toute la connectique, voir le circuit lui-même.
La technologie a évolué, mais c'est surtout la logique du 'tout ou rien' et du 'jetable pas réparable' qui a bien changé les choses.


Mais au fait, cette diode perdue, ne serait-ce pas à cause d'une utilisation outrancière de la touche racine carré (V) par l'épicier précèdant ?

Sinon, j'ai trouvé une relation entre les racines carrées et les logarithmes:
ln(Vx) = ln(x^.5) = .5*ln(x) = ln(x)/2
Ce qui donne une petite idée des principes mits en ouvre dans les procèdures de calcul des fonctions scientifiques données (et démontrées) ci-dessus.
Il y a bel et bien une relation entre les puissances de 2, les logarithmes et la racine carrée.

Mais quelques détails et subtilités des algorithmes m'échappent encore et je ne veux pas entrer trop dans les explications et les développements de peur de voir surgir Sam Koukaï et autres ThunderBirds allergiques aux maths.
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..

kenneth
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 680
Inscription : 22 sept. 2010 13:48
Localisation : France PdD

Re: Les fonctions scientifiques sans fonctions scientifiques

Message par kenneth » 15 nov. 2010 22:37

Superbe topic.
J apprend des trucs 8O

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: Les fonctions scientifiques sans fonctions scientifiques

Message par gege » 16 nov. 2010 01:35

Tipoucet a écrit :Au fait sait-on quel est l'algorithme de la racine carrée pour ces machines ?
Non, c'est sûrement Cordic ou quelques boucles de Newton. En fait je ne sais pas.
Tipoucet a écrit :Chapeau pour l'intuition de la diode
Euh c'était marqué dessus...
Gilles59 a écrit :Je ne me souviens plus des détails mais j'avais fait çà sur un micro processeur Z80.
Ah !? En entiers ou flottants ?
C.Ret a écrit :Mais au fait, cette diode perdue, ne serait-ce pas à cause d'une utilisation outrancière de la touche racine carré (V) par l'épicier précédent ?
Euh qu'en aurait-il fait ? Ou alors peut-être chez un marchand de légumes...
C.Ret a écrit :Sinon, j'ai trouvé une relation entre les racines carrées et les logarithmes:
...
Il y a bel et bien une relation entre les puissances de 2, les logarithmes et la racine carrée.
Exactement.

A+
G.E.

Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1428
Inscription : 27 oct. 2010 20:46

Re: Les fonctions scientifiques sans fonctions scientifiques

Message par Gilles59 » 16 nov. 2010 13:52

gege a écrit :
Gilles59 a écrit :Je ne me souviens plus des détails mais j'avais fait çà sur un micro processeur Z80.
Ah !? En entiers ou flottants ?
A+
G.E.
En entier c'est sur... Je dois avoir le code... Algo simple. De mémoire une dizaine de boucles et juste des divisions par 2 (tres simples en binaire) et additions/soustraction. Ca m'avait servi pour dév une fonction CIRCLE rayon,couleur qui n'existe pas dans le Basic Amstrad CPC

Je pense que c'était cet algo

Code : Tout sélectionner

Algorithme A (Extraction de la racine carree entiere) Pour tout entier x
ayant une racine carree entiere, cet algorithme calcule à partir d'une
somme croissante des nombre impairs.

A1. [Initialisation] n:=0, s:=0.
A2. [Calcul du nieme nombre impair] a:=2n + 1.
A3. [Sommation] s:=s + a.
A4. [Comparaison] Si s > x, l'algorithme se termine. La racine carree est la
valeur FInale de n.
A5. [Incrementation] Sinon, on incremente n, i.e. n:=n + 1.
A6. [Bouclage] Retour a A2.
Dernière édition par Gilles59 le 16 nov. 2010 14:13, édité 2 fois.
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49G+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+

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

Re: Les fonctions scientifiques sans fonctions scientifiques

Message par jxano » 16 nov. 2010 13:53

Beau « tout en images » !

Pour les maths mises en oeuvre, je ne suis pas bon juge, mais c'est bien à savoir.
Programmeur abscons.

Répondre

Revenir vers « Tous les Pockets »