Probleme de Calcul sous Matlab
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Probleme de Calcul sous Matlab



  1. #1
    invite745632d7

    Probleme de Calcul sous Matlab


    ------

    Bonjour a tous,

    J'ai un petit probleme de calcul sous Matlab a vous proposer:

    Je suis en train de faire des calculs d'exponentiels avec des chiffres minuscules (par exemple, exp(1.3458e-37)), ce qui fait que Matlab arrondi automatiquement a 1. Y aurait il un moyen de repousser les limites de l'arrondi pour garder la valeur exacte?

    Merci pour vos infos qui seront sans aucun tres utile.

    Bonne journee

    Jean-Michel

    -----

  2. #2
    inviteeecca5b6

    Re : Probleme de Calcul sous Matlab

    Salut,
    Matlab arrondie parce que la vraie valeur est très proche de 1+1.3458e-37...
    T'as vraiment besoin d'avoir des chiffres aussi précis ?! Parce que c'est ni un résultat analytique, ni physiquement très utile

  3. #3
    invite745632d7

    Re : Probleme de Calcul sous Matlab

    Bonjour,

    Merci pour votre reponse rapide mais c'est vrai que cela peut paraitre un peu farfelu d'avoir d'aussi petit nombre mais cela m'est impossible de ne pas le calculer car voici mon calcul:

    Nombre / (exp(nombre*e-35)-1)

    Ce qui me met une indetermination et echoue le calcul. Si il vous vient une autre idee, je suis preneur.

    Merci

    Jean-Michel

  4. #4
    inviteeecca5b6

    Re : Probleme de Calcul sous Matlab

    Re,
    j'ai eu à peu près le même problème...
    Dans ce cas, la divison devient énorme... Ce que j'ai fait, et c'est même un classique, quand tu a a/b avec b<epsilon, il faut mettre a/b =0
    On perd de l'information de faire ca, mais au moins ca évite au prog de planter...
    Sinon suffit de mettre une petite condition sur b, et de pas évaluer NOMBRE si b est trop petit.
    En dernier recours, dans ton exemple, tu peu remplacer exp(1-tout petit nombre) - 1 par -tout petit nombre. C'est utile seulement si ce nombre n'est pas au-dela de la limite de matlab.

  5. A voir en vidéo sur Futura
  6. #5
    invite745632d7

    Re : Probleme de Calcul sous Matlab

    Je vais essayer cette astuce.

    Merci beaucoup.

    Bonne journee

    Jean-Michel

  7. #6
    invite00411460

    Re : Probleme de Calcul sous Matlab

    tu peux aussi utiliser le développement en série de exp(x) :

    exp(x) = 1+x+x²/2!+x³/3!+...
    et donc exp(x)-1 = x+x²/2!+x³/3!+...

    et même, vu que ton x est très petit, tu peux carrément approcher exp(x)-1 par x.

    facile donc maintenant la réponse de A/(exp(B)-1) = A/B (si B est petit)

    (en fait c'est la réponse donnée plus haut, mais avec les explications, franchement c'est la meilleure solution)

  8. #7
    invitefa93e550

    Re : Probleme de Calcul sous Matlab

    C'est ce que j''ai trouvé dans le Help secteur.

    Symbolic Math Toolbox

    digits

    Set variable precision accuracy

    Syntax

    digits(d)
    d = digits
    digits
    Description

    digits specifies the number of significant decimal digits that Maple uses to do variable precision

    arithmetic (VPA). The default value is 32 digits.
    digits(d) sets the current VPA accuracy to d digits.
    digits returns the current VPA accuracy.

    Examples

    If
    z = 1.0e-16
    x = 1.0e+2
    digits(14)
    then y = vpa(x*z+1)
    uses 14-digit decimal arithmetic and returns y = 1.0000000000000

    Whereas digits(15)
    y = vpa(x*z+1)
    used 15-digit decimal arithmetic and returns y =1.00000000000001
    Et alors, je l'ai ustilisé pour solutionner votre problème:

    digits(100);
    x = 1.3458e-37;
    h:=exp(vpa(x));

    donc, le résultat est:

    1.0000000000000000000000000000 000000001345800000000000035511 579068029152791600780621095968 978139
    03948

    Avec Maple, il y a le même résultat.


  9. #8
    invite00411460

    Re : Probleme de Calcul sous Matlab

    et si tu remarques bien, c'est donc bien égal à 1+x. pourquoi se compliquer la tâche, je vous le demande.

  10. #9
    invitefa93e550

    Re: Re : Probleme de Calcul sous Matlab

    D'après moi :

    1. Pour la vie quotidienne, cela n'a aucun de sens. Mais dans la science, if faut préciser nos calculs par plusieurs chiffres après la virgule dans certaines circonstances. Quant à une de mes études (Méthode de calcul - je ne peut pas traduire exactement le nome vietnamien en français), nous devons trouver / calculer jusqu'à le septième chiffre après la virgule du résultat, et l'erreur est ~ 10^(-9).

    2. C'est utile pour qui ne sait pas comment utiliser cette fonction de Matlab.

    Vous êtes d'accord avec moi ?

Discussions similaires

  1. probleme d'interpolation sous matlab
    Par invite228a0da8 dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 26/02/2009, 14h36
  2. Calcul de frequences propres sous Matlab
    Par invite31b5cbad dans le forum Mathématiques du supérieur
    Réponses: 13
    Dernier message: 03/04/2007, 16h34
  3. problème sous matlab avec ode45
    Par invite80950a2d dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 13/02/2007, 18h35
  4. FFT sous Matlab
    Par invite45916ff7 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 03/06/2006, 01h47
  5. probléme stupide sous matlab
    Par invite68ef1cc0 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 04/05/2006, 20h51