Bonjour,
Je vous propose un nouvel élément à utiliser : La racine carrée du nombre
Ce code présente une racine carrée à l'aide du module decimal
C'est aussi un moyen de découvrir comment se fait cette opération...
Qu'en pensez-vous ?
Bonjour,
Je vous propose un nouvel élément à utiliser : La racine carrée du nombre
Ce code présente une racine carrée à l'aide du module decimal
C'est aussi un moyen de découvrir comment se fait cette opération...
Qu'en pensez-vous ?
Bonjour,
Selon l'objectif de ce code, voir aussi la méthode de Heron d'Alexandrie qui est très efficace, bien qu'elle ait 2000 ans...: https://fr.wikipedia.org/wiki/M%C3%A..._de_H%C3%A9ron.

Bonjour
Ce programme recherche la racine carrée du nombre de son côté décimal, à partir de la racine entière il va par dizaines incrémentées trouver leurs points de rupture. Ainsi : Décimale = (0.01) est incrémentée = {(0.02), (0.03), (0.04)...}. Si quand elle parvient à (0.05), et que la racine entière à laquelle est ajouté la partie décimale. Ainsi : racine = 33.05, si racine**2 est supérieure à nombre. C'est que sa part décimale a trouvée son point de rupture.
Ensuite, puisque ce n'est pas terminé. On ajoute une dizaine supplémentaire, ainsi : (0.041) a une chance de rencontrer sa rupture par incrémentation. Comme on peut le comprendre, c'est la partie décimale qui est en cours du traitement principal. Un travail de grammage sur les nombres, sans apport géométrique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 #!/usr/bin/env python3.6 # -*- coding: utf-8 -*- # Nombre au carré << nombre2carrex.py >> from decimal import * def nombre_carre(nbr): """ Cette fonction produit la racine carrée du nombre, et elle commence par définir la partie entière de la racine². Qui en général a une virgule flottante ( point décimal ) """ # Racine² décimale entière wh = int(nbr ** Decimal('.5')) # Plus de précision peut être désapointant getcontext().prec = 100 # max = 100000000 # Secteur décimal decitab = [] recital = 0 copieur = [0] entiere = wh print('entiere =', entiere) www = top = i9 = 0 while (Decimal(image[0]) ** 2) < nbr and top == 0: iii = 0 # print('WWW ', recital[0]) for i in range(1, 10): if i == 1: print('i1', i, '...WFIimage', image[0]) print('...WFIrecital', recital) if decitab: image[0] = (str(entiere) + '.' + recital + str(i)) if iii < 2: print('iii', i, '...FIIimage =', image[0]) iii += 1 else: image[0] = (str(entiere) + '.' + str(i)) print(www, 'IEimage =', image[0]) if Decimal(image[0]) ** 2 > nbr: decitab.append(i - 1) recital = (''.join(str(d) for d in decitab)) print('i', i, 'Isuprecital =', recital) image[0] = (str(entiere) + '.' + recital) print(www, 'Isupimage =', image[0]) if Decimal(image[0]) ** 2 == nbr: # 1 Valide rondeur[0] = 'Juste racine²' top = 1 break break elif i == 9: # i9 = 9**1 i9 += 1 # 9658754876325698546785421556487982 Valide if i9 > 100: top = 1 print('___i', i, '___OK i9', i9) if Decimal(image[0]) ** 2 == nbr: rondeur[0] = 'Juste racine²' top = 1 break decitab.append(i) recital = (''.join(str(d) for d in decitab)) image[0] = Decimal(str(entiere) + '.' + recital) # image[0] = Decimal(float(image[0])) print(www, 'ELimage =', (image[0]), 'i9', i9) print('i9', i, 'ELrecital =', recital) elif Decimal(image[0]) ** 2 == nbr: rondeur[0] = 'Juste racine²' top = 1 break print('* * * Bimage =', image[0]) print('* * * * * * * recital[0]', recital) www += 1 # break else: print('Eimage =', (image[0]), '______') # Contrôle des dizaines wer = .1 while Decimal(image[0]) ** 2 > nbr: mer = str(wer)[2:] copieur[0] = Decimal(str(entiere) + '.' + recital + mer) print('EEE ', copieur[0], 'mer', mer, 'len', len(mer)) print('.EE ', Decimal(copieur[0]) ** 2, wer) print('') wer /= 10 if len(str(wer)) > 5: break if not nbr: rondeur[0] = 1 print('REELrecite =', recital, len(str(recital))) print('REELnombre =', nbr, '; type =', nbr % 6, len(str(nbr))) print('REELracine =', nbr ** .5, len(str(nbr ** .5))) nombre = 56325468791546857 # 96587548785421556487982 print('nombre =', nombre) image = {0: 0} rondeur = {} nombre_carre(nombre) print('image =', image[0], '\nimageoo2 =', (Decimal(image[0]) ** 2)) if rondeur: print('Rondeur :', rondeur[0]) else: rondeur[0] = 'Valeur intervalle' print('Rondeur :', rondeur[0], '\n', nombre - (Decimal(image[0]) ** 2))

Satisfait de ce bout de chemin réalisé avec le nombre, et plus particulièrement sa racine carrée.
Le mode de lecture basique ne suffisait pas à résoudre le problème de clarté des opérations, alors après maintes et maintes virevoltes au milieu des décimales.
Décimales écosystématiques, redondance visible lorsqu'elles s'occupent des floats. Le monde décimal a besoin d'une technique de déchiffrage qui me dépasse, heureusement le calcul élémentaire a eu finalement raison.
Maintenant les choses sont plus claires, et la racine carrée est liée a ce petit programme fort simple. Dont le rendu n'est pas compliqué...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 #!/usr/bin/env python3.6 # -*- coding: utf-8 -*- # Nombre au carré << nombre6carrea.py >> from decimal import * def resume(): print("""Le nombre_carre utilise le module decimal... La racine carrée réelle a forme générique Pour les opérations et les comparaisons Le traité se porte sur le nombre (ex:13.25) Les nombres négatifs en string dans le code Au vu du capable complexe de nombre_carre...""") def nombre_carre(nbr): """ Cette fonction produit la racine carrée du nombre, et elle commence par définir la partie entière de la racine². Qui en général a une virgule flottante ( point décimal ) """ nbr = Decimal(nbr) if nbr < -0: nbr = Decimal(str(nbr)[1:]) rondeur[1] = 1 # Précision.Allusion.Illusion. """ Modulation unaire""" if len(str(nbr)) < 10: precision = (len(str(nbr)) + 1) * 10 precisive = '(*10)' elif 10 <= len(str(nbr)) < 50: precision = int(len(str(nbr)) ** 1.75) precisive = '(**1.75)' elif 50 <= len(str(nbr)) < 100: precision = int(len(str(nbr)) ** 1.5) precisive = '(**1.5)' else: precision = int(len(str(nbr)) ** 1.125) precisive = '(**1.125)' getcontext().prec = precision # Maximum(machine locale) = 100000000 # Racine² décimale entière wh = int(nbr ** Decimal(.5)) wh0 = (nbr ** Decimal(.5)) nbu = nbr # Secteur décimal decitab = [] if rondeur[1] == 1: entiere[0] = str('-' + str(wh)) else: entiere[0] = str(wh) print('entiere =', entiere[0]) www = nbrdec = top = 0 while image[0] ** 2 < nbr and top == 0: for i in range(1, 10): if decitab: image[0] = Decimal(entiere[0] + '.' + recital[0] + str(i)) else: image[0] = Decimal(entiere[0] + '.' + str(i)) nbrdec += 1 # Nombre de décimales if image[0] ** 2 > nbr: decitab.append(i - 1) nbrdec += 1 # Nombre de décimales recital[0] = (''.join(str(d) for d in decitab)) image[0] = Decimal(entiere[0] + '.' + recital[0]) if image[0] ** 2 == nbr: rondeur[0] = 'Juste racine² | nbr |' top = 1 break break elif i == 9: if image[0] ** 2 == nbr: rondeur[0] = 'Juste racine² | i9 |' top = 1 break decitab.append(i) nbrdec += 1 # Nombre de décimales recital[0] = (''.join(str(d) for d in decitab)) image[0] = Decimal(entiere[0] + '.' + recital[0]) elif image[0] ** 2 == nbr: rondeur[0] = 'Juste racine² | elif |' top = 1 break # print(www, '°°° **2 =', image[0] ** 2) www += 1 else: if len(str(rondeur[0])) < 1: rondeur[2] = 'Variant racine² | not |' nb6 = Decimal('6') if rondeur[1] == 1: nbr = Decimal('-' + str(nbr)) wh0 = Decimal('-' + str(wh0)) nb6 = Decimal('-' + '6') sq0 = wh0 print('Rnombre =', nbr, ';type =', nbr % nb6) if sq0 ** 2 == nbu: print('_Reelle_juste =', sq0) else: print('_Rracine =', sq0) print(',... (', nbrdec, ') Precision', precision, precisive) # Nombre à forme décimale """ Une décimale au format texte a un meilleur suivi """ # :nombre = '22135323.12554': # imageoo2 = 22135323.125540000000000000000000000000000000... # ...00000000000000000000000000000000000000000000000000000000 # :nombre = 22135323.12554: # imageoo2 = 22135323.125539999455213546752929687500000000... # ...00000000000000000000000000000000000000000000000000000000 """.""" nombre = 1 # Permission math [-0 exclu] nombre = str(Decimal(nombre)) image = {0: 0} rondeur = {0: '', 1: 0} entiere = {0: ''} recital = [0] nombre_carre(nombre) # Appel principal if recital[0] != 0: recital[0] = str(image[0])[len(entiere[0]) + 1:] print('Rrecital =', recital[0]) oo2 = image[0] ** 2 if rondeur[1] == 1: oo2 = Decimal('-' + str(oo2)) print('Iimageoo1 =', image[0], '\nIimageoo2 =', oo2) if rondeur[0]: print('Rondeur 0:', rondeur[0]) elif rondeur[2]: print('Rondeur 2:', rondeur[2], '\nReste =', Decimal(nombre) - ((image[0]) ** 2)) else: rondeur[0] = 'Valeur intervalle' print('Rondeur 0:', rondeur[0], '\nReste =', Decimal(nombre) - ((image[0]) ** 2)) print('.*') resume() #

Je viens de mettre à jour l'en cours, en simplifiant la saisie du nombre. Se faisant en format texte directement.
La définition du typage (%6) se porte non plus seulement sur le nombre entier, mais également sur sa partie décimale.
Les nombres 23154. et 23154.0 sont admis et modifiés. Car dans le résultat (23154,23154.,23154.0) sont inégaux.
:

Code : Sélectionner tout - Visualiser dans une fenêtre à part # Séparation décimale pour typage(%6)La séparation décimale est une argumentation qui a un double tranchant lorsqu'il s'agit de relever le type(reste(n%6)) d'un nombre réel, où le point décimal crée la limite entre la partie entière du nombre réel et sa part décimale. La démarche a commencée quand le nombre réel avait pour partie visible décimale, l'image exacte de celle du nombre réel. D'où la poursuite en mode séparé, un type(%6) spécifique à chacune.
Code : Sélectionner tout - Visualiser dans une fenêtre à part decim6 = 6 # Type 6: Supérieur à *(_TTG_)*Ce pourquoi la valeur par défaut qui ne sera jamais atteinte par un typage(%6) sur le nombre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part # Recherche du point décimalLa recherche du point décimal facilite un prochain calcul, au sujet de la proportion relative à la partie entière du nombre réel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part # Mesure.DecimaleLa mesure décimale prend en charge l'opération des typages aux mentions (Entier.Décimal).Juste avant
Code : Sélectionner tout - Visualiser dans une fenêtre à part nombre_carre(nombre) # Appel principalCe qui est à venir, va permettre de calculer aux normes du module decimal (espoir content)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 """.""" nombre = '4' # Séparation décimale pour typage(%6) # *(_TableTypeGénéral = [0,1,2,3,4,5]_)* decim6 = 6 # Type 6: Supérieur à *(_TTG_)* # Recherche du point décimal for i in nombre: if i == '.': nentie = len(str(int(float(nombre)))) # Poids.Entier.fort break else: # Nombre.Entier nentie = len(str(int(nombre))) # Poids.Entier.faible nmasse = len(nombre) # Masse.Nombre nmedif = nmasse - nentie # Mesure.Decimale ndecim = nombre[nentie + 1:] # Masse.Decimale """ Nombre réel aux poids(types): Entier.Decimal""" # Mesure.Decimale if nmedif != 0: fnd = 0 for nd in ndecim: fnd += int(nd) # Addition ndecim(nd) if fnd != 0: # Somme positive break # Nombre.Décimal if fnd == 0 or nombre[-1] == '.': # Nombre.Entier nombre = nombre[:nentie] else: decim6 = int(nombre[nentie + 1:]) % 6 # Condition nombre négatif if nombre[0] == '-': decim6 = int(str('-' + str(decim6))) image = {0: 0} rondeur = {0: '', 1: 0} entiere = {0: ''} recital = [0] nombre_carre(nombre) # Appel principal
Partager