Canalblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Publicité
La Vache En Liberté
Publicité
Visiteurs
Depuis la création 26 450
Newsletter
Archives
2 juillet 2022

Calculs sur nombres type texte

Avant l'essor des outils de saisie numérique, la longueur des nombres ne posait pas de problème (hormis une complication des calculs). Avec une taille de 8 caractères maxi,aucune des fonctions d'une calculatrice ne marche, donc sur des nombres de l'ordre du milliard , précis à l'unité près. Et mème si on utilise des variables très grandes telles QWORD en Pascal (0 .. 18446744073709551615), on arrive vite à des limites de calcul récurrent.

Si on peut jongler avec les additions et soustractions,comment faire avec les multiplications et divisions.
Comment faire en algèbre simple ?
/
Les Indiens nous ont apporté les chiffres dits abusivement arabes, le zéro, la base 10.

Je vais donc stocker mes données dans des chaînes texte.

Addition Soustraction

On finit par croire qu'opérer une addition est innée et universel, or sans apprentissage ni base 10 (les Mayas utilisaient une base 20), on compterait toujours avec les doigts. Là, on s'est mis en tête (à vie) la table d’audition de 0 à 9. Et c'est tout.
Soit un système où chaque chiffre est lié au numéro colonne,en commençant par 0 pour les unités puis 1 pour les dizaines ... Cela ce rapproche de la notation en puissances de 10.

413 = 4E2 + 1E1 + 3E0

On additionne donc chaque colonne indépendamment des autres, mais sans oublier les retenues.

 

 Pour les soustractions, si le chiffre à soustraire est supérieur,à l'actuel, on ajoute une dizaine qu’on retirera de la colonne suivante : 2-9 donne 12-9=3 et on retire 1 colonne+1.

Multiplication

 

Une Multiplication est une addition en boucle. avec mon système de notification, il suffit de multiplier chaque chiffre non nul du multiplicande par chaque chiffre non nul du multiplicateur. Le résultat est additionné dans la colonne somme des deux

 

Exemple :
203012 x 4112 =( 2^5 + 3^3 + 1^1 + 2^0 ) x ( 4^3 + 1^2 + 1^1 + 2)
/4/0 2/1 6/3 4-/5 2/ 1 1/2 3/4 2/6 2/2 1/3 3/5 2/7 8/3 4/4 12/6 8/*8

 

Colonne0=4
Colonne1=2+2=4
Colonne2=2+1=3
Colonne3=1+6+8=15=5 report 1
Colonne4=3+4+1=8
Colonne5=4+3=7
Colonne6-=2+12=14=4 report 1
Colonne7=1+2=3
Colonne8=8
834785344

 

En fait,sans le savoir,j'ai réinventé une forme de multiplication védique. Je peux donc faire des multiplications sans limite d'espace, seulement de temps.
Division
 La division par soustractions : N est le nombre à diviser par D,Compter combien de fois on peut soustraire D de N et retenir cette quantité.
while n>d do
begin q:=q+1;

 n:==n-d;

end;

N: dividende; D: diviseur; Q: quotient; et R = reste

Méthode qui utilise la méthode de la division posée (classique).

 

Au lieu de prendre le dividende en entier, on ne prend que le premier chiffre à gauche puis le suivant jusqu'à former un nombre supérieur au diviseur. On fait la division, récupère le chiffre du quotient, pose le reste. Puis on abaisse le chiffre suivant du dividende. Et on recommence. .

 

Pseudo code
De cette manière on travaille chiffre par chiffre sauf avec le diviseur. Donc si le diviseur est très long il faudra utiliser la soustraction longue dans la boucle division par soustraction.

Racine carrée longue.
On se base sur l'algorithme de Heron. Voir Calcul à la main d'une Racine, méthode Héron.

En conclusion
Tous les calculs algébriques peuvent n'utiliser que l'addition.
Ma méthode est (volontairement) ultra-primitive, hyper lente, nie 2000 ans d’histoires mathématiques ... mais ça peut marcher. De là à passer du temps à tout coder ?

/

Publicité
Publicité
Commentaires
Publicité