Sortie de WxGéométrie version 0.120

Dix mois après la sortie de la version précédente, la version 0.120 de WxGéométrie sort enfin.
Parmi les (très) nombreux changements, beaucoup sont malheureusement invisibles pour l’utilisateur (réorganisation du code, écriture de tests unitaires, etc.)

Voici les nouveautés les plus marquantes :

  • de vraies capacités de calcul formel dans la calculatrice
  • un meilleur support de Linux
  • un meilleur support de LaTex
  • des corrections de bugs dans la partie géométrie

Par contre, malheureusement, les nouvelles versions de matplotlib (0.98) ne permettent plus au module de surface de fonctionner. Il faut donc utiliser la précédente version sans installation de wxgéométrie (0.112.3) en parallèle de celle-ci, si vous en avez vraiment besoin.



De vraies capacités de calcul formel dans la calculatrice :

Tapez par exemple :

f(x)=x^2+3x+4

puis

f`(x)

dans la calculatrice (` s’obtient avec [AltGr] + [7])

Ceci est rendu possible grâce à la librairie sympy ; un grand merci à ses développeurs !

Un meilleur support de Linux

La gestion des évènements a été en partie réécrite, et le module de géométrie dynamique fonctionne désormais (presque) aussi bien sous Linux que sous Windows. Comme je travaille désormais presque exclusivement sous Ubuntu, c’était devenu une priorité ! ;)

Un meilleur support de LaTeX

Le support des formules LaTeX dans les modules graphiques (géométrie et courbe) est amélioré, l’export en pdf aussi (grâce à la nouvelle version de matplotlib).

La calculatrice accepte également la syntaxe LaTeX dans la saisie, mais aussi en export, ce qui permet de faire directement des copier-coller.

C’était également une priorité, puisque j’ai définitivement abandonné OpenOffice.org au profit de LaTeX pour la rédaction de mes cours, devoirs et corrigés.

41 Responses to “Sortie de WxGéométrie version 0.120”


  • Je n’arrive pas à installer wxGeometrie sous Windows XP.

    Une boîte de dialogue m’a conduit vers un fichier setup.exe.log qui avait le contenu suivant.

    Traceback (most recent call last):
    File “setup.py”, line 814, in
    File “setup.py”, line 425, in __init__
    AttributeError: Informations instance has no attribute ‘Numeric_version’

  • Bonjour,
    merci pour ce rapport.
    Je n’ai pas dû mettre en ligne la bonne version, je vais corriger ça.
    Merci de m’avertir d’éventuelles autres erreurs.
    En attendant, vous pouvez essayer la version sans installation.

  • Ok, ce n’est pas un problème de mise en ligne, c’est un nouveau bug -> corrigé.
    Je mets en ligne d’ici 1/2 heure un nouvel exécutable.

  • Le problème devrait être corrigé.

  • Au début cela marche bien jusqu’au choix des fonctionnalités. Puis de nouveau un problème.

    Ce coup-ci, le message est :

    Traceback (most recent call last):
    File “setup.py”, line 607, in OnWizFinished
    File “setup.py”, line 781, in telecharger
    KeyError: 2.6000000000000001

    Sur ce, je vais aller dormir.

    PS : à quoi correspondent ces messages d’erreur ?

  • Bonsoir,
    je suppose que vous avez python 2.6 d’installé ?

    WxGéométrie n’est pas encore compatible avec python 2.6 (parce que numpy ne l’est pas : http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103).

    Il faudrait que je gère ce cas dans le programme d’installation en affichant une fenêtre explicative…

    Ces messages d’erreurs correspondent au script d’installation setup.py ; le script setup.py essaie de détecter la configuration de l’ordinateur, pour voir si toutes les librairies nécessaires sont installées. Comme les librairies évoluent régulièrement, ce n’est pas toujours parfait d’une version sur l’autre (par exemple, Numeric n’est plus supporté, le cas de python 2.6 ne se présentait pas avant, etc.)

  • Effectivement, le problème venait de là car j’avais à la fois Python25 (pour wxGeometrie) et Python26 (pour mon projet info).

    Il faut donc commencer par wxGeometrie sans Python26 puis après installer Python26. C’est un peu dommage car j’ai déjà vu des prog. Python qui demandent le répertoire d’installation.

    Merci.

  • Pourquoi utilises-tu `=AltGR+7 au lieu de ‘ une apostrophe pour désigner la dérivée d’une fonction ?

    Ce n’est pas tout, mais j’ai du travail qui m’attend.

    PS : quels sont dans ton prog. les modules qui gèrent l’utilisation de sympy ?

  • Un dernier message. Pour ce qui est des surfaces 3D, j’ai un peu étudier la question. Il me semble que la seule solution viable (rapide et de qualité) est d’utiliser les bibliothèques dédiées à la 3D (sauf si tu te contentes d’une vision statique ce qui peut suffire).

    Mon projet étant sous PyQT, je vais sûrement voir du côté de pyOpenGL (mais ce ne sera pas dans l’immédiat car pour l’instant j’en suis juste à la mise en page de documents via LaTeX).

  • Bonsoir,
    - d’accord pour python 2.6. Ce qui manque – pour changer – c’est le temps.
    - Pour AltGr+7, c’était une question de cohérence (dans d’autres parties de wxgéométrie, il n’est pas possible de d’utiliser le ‘ pour le “prime” par ce qu’il faut pouvoir accepter les chaînes). Argument discutable…
    - les modules qui gèrent l’utilisation de sympy : mathlib
    - quel est ton projet, si ce n’est pas indiscret ? Je n’en ai pas trouvé trace sur ton site internet…

  • Merci pour les infos.

    Pour mon projet, faute de temps j’avance très, très lentement (mais je l’ai enfin commencé après avoir pris connaissance de PyQt). Je vais me faire un outil pour taper sans difficulté des documents mathématiques au format PDF via LaTeX, au format HTML et aussi en version non voyant (tout sera mis en mot y compris les équations). Mon projet sera tel que le format HTML pourra bénéficier du dynamisme d’Internet (ce que ne permet pas un passage d’un document LaTeX au format HTML). Pour finir, le code utilisé par l’utilisateur au sein du programme sera le plus possible compréhensible par un non initié pour une prise en main très rapide (un peu comme la notation des graphes dans wxGéométrie).

  • Oups j’avais une autre question. matplotllib sait-il gérer l’intéractivité avec la souris ?

  • Oui, tu peux soit utiliser directement la gestion des événements de matplotlib, soit utiliser celle de ta librairie graphique (PyQt pour toi)

    Pour info, WxGéométrie contient un module (non activé par défaut) pour générer des tableaux LaTeX avec une syntaxe assez simple.
    Il n’est pas encore activé parce que la syntaxe n’est pas définitive ; si tu as des idées n’hésite pas.
    Pour le tableau de variations de f(x)=exp(x), par exemple:
    f:-oo;00;-oo|+oo>+oo;0
    Pour h(x)=sqrt(x)
    h:-oo;0;0

  • Zut, le commentaire était trop long, il a été tronqué. Je reprends :
    Pour h(x)=sqrt(x)
    h:-oo;0;0

  • non, c’est le < qui ne passait pas.
    Pour h(x)=sqrt(x)
    h:-oo;0;0<+oo;+oo
    Il permet aussi de générer des tableaux de signes et de valeur, mais la syntaxe est moins évidente…

    As-tu trouvé des bons tutoriels pour PyQt ? Je crois que tu as acheté un livre, lequel ? Il est bien ?

  • Pour PyQt j’ai utilisé le livre « Rapid GUI Programming with Python and Qt » de Mark SUMMERFIELD que je trouve plus ou moins bien fait. Je trouve les exemples trop complets pour une 1ère prise en main. Je ferais (il me reste à rédiger les explications) des tutos quand j’aurais du temps (on m’a proposé de les mettre sur développez.com). Dans mes tutos, je m’intéresse à chaque à des fonctionnalités simples.

    Pour le peu que j’ai réussi à faire, PyQt est assez facile à prendre en main (par exemple, la gestion des scènes graphiques pour le dessin 2D proposé par PyQt ou celui utilisant pyOpenGL est très similaire car c’est PyQt qui se charge du plus dur). Actuellement, je bute sur les histoires de dessin à la souris (je n’avais jamais fait cela auparavant et c’est pas évident de trouver des infos là-dessus).

    Pour le tableau de variation, je ne ferais pas comme tu le proposes car c’est illisible ou presque. Je pense (et tu peux utiliser ma notation tant que tu me cites dans ton prog.) qu’il vaut mieux définir les choses comme suit.

    f(x)=sqrt(x) & f=0 sur E & f=+-inf sur F & f’=0 sur G & f’

  • Moi aussi j’ai été coupé. Hum !!!!

    f(x)=sqrt(x) & f=0 sur E & f=+-inf sur F & f’=0 sur G & f’

  • Et je refais la même bétise que toi… ;-)

    f(x)=sqrt(x) & f=0 sur E & f=+-inf ou int sur F & f’=0 sur G & f’ inf à 0 sur H
    E, F, G et H désignent des ensembles comme tu les notes par exemple.

    Après il est certain qu’il va falloir analyser tout ceci mais ce n’est pas très méchant.

  • J’ai mis à jour l’installeur ; y a-t-il encore l’erreur avec python 2.6 maintenant ?

  • Cela marche très bien.

    Sur ce il se fait tard.

    A bientôt.

  • Désolé, mais je préfère franchement ma notation sur le coup, d’ailleurs je n’arrive pas à comprendre la tienne (f=+-inf ou int sur F) ;-) Et elle est trop longue à écrire àmha.
    L’idéal serait de toute manière que le tableau soit automatiquement généré à l’aide du module de calcul formel… je vais regarder ça à l’occasion.

    Pour ton livre, il traite de PyQt 3 ou de PyQt 4 ?

  • Bonne nuit !

  • Pour le livre, il parle de PyQt 4. Mais si tu t’y mets je me sentirais un peu moins seul car sur les forums il y a très peu de personnes qui utilisent PyQt en amateur. Ceci est sûrement dû à la grande popularité de wxPython.

    Quant à l’utilisation du calcul formel pour les tableaux de signes (et donc de variation), je pense que les fonctionnalités risquent d’être réduites à moins d’accepter des solutions approximatives (car il me semble que la théorie du calcul formel a peu d’algorithmes pour l’étude des inéquations). Si je me trompe, tiens moi au courant.

    Concernant mes notations (qui sont forcément meilleurs que les tiennes ;-) ), j’ai mis momentanément en ligne un fichier PDF d’un vieux projet dans lequel j’utilisais les notations ci-dessus. Je n’ai que les explications détaillées pour le cas d’un tableau de signes. Voir ici : http://www.fileupyours.com/view/227229/EDITION-Projet_M-BC_Comment.pdf . Il est vrai que mes notations ne sont pas forcément courtes mais mon codage se veut lisible facilement. Donc quelqu’un tombant sur le code brut des fichiers que mon prog. analysera doit pouvoir comprendre sans difficulté.

  • Pendant que j’ai 5 sec., je viens de lire sur la liste de diffusion de PyQt que la future version 4-5 supportera les plug-in silverlight, flash et aussi normalement les applets Java.
    A quoi cela peut-il servir ? Il existe un widget qui permet d’afficher des pages ineternet TRES facilement. Si les applets Java sont supportés, on peut alors imaginer utiliser l’applet Jmath3d ( http://jmath3d.aspirine.org/ ) pour visualiser des objets 3D comme sur le site au sein d’une application PyQt en local sans aucune connection à Internet. L’application PyQt se chargerait juste de créer les fichiers Jmath3 que l’applet lieraient (ce type de fichier n’a pas l’air très méchant à faire, et peut-être même qu’il existe sur le net quelqu’un qui a fait cela).

  • “il me semble que la théorie du calcul formel a peu d’algorithmes pour l’étude des inéquations”

    Je ne connais pas trop le sujet, mais j’ai implémenté la résolution d’inéquations simples dans wxgéometrie (essaie la fonction resoudre), ça devrait probablement suffire dans presque tous les cas en 1ère S, et dans plus de la moitié des cas en Tale S (ça ne marchera pas quand il faut utiliser le TVI).
    Pour les autres, il resterait la possibilité de les entrer manuellement.
    La même notation, en un peu moins compact:
    exp:-oo;-oo croit 0;1 croit +oo;+oo
    ou encore :
    exp:-oo;-oo << 0;1 << +oo;+oo

    Note: la fonction resoudre donne parfois des résultats faux avec les exponentielles du fait d’un bug de sympy, que j’ai signalé et qui devrait être bientôt corrigé.

  • Oups :
    exp:-oo;0 croit 0;1 croit +oo;+oo
    ou encore :
    exp:-oo;0 << 0;1 << +oo;+oo
    Hum…!

  • Comment as-tu programmé les résolutions des inéquations ? Je voudrais juste connaître les grands principes.

    Sinon il est vrai que ta notation est compacte, peut-être qu’en mettant entre parenthèses (a ;f(a)) rendrait les choses plus lisibles. As-tu pensé aux cas avec une valeur limite à droite et une autre à gauche ?

    PS : l’auteur de JMath3D m’a dit qu’il travaillait sur un applet utilisant OpenGL. Du coup, je vais laisser en sommeil pour un moment au moins mes idées de vouloir fabriquer un grapheur dynamique sous PyQt (de toute façon je ne dispose pas du temps nécessaire en ce moment).

  • Valeur limite à droite et à gauche (x-> 1/x) :
    f:-oo;0>0;-oo|+oo>+oo;0 pour l’instant
    ça deviendrait donc :
    f:-oo;0 decroit 0;-oo|+oo decroit +oo;0
    ou
    f:-oo;0 >> 0;-oo|+oo >> +oo;0
    ou
    f:(-oo;0) >> (0;-oo|+oo) >> (+oo;0)

    Pour la résolution des inéquations, c’est un peu long à résumer.
    Disons qu’en gros :
    - je cherche à factoriser au maximum
    - je sais trouver le signe dans quelques cas très simples : polynomes de degrés

  • Marrant ta fonction de résolution des inéquations. Les développeurs de sympy bossent là-dessus il me semble. Je regarderais à l’occasion ton module pour voir comment il faut s’y prendre.
    Sinon ta dernière écriture me parait la mieux dans ton cas (mais pas de mon point de vue) car elle est à la fois compacte et lisible une fois que l’on est “initié”.

  • En non coupé ;) , ça donne ça :
    Valeur limite à droite et à gauche (x-> 1/x) :
    f:-oo;0>0;-oo|+oo>+oo;0 pour l’instant
    ça deviendrait donc :
    f:-oo;0 decroit 0;-oo|+oo decroit +oo;0
    ou
    f:-oo;0 >> 0;-oo|+oo >> +oo;0
    ou
    f:(-oo;0) >> (0;-oo|+oo) >> (+oo;0)

    Pour la résolution des inéquations, c’est un peu long à résumer.
    Disons qu’en gros :
    - je cherche à factoriser au maximum
    - je sais trouver le signe dans quelques cas très simples : polynomes de degrés <= 2 essentiellement, exponentielle seule, somme de termes positifs ou négatifs (on procède récursivement)…
    En fait, très très peu d’inéquations sont résolues pour l’instant, mais ça suffit déjà pour une bonne partie des cas vus au lycée (en particulier les fonctions rationnelles qui sont un grand classique).

  • Tout est dans mathlib ?

  • Nous voilà bien partis pour le plus long post de l’année… ;-)

    Je suis en train de lire la documentation de matplotlib. Existe-il un moyen d’avoir des informations sur les formules générées par matplotlib (profondeur[*] et dimensions) ?

    Sinon connais-tu un forum ou une liste de discussion où je pourrais poser des questions plus ou moins techniques ?

    Pour finir as-tu essayé disons de tracer 500 triangles avec matplotlib ? Je voudrais savoir si cela est lent ou non.

    [*] : la profondeur permet de savoir où se trouve la ligne d’écriture dans une formule seule.

  • pour le questions sur matplotlib, mieux vaut en effet poster sur leur liste de discussion : matplotlib(TIRET) users (AT) lists (POINT) sourceforge (POINT) net
    cf. http://sourceforge.net/mailarchive/forum.php?forum_name=matplotlib-users

  • Merci beaucoup.

  • Serais-tu intéressé par un prototype pour tracer des surfaces avec matplotlib (sans possibilité de les bouger à la souris pour le moment mais c’est dejà bien suffisant pour un cours au Lycée). Le rendu serait du type suivant : http://www.fileupyours.com/files/227229/ExempleWORD_Surfaces.pdf . Tu pourrais alors l’intégrer dans wxGéométrie.
    Si les temps de calculs sont raisonnables, alors j’essaierais ensuite de voir comment gérer les mouvements de souris (j’ai un algo en VBA qui marche très bien, une petite formule sur les mouvements de souris).

    Si oui, j’aurais besoin d’un éclaircissement non technique sur matplotlib, siinon tant pis.

  • En fait, je ne t’embetterais pas avec ma question car j’ai trouvé une solution. Je te tiens au courant dès que j’ai un plotter 3D fonctionnel.

  • Salut,
    en fait pour la 3D je viens de découvrir python(x,y) et surtout Mayayvi : http://code.enthought.com/projects/mayavi/docs/development/html/mayavi/ . A tester… Qyuand le temps se fera libre.

  • Encore moi je viens d’essayer et la solution est très performante. Il reste à voir comment personnaliser tout ceci.

    PS : il faut au préalable désinstaller Python25 puis installer python(x,y) (du coup le path de lancement des scripts python 25 change mais ce n’est pas très méchant).

  • Ok, tiens moi au courant !
    Sinon, une extension de PyQt propose de la 3D : http://qwtplot3d.sourceforge.net/web/navigation/gallery_frame.html

  • Je connais QwtPlot mais l’avantage de Mayavi est qu’il propose des exports dans des formats qui me seront utiles : PNG, EPS, PDF, Tex et Wavefront.

    Dès que j’ai quelque chose d’intéressant, je t’en fais part.

Comments are currently closed.