Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/fontdata.js
Back
Close

Recueil d'exercices pour apprendre Python au lycée

M_C
26.9K views
Previous: Retirer les doublons Next: Triangle de Pascal

Tracer la courbe représentative d'une fonction

Difficulté : Moyenne

Pour tracer une courbe, une calculatrice ou un ordinateur ne calcule pas les coordonnées de tous les points de la courbe (il y en a une infinité). Ils se contentent de calculer régulièrement des valeurs de la fonction puis relie les points par des segments qui ne se voient presque pas à l'oeil nu. C'est ce que nous allons faire.

On considère donc une fonction f sur un intervalle [a,b]. On note n le nombre de segments que nous allons tracer pour représenter notre courbe. Pour ce faire, on va procéder par étape :

  1. On crée une liste liste_abscisses de n+1 abscisses répartis uniformément sur l'intervalle [a,b]. Pour cela, on crée une liste contenant la suite de valeurs : a, a+ban, a+2.ban, a+3.ban , ... , a+n.ban (On peut remarquer que ce dernier élément vaut b).
  2. On crée une liste liste_ordonnées de n+1 ordonnées dans laquelle on calcule dans le même ordre les images par f des éléments de la liste des abscisses précédente ce qui donnera la liste [f(a), f(a+ban), f(a+2.ban), ... , f(a+n.ban)]
  3. On affiche les segments reliant les points ayant pour abscisses les valeurs dans liste_abscisses et comme ordonnées les valeurs dans liste_ordonnées. Pour cela nous allons utiliser la fonction plotde matplotlib de la façon suivante : plt.plot(liste_abscisses,liste_ordonnées).
    On peut même rajouter des arguments comme par exemple la couleur ou la façon de tracer les courbes :
    plt.plot(liste_abscisses,liste_ordonnées,color="blue",linestyle=":") donnera une courbe bleue tracée en pointillés.
Détails pour quelques arguments possibles de `plot`
  • Pour les couleurs : Le paramètre color= permet de changer la couleur du tracé. Cette couleur peut être donnée sous plusieurs formes.
    • Sous forme de chaîne de caractères représentant les noms (ou abréviations) pour les couleurs primaires, le noir et le blanc : b ou blue, g ou green, r ou red, c ou cyan, m ou magenta, y ou yellow, k ou black, w ou white. C’est quand même assez explicite, il suffit d’écrire les noms en anglais.
    • Sous la forme d’un tuple correspondant aux valeurs RGB de la couleur. Cependant, ce tuple doit contenir des valeurs entre 0 et 1 (il suffit alors de diviser les valeurs RGB par 255). Ainsi, ce sera color = (255 / 255, 0, 0) pour obtenir du rouge. Notons que nous pouvons ajouter une valeur (toujours entre 0 et 1) à ce tuple pour représenter la transparence alpha.
    • Sous la forme de chaîne de caractères représentant la couleur en notation hexadécimale. On aura donc color = '#00FF00' pour obtenir du vert.
    • Et les adeptes des nuances de gris pourront donner en paramètre une chaine de caractère correspondant à l’intensité en gris. Par exemple color = '0.8' permet d’obtenir un gris pâle.
  • Pour les styles de lignes : On utilise le paramètre linestyle=.
    • "-" est le style par défaut, il correspond à une ligne pleine ;
    • "--" correspond à une ligne en pointillés ;
    • ":" correspond à une ligne formée de points ;
    • "-." correspond à une ligne formée d’une suite de points et de tirets.
  • Pour les points qu'on demande de tracer : De base, ils ne sont pas mis en valeurs pour avoir une jolie courbe mais si on veut les afficher pour les voir, on peut ajouter le paramètre marker= suivit d'un des choix suivant.
    • "x" pour une croix.
    • "o" pour un rond
    • "." pour un point
    • Il y a plein d'autres possibilités comme "*", "+" ...

Le but de cet exercice est de créer un programme qui prend en entrée f, a, b et n et qui affiche la courbe. Pour vérifier les calculs, vous devez aussi renvoyer en fin de programme vos deux listes en utilisant return liste_abscisses,liste_ordonnées (le nom des listes étant à modifier selon votre choix de nom pour ces listes).

Entrée : La fonction f, les bornes a et b de l'intervalle sur lequel on trace la fonction et le nombre n de segments pour tracer la courbe.

Sortie : Votre programme devra tracer avec plt.plot en suivant la méthode décrite au dessus et il devra de plus renvoyer les deux listes liste_abscisses et liste_ordonnées qui ont servi à tracer la courbe en utilisant return liste_abscisses,liste_ordonnées. Cette dernière étape ne sert qu'à vérifier que votre programme est juste. C'est inutile si on souhaite juste tracer la courbe.
On fera attention à ce que le début de la liste des abscisses soit bien a et la fin b car les erreurs d'arrondis peuvent faire sortir de l'intervalle [a,b] et créer des erreurs.

Remarques sur les courbes affichées : Sur chaque ligne, c'est la même fonction qui est représentée une première fois avec une faible valeur de n et la seconde avec une valeur convenable. On remarquera pour la dernière fonction que si on choisit un nombre trop faible, la fonction ressemble à une droite alors qu'en réalité c'est une fonction qui oscille beaucoup à tel point que quand on la dessine plus précisément, on a l'impression que sa courbe forme un rectangle plein (ce qui n'est pas le cas).

Tracer la courbe représentative d'une fonction
import matplotlib.pyplot as plt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io
codingame x discord
Join the CodinGame community on Discord to chat about puzzle contributions, challenges, streams, blog articles - all that good stuff!
JOIN US ON DISCORD
Online Participants