非常に初歩的なものでも問題ありません。x + 1のようなものを入力して評価するようなものです。ここで、xは指定できる変数です。
数式ごとに文字列を使用して独自に作成することや、数式を解析するための正規表現などを考えていましたが、目標はできるだけ怠惰になることであり、別のオプション(特に正式なオプション)がある場合はそれを想定します。 )、最初は代わりにそれを使用したいと思います。
このようなことをするものはありますか?
私は次のライブラリを知っています:
Symja Parser(GPLライセンス)はMathematicaのような構文をサポートしています
Jep-Java Math Expression Parser(商用-GNU Public Licenseに基づく古いバージョン?)
JFormula(商用)
MathEval-数式エバリュエーター(パブリックドメインおよび非常に小さなフットプリント)
Java 6のスクリプトを使用することを考えることができます。リファレンスJDKにはJavaScript実装が付属しており、他の言語をプラグインすることもできます。
OpenDocumentのOpenFormula標準に基づく数式評価ライブラリであるLibFormulaを試すことができます。
OpenFormulaはスプレッドシートアプリケーション用に作成されており、Excelの数式に近い構文を使用しています。詳細については、Pentaho-Wikiをご覧ください。
サンプル:
=[x]+1
Lex/YACC の学習例として、まさにこれを行うための Java ライブラリを自分で作成しました。それはうまく機能しているように見えるより大きなプロジェクトに組み込まれました。より大きなプロジェクトを再び開始する場合は、上記のアドバイスに従い、Java スクリプト エンジンを使用します。
私は数年前にJEPを使用して成功を収めましたが、まだ積極的に開発されているようです。当時はより寛容なライセンスを持っていたと思いますが、おそらく自分でコーディングするよりも安価です (正確なニーズとスキルによって異なります)。
formula4jと呼ばれる新しいツールに興味がある人もいるでしょう。
商用なので万人向けではありません。
私がApache License 2.0の下でリリースしたexp4jをチェックアウトできます。ダイクストラの分流場アルゴリズムを実装しており、次のような多変数関数でうまく機能します。f(x,foo)=log(foo^(x^-1))
多分MathML?
MathML は、マシン ツー マシン通信の基礎として数学を記述するための低レベルの仕様であり、Web ページに数式を含めるために必要な基礎を提供します。また、科学技術のワークフローを公開する場合や、数学をソフトウェアで処理する必要がある場合にも重要です。新しいバージョンでは、たとえば、数学のアクセシビリティや、右から左に記述される言語の数式が改善されています。コミュニティは 7 年間の経験があるため、基本的なマークアップは同じままです。