comportement de maxima

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

Vous lisez 6 fils de discussion
  • Auteur
    Messages
    • #4173
      bernadette
      Maître des clés
      Up
      0
      Down

      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
      Up
      0
      Down

      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 3 années et 1 mois par jm.evers.
    • #4177
      bernadette
      Maître des clés
      Up
      0
      Down

      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
      Up
      0
      Down

      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 3 années et 1 mois par jm.evers. Raison: typo
      • Cette réponse a été modifiée le il y a 3 années et 1 mois par jm.evers.
      • Cette réponse a été modifiée le il y a 3 années et 1 mois par jm.evers. Raison: additional examples
      • Cette réponse a été modifiée le il y a 3 années et 1 mois par jm.evers. Raison: more examples
      • Cette réponse a été modifiée le il y a 3 années et 1 mois par jm.evers.
    • #4184
      lemaire
      Participant
      Up
      0
      Down

      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 3 années et 1 mois par lemaire.
    • #4196
      jm.evers
      Participant
      Up
      0
      Down

      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
      Maître des clés
      Up
      0
      Down

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

      Bernadette

Vous lisez 6 fils de discussion
  • Vous devez être connecté pour répondre à ce sujet.