Джава:Доступен ли инструмент, который позволит мне вводить, хранить и оценивать математические формулы?
Вопрос
Даже что-то очень элементарное подойдет.Это похоже на ввод и оценку чего-то вроде x+1, где x — это переменная, которую я могу указать.
Я подумывал написать свои собственные, используя строки для каждой формулы, регулярное выражение для их анализа и т. д., но давайте предположим, что моя цель — быть настолько ленивым, насколько это возможно, и что если есть другой вариант (особенно формальный) ), я бы лучше сначала попробовал использовать это.
Есть ли что-нибудь, что делает что-то подобное?
Решение
Вы можете подумать об использовании сценарии из Явы 6.Эталонный JDK поставляется с реализацией JavaScript, и вы также можете подключить другие языки.
Другие советы
Я знаю следующие библиотеки:
Сымья Парсер (Лицензия Apache) поддерживает синтаксис, подобный Mathematica.
JParser (Лицензия BSD)
Jep — анализатор математических выражений Java (коммерческий – старые версии под публичной лицензией GNU?)
JФормула (коммерческий)
ДжЕваль (Лицензия Apache)
MathEval — средство оценки математических выражений (общественное достояние и очень небольшой объем)
я использовал ДЖЭП с успехом пару лет назад и, похоже, до сих пор активно развивается.Я считаю, что в те времена у них была более либеральная лицензия, но это, вероятно, дешевле, чем писать код самостоятельно (в зависимости от ваших конкретных потребностей и навыков).
Я создал библиотеку Java, чтобы сделать именно это, в качестве учебного примера для Lex/YACC для себя.Он был включен в более крупный проект и, похоже, работает хорошо.Если бы я снова начал более крупный проект, я бы последовал совету выше и использовал механизм сценариев Java.
Вы могли бы попробовать LibFormula, библиотека проверки формул, основанная на стандарте OpenFormula компании OpenDocument.
OpenFormula была написана для приложений с электронными таблицами и использует синтаксис, близкий к формулам Excel.Более подробную информацию можно найти в Пентахо-Вики
Образец:
=[x]+1
вы можете проверить ехр4j который я выпустил под Лицензия Апач 2.0.он реализует алгоритм сортировочной станции Дейкстры и хорошо работает с функциями с несколькими переменными, такими как f(x,foo)=log(foo^(x^-1))
Некоторых может заинтересовать новый инструмент под названием формула4j.
Это коммерческое предложение, поэтому оно не для всех.
Может быть МатематикаML?
MathML — это низкоуровневая спецификация для описания математики как основы межмашинного взаимодействия, которая обеспечивает столь необходимую основу для включения математических выражений в веб-страницы.Это также важно при публикации рабочих процессов в области науки и техники, а также везде, где математика должна обрабатываться с помощью программного обеспечения.В новой версии, например, улучшена доступность математики и формул на языках, написанных справа налево.Базовая разметка остается прежней, поскольку у сообщества есть семилетний опыт работы с ней.