hirax.net::Keywords::「数式処理」のブログ



2009-06-11[n年前へ]

計算知識エンジン「Wolfram|Alpha」,ガジェットや各種ツールを公開 

 計算知識エンジン「Wolfram|Alpha」,ガジェットや各種ツールを公開

 数式処理ソフト「Mathematica」の米Wolfram Researchは米国時間2009年6月10日,計算知識エンジン「Wolfram|Alpha」用のウィジェット/ガジェットやツールバー,アドオンなどを公開したと発表した。これにより,WebブラウザにURLを入力したりブックマークを開いたりすることなく,さまざまな方法でWolfram|Alphaの機能を利用できる

2009-07-30[n年前へ]

サイバネットシステム、Maplesoft社を子会社化 

 サイバネットシステム、数式処理ソフトを開発・販売するカナダ社を株式取得し子会社化

 Maplesoft社は、対話的な数式処理ソフトウェア『Maple(メイプル)』を開発・販売するリーディングカンパニーで、数式処理技術及び科学技術計算に豊富な経験と実績を有しております。
 また、Maplesoft社は、昨年末に、製造業向けに複合物理モデリングツール『MapleSim(メイプルシム)』をリリースしており、世界の大手自動車メーカー、精密機器メーカー、電機メーカー等に向けたソリューション販売を始めております。

2009-09-28[n年前へ]

無料配布のMathematicaカーネルをIronRubyから自由自在に使ってみよう 

 .NET Framework上で動作するRubyであるIronRubyを使い始めました。使い始めた理由は、(なかなか使う機会がなかった).NETを難しいことを考えずに簡単に使うことができそうだったからです。というわけで、まず一番最初に「無料配布のMathematicaカーネルをIronRubyから自由自在に使う」ということを試してみることにしました。

 ウルフラム・リサーチから無料で配布されているMathematica Playerには、最高に高度な数式処理プログラムである Mathematicaのエンジンが完全に内蔵されています。そこで、そのMathematicaのエンジン部であるMathKernel(Mathematica Playerと一緒に配布されている)を.NETを用いて操作し、IronRubyで自由自在に数式処理をしてみることにします。

 まずは、Mathematica Playerをダウンロード&インストールします、さらに、Mathematicaを.NETインターフェースから使うことができる.NET/Linkもダウンロード&解凍します。そして、もちろんIronRubyも必要なのでダウンロード&解凍しておきます。最後にあともうひとつ、Examples\Part2\SimpleLinkに入っているWolfram.NETLink.dllを取り出して、次に書くRubyコードと同じディレクトリにでも放り込んでおきます。

 あとはRubyのコードを書くだけです。たとえば、こんな具合です。

require 'Wolfram.NETLink'
include Wolfram::NETLink

kernelLink=MathLinkFactory.CreateKernelLink()
kernelLink.WaitAndDiscardAnswer()
result=kernelLink.EvaluateToOutputForm(
        "Solve[a x^2+b x+c==d,x]", 0)
puts result
kernelLink.close
 このコードを、(IronRubyのbinディレクトリ中にある)ir.exeを使い、ir.exe hoge.rbという具合に実行してみます。すると、まず最初の2行で、"Wolfram.NETLink.dll"を読みこんで、.NET/Linkの機能を使えるようになります。そして、MathLinkFactory.CreateKernelLink()でMathematicaカーネルとの通信を開始し(この時、ダイアログが現れるので、たとえばC:\Program Files\Wolfram Research\Mathematica Player\7.0といったパスにあるはずの、MathKernel.exeを選択します)、EvaluateToOutputFormでコマンド文字列をMathematicaカーネルに送り・評価させ、評価結果を(見やすいOutputFormでフォーマットされた)文字列として受け取ります。最終行では、結果を表示しています。

 この例の場合は、

a x^2+b x+c==d
という二次方程式を解くようにMathematicaカーネルにコマンドを送っているので、その解がRubyに渡り、おなじみの二次方程式の解が最後に表示されます。
                  2                                     2
       -b - Sqrt[b  - 4 a c + 4 a d]         -b + Sqrt[b  - 4 a c + 4 a d]
{{x -> -----------------------------}, {x -> -----------------------------}}
                    2 a                                   2 a

 もしも、最小値問題でも解きたければ、

result=kernelLink.EvaluateToOutputForm(
           "Minimize[2x^2-3x+5,x]", 0)
といったコードでも書けば、2x^2-3x+5を最小にするxをMathematicaエンジンが見つけ出し、
 31        3
{--, {x -> -}}
 8         4
という具合に、その結果をIronRubyに渡してくれます。自分で書くと結構大変な数式処理も、世界最高峰のMathematicaエンジンを使うことができると、非常に簡単な作業に変身します。

 無料配布のMathematicaカーネルをIronRubyから自由自在に使うことができる、というのはとても便利に思えます。

2009-10-17[n年前へ]

エクセルからMathematica(無料Player)の計算機能を使う 

 今日は、「Microsoft ExcelからMathematicaの計算機能を使う」ということをしてみたいと思います。エクセル(Excel)のシートにMathematicaのコマンドを入力して、その評価を(無料で使うことができるMathematica Playerに付属する)MathematicaKernel.exeに評価させよう、というわけです。もちろん、その評価された結果をさらに通常のエクセルの機能を使って操ってやろう、ということになります。

 ExcelからMathematicaの機能を使うには、色々な実現方法がありますが、今回は「無料配布MathematicaカーネルとNET Framework実装IronRubyでグリッド・Matheatica計算環境は5分で作れる」で作った、「URIを介して渡されたコマンドを実行した結果を返すWEBサーバ・アプリケーション」とエクセル(Excel)の「WEBクエリ機能」(「Excel VBA WEB連携術―2007/2003対応 」参照)を使って実現してみることにします。

 まずは、「無料配布MathematicaカーネルとNET Framework実装IronRubyでグリッド・Matheatica計算環境は5分で作れる」で作ったサーバを立ちあげましょう。たとえば、

ir.exe mathematicaServer.rb 80
という具合にして、適当なポート(この例であればhttpの標準ポートである80番)でコマンドを待ち受けるWEBサーバが起動します。

 次に、エクセルのセルを選択し、(エクセル2003くらいのバージョン以降に備わっている機能である)「WEBクエリ」をします。エクセル2007であれば、「データ」-「WEBクエリ」で、URLを入力してやるのです。つまり、今回の例であれば、"http://localhost/evaluate/2+2"といった風に入力をしてやれば良いわけです。すると、小さなブラウザ風の画面が表示され、そこに"2+2"の計算結果が表示されます。後は、下のブラウザ風画面の下にある「取り込み」ボタンを押すと、「開いています ダイアログ」が表示された後に、「データを返す先のセル選択ダイアログ」が表示され、セル中にMathematicaカーネルによる評価結果が入力されるのです。エクセルとマセマティカ・カーネルとの間で、httpを介してデータがやりとりされる、というわけです。

 その実行過程を、もしも、エクセル側のVBAマクロを使って行うと、こんな具合になります。

Sub httpGet()
 Range("E3").Select
 With Selection.QueryTable
  .Connection = "URL;http://localhost/evaluate/2+2"
   .WebSelectionType = xlEntirePage
   .WebFormatting = xlWebFormattingNone
   .WebPreFormattedTextToColumns = True
   .WebConsecutiveDelimitersAsOne = True
   .WebSingleBlockTextImport = False
   .WebDisableDateRecognition = False
   .WebDisableRedirections = False
   .Refresh BackgroundQuery:=False
 End With
End Sub

 つまり、エクセルを使っているように見えて、そのエクセルは実は単なるMathematicaカーネルのフロントエンドとして使われている、というようなワザも行うことができるわけです。しかも、そのMathematicaカーネルは、(無料で使うことができるMathematica Playerに付属する)MathematicaKernel.exeだったりするわけで、「安い・うまい・早い」の三拍子が揃った、超お手軽便利ツールになる可能性があります。そう考えると、プロトタイピングお手軽版ではなく、真面目にMathematicaカーネルを操作するWEBアプリを書いてみようか…という気になってきます。

2009-10-22[n年前へ]

「Windows 7の数式入力パネル」で手書き数式処理プログラムを作る…!? 

 Windows 7を試用してみよう、と思います。理由は、「Windows 7ソフトウェアレビュー - アクセサリの数式入力パネルで楽々数式入力編」で遊んでみたいからです。

 Windows 7で新たに追加されたツールに数式入力パネルがある。その名前の通り、ポインティングデバイスで、手書きで入力した数式を、自動認識してくれるというツールである。

 以前、数式処理プログラムMathematicaの世界戦略統括責任者であり、開発者Stephen Wolframの弟でもあるコンラッド・ウルフラムに、「手書き(Tablet)Mathematicaをなぜ出さないのか?」と尋ねたことがあります。

 その時は、「そういう試作品はすでに作った。しかし、未だ市場ニーズがない」というような答えを聞いたように思います。それは、決して「Wolfram AlphaのiPhoneアプリ」のような今一つ感にも・割高感にも溢れるものでなかったのでは?と思っています。

 「欲しいものがなければ、作ろう」というわけで、Windows 7の数式入力パネルを試してみるつもりです。もちろん、Mathematica PlayerのMathematica カーネルと組み合わせてみよう、というわけです。AutoHotoLinkやAtokとの組み合わせにチャレンジした後は、当然「手書き数式処理をしてみよう」というのが、当然予期されるだろう自然な流れ、ですよね。



■Powered by yagm.net