Java: Existe-t-il un outil permettant de saisir, stocker et évaluer des formules mathématiques?

StackOverflow https://stackoverflow.com/questions/402833

  •  03-07-2019
  •  | 
  •  

Question

Même quelque chose de très rudimentaire va bien. Comme entrer et évaluer quelque chose comme x + 1, où x est une variable que je peux spécifier.

Je pensais écrire moi-même en utilisant Strings pour chaque formule, regex pour les analyser, etc., mais supposons que mon but est d’être aussi fainéant que possible, et que s’il ya une autre option (en particulier formel), je préférerais plutôt l’utiliser d’abord.

Y a-t-il quelque chose qui fait quelque chose comme ça?

Était-ce utile?

La solution

Vous pouvez envisager d'utiliser les la création de scripts à partir de Java. 6. Le JDK de référence est livré avec une implémentation JavaScript et vous pouvez également brancher d'autres langues.

Autres conseils

Je connais les bibliothèques suivantes:

J'ai utilisé le JEP avec succès il y a quelques années et il semble que ce soit toujours le cas. activement développé. Je pense qu’ils avaient une licence plus permissive à l’époque, mais c’est probablement moins cher que de la coder vous-même (en fonction de vos besoins et de vos compétences).

J'ai construit une bibliothèque java pour faire cela à titre d'exemple d'apprentissage pour Lex / YACC, pour moi-même. Il a été intégré à un projet plus vaste, où il semble bien fonctionner. Si je devais recommencer le projet plus important, je suivrais les conseils ci-dessus et utiliserais le moteur de script Java.

Vous pouvez essayer LibFormula , une bibliothèque de formules basée sur sur le standard OpenFormula d’OpenDocument.

OpenFormula a été écrit pour les applications de tableur et utilise une syntaxe proche de celle des formules Excel. Pour plus d'informations, consultez le Pentaho-Wiki

.

Exemple:

=[x]+1

vous pouvez vérifier exp4j que j'ai publié sous la Licence Apache 2.0 . il implémente l'algorithme de triage de dijkstra et fonctionne bien avec des fonctions à plusieurs variables comme f (x, foo) = log (foo ^ (x ^ -1))

Certains pourraient être intéressés par un nouvel outil appelé formula4j .

C'est commercial, donc ce n'est pas pour tout le monde.

Peut-être MathML ?

  

MathML est une spécification de bas niveau conçue pour décrire les mathématiques en tant que base de la communication machine à machine. Elle fournit une base indispensable à l’inclusion d’expressions mathématiques dans les pages Web. C'est également important pour la publication de flux de travaux scientifiques et technologiques et partout où les logiciels doivent gérer les mathématiques. La nouvelle version apporte par exemple des améliorations pour l’accessibilité des mathématiques et pour les formules en langues écrites de droite à gauche. Le balisage de base reste le même, car la communauté en a sept ans d'expérience.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top