dessiner des portions de fonctions sur un même graphe

Accueil Forums Programmation WIMS Programmation d’exercices OEF dessiner des portions de fonctions sur un même graphe

Vous lisez 8 fils de discussion
  • Auteur
    Messages
    • #7462
      Up
      0
      Down
      ::

      bonjour,
      Je voudrais dessiner des portions de fonctions (courbes de dosage acido-basique) sur un même graphe en utilisant canvasdraw.
      3 courbes pH=f(x) avant une valeur x0 ; pH=g(x) après la valeur seuil et pH=h(x) autour de la valeur seuil.
      apparemment, je ne peux définir qu’un seul intervalle pour le dessin xrange x1,x2
      j’ai essayé d’introduire un deuxième intervalle pour définir le tracé de la première courbe mais j’obtiens un message d’erreur comme si le compilateur ne reconnaissait pas l’ordre.
      Y-a-t-il un moyen de faire quelque chose ?
      Merci d’avance
      MJ

      Marie-joelle Ramage
      Université Paris-Saclay

    • #7463
      Up
      0
      Down
      ::

      Ci-dessous mon dernier essai : si j’accepte de tracer la droite 3x+2 sur l’intervalle xrange, pas de problème. Si j’introduis un intervalle plus petit, message d’erreur :
      FATAL syntax error: line 10: expecting more arguments in command

      
      \text{dessin=
      xrange -10,10
      yrange -10,10
      fontfamily Italic 12px Courier
      axis
      axisnumbering
      precision 1
      grid 1,1,orange,10,10,2,orange
      trange 0,5
      curve red,3*t+2
      zoom red}
      
      \statement{
      \canvasdraw{400,400}{\dessin}}
      

      Marie-joelle Ramage
      Université Paris-Saclay

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

      trange attend une courbe paramétrée de paramètre t

      curve red,t,3*t+2

      devrait fonctionner. Pas vérifié

    • #7470
      jm.evers
      Participant
      Up
      0
      Down
      ::

      Hi,
      There is no way to (re)define multiple xrange/yrange in canvasdraw -if I understand your problem correctly… But mayb BPR’s trange trick may suit your needs.
      A much more powerful grapher/plotter like GNUplot is probably better advised.
      http://www.gnuplot.info/demo/

      joke

      • Cette réponse a été modifiée le il y a 2 mois et 1 semaine par jm.evers.
    • #7472
      jm.evers
      Participant
      Up
      0
      Down
      ::

      Hi,
      Added (SVN) to canvasdraw a new command :
      newrange xmin,xmax,ymin,ymax
      objects defined after command will make use of this new range
      Be aware -for now- there can be only one command ‘grid’
      An additional grid in the newly defined x/y-range must be created manually
      (e.g. using commands like ‘segments’ ‘string’ etc etc etc)
      [code]
      size 400,400
      xrange -10,10
      yrange -10,10
      fontfamily Italic 12px Courier
      axis
      axisnumbering
      precision 1
      grid 1,1,orange,10,10,2,orange
      newrange 0,5,0,5
      jscurve red,3*x+2
      zoom red
      [/code]

      Hope this solves your issue…

      joke

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

      Je continuerai à utiliser trange  qui me semble moins « dangereux » et plus mathématique !

      Bernadette

    • #7487
      Up
      0
      Down
      ::

      Bonjour,
      Merci à Bernadette et à Joke.
      La méthode proposée par Bernadette fonctionne pour des fonctions simples (sin, cos etc…)
      Je me heurte à un nouveau problème qui est le suivant :

      si je demande l’affichage en donnant une fonction simple dans le script de canvasdraw, les courbes s’affichent (red et black)
      Si je demanda le tracé d’une fonction (fa), pas de tracé
      si j’introduis des variables dans la fonction, elle ne s’affiche pas (rose)
      La courbe bleue s’affiche mais suivant des intervalles précis. En particulier, si je démarre trange 0,5, elle ne s’affiche pas.

      Or les courbes dépendent de conditions initiales. Une solution pédestre est de construire le dessin pour chaque ensemble de conditions initiales. Avez-vous une meilleure astuce ?

      merci

      
      \function{fa=7.5+log10(5*x)}
      
      \text{dessin=
      xrange -1,\xmax
      yrange -1,14
      fontfamily Italic 12px Courier
      axis
      axisnumbering
      precision 10
      grid 1,1,orange,10,10,2,orange
      linewidth 3
      curve red,7.5+log10(3*x)
      curve black,7.5+log10(x)
      curve green,fa(x)                     (ou \fa(x))
      curve purple,7.5+log10(\n*x)
      curve pink,7.5-log10((\ntitre)/\Ctitrant/x-1)
      trange 0.1,5
      curve blue,t,7.5+log(5*t)
      segment 5,\y1,5,\y2,blue
      trange 5,7
      curve blue,t,7.5+log(6*t)
      }
      • Cette réponse a été modifiée le il y a 1 mois et 4 semaines par Avatar photoOlivier. Raison: ajout de `...` autour du code

      Marie-joelle Ramage
      Université Paris-Saclay

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

      Je mettrais \fa  (il contient x).

       

    • #7494
      Up
      0
      Down
      ::

      Bonjour,
      J’ai fini par résoudre mon problème en créant des matrices de points et de segments pour chaque condition initiale et en affichant les points et les segments. L’affichage est impeccable. Merci à toutes les deux.

      Marie-joelle Ramage
      Université Paris-Saclay

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