hirax.net::inside out::2009年09月29日

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2009年8月 を読む << 2009年9月 を読む >> 2009年10月 を読む

2009-09-29[n年前へ]

IronRuby + Mathematica Player で無料数学演習講座 

 昨日に引き続き、IronRuby + Mathematica Player で色んな数式処理をしてみることにします。まずは、昨日のスクリプトのEvaluateToOutputFormの部分を

result=kernelLink.EvaluateToOutputForm(
          "NSolve[x^9+x^4+x+5==0,x]", 0)
と変えてみます。つまり、9次の代数方程式を数値的に解いてみよう、というわけです。すると、答えはこんな風に返ってきます。
{{x -> -1.22021}, {x -> -0.859627 - 0.712543 I}, {x -> -0.859627 + 0.712543 I},{x -> -0.277212 - 1.208 I}, {x -> -0.277212 + 1.208 I}, {x -> 0.607409 - 1.01612 I}, {x -> 0.607409 + 1.01612 I}, {x -> 1.13953 - 0.477782 I}, {x -> 1.13953 + 0.477782 I}}
9次の代数方程式の解が一瞬で(数値的に)求まってしまいます。

 また、

result=kernelLink.EvaluateToOutputForm(
       "Simplify[a x + b x +c x -d]", 0)
といった風にすると、"a x + b x +c x -d"を簡約化した答えを返してくれます。たとえば、こんな風です。
-d + (a + b + c) x
この簡約化する作業は間違えてしまうことが多い割に、結構行うことも多い作業だったりするので、Simplifyが使えるのは、とても便利です。

 もしも、""Solve[a x^4 + b x^3 +c x^2 -d x + e==0,x]"といったコマンドを投げれば、4次代数方程式の解が帰ってくるわけですが、その解を張り付けるにはこのスペースがあまりに狭すぎるので、貼り付けるのはちょっと止めておくことにしましょう。

 あるいは、上の5次方程式で使われている変数に前もって値を代入してやれば、つまり、"a=0;b=0;c=0;d=3;e=1;Solve[a x^4 + b x^3 +c x^2 -d x + e==0,x]"といったコマンドを投げてやれば、

       1
{{x -> -}}
       3
という風にきちんと答えが返ってきます。
result=kernelLink.EvaluateToOutputForm(
    "a=0;b=0;c=0;d=3;e=1;",
    0)
result=kernelLink.EvaluateToOutputForm(
    "Solve[a x^4 + b x^3 +c x^2 -d x + e==0,x]",
    0)
といったように、複数回に分けてコマンドを投げても大丈夫です。自分で苦労して解かなくて済むと、数学の問題も少し楽しく思えます。

 というわけで、Mathematica Playerと.NET/Linkをダウンロードすると、IronRubyなどからMathematicaの機能のかなりの部分を使うことができ、数学の世界を苦労せずに覗いてみることができます。Mathematicaのマニュアルを見ながら、色んな数式処理をさせてみると、きっと面白いと思います。