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

Mathématiques Discussion :

Calcul de la partie entière d'un nombre


Sujet :

Mathématiques

  1. #1
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut Calcul de la partie entière d'un nombre
    Bonjour

    Tout est dans le titre.
    Existe-t-il un calcul mathématiques pour connaître la partie entière d'un nombre décimal, c'est sans doute évident, mais sur le moment je ne vois pas
    Merci.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Par "calcul mathématique" tu entends une formule ?

    du genre int(x) = x - (x mod 1)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Moi, j'essayerais de reconstruire le nombre
    N= ... + n3.E3 + n2.E2 + n1.E1 + n0.E0 + les décimales
    E étant les puissances de 10.
    Donc, la partie entière est la somme des nxEx.
    Sinon, en C il y floor(), mais je suppose qui vous le saviez .

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Oui, je cherche une formule.
    Le langage que j'utilise (Prolog) connait floor mais la librairie (clpr) n'en veut pas donc j'essaie de trouver quelque chose avec + - * / mais pas mod par exemple car mod ne s'applique qu'aux entiers en Prolog.

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Oui, je cherche une formule.
    Le langage que j'utilise (Prolog) connait floor mais la librairie (clpr) n'en veut pas donc j'essaie de trouver quelque chose avec + - * / mais pas mod par exemple car mod ne s'applique qu'aux entiers en Prolog.
    ?

    Il n'y a pas une fonction genre integer() ou un opérateur de division entière en Prolog ?

  6. #6
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    En division entière, tu as "//" et "div" si je me souviens bien.
    Sinon tu dois avoir la fonction "float_integer_part".

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par bhamp0 Voir le message
    En division entière, tu as "//" et "div" si je me souviens bien.
    Sinon tu dois avoir la fonction "float_integer_part".
    Exactement ce que je cherchais... sauf que la lib n'en veut pas

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 084
    Points
    16 084
    Par défaut
    Citation Envoyé par Trap D Voir le message
    Exactement ce que je cherchais... sauf que la lib n'en veut pas
    Tu peux toujours utilise la définition :




  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Tu peux toujours utilise la définition :



    Oui, bien sur, mais je voulais un calcul "rapide".

    Je vais mettre car je pense qu'il n'y a pas de solution !

  10. #10
    Membre habitué Avatar de Onimaru
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 283
    Points : 129
    Points
    129
    Par défaut
    Salut,
    Si j'ai bien compris tu veux une fonction de Real vers integer qui calcule la partie entière de X sans utiliser la librairie de Prolog ?

  11. #11
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Oui, un calcul (je ne peux même pas en faire une fonction, je dois réécrire le calcul à chaque fois), en utilisant uniquement + - / * min, max car j'utilise la lib clpr qui ne veut que ces opérateurs mathématiques

  12. #12
    Membre habitué Avatar de Onimaru
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 283
    Points : 129
    Points
    129
    Par défaut Calcul de la partie entière d'un nombre
    Citation Envoyé par Trap D Voir le message
    Oui, un calcul (je ne peux même pas en faire une fonction, je dois réécrire le calcul à chaque fois), en utilisant uniquement + - / * min, max car j'utilise la lib clpr qui ne veut que ces opérateurs mathématiques
    Salut,
    Juste pour bien comprendre :
    1) Les seuls opérateurs autorisés sont ceux de la table 10 (Non-linear constraints du lien clpr)

    2) Tous les nombre dans Prolog sont des réels.

    3) pas d'opérateurs de décalage de bits

    c'est comme ça je crois?

  13. #13
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Oui c'est exactement cela ! (à part que Prolog connait les integer (de toute taille d'ailleurs)).
    Pour bien comprendre voici ce que je veux faire : je voudrais inverser cette formule : X is I + floor(0.5+sqrt(I)) qui permet d'obtenir la suite des nombres qui ne sont pas des carrés :
    par exemple avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    seq_non_square(N) :-
    	forall(between(1,N,I),
    	       ( X is I + floor(0.5+sqrt(I)),
    	       writeln(X))).
    on obtient :
    ?- seq_non_square(21).
    2
    3
    5
    6
    7
    8
    10
    11
    12
    13
    14
    15
    17
    18
    19
    20
    21
    22
    23
    24
    26
    true.
    Je voudrais donc un calcul qui me permette de trouver I à partir d'un nombre X en faisant { X = I + floor(0.5+sqrt(I)) } avec la lib clpr !

  14. #14
    Membre habitué Avatar de Onimaru
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 283
    Points : 129
    Points
    129
    Par défaut
    Salut,
    Je vois maintenant clair, je vais essayer de le faire.
    C'est le genre de problèmes qui m'intéresse

    Toutes fois si vous voulez bien me dire où peut on trouver :
    *Prolog
    *la bibliothèque clpqr
    *un ou des cours intéressants sur Prolog

    Nb : J'utilise Windows Xp.

    J'ai toujours entendu parler de Prolog, je veux maintenant l'essayer.
    Merci.

  15. #15
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    J'utilise SWI-Prolog. Les bibliothèques clpq et clpr sont incluses.
    Tu as quelques cours ici !

  16. #16
    Membre habitué Avatar de Onimaru
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 283
    Points : 129
    Points
    129
    Par défaut Calcul de la partie entière d'un nombre
    Citation Envoyé par Trap D Voir le message
    J'utilise SWI-Prolog. Les bibliothèques clpq et clpr sont incluses.
    Tu as quelques cours ici !
    Merci, je vais m'y mettre

  17. #17
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Comme certain(s) participant(s) s'intéresse(nt) au problème, je retire le tag peut-être la solution arrivera-t-elle ?

  18. #18
    Membre habitué Avatar de Onimaru
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 283
    Points : 129
    Points
    129
    Par défaut Calcul de la partie entière d'un nombre
    Salut,
    J'ai une question :
    X = I + floor(0.5+sqrt(I))
    est ce que ce '0.5' est utilisé dans le but de donner un résultat juste avec floor?

    Je renomme les variables :
    A + floor(0.5 + sqrt(A)) = B

    Pour résoudre cette équation il faut enlever le floor.

    J'ai essayé d'avoir la formule inverse dans Maple, voici les résultats :

    *avec '0.5' solve(A + 0.5 + sqrt(A) = B, A) :
    B + 0.5 * sqrt(-1 + 4 * B)
    B - 0.5 * sqrt(-1 + 4 * B)

    *sans '0.5' solve(A + sqrt(A) = B, A) :
    B + 0.5 + 0.5 * sqrt(1 + 4 * B)
    B + 0.5 - 0.5 * sqrt(1 + 4 * B)

    Maintenant il reste à savoir quelle formule choisir et où mettre le floor dans la bonne place.

  19. #19
    Membre habitué Avatar de Onimaru
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2010
    Messages
    283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 283
    Points : 129
    Points
    129
    Par défaut Calcul de la partie entière d'un nombre
    finalement voici la formule :
    I = X + Floor(1 - 0.5 * Sqrt(1 + 4 * X))
    maintenant il reste à l'écrire en Prolog.

Discussions similaires

  1. récupérer la partie entière d'un nombre
    Par JauB dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 10/04/2008, 13h47
  2. Partie entière d'un nombre réel
    Par Lost in dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/02/2008, 19h28
  3. Réponses: 2
    Dernier message: 03/07/2007, 09h38
  4. Réponses: 7
    Dernier message: 20/12/2006, 19h18
  5. Fonction retournant la partie entière d'un nombre
    Par annedjomo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/11/2004, 16h58

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