problème avec l’utilisation de l’instruction « solve » par wims

Accueil Forums Programmation WIMS Programmation d’exercices OEF problème avec l’utilisation de l’instruction « solve » par wims

Vous lisez 3 fils de discussion
  • Auteur
    Messages
    • #891
      sylvain
      Participant
      Up
      0
      Down
      ::

      Bonjour,

      Je suis confronté à un problème avec l'utilisation dans wims de la fonction « solve » de maxima.

      Je veux déterminer le point critique m d'une fonction f (dépendant du paramètre h2) en calculant sa dérivée dotf, ce que j'ai programmé de la façon suivante

      real{h2 = random(2..9)}

      function{ f=x^2-h2*x}

      function{ dotf=diff(f,x)}

      real{m =maxima(solve(dotf,x))}

      real{sol = evalue(f,x = m) }

      statement{calculer le minimum la fonction définie par

      (f(x) = f)

      dérivée : dotf m= m}…

      Mon problème : le minimiseur m vaut toujours 0, alors que f(x)=x(x-h2)

      Pourtant, dotf est bien calculée (je l'ai affichée dans statement pour être sûr), et quand je teste l'instruction « solve(dotf,x) » dans le testeur de script, la bonne solution est trouvée pour m, ce qui signifie que cette instruction est correctement écrite.

      Je précise :  la fonction f que j'utiliserai au final sera plus complexe qu'une parabole, ce qui m'empêchera de calculer directement son point critique comme je pourrais le faire avec x(x-h2)

      j'espère que vous pourrez voir d'où vient le problème

      merci d'avance

      Sylvain

    • #892
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Il y a incompatibilité entre la fonction solve de wims et solve de maxima.

      Pour dire que c'est la fonction solve de maxima, il faut écrire

      text{m =maxima(solve(dotf,x))}

      (je précise solve backslash (  au cas où l'éditeur en mangerait une partie) ou mettre SOLVE en majuscules

      Mais la réponse est « x= la solution »

      J'ai essayé text{s=evalue(f,m)}

      mais cela ne semble pas marcher ?!

      On peut le traiter avec maxima :

      text{a=maxima(solve(2*x+1,x))}
      text{b= maxima(ev(x,a);)}

      ou
      text{a1=maxima(SOLVE(2*x+1,x))}
      text{b1= maxima(ev(x,a);)}

      statement{a=a , b=b , a=a1, b=b1}

       

      Faites attention qu'il y ait bien une solution, car la réponse sera vide et s'il y en a plusieurs il faut les traiter toutes.

       

      Bernadette

    • #893
      sylvain
      Participant
      Up
      0
      Down
      ::

      Bonjour,

      Merci beaucoup pour votre réponse qui a effectivement débloqué ma situation.

      J'en profite pour demander si, de manière générale, quand une fonction existe à la fois dans wims et dans un logiciel (comme solve), faut-il ajouter le backslash pour la fonction du logiciel ?

       

      Sylvain

    • #894
      bernadette
      Maître des clés
      Up
      0
      Down
      ::

      Oui, je pense !

      En fait, les seuls exemples que j'avais repérés étaient random dans pari et solve dans pari aussi

      (mais la syntaxe avec wims est la même dans ce dernier cas donc ce n'est pas très grave).

      Si vous en trouvez d'autres, indiquez-les moi !

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