자바:수학 공식을 입력, 저장 및 평가할 수 있는 도구가 있습니까?
문제
아주 초보적인 것조차도 괜찮습니다.x+1과 같은 것을 입력하고 평가하는 것과 같습니다. 여기서 x는 제가 지정하는 변수입니다.
나는 각 수식에 문자열을 사용하고 이를 구문 분석하기 위한 정규식 등을 사용하여 내 자신을 작성하려고 생각하고 있었지만 내 목표는 가능한 한 게으른 것이고 다른 옵션(특히 공식적인 옵션이 있는 경우)이라고 가정해 보겠습니다. ), 대신 먼저 그것을 사용해 보고 싶습니다.
세상에 이런 일을 하는 게 있나요?
해결책
당신은 사용에 대해 생각할 수 있습니다 스크립팅 Java 6. 참조 JDK에는 JavaScript 구현이 제공되며 다른 언어도 연결할 수 있습니다.
다른 팁
다음 라이브러리를 알고 있습니다.
Symja Parser (Apache License)는 구문과 같은 Mathematica를 지원합니다
JPARSER (BSD 라이센스)
JEP -Java Math Expression Parser (상업용 - GNU 공개 라이센스에 따른 이전 버전?)
jformula (광고)
제발 (아파치 라이센스)
수학 - 수학 표현 평가자 (공개 도메인 및 매우 작은 발자국)
나는 사용했다 Jep 몇 년 전 성공으로 여전히 적극적으로 개발 된 것 같습니다. 나는 그들이 당시에 더 허용되는 라이센스를 가지고 있다고 생각하지만, 정확한 요구와 기술에 따라 직접 코딩하는 것보다 저렴할 것입니다.
나는 Lex/YACC의 학습 예제로 정확하게 이것을 수행하기 위해 Java 라이브러리를 만들었습니다. 그것은 더 큰 프로젝트에 통합되어 잘 작동하는 것 같습니다. 더 큰 프로젝트를 다시 시작해야했고 위의 조언을 따르고 Java 스크립팅 엔진을 사용했습니다.
당신은 시도 할 수 있습니다 libformula, OpenDocument의 OpenFormula 표준을 기반으로하는 공식 evluation 라이브러리.
OpenFormula는 스프레드 시트 응용 프로그램을 위해 작성되었으며 Excel-Formulas에 가까운 구문을 사용합니다. 더 많은 정보는 다음에 있습니다 펜타 호위
견본:
=[x]+1
체크 아웃 할 수 있습니다 Exp4J 내가 아래에서 발표 한 아파치 라이센스 2.0. Dijkstra의 분로 된 야드 알고리즘을 구현하고 다음과 같은 다변량 기능과 잘 어울립니다. f(x,foo)=log(foo^(x^-1))
일부는 새로운 도구에 관심이있을 수 있습니다 formula4j.
상업적이므로 모든 사람을위한 것은 아닙니다.
아마도 MathML?
MathML은 웹 페이지에 수학적 표현을 포함하는 데 필요한 기반을 제공하는 기계 대 기계 통신의 기초로 수학을 설명하기 위한 저수준 사양입니다.이는 과학 및 기술에 대한 출판 작업 흐름과 소프트웨어로 수학을 처리해야 하는 모든 곳에서 중요합니다.예를 들어 새 버전에서는 수학 접근성이 향상되고 오른쪽에서 왼쪽으로 작성된 언어의 공식이 향상되었습니다.커뮤니티가 7년간의 경험을 갖고 있기 때문에 기본 마크업은 동일하게 유지됩니다.