comportement de maxima

Accueil Forums Programmation WIMS Programmation d’exercices OEF comportement de maxima

Ce sujet a 6 réponses, 3 participants et a été mis à jour par  bernadette, il y a 3 jours et 21 heures.

  • Auteur
    Messages
  • #4173

    bernadette
    Admin bbPress

    Voici un comportement de maxima que je ne m’explique pas tout à fait
    et qui gêne pour l’analyse des réponses dans le type formal.

    Premier exemple
    keepfloat:true;
    ratsimp(exp(-0.2*x)-exp(-2/10*x));
    0
    ratsimp(exp(0.2*x)-exp(2/10*x));
    pas de simplification
    Le comportement est différent s’il y a un signe -.

    Si on met keepfloat:false;
    on trouve 0 dans les deux cas.

    Mais si on a la même chose sans x
    Le comportement est différent s’il n’y a pas de x
    keepfloat:false;
    ratsimp(exp(-0.2)-exp(-2/10));
    ratsimp(exp(0.2)-exp(2/10));

    Cela peut être résolu avec l’option
    ratsimpexpons:true;

    Par contre, que faire avec sin et cos.

    keepfloat:false;
    trigsimp(cos(0.2)-cos(2/10));
    resultat non évalué comme nul.
    trigsimp(cos(0.2*x)-cos(2/10*x));
    resultat 0

    Tout cela pour essayer de corriger le type de réponse
    formal qui n’accepte pas comme bonne réponse exp(0.2*x)
    si la bonne réponse est donnée comme exp(2/10*x).

    Avez-vous des idées ou des suggestions pour des options maxima de simplification ?

    Bernadette

  • #4175

    jm.evers
    Participant

    not sure if this helps…

    a:map('float,(exp(2/10*x)));
    b:map('float,(exp(0.2*x)));
    if a = b then Y else N;

    answer:

    2.718281828459045^(0.2*x)
    2.718281828459045^(0.2*x)
    y

    the keepfloat directive is not used in this case

    joke

    • Cette réponse a été modifiée le il y a 1 semaine et 1 jour par  jm.evers.
  • #4177

    bernadette
    Admin bbPress

    The question is that the behaviour is not the same if there is no variable
    b:map(‘float,(exp(0.2)));
    gives an error.

    (%i6) b:map(‘float,(exp(0.2)));

    map: improper argument: 1.22140275816017
    — an error. To debug this try: debugmode(true);

    And also, in fact in the other case, the x disappears !

    (%i3) b:map(‘float,(exp(0.2*x)));
    0.2 x
    (%o3) 2.718281828459045

    (%i5) b:map(‘float,(exp(0.2*x)*exp(1/2)));
    0.2 x + 0.5
    (%o5) 2.718281828459045

    I would like not to have to test too much !

    Bernadette

  • #4178

    jm.evers
    Participant

    how about setting maperror:false
    like:

    maperror:false;
    a:map('float,exp(2/10*x));
    b:map('float,exp(0.2*x));
    c:map('float,exp(2/10));
    d:map('float,exp(0.2));
    e:map('float,exp(0.2*x)*exp(1/2));
    f: map('float,trigsimp(cos(0.2)-cos(2/10)));
    g: map('float,trigsimp(cos(0.2*x)-cos(2/10*x)));
    h: map('float,cos(0.2*x)-cos(2/10*x));
    i: map('float,cos(0.2)-cos(2/10));
    

    result:

    false
    2.718281828459045^(0.2*x)
    2.718281828459045^(0.2*x)
    1.22140275816017
    1.22140275816017
    2.718281828459045^(0.2*x+0.5)
    0.0
    0.0
    0.0
    0.0
    
    • Cette réponse a été modifiée le il y a 1 semaine et 1 jour par  jm.evers. Raison: typo
    • Cette réponse a été modifiée le il y a 1 semaine et 1 jour par  jm.evers.
    • Cette réponse a été modifiée le il y a 1 semaine et 1 jour par  jm.evers. Raison: additional examples
    • Cette réponse a été modifiée le il y a 1 semaine et 1 jour par  jm.evers. Raison: more examples
    • Cette réponse a été modifiée le il y a 1 semaine et 1 jour par  jm.evers.
  • #4184

    lemaire
    Participant

    float without map seems to work also for simple expressions:

     a:float(cos(2/10*x));
    b:float(cos(0.2*x)-cos(2/10*x));
    c:float(cos(0.2)-cos(2/10));
    d:float(exp(0.2*x)-exp(2/10*x));
    e:float(ratsimp(exp(0.2*x)-exp(2/10*x)));
    

    give
    cos(0.2 x)
    0.0
    0.0
    2.718281828459045^(0.2x) – 1.0 2.718281828459045^(x/5)
    0.0

    But if we compose exp and cos, terms are not always simplified:

    
    f:float(ratsimp(exp(cos(0.2)*x)-exp(cos(2/10)*x)));
    g:float(ratsimp(trigsimp(exp(cos(0.2*x))-exp(cos(2/10*x)))));
    

    Answers are:

    
    rat: replaced 0.9800665778412416 by 21157347/21587663 = 0.980066577841242
                                                    
     2.718281828459045^ ( 21157347 x/ 21587663 ) - 1.0 2.718281828459045^(cos(1/5) x)
    

    and

    
    rat: replaced 0.2 by 1/5 = 0.2
     0.0
    

    I wonder if it will better not to use 0.2 in expression when using the answer type formal; The problem could be avoided if a warning message can be displayed to students when they enter a comma number. For instance,
    Your answer must not contain a decimal point. Write decimal numbers as fractions.

    • Cette réponse a été modifiée le il y a 1 semaine par  lemaire.
  • #4196

    jm.evers
    Participant

    Your answer must not contain a decimal point. Write decimal numbers as fractions.

    you are right, that is the best solution for demanding mathematical precise answers.

    And this could be easily implemented in javascript, eg we don’t send the answer to wims if there is a ‘decimal number’ present in the formula/answer

    Joke

  • #4197

    bernadette
    Admin bbPress

    Yes, but I will do it in the answer type « formal ».

    Bernadette

Vous devez être connecté pour répondre à ce sujet.