Présentation de HaypoCALC
1. C'est quoi HaypoCALC ?
HaypoCALC est une calculatrice symbolique.
La principale différence, par rapport aux calculatrices scientiques classiques,
est que HaypoCALC est une calculatrice symbolique. Cela signifit qu'elle peut
manier des formules. Vous pouvez définir vos variables et vos propres
fonctions. Les utilisateurs de la calculatrice de poche TI89 ne seront pas dépaysé
car je m'en suis beaucoup inspiré. Il y a également deux modes
de calcul : mode exact (le résultat sera toujours exact), et le calcul
approché (les constantes sont remplacées par leur valeur et toutes
les fonctions sont evaluées).
2. Ce qui a été fait
Le projet a été lancé en Juin 2001, depuis la calculatrice
a eu le temps d'évoluer ! HaypoCALC à la version 1.5 c'est :
- Un système de calcul symbolique
- 94 fonctions : de l'arithmétique à la programmation en passant
par la trigométrie, il y en a pour tout le monde !
- 28 opérateurs
- 6 constantes
- La possibilité de définir ses propres variables et fonctions
- Un langage de programmation
- Un gestion avancée des erreurs
Le système de calcul symbolique :
- Sait correctement dériver (fonctions Derive, DeriveN, Taylor et Equivalent)
- Reconnaît des formules et les simplifie. Ex: Cos(ATan(x)) renvoie1/Racine(x^2+1)
- Permet de programmer ses propres fonctions de calcul formel (le code de
la fonction Derive est disponible sous forme d'un script)
3. Quoi de neuf ?
Chaque nouvelle version apporte son lot de nouveautés. Pour la version 1.6 :
- Création de nouvelles fonctions :
- InitHasard() : Initialise arbitraitement le générateur
de nombres pseudo-aléatoires, utile pour obtenir la même
suite de nombres aléatoires.
- EntierAleat(a,b) : Génère un nombre entier aléatoire
compris dans l'intervalle [a;b]
- PlusMoins(x) : Plus ou moins x :-)
- Les parenthèses sont obligatoires pour un appel de fonction. Ben
ouais, il y a avait trop de confusions possibles avant. Exemple : "cos
2x+1" doit être interprété comme "cos(2x)+1",
"cos(2)*x+1" ou "cos(2x+1)" ??? Et surtout on ne pouvait
pas utiliser simultanément une fonction et une variable de même
nom (assez gênant en programmation !).
- La fonction modulo est remplacée par l'opérateur modulo noté
"a % b". Malheuseurement, le pourcent était déjà
utilisé comme préfixe pour les constantes, les constantes sont
alors préfixée avec un dollar : "$pi". Enfin,
le dollard était utilisé pour la fonction Historique, elle a
donc été renommée "@(n)". C'est tout
! Au final, je trouve que l'ensemble est plus cohérent : "%"
fait penser à la divison car "20%" = 20/100, le dollar est
souvent utilisé pour préfixer les variables (langage PHP et
Perl), et pour l'historique ... Il fallait bien trouver un nom :-/
- Ajout de plusieurs simplifications :
- a % n % n -> a % n
- a/-1 -> -(a) ... Quel oubli !
- Signe(x)^(2n) -> 1
- Corrections de bugs (comme d'hab') :
4. Ce qui reste à faire
HaypoCALC a encore de grandes lacunes pour se hisser au niveau d'une calculatrice
telle la TI89, ou un logiciel de calcul comme Maple (que je trouve très
mal programmé en passant) :
- Calcul formel :
- Support des matrices : Faut juste que j'ai le temps, le code est déjà
écrit dans ma tête :-)
- Support des polynômes : Le plus dûr est de les identifier
dans une expression
- Fonction d'intégration : Il faut déjà pouvoir intégrer
un polynôme, puis une fraction rationnelle. Ensuite on s'y rapporte
avec un changement de variable (selon le cas).
- Calcul d'une limite : Trouver une fonction équivalente fonctionne
pas mal, mais ça ne résoud pas les cas ! Le théorème
de l'Hopital peut aider dans les autres cas ... A étudier.
- Factorisation / développement d'expressions
- Support des intervalles : Ce qui permettrait de définir des intervalles
de définitions d'une fonction ! Le GROS problème, trouver
un symbole pour écrire "x appartient à [0..1]"
: x@[0..1] ?
- Résolution d'équation
- Support des nombres complexes
- Interface graphique :
- Librairie graphique : Je pense utiliser la librairie wxWindows
pour garder une bonne portabilité du code.
- Tracé de courbes : fonction (x,y), paramètrée (x,y,t),
séquentielle (u(n)), 3D (x,y,z). Pour commencer, il y a le problème
des fonctions discontinues.
- En attendant, on peut envisager de la couleur en mode console ...
- Support des grands nombres entiers et des réels en précision
arbitraire : je pense utiliser la librairie GMP.
- Traduction du programmation (sûrement avec le logiciel gettext)
Ben ouais, ça fait un paquet de fonctions. Mais au début, je
n'aurai jamais imaginé que j'arriverai à écrire mon propre
langage de programmation. Alors pourquoi ne pas rêver à tout ça ?
Page précédente : Manuel d'utilisation de HaypoCALC version 1.6 -
Page suivante : Premier calcul