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

avec Java Discussion :

Programmation d'un exponentiel


Sujet :

avec Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 95
    Points : 131
    Points
    131
    Par défaut Programmation d'un exponentiel
    Bonjour,

    Pour un projet de fin d'année, je dois programmer une calculatrice scientifique en java avec pour consigne, imposée par notre cahier des charges, de ne pas utiliser la classe Math.

    Pour calculer les fonctions usuelles comme cosinus, sinus, log, exp ... J'ai programmé une classe Polynome que je fais hériter à mes cosinus, sinus etc ... pour calculer leurs développements limités.

    Cependant quelques problèmes se posent pour certaines fonctions.

    Pour le développement limité de exponentiel, j'ai un polynôme de type : exp(x) = 1 + x + (x^2)/2! + (x^3)/3! + (x^4)/4! + ... + (x^n)/n! + (x^n)e(x)

    Pour le calcul de petite valeur l'on peut se limiter au plus petit exposant du polynôme.
    Mais pour un exponentiel, on arrive très vite sur des valeurs très grande et calculer les petits exposants devient négligeable.

    Pour un gain en précision, il faut donc augmenter le plus grand exposant du polynôme.

    Et c'est la que je tombe sur un os.
    Je suis très vite limité avec les doubles.
    x^n dépasse rapidement le plafond et renvoi des valeurs négatives faussant complètement le calcul de l'exponentiel et limitant donc sa précision.

    Je suis un peu à cours d'idée pour mon exponentiel sachant que la classe Math m'est interdite.

    Si quelqu'un aurait un début de réponse à mes questions, je lui en serais reconnaissant.

    Dans tout les cas, merci d'avoir pris la peine de me lire.

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 67
    Points : 67
    Points
    67
    Par défaut
    Tu peux utiliser la classe BigDouble pour représenter de très grand nombre.

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    Tu peux utiliser la classe BigDecimal pour ca mais avec l'enonce
    de ne pas utiliser la classe Math.
    Je ne sais pas si c'est possible. Sinon il faut creer une classe equivalente.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Deux choses :
    - Soit ton prof est conscient des limites du double et ne te demandera pas de nombre trop élevé
    - soit ton prof n'est pas conscient et dans ce cas, (personnellement) je m'octroierais le droit d'utiliser BigDecimal qui n'est pas la classe Math (mais qui a bien des méthodes intéressantes et déjà utilisables.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 95
    Points : 131
    Points
    131
    Par défaut
    BigDecimal, je ne connaissais pas. Je vais partir sur cette solution.
    Je me demande quand même comment les calculatrices gèrent ça derrière car la précision sur des grandes valeurs n'est pas du tout la même. Je perds déjà un bon millier sur un exponentiel de 9 par rapport à ma calculatrice.

    Merci pour vos réponses.

  6. #6
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour,

    pour faire ce genre de calcul, la classe BigDecimal répond à tous tes besoins.
    Avec cette classe tu n'est pas limité par la taille des nombres.
    Elle permet aussi de gérer la précision.

    Tu as choisi d'utiliser des DLs soit, il existe aussi des algorithmes tels que CORDIC. fr.wikipedia.org/wiki/CORDIC
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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