Partage
  • Partager sur Facebook
  • Partager sur Twitter

traitement de fonctions mathématiques.

Sujet résolu
    29 novembre 2010 à 19:15:20

    Bonjour,

    j'ai un rapport à rendre dans le cadre de la programmation. Ayant vraiment peu d'expérience dans ce domaine là j'aurai besoin de votre avis par rapport à ce que j'ai fait et si possible éventuellement une ouverture pour me permettre de débloquer mes problèmes et d'avancer.

    Le sujet est le suivant :

    Écrire un programme opmath qui permet de réaliser diverses opérations de traitement sur une fonction mathématique dont l'expression f(x) est entrée par l'utilisateur. Le principe de fonctionnement est similaire à celui du programme stat dans lequel l'opération de traitement était spécifiée sous la forme d'un mot-clé dans la commande saisie par l'utilisateur. Néanmoins, à la différence de stat, le programme doit pouvoir correctement gérer un nombre variable d'arguments pour les différentes opérations. Voici les opérations qui doivent être réalisables :

    * def expression : définir expression comme la fonction mathématique à utiliser pour les opérations suivantes (cf. exemple ci-dessous). La même fonction mathématique sera utilisée tant que l'utilisateur n'aura pas défini une nouvelle fonction avec la commande def
    * val x : évaluer la fonction courante f(x) pour la valeur x
    * root xmin xmax : déterminer toutes les racines de la fonction courante f(x) sur l'intervalle [xmin, xmax]. Pour cela, le plus simple est d'utiliser la technique de la dichotomie jusqu'à obtenir une précision donnée (généralement 10e-6 est largement suffisant). Le programme doit être capable de gérer le cas des racines multiples sur l'intervalle.
    * min xmin xmax : déterminer toutes les valeurs de x qui fournissent la valeur minimale de la fonction courante f(x) sur l'intervalle [xmin, xmax]
    * max xmin xmax : déterminer toutes les valeurs de x qui fournissent la valeur maximale de la fonction courante f(x) sur l'intervalle [xmin, xmax]
    * area xmin xmax : déterminer l'aire comprise sous la fonction courante f(x) pour l'intervalle [xmin, xmax]. Pour cela, le plus simple est d'utiliser la méthode des trapèzes avec un pas d'échantillonnage donné (généralement, utiliser 10e6 échantillons sur l'intervalle est largement suffisant)

    Exemple d'exécution :

    ================================================================================
    OPMATH : perform miscellaneous processing on a mathematical function
    ================================================================================
    Note : enter an empty line to stop the interaction loop
    <> Enter command : def x*x - 1
    f(x) = x*x - 1
    <> Enter command : val 2.0
    f(2.0) = 3.0
    <> Enter command : min -2.0 3.0
    min in [-2.0,3.0] : f(0.0) = -1.0
    <> Enter command : max -2.0 3.0
    max in [-2.0,3.0] : f(3.0) = 8.0
    <> Enter command : root -2.0 3.0
    root in [-2.0,3.0] : f(-1.0) = f(1.0) = 0.0
    <> Enter command : area 0.0 3.0
    area under [0.0,3.0] : 6.0
    <> Enter command : def cos(x)
    f(x) = cos(x)
    <> Enter command :



    Mon programme est le suivant: ( sachant que je ne me suis arrêté que à "val x"):

    f=none

    while
    
    1:
    command =
    raw_input(
    
    "Enter command: ")
    if
    
    not command:
    print
    
    "End of program."
    break
    if
    
    command.startswith('def '):
    f = command.lstrip('def ')
    print
    
    "f(x)=%s" % f
    elif
    
    command.startswith('val '):
    x = float(command.lstrip('val '))
    try:
    

    print
    
    "f(%f)=%f" % (x,eval(f))
    except
    
    TypeError:
    print
    
    "No function defined.
    else:
    

    print
    
    "Unknown command."



    J'ai plusieurs problèmes:
    -le programme fonctionne trés bien pour le premier exemple: x*x-1
    - je ne sais pas comment faire pour implanter plusieurs fonctions , c'est à dire mettre une fonction au hasard et calculer ses images.
    - la seconde chose , je ne sais pas comment calculer le min et le max sur un intervalle donné.

    Merci de bien vouloir me répondre si possible, et de m'apporter une aide qui me permettrait d'avancer dans mon programme.

    Cordialement
    Arnaud.
    • Partager sur Facebook
    • Partager sur Twitter
      29 novembre 2010 à 19:15:20

      Le message qui suit est une réponse automatique activée par un modérateur.
      Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


      Merci d'utiliser les balises de code


      Bonjour,

      Les forums du Site du Zér0 disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source.
      Vous avez posté un code source sans utiliser cette fonctionnalité. Pourriez-vous éditer votre message en entourant votre code des balises <code > et </code > ?

      Cela aura pour effet de "colorer" votre code et donc d'en faciliter grandement la lecture. Vous aurez ainsi beaucoup plus de chances d'avoir des réponses.

      Voici un exemple de code non coloré avec la balise "citation" (mauvais exemple) :

      Citation

      int main(int argc, char *argv[])
      {
      long choixOperation;

      printf("Choisissez l'operation a effectuer");
      /* etc. */
      }



      Voici maintenant le même code coloré, si vous aviez utilisé la balise "code" (bon exemple) :

      int main(int argc, char *argv[])
      {
          long choixOperation;
      
          printf("Choisissez l'operation a effectuer");
          /* etc. */
      }
      


      C'est plus clair n'est-ce pas ? :)
      N'hésitez pas à éditer votre message pour changer la balise afin de colorer votre code.

      Plus d'informations à ce sujet


      Merci de votre compréhension :)
      Les modérateurs.
      • Partager sur Facebook
      • Partager sur Twitter

      traitement de fonctions mathématiques.

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown