- PR -

数式処理API

投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2005/02/24
投稿数: 55
投稿日時: 2005-06-07 16:12
自己調査で行きづまってしまったので助けてください。

現在、開発のために数式処理を行ってくれるAPIを探してます。
イメージとしては
[10x+20y*30-10z]などの数式を外部ファイルとしてもち、
その数式にしたがって計算を行ってくれるAPIです。

インターネットで調べたところ
jFormula,MapleなどのAPIは見つけたのですが、
どちらもライセンスが必要なため、
フリーのAPIを希望してます。

数式自体は4則演算と括弧の計算ができればいいだけです。
そんなAPIをご存知の方がいれば教えてください。


Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2005-06-07 17:00
有名なものでは MATLAB や MuPAD がありますが、どちらも商用製品に使う場合は有償ライセンスが必要ですね。

書かれた要件自体は比較的シンプルなので、ご自身で作成されるというのはいかがでしょう。

式自体は単純な木構造で表現できますし、葉は定数か変数シンボルになると思います。
式に対して変数シンボルを値に結びつける表を渡して、後は再帰的に計算する方法で実現できそうです。
比較的面倒なのが演算子中置型の数式の解析ですが、JavaCC という、式の文法を定義したファイルを与えるとその式を解析できるようなプログラムを生成するツールがあります。
これを使えば割と楽に実現できると思いますが、いかがでしょうか。
(JavaCC 自体は、再配布に関しては BSD ライセンスです。JavaCC を使って生成したプログラムには、JavaCC 自身のライセンスは及びません。)

ただし、投稿された方ご本人かお近くの方に、Extended Backus-Naur Form を理解し、簡単なコンパイラを設計開発できるスキルが必要です。
未記入
ベテラン
会議室デビュー日: 2005/02/24
投稿数: 55
投稿日時: 2005-06-07 18:04
Gio 様

わざわざ教えていただきありがとうございます。
フリーでありそうだと思ったんですが、
意外とないんですね。

JavaCCを使う案はちょっと遠慮しておきます。

どうやら自分で作るしかなさそうですが、
こんなサイトもみつけたので
http://homepage3.nifty.com/ymakise/java/Expression/
参考にしながらやってみます。

どうもありがとうございました。




Keisuke
大ベテラン
会議室デビュー日: 2003/10/24
投稿数: 105
投稿日時: 2005-06-07 18:13
“わざわざ”ですか・・・
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2005-06-08 09:57
わざわざ教えて差し上げたのにお役に立てなくて残念です

引用:

こんなサイトもみつけたので
http://homepage3.nifty.com/ymakise/java/Expression/
参考にしながらやってみます。



残念ながら、このサイトで公開されているプログラムは、JavaCC 等で独自の数式データモデルを作成してそれを評価するだけの方法よりも高度なことをやっています。
(数式の擬似アセンブラ展開と実行、リフレクションを使ったメソッドシンボル解決と評価など)
投稿された方に理解できるのか心配です

書き漏らしたので補足:
挙げられたサイトの内容をもとに自作される場合は、サイト作成者の方に連絡して、二次著作物を作成して商用利用する旨の許可をいただいてくださいね。
個人サイトだからといって決して無償とは限らないことにもご注意ください。

[ メッセージ編集済み 編集者: Gio 編集日時 2005-06-08 10:02 ]
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2005-06-08 10:27
…危ない気配^^;

>[10x+20y*30-10z]などの

「など」でよい(数式のフォーマットが自由になる)なら、Jakarta-BSFとい
う手もありますよ。好みのスクリプト言語のプログラム文字列(Pythonとか
JRubyとかJavaScriptとか)をJavaプログラム上で評価実行することが出来
ますので、式のフォーマットにこだわらないなら目的は達成できるかと。

http://jakarta.apache.org/bsf/
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2005-06-08 10:58
引用:

わざわざ教えていただきありがとうございます。
フリーでありそうだと思ったんですが、
意外とないんですね。


「パーサジェネレータ(Parser Generator)」で検索してみると結構引っかかって来ると思いますよ。
Javaやってないからよーわからんのだけど、AntlrとかJFlexとか。
難しそうでも「まず、何かサンプルを動かせる環境を作ってみて」から段々と手を付けて見れば何時の間にか分かるようになっていくと思います。
(以前、bisonとかboost::spritいじってる時がそうだったし。もしC++が分かるのならsprit見てみる事お奨め。思わずのけぞってしまう事請け合い(笑))

(「わざわざ」にひっかかるのがよーわからんけど、「わざわざ教えて下さったのに、活用出来なくて申し訳ありません。」みたいな言い方もするし、別に変じゃないんじゃないかな?)
Bikki
会議室デビュー日: 2003/02/05
投稿数: 5
投稿日時: 2005-06-08 12:28
ちょっと、手前ミソですが...

http://www.fiverworks.com/
のXoneはJ2EEフレームワークなんですが、これには数式処理をJavaCCを使って
実装しています。パーソナル版はフリーです。

スキルアップ/キャリアアップ(JOB@IT)