Page 1 of 1

Module TI-Python: exploration module math + comparaisons

Unread postPosted: 25 Nov 2018, 23:40
by critor
Cet article traite entre autres du module TI-Python, au sujet duquel il est rédigé a posteriori et illustré à l’aide des photos de tests prises sur le stand de Texas Instruments aux journées APMEP 2018 puis congrès UdPPC 2018. Nous ne disposons pas à ce jour du module.

Certaines photos ne correspondront pas exactement à ce qui est décrit, car nous avons amélioré le script utilisé entre les deux événements, sans pouvoir reprendre toutes les photos pour diverses contraintes lors du second événement.

Dans tous les cas, notez que ces tests ont été réalisés sur un prototype non final, et que des choses évoquées peuvent changer d'ici la livraison, en bien ou en mal d’ailleurs.

9931Dans un article précédent nous t'avons présenté le TI-Python, module externe permettant l'exécution de scripts Python sur ta TI-83 Premium CE, et t'avions annoncé la présence du module math. Par la suite, nous avions exploré son module builtins.

Aujourd'hui, explorons son module math à l'aide du même script suivant :
Code: Select all
#platforms: (0)TI-Nspire (1)NumWorks (2)Graph 90+E (3)Graph 75+E (4)TI-Python
plines=[29,12,  7, 9,11]
pcols =[53,99,509,32,32]
try:
  import sys
  try:
    if sys.platform=='nspire': platform=0
    if sys.platform=='TI-Python Adapter': platform=4
  except: platform=3
except:
  try:
    import kandinsky
    platform=1
  except:
    platform=2

nlines=plines[platform]
ncols=pcols[platform]
curline=0

def mprint(*ls):
  global curline
  st=""
  for s in ls:
    if not(isinstance(s,str)):
      s=str(s)
    st=st+s
  stlines=1+int(len(st)/ncols)
  if curline+stlines>=nlines:
    input("Input to continue:")
    curline=0
  print(st)
  curline+=stlines

def explmod(obj,hd="",obs="",reset=True):
  global curline
  if(reset): curline=0
  c=0
  for itm in sorted(dir(obj)):
    c=c+1
    try:
      if obs=="":
        try:
          obs=obj.__name__ 
        except:
          obs=str(obj)
          obs=obs[obs.find("'")+1:obs.rfind("'")]
      its=obs+"."+str(itm)
      itv=eval(its)
      mprint(hd+str(itm)+"="+str(itv))
      if itv!=obj:
        c=c+explmod(itv,hd+".",its,False)
    except:
      mprint(hd+str(itm))
  if c>0:
    mprint(hd+"Total: "+str(c)+" item(s)")
  return c


Le script nous liste alors pas moins de 50 entrées retranscrites ci-dessous :
TI-Python wrote:9975>>> from explmod import *
>>> import math
>>> explmod(math)
__name__='math'
.count()=<bound_method>
.endswith()=<bound_method>
.find()=<bound_method>
.format()=<bound_method>
.index()=<bound_method>
.isalpha()=<bound_method>
.isdigit()=<bound_method>
9971.islower()=<bound_method>
.isspace()=<bound_method>
.isupper()=<bound_method>
.join()=<bound_method>
.lower()=<bound_method>
.lstrip()=<bound_method>
.replace()=<bound_method>
.rfind()=<bound_method>
.rindex()=<bound_method>
.rsplit()=<bound_method>
9977.rstrip()=<bound_method>
.split()=<bound_method>
.startswith()=<bound_method>
.strip()=<bound_method>
.upper()=<bound_method>
Total: 22 item(s)
acos()=<function>
asin()=<function>
atan()=<function>
atan2()=<function>
ceil()=<function>
copysign()=<function>
cos()=<function>
degrees()=<function>
e=2.71828
exp()=<function>
fabs()=<function>
floor()=<function>
fmod()=<function>
frexp()=<function>
9984isfinite()=<function>
isinf()=<function>
isnan()=<function>
ldexp()=<function>
log()=<function>
modf()=<function>
9991pi=3.14159
pow()=<function>
radians()=<function>
sin()=<function>
sqrt()=<function>
tan()=<function>
trunc()=<function>
Total: 50 item(s)
50
>>>


Et bien comme tu vas le voir, ce n'est pas parce que deux calculatrices avec Python intègrent le module math qu'elles se valent. Voici ci-dessous la comparaison de ce que renvoient les différents modèles en lançant ce même script :
Casio
Graph 90+E
NumWorks
TI-Python
pour
TI-83 Premium CE
__name__='math'
acos()
acosh()
asin()
asinh()
atan()
atan2()
atanh()
ceil()
copysign()
cos()
cosh()
degrees()
e=2.718281828459045
erf()
erfc()
exp()
expm1()
fabs()
floor()
fmod()
frexp()
gamma()
isfinite()
isinf()
isnan()
ldexp()
lgamma()
log()
log10()
log2()
modf()
pi=3.141592653589793
pow()
radians()
sin()
sinh()
sqrt()
tan()
tanh()
trunc()
__name__='math'
acos()

asin()

atan()
atan2()

ceil()

cos()


e=2.718281828459045


exp()

fabs()
floor()
fmod()
frexp()




ldexp()

log()
log10()

modf()
pi=3.141592653589793
pow()

sin()

sqrt()
tan()

trunc()
__name__='math'
acos()

asin()

atan()
atan2()

ceil()
copysign()
cos()

degrees()
e=2.718281828459045


exp()

fabs()
floor()
fmod()
frexp()

isfinite()
isinf()
isnan()
ldexp()

log()


modf()
pi=3.141592653589793
pow()
radians()
sin()

sqrt()
tan()

trunc()
__name__='math'
acos()
acosh()
asin()
asinh()
atan()
atan2()
atanh()
ceil()
copysign()
cos()
cosh()
degrees()
e=2.718281828459045
erf()
erfc()
exp()
expm1()
fabs()
floor()
fmod()
frexp()
gamma()
isfinite()
isinf()
isnan()
ldexp()
lgamma()
log()
log10()
log2()
modf()
pi=3.141592653589793
pow()
radians()
sin()
sinh()
sqrt()
tan()
tanh()
trunc()
__name__='math'
acos()

asin()

atan()
atan2()

ceil()
copysign()
cos()

degrees()
e=2.71828


exp()

fabs()
floor()
fmod()
frexp()

isfinite()
isinf()
isnan()
ldexp()

log()


modf()
pi=3.14159
pow()
radians()
sin()

sqrt()
tan()

trunc()
Total: 67Total: 47Total: 50Total: 63Total: 50


D'où le classement suivant :
  1. TI-Nspire avec 67 entrées
  2. NumWorks avec 63 entrées
  3. Casio Graph 35+E/75+E et module TI-Python pour TI-83 Premium CE avec 50 entrées
  4. Casio Graph 90+E avec 47 entrées

Les implémentations les plus complètes du module math concernent à ce jour de loin les NumWorks et TI-Nspire.

Les implémentations Casio Graph 90+E, Casio Graph 35/75+E et TI-Python pour TI-83 Premium CE à la différence ne retiennent que ce qui a été jugé utile à un niveau lycée par le ou les développeurs, avec quelques variations d'un modèle à un autre.

Outre l'absence de diverses fonctions dont les fonctions hyperboliques et logarithmes en base 2 et 10, notons que le module TI-Python semble également travailler sur des flottants en simple précision (32-bits), vu le nombre ridicule de décimales affichées pour les constantes de ce module...

Re: Module TI-Python: exploration module math + comparaisons

Unread postPosted: 28 Nov 2018, 13:47
by Zezombye
J'ai ajouté des #define (10 ko de plus :p) du coup j'ai voulu savoir combien j'avais d'entrées, mais le script s'arrête à 26 (en exécutant extmod("math")) :
Image

Je fais comment pour avoir toutes les entrées ?

Re: Module TI-Python: exploration module math + comparaisons

Unread postPosted: 28 Nov 2018, 13:51
by critor
Sais pas, le script tel que communiqué marchait parfaitement avec la dernière version de ton portage.

Re: Module TI-Python: exploration module math + comparaisons

Unread postPosted: 28 Nov 2018, 17:41
by Zezombye
J'ai mis la version 1.5 en ligne, normalement le module math devrait être autant rempli que la nspire/numworks.

Re: Module TI-Python: exploration module math + comparaisons

Unread postPosted: 28 Nov 2018, 18:32
by critor
Merci.

Le script d'exploration de module ne marche apparemment plus avec le module math sur cette nouvelle version.
Il se tape une descente récursive infinie j'ai l'impression :
Image
Image

Je tente de réviser ça dès que possible.

Re: Module TI-Python: exploration module math + comparaisons

Unread postPosted: 28 Nov 2018, 22:48
by critor
Version en cours de développement avec une protection corsée contre les descentes récursives infinies :
Code: Select all
#platforms: (0)TI-Nspire (1)NumWorks (2)Graph 90+E (3)Graph 75+E (4)TI-Python
plines=[29,12,  7, 9,11]
pcols =[53,99,509,32,32]
try:
  import sys
  try:
    if sys.platform=='nspire': platform=0
    if sys.platform=='TI-Python Adapter': platform=4
    platform=0
  except: platform=3
except:
  try:
    import kandinsky
    platform=1
  except:
    platform=2

nlines=plines[platform]
ncols=pcols[platform]
curline=0

def mprint(*ls):
  global curline
  st=""
  for s in ls:
    if not(isinstance(s,str)):
      s=str(s)
    st=st+s
  stlines=1+int(len(st)/ncols)
  if curline+stlines>=nlines:
    input("Input to continue:")
    curline=0
  print(st)
  curline+=stlines

def sstr(obj):
  try:
    s=obj.__name__
  except:
    s=str(obj)
    a=s.find("'")
    b=s.rfind("'")
    if a>=0 and b!=a:
      s=s[s.find("'")+1:s.rfind("'")]
  return s

def explmod(pitm,pitmsl=[],reset=True):
  global curline
  if(reset):
    curline=0
    pitmsl=[sstr(pitm)]
  hd="."*(len(pitmsl)-1)
  spath=".".join(pitmsl)
  c=0
  for itms in sorted(dir(pitm)):
    c=c+1
    try:
      itm=eval(spath+"."+itms)
      mprint(hd+itms+"="+str(itm))
      if spath.rfind(itms)<0:
        pitmsl2=pitmsl.copy()
        pitmsl2.append(itms)
        c=c+explmod(itm,pitmsl2,False)
    except:
      mprint(hd+itms)
  if c>0:
    mprint(hd+"Total: "+str(c)+" item(s)")
  return c


Malheureusement, sur le Python Graph 35/75+E ça plante violemment :
ImageImage
ImageImage

Re: Module TI-Python: exploration module math + comparaisons

Unread postPosted: 28 Nov 2018, 23:39
by critor
Je suis revenu à la version précédente de l'add-in.
Le script ne plante plus.

Re: Module TI-Python: exploration module math + comparaisons

Unread postPosted: 29 Nov 2018, 08:48
by parisse
Je viens de mettre a jour KhiCAS pour Casio Graph 90+e en ajoutant lgamma, copysign qui n'etaient pas implementes. En principe, tout y est, sans avoir besoin de faire from math import * sauf pour quelques synonymes (log2(x):=logb(x,2):;gamma:=Gamma:;fabs:=abs:;function modf(x) local y; y:=floor(x); return x-y,y; ffunction:;radians(x):=x/180*pi:;degrees(x):=x/pi*180)

Re: Module TI-Python: exploration module math + comparaisons

Unread postPosted: 29 Nov 2018, 09:15
by parisse
P.S. @ critor: ce serait sympa de mentionner KhiCAS dans le 1er message, il me semble qu'il y a autant sa place que les implementations non officielles pour TI nspire ou Casio graph monochrome.

Re: Module TI-Python: exploration module math + comparaisons

Unread postPosted: 22 Dec 2018, 00:05
by critor
La nouvelle version 1.5 bêta de CasioPython pour Graph 35/75+E a vu son module math étendu :
Image

Egalité avec le MicroPython TI-Nspire désormais ! :bj:
  1. Casio Graph 35+E/75+E et TI-Nspire avec 67 entrées
  2. NumWorks avec 63 entrées
  3. module TI-Python pour TI-83 Premium CE avec 50 entrées
  4. Casio Graph 90+E avec 47 entrées

Téléchargement : archives_voir.php?id=1824811