IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Téléchargez Python Discussion :

La racine carrée du nombre


Sujet :

Téléchargez Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Robot Forum
    Avatar de forum
    Inscrit en
    Novembre 1999
    Messages
    3 030
    Détails du profil
    Informations forums :
    Inscription : Novembre 1999
    Messages : 3 030
    Par défaut La racine carrée du nombre
    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 ?

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    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.

  3. #3
    Invité
    Invité(e)
    Par défaut
    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))

  4. #4
    Invité
    Invité(e)
    Par défaut La racine carrée du nombre
    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()
    #

  5. #5
    Invité
    Invité(e)
    Par défaut
    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.
    :

  6. #6
    Invité
    Invité(e)
    Par défaut Nom d'un de là
    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écimal
    La recherche du point décimal facilite un prochain calcul, au sujet de la proportion relative à la partie entière du nombre réel.
    La 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 principal
    Ce 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

Discussions similaires

  1. Calcul de la racine carrée d'un nombre
    Par Anomaly dans le forum Télécharger
    Réponses: 3
    Dernier message: 05/11/2013, 00h16
  2. Calculer la racine carrée d'un nombre d'une façon particulière
    Par Roud9 dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 29/09/2010, 04h11
  3. Nombre premiers et calculer la racine carrée d'un nombre
    Par Roud9 dans le forum Débuter avec Java
    Réponses: 19
    Dernier message: 21/09/2010, 18h55
  4. Racine carrée de très grands nombres
    Par paskal64 dans le forum Général Python
    Réponses: 5
    Dernier message: 19/08/2008, 09h35
  5. la racine carré d'un nombre
    Par aziz jim dans le forum C++
    Réponses: 4
    Dernier message: 07/08/2006, 15h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo