Mathematicaのわかりやすいイントロダクション 〜導入編〜

## Mathematicaとは（概要）

Mathematicaはウルフラム・リサーチ社の創始者であるスティーブン・ウルフラムらが1988年にリリースした数式処理システムです。
Mathematicaというのはソフトウェアの名称で、言語としてはWolfram言語という名称で統一されています。ただし、Wolfram言語をちゃんと扱える環境は現状Mathematicaのみです。

簡単なプログラムの紹介して、その凄さを実感してみましょう。

<img width="792" alt="mathematica_sin_frac_pi_4.png" src="https://qiita-image-store.s3.amazonaws.com/0/6117/1a9be1b6-0eb1-9f00-e832-363fe0a7aba2.png">


```mathematica
Sin[Pi/4]
```

に対して

$\\frac{1}{\\sqrt{2}}$

と返ってきます。
Mathematicaは対話型のインターフェイスなので、コードを実行するとすぐに結果が返ってきます。

Piは厳密、平方根も厳密、三角関数お手の物、というわけです。


他によく出てくる例で

```mathematica
100!
```

とかどうでしょう。

<img width="790" alt="mathematica_factorial_100.png" src="https://qiita-image-store.s3.amazonaws.com/0/6117/6481b7de-1eb9-49c5-d8da-236d1ae2f245.png">

これも、爆速で

```
9332621544394415268169923885626670049071596826438162146859296389521759\
9993229915608941463976156518286253697920827223758251185210916864000000\
000000000000000000
```

と答えが出てきます。32ビットとか64ビットとか関係のない、厳密値計算ができます。しかも高速に。


大学の研究では[MATLAB](http://qiita.com/tags/matlab)もよく使われるので比較対象となり得ますが、
MATLABはあくまでも[数値解析ソフトウェア](https://ja.wikipedia.org/wiki/%E6%95%B0%E5%80%A4%E8%A7%A3%E6%9E%90%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)であり、
[数式処理システム](https://ja.wikipedia.org/wiki/%E6%95%B0%E5%BC%8F%E5%87%A6%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)であるMathematicaはできることがかなり異なります。
（その点では同じ数式処理システムである[Maple](https://ja.wikipedia.org/wiki/Maple)と比較したほうがいいでしょう。）

他のプログラミング環境では未だサポートが不充分な複素数が扱えたり、そもそも組み込み関数が5,000個近くあるので、知れば知るほど機能に圧倒されるでしょう。

## Mathematicaの能力を手に入れるには
Mathematicaを使うには、以下の方法があります。

### 買う。

[Wolfram Mathematica](http://www.wolfram.com/mathematica/)の公式サイトから
オンライン購入できます。

[HULINKS](http://www.hulinks.co.jp/software/mathematica/) や [菱化システム](http://www.rsi.co.jp/kagaku/cs/mathematica/index.html) などの国内代理店からも購入できます。

OSはWindowsでもMacでもLinuxでも利用できます。

…ただ、べらぼうに高価です。

アカデミック版やHome Editionならまだ手に届きやすい価格で手に入れられます。


### Raspberry Piを買う。

実は有償ソフトであるMathematica、ソフトウェア自体を無料で手に入れる方法があります。
Raspberry Piです。

ちょうど2年前、Mathematicaのサブセット版及びその記述言語であるWolfram言語を、Raspberry Piの標準イメージ環境であるRaspbianに向けて無償提供されました。

現在標準的に普及している[Raspberry Pi 2 Model B](http://www.amazon.co.jp/Raspberry-Pi-NN-832-6274-Model/dp/B00T356SFO)
は約5,000円で入手できるのでこれが最安でMathematicaを手に入れる方法です。

つい先日、最新版の[Raspberry Pi Zeroが発売](http://www.gizmodo.jp/2015/11/1000raspberry_pi_zero.html)されたみたいなので、
1,000円足らずでMathematicaを手に入れられるようになります！

ただしRaspberry Piはマシンスペック的には低いので、画像や音声を使った本格的なデータ処理は期待しない方がいいでしょう。


### Wolfram|Alphaで雰囲気を味わう

ちょっと（というか用途によってはかなり）違いますが。
[Wolfram|Alpha](http://www.wolframalpha.com/)ではある程度Wolfram言語がサポートされているので、
Mathematicaで使うようなプログラムの一部を実行することができます。

先ほどのプログラムも、
[こんな風だったり](http://www.wolframalpha.com/input/?i=Sin%5BPi%2F4%5D)

![wolframalpha_sin_frac_pi_4.png](https://qiita-image-store.s3.amazonaws.com/0/6117/38684beb-5cb0-361a-da58-1543bc7be647.png)

[こんな風に](http://www.wolframalpha.com/input/?i=100%21)

![wolframalpha_factorial_100.png](https://qiita-image-store.s3.amazonaws.com/0/6117/f5802734-960a-487f-67e0-8bc4bb11099c.png)

求められます。

Wolfram|Alphaは[Androidアプリ版](https://play.google.com/store/apps/details?id=com.wolfram.android.alpha)、[iOSアプリ版](https://itunes.apple.com/us/app/wolframalpha/id334989259)もあります。
ただし、有料アプリです。

### なんかすごい技を使わせてもらう

これは裏ワザなのでおまけです。
ブラウザー用のプラグインとして[Wolfram CDF Player](https://www.wolfram.com/cdf-player/)というものがあり、これを使ってある程度Mathematicaと同じ体験ができます。
本来はパラメーターを少しずつ変えながらグラフィックの変化を見る程度の体験しかできないのですが、「UMM」（Universal Mathematica Manipulator）というハッキングがされました。数値しか弄られないのを逆手に取って、Mathematicaコードを一旦数値を介して実行するというものです。（現在も動作するかは確認してません。）

[Wolfram CDF PlayerをMathematicaとして使う方法 | 配電盤](http://blog.unfindable.net/archives/3978)

とはいえ、CDFは任意のコードを敢えて実行できないように作っているので、言わばコピーガード解除をしているようなものです。
個人的にはWolfram言語はオープンにしてほしいと思っているので、こんなことしなくても実行できれば有難いですが、
現状はデモをデモとして楽しみつつ、興味があれば有償のMathematicaを買ってプログラミングを楽しみましょう。

### Jupyter Notebook

Wolfram言語を無料を動かす今ある方法でベストなのはJupyter Notebookを使う方法です。
試しに入れてみましたが、導入も割と簡単でした。（ただしアカウント作成が必要です。）

#### 参考記事

[実質無料でWolfram言語(Mathematicaの中身)が使えるようになったらしい - Qiita](https://qiita.com/Y_F_Acoustics/items/662709fa6f31443a3e71)

[Wolfram Engine を導入して Jupyter-notebook で動かすまで - Qiita
](https://qiita.com/Mizuto_Kadowaki/items/0f8ac51c7c00303f456e)