π
<-
Chat plein-écran
[^]

matplotlib.pyplot + turtle dans ton Python Casio; avril 2020

matplotlib.pyplot + turtle dans ton Python Casio; avril 2020

Message non lude critor » 31 Jan 2020, 23:32

Les calculatrices graphiques Casio Graph 90+E et Graph 35+E II disposent d'une application Python intégrée qui a l'avantage de rester disponible en mode examen.
Toutefois, l'interpréteur Python en question ne disposait pas d'un module graphique, ce qui était embêtant dès la Seconde notamment pour le nouveau programme de Physique-Chimie depuis la rentrée 2019. Celui-ci demande en effet entre autres en Python :
  • de construire des diagrammes (nuages de points, histogrammes)
  • de représenter le déplacement d'un mobile ponctuel avec les différentes positions successives et vecteurs vitesse associés

Dans un article précédent, nous t'informions que Casio, comme à son habitude très réactif par rapport aux dernières évolutions des programmes scolaires, avait décidé de t'apporter une solution dès le mois d'avril 2020.

La solution s'approchant à grands pas prendra la forme d'une mise à jour gratuite qui rajoutera un module graphique au Python de ta Graph 90+E ou Graph 35+E II.

Aujourd'hui, dans le cadre de sa newsletter de rentrée 2020, Casio nous présente enfin plus en détails sa solution Python graphique, et nous allons voir jusqu'à quel point elle répond aux exigences des programmes scolaires.

La solution comprend un module Python importable matplotl, un nom qui fait directement penser au légendaire matplotlib.
Cela voudrait-il dire que Casio a fait, contrairement à d'autres constructeurs, le choix d'une certaine compatibilité avec ce qui existe déjà pour ce dernier ? Nous allons voir cela.

Comme matplotlib, le matplotl de Casio dispose d'une fonction bar() pour le tracé d'histogrammes.
Déjà une réponse à un des besoins en Physique-Chimie, même si un usage en Mathématiques n'est pas à exclure, dans la partie Statistiques par exemple. :bj:
Code: Tout sélectionner
from matplotl import *

x = [119.1, 119.3, 119.5, 119.6, 119.9, 120.0, 120.1, 120.3, 120.4]
y = [1, 3, 4, 3, 1, 3, 1, 3, 1]

bar(x, y, 0.08)


Comme avec matplotlib, la fonction scatter() permet de réaliser d'afficher une représentation en nuage de points.
Encore un bon point pour le programme de Physique-Chimie. :bj:
Code: Tout sélectionner
from matplotl import *

x = [100, 110, 120, 130, 140, 150, 160]
y = [105, 95, 75, 68, 53, 46, 31]

scatter(x, y)
axis([80, 170, 10, 130])
text(110, 125, "Nombre d'acheteurs vs prix de vente")
show()



Mais ce n'est pas fini, le programme de Physique-Chimie demande également de représenter le déplacement d'un mobile ponctuel avec les différentes positions successives et vecteurs vitesse associés.
Et bien Casio t'a également repris la fonction matplotlib de tracé de vecteur arrow() afin de te faciliter grandement cette tâche essentielle ! :bj:
Code: Tout sélectionner
from matplotl import *

arrow(0.20, 0.54, 0, -0.15)
arrow(0.30, 0.46, 0, -0.15)
arrow(0.40, 0.59, 0, -0.15)
show()


Ce n'est pas terminé, Casio ne se contente pas d'une simple lecture au mot près des exigences en Python des programmes scolaires dans leur état actuel, mais fait preuve d'une véritable réflexion sur l'évolution des pratiques qu'ils vont induire à l'avenir.

La fonction de tracé de diagramme plot() est également présente. Elle fonctionne comme scatter(), à la différence qu'elle relie les points, et peut donc servir entre autres à tracer des courbes.
Ce sera une formidable occasion en Mathématiques d'aborder par exemple le fonctionnement interne d'un grapheur de fonctions, et donc de mieux comprendre quelles en sont les limites et donc pièges éventuels lors d'une lecture graphique ! :bj:
Code: Tout sélectionner
from matplotl import *

def fonction():
    def f(x):
        return x**3-6*x**2+9*x+1
    start = -0.5
    end = 4.5
    steps = 0.1
    x = [start+i*steps for i in range(int((end-start)/steps)+1)]
    y = [f(j) for j in x]
    plot(x, y)
    show()


Et ce n'est toujours pas tout. Casio nous annonce également une autre fonction principale de matplotlib, boxplot(), pour les diagrammes en boîte ou diagrammes à moustache. :)
Ces derniers fonctionneront toutefois comme dans matplotlib, c'est-à-dire avec la calcul des quartiles à l'anglosaxonne.
Mais Casio a tout prévu, en rajoutant sa propre fonction boxplotFR() qui effectuera pour sa part les calculs de quartiles à la française ! :bj:

Donc qu'est-ce que ça vaut ?

Déjà, le module matplotl de Casio n'est pas exactement une version allégée de matplotlib.
Plus précisément, il s'agit en fait d'une version allégée du sous-module matplotlib.pyplot.
Tu pourras en effet constater comme nous que tous les scripts fournis en exemple par Casio sont parfaitement fonctionnels sous matplotlib, à condition de remplacer la ligne import matplotl par un import matplotlib.pyplot.

Cela n'en reste pas moins extraordinaire d'avoir enfin un matplotlib.pyplot sur une calculatrice graphique ! :bj:

Aussi, contrairement à la concurrence à ce jour, Casio a fait le choix pour ses fonctionnalités graphiques de respecter un standard déjà établi, le choix de la compatibilité avec l'existant, et nous ne pouvons que l'en féliciter ! :bj:
Il sera en effet très facile pour les enseignants et lycéens connaissant matplotlib de rentrer dans l'environnement Python de la calculatrice Casio et de faire des allers-retours entre les deux environnements ! :D

Mais crois-le ou pas, ce n'est toujours pas terminé. Car la solution Python graphique de Casio consiste en fait en deux modules, le deuxième étant turtle comme chez NumWorks, ici encore un standard ! :bj:

Sont déjà annoncées par Casio les fonction suivantes :
  • pendown()
  • penup()
  • pencolor()
  • pensize()
  • forward()
  • backward()
  • right()
  • left()
  • goto()
  • setheading()
  • circle()

Pour l'apprentissage du Python aussi bien en Mathématiques qu'en Physique-Chimie, de quoi s'appuyer avantageusement sur les acquis de Scratch du collège ! :bj:

Code: Tout sélectionner
from math import exp
from turtle import *

for i in range(1,37):
    red=(exp(-0.5*((i-6)/12)**2))
    green=(exp(-0.5*((i-18)/12)**2))
    blue=(exp(-0.5*((i-30)/12)**2))
    pencolor([red,green,blue])
    for i in range(1,5):
        forward(60)
        right(90)
    right(10)


Code: Tout sélectionner
from turtle import *
def koch(n,l):
    if n==0:
        forward(l)
    else:
        koch(n-1,l/3)
        left(60)
        koch(n-1,l/3)
        right(120)
        koch(n-1,l/3)
        left(60)
        koch(n-1,l/3)
    pencolor("blue")
    penup()
    goto(-180,-50)
    pendown()
    koch(4,360)

Source : newsletter Casio lycée rentrée 2020

Référence : https://www.planet-casio.com/Fr/forums/ ... 154&page=1
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: matplotlib.pyplot + turtle dans ton Python Casio; avril

Message non lude Extra44 » 01 Fév 2020, 00:39

C'est prévu pour avril 2020...
Ca fait rêver c sûr
😍
Vivement les tests :D
Avatar de l’utilisateur
Extra44Premium
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 58.4%
 
Messages: 591
Images: 1
Inscription: 20 Jan 2011, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: S.I.

Re: matplotlib.pyplot + turtle dans ton Python Casio; avril

Message non lude Lionel Debroux » 01 Fév 2020, 08:44

Un portage d'un sous-ensemble intéressant de deux APIs standard... c'est très bien de la part de Casio :)
Si seulement tous les constructeurs pouvaient voulaient s'aligner au moins sur ces deux modules... si NumWorks ne le fait pas, des tiers le feront peut-être à leur place (et ça n'empêchera pas NumWorks de récupérer ce qui a été fait), mais c'est plus douteux pour HP et surtout TI.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: matplotlib.pyplot + turtle dans ton Python Casio; avril

Message non lude KikooDX » 01 Fév 2020, 11:45

Superbe nouvelle !
Le nombre de possibilités est assez impressionnant, je suis impatient de bidouiller avec tout ça.
Avatar de l’utilisateur
KikooDX
Niveau 3: MH (Membre Habitué)
Niveau 3: MH (Membre Habitué)
Prochain niv.: 4%
 
Messages: 6
Inscription: 11 Juil 2019, 13:07
Localisation: France
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Décroché

Re: matplotlib.pyplot + turtle dans ton Python Casio; avril

Message non lude edgar13 » 02 Fév 2020, 11:19

Miam miam :favorite:
Mes programmes sont ici: archives_cat.php?auteur=201254
Avatar de l’utilisateur
edgar13Modo
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 97.4%
 
Messages: 589
Images: 24
Inscription: 04 Jan 2019, 20:31
Localisation: Sur TI-Planet voyons
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 1ere année de license maths-info
YouTube: Non
Twitter/X: Non
Facebook: Non
GitHub: Non

Re: matplotlib.pyplot + turtle dans ton Python Casio; avril

Message non lude NeOtuX » 02 Fév 2020, 23:40

Excellente nouvelle. C'est à se demander à quoi serviront les autres menus de la Casio lorsque le Python aura des fonctions qui les remplacent tous !

Merci pour l'article.
Avatar de l’utilisateur
NeOtuXMembre UPECS
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Prochain niv.: 56.3%
 
Messages: 192
Inscription: 18 Mai 2012, 08:58
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: matplotlib.pyplot + turtle dans ton Python Casio; avril

Message non lude compsystems » 03 Fév 2020, 03:38

the characters >>> could be replaced by », with the purpose of saving space

Image
Avatar de l’utilisateur
compsystems
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 40.2%
 
Messages: 256
Inscription: 30 Mai 2011, 13:44
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: matplotlib.pyplot + turtle dans ton Python Casio; avril

Message non lude critor » 03 Fév 2020, 23:25

Article complémentaire sur Planète Casio, avec une comparaison visuelle des affichages graphiques des scripts Python sur calculatrice et sur PC : :)
https://www.planet-casio.com/Fr/forums/ ... p?id=16154
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: matplotlib.pyplot + turtle dans ton Python Casio; avril

Message non lude parisse » 04 Fév 2020, 09:30

Pour memoire, tout ca existe *deja* dans KhiCAS, modulo quelques petites modifications. Pas la peine d'attendre le printemps prochain!

Au passage, je signale des problemes dans les scripts pour la tortue, dans le premier la lettre i est utilisee deux fois comme compteur de boucle dans deux boucles imbriquees, ca ne gene peut-etre pas MicroPython mais meme c'est source d'erreur d'utiliser ce style de programmation (si on veut utiliser la valeur de l'indice!), et cela ne fonctionnera pas dans beaucoup de langages de programmation (dont Xcas, puisqu'on ecrase la valeur du compteur de boucle de la boucle exterieure dans la boucle interieure).
Code: Tout sélectionner
from turtle import *
def f():
for i in range(1,37):
    r=(exp(-0.5*((i-6)/12)**2))
    g=(exp(-0.5*((i-18)/12)**2))
    b=(exp(-0.5*((i-30)/12)**2))
    pencolor([r,g,b])
    for j in range(1,5):
        forward(60)
        right(90)
    right(10)

Le code en anglais fonctionne tel quel sur Xcas mais n'est pour l'instant pas supporte sur la Casio par manque de place, il faut donc l'ecrire en francais
Code: Tout sélectionner
def f():
for i in range(1,37):
    r=(exp(-0.5*((i-6)/12)**2))
    g=(exp(-0.5*((i-18)/12)**2))
    b=(exp(-0.5*((i-30)/12)**2))
    crayon([r,g,b])
    for j in range(1,5):
        avance(60)
        tourne_droite(90)
    tourne_droite(10)


Dans le deuxieme script tortue, il y a des erreurs d'indentation a la fin
Code: Tout sélectionner
from turtle import *
def koch(n,l):
    if n==0:
        forward(l)
    else:
        koch(n-1,l/3)
        left(60)
        koch(n-1,l/3)
        right(120)
        koch(n-1,l/3)
        left(60)
        koch(n-1,l/3)
pencolor("blue")
penup()
goto(-180,-50)
pendown()
koch(4,360)
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3500
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile


Retourner vers News Casio

Qui est en ligne

Utilisateurs parcourant ce forum: Thom986 et 41 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1143 utilisateurs:
>1130 invités
>8 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)