Mathematica

プログラミング言語 >>他のプログラミング言語 ■カテゴリ / ■テンプレート Mathematica（マセマティカ）は、スティーブン・ウルフラムが考案し広く使われている数式処理システム。ウルフラム・リサーチの、ウルフラムが率いる数学者とプログラマのチームが開発し、同社（正規認定販売代理店）により販売されている。Mathematicaは項書き換えを基本として、複数のパラダイムをエミュレートするプログラミング言語としても強力である。 ウルフラム・リサーチの創始者であるスティーブン・ウルフラムと彼のチームは、1986年から新たな数式処理システムの開発を開始し、1988年にその最初のバージョンをリリースした。ウルフラムは当初、このシステムをOmega、のちにPolyMathと呼んでいたが、当時NeXT社の社長であったスティーブ・ジョブズに相談したところ「ダサい名前だ」と一蹴され、なにか一般的な語をロマンチックに表現したもの、例えばトリニトロンのような名前が良いとして「Mathematica」と名付けた。 歴代のMathematicaのロゴに使われているのは「スパイキー」と呼ばれる三次元多面体で、初代 Mathematicaでは大二十面体、それ以降のバージョンでは双曲二十面体を装飾したものが使われている。 プログラミング言語としてのMathematicaは、項書き換えを基本として関数型と手続き型の両方をサポートするマルチパラダイム・プログラミング言語である。Mathematicaは、ウルフラムらが1979年頃に開発した Symbolic Manipulation Program を起源とし、プログラミング言語ALGOL・LISP・APL、および数式処理システムMacsymaの影響を受けている。 MathematicaはC/C++およびJavaで実装されているが、拡張可能なライブラリはすべてWolfram言語で書かれている。実際、新しいコード（Wolfram言語で書かれたテキストファイル）はMathematicaの「パッケージ（.mファイル）」として追加される。Mathematicaには4,000以上の高度に洗練された組み込み関数が用意されており、それらをビルディング・ブロックとして組み合わせていくことで、簡単にプログラムを作ることができる。 システムとしてのMathematicaは、Wolfram言語を解釈し実際に計算を実行する「カーネル」と、その計算結果を表示する「フロントエンド」の2つの部分から構成される。カーネルとフロントエンドの間の通信には「MathLink[リンク切れ]」プロトコルが使われる。 Mathematicaの最新バージョンは 14.1（2024年7月31日リリース）で、様々なコンピュータシステム上で利用可能となっている。 Mathematicaには次のような機能がある。 コアとなる言語 手続き型と関数型をサポートするマルチパラダイム・プログラミング言語 文字列操作、正規表現や意味解析を含めたテキストマイニングツール 並列プログラミング用ツール 数学とアルゴリズム 初等関数、特殊関数、数論、群論のライブラリ 複素数、任意精度、区間演算、記号計算のサポート 連続的/離散的計算のための数値と記号のツール 疎行列を含む行列とデータの操作ツール 常微分方程式 (ODE)、偏微分方程式 (PDE)、微分代数方程式（英語版） (DAE)、遅延微分方程式（英語版） (DDE)、ディオファントス方程式、漸化式のソルバー 連続積分変換および離散積分変換 直線/曲線あてはめ、仮説検定、100種類以上の確率分布における確率や期待値の計算 制約のある/ない、局所/大域、最適化 組み合わせ問題のためのツール 制御系ライブラリ 債券、年金、デリバティブ、オプション取引を含む金融計算ツール 可視化とグラフィックス 2D/3D のデータや関数の可視化とアニメーション化ツール グラフの視覚化ツールおよび解析ツール データの操作 データ、画像、動画、音響、CAD、GIS、文書、生物医学などの各種フォーマットのインポート/エクスポート 画像認識を含む画像処理と形態学的画像処理のツール 音響/画像データのウェーブレット解析用ライブラリ データ・クラスタリング、シーケンスアラインメント、パターンマッチなどのデータマイニングツール 計算可能なデータ 数学、科学、地理、経済、言語学データベースへのアクセス 気象、金融の履歴およびリアルタイムデータの取得 WolframAlphaのデータへのアクセスと計算 動的インタラクティブ機能 式やグラフィックスのインタラクティブな操作 計算とアプリケーションのためのユーザインタフェースを追加するツール ノートブックとドキュメント ノートブックによるインタラクティブなドキュメントの作成 Wolfram言語 と 自然言語ユーザインタフェースによる入力 数式エディタと自動報告書生成を含む科学技術用ワードプロセッシング PDF、LaTeX、HTML、XMLへの書き出し、プレゼンテーション用スライドショーの作成 システムインタフェースと配備 C、Java、.NET、R、SQL、HTML、XMLなど各言語との接続・連携 CUDA、OpenCLによるGPUコンピューティングと並列計算 システムとしてのMathematicaは、ユーザーとの対話を行う「フロントエンド」と、演算を実行する「カーネル」の2つの部分から構成される。フロントエンドはMathematicaシステムのGUIを担当する部分で、自動構文カラーリング、入力補完、デバッガなどの開発ツールの機能がある。また、一般的なワードプロセッシング機能の大部分もサポートしている。 フロントエンドとカーネルは互いに独立に起動し、「MathLink[リンク切れ]」と呼ばれるプロトコルを使って通信している。実際、Mathematicaを起動した時点ではカーネルは起動しておらず、フロントエンドで最初の計算が実行された時にはじめてカーネルが起ち上がる。 Mathematicaの標準的なフロントエンドである「ノートブック」は対話型のドキュメントで、データ・数式・テキスト・コード・演算結果・グラフィックス・表・GUIコンポーネント・アニメーション・音声などを混在させることができる。ノートブックはウルフラム・リサーチの共同創始者であるセオドア・グレイ（英語版）によって設計され、Mathematica 2.0より採用された。 一つのノートブックの中でデータの処理から可視化、さらに文書作成までをシームレスに行えることが、Mathematicaの最大の利点の一つである。ノートブックにおいては、ユーザーの入力（テキストと Wolframコード）やカーネルの演算結果（グラフィックやサウンドも含む）は、すべて階層化された「セル」に納められ、文書のアウトライン化やセクション分割が容易に行える。 ノートブックの中身はすべてWolfram言語で記述されており、それ自体を Wolfram 言語で生成・修正・解析することが可能である。ノートブックからTeXやXMLなどの他のフォーマットへの変換は、この機能を用いた構文解析を通じて実現されている。 Mathematica標準のノートブック以外にも、代替のフロントエンドが存在する。2006年にはEclipseベースのIDE、Wolfram Workbenchが登場した。プロジェクトベースのコード開発ツールとなっており、リビジョン管理、デバッグ、プロファイル、評価などの機能がある。またMathematicaには、テキスト型インタフェースが同梱されており、UNIXコマンドラインから直接カーネルを呼び出し対話することも可能である。 Mathematicaには一貫したフレームワークで管理されたデータ群が含まれており、即座に計算に使用できる。それらデータはモデル評価などの目的でプログラムから使用でき、ウルフラム・リサーチにあるデータサーバに自動アクセスして最新データに更新できる。株価や気象などのデータはリアルタイムに配信される。 計算可能なデータには次のようなものがある。 数学データ: 195の多面体の98種類の属性データ、5300のグラフの282種類の属性データ、6つの結び目の64種類の属性データ、21の格子の38種類の属性データ 化学データ: 44,000 の化合物の101種類の属性データ、118の元素の86種類の属性データ、1000の亜原子粒子の35種類の属性データ、3200の同位体の33種類の属性データ 天文学データ: 52の測地座標系の32種類の属性データ、156,000 の天体の99種類の属性データ 地政学データ: 240カ国の223種類の属性データ、164,000の世界各地の都市の14種類の属性データ 言語データ: 149,000の英単語の37種類の属性データ、他の26の言語の辞書 生命科学データ: 40,000のヒト遺伝子の41種類の属性データ、27,000のタンパク質の30種類の属性データ 金融データ: 146,000の銘柄や金融商品の74の属性データ（履歴とリアルタイム） 気象データ: 22,000の世界各地の観測地点における43の属性データ（履歴とリアルタイム） Wolfram Alphaのデータ: Wolfram Alphaからの兆を越える多数のデータ 1999年のバージョン4でパックアレー、2003年のバージョン5で疎行列を導入し、GNU Multi-Precision Library を採用して高精度演算が可能となり、高性能計算向け機能が拡張された。 バージョン5.2 (2005) では、マルチコアコンピュータ上で動作する際に自動的にマルチスレッド化する機能を追加した。このバージョンから CPU 毎に最適化されたライブラリを採用している。また、ClearSpeed（英語版） などのサードパーティ製高速化ハードウェアが Mathematica をサポートしている。 2002年、異機種混在型クラスターやマルチプロセッサシステムでのユーザレベルの並列計算を可能にするgridMathematica（英語版）をリリース。2008年には、並列計算技術は通常の Mathematica ライセンスに含まれるようになり、Windows HPC Server 2008、Microsoft Compute Cluster Server、Sun Grid をサポートするようになった。 2010年からCUDAおよびOpenCL対応のGPUハードウェアをサポート。またバージョン8ではC言語コードを生成でき、Intel C++ CompilerやVisual Studio 2010のコンパイラで動的にコンパイルできる。 MathLink[リンク切れ]プロトコルは、Mathematicaのカーネルとフロントエンド間の通信だけでなく、任意のアプリケーションとカーネルとの通信にも使われる。Mathematicaは豊富な機能を備えているが、他のプログラムの機能を利用したり、古いコードにアクセスするためにいくつかのインタフェースが開発されてきた。 ウルフラム・リサーチはMathematicaカーネルとのMathLinkによる通信を行うアプリケーション開発者向けにC言語での開発キットを無料で配布している。 J/Linkと.NET/Linkは、それぞれMathLinkをベースにしたJavaおよび.NET用のコンポーネントである。J/Link を使うと、JavaプログラムからMathematicaに計算を依頼することができ、MathematicaプログラムがJavaのクラスをロードし、Javaオブジェクトを操作したりメソッドを呼び出したりできる。そうすると、例えばMathematicaから Java の GUIを構築できる。同様に、.NET/Linkを使えば.NETプログラムと同様のことが可能になる。 DatabaseLinkはSQLデータベースを扱うためのツールキットで、JDBC接続とODBC接続をサポートしている。RLinkは統計解析向けプログラミング言語Rと交信し Mathematica内からRのコードを実行するもので、バージョン9から正式にサポートされた。 その他にMathematicaと接続できるプログラミング言語としては、Haskell、AppleScript、Racket、Visual Basic、Python、Clojureがある。数学関係のソフトウェアでは、OpenOffice.org Calc[リンク切れ]、 Microsoft Excel、MATLAB、SINGULAR、Originに接続可能である。 Mathematicaはリアルタイムのデータストリームを受け付けることもでき、LabVIEW、金融関係用[リンク切れ]、GPIB (IEEE 488)、USB、シリアル接続などの方法がある。HIDデバイスからの入力を自動的に検出して読み込むこともできる。最近ではLEGO マインドストームで作ったロボットをBluetooth通信を介して操作する試みもなされている。 2014年1月6日、ウルフラム・リサーチは、Wolfram言語と外部装置の接続利用促進に向けたプロジェクトWolfram Connected Devices Projectを起ち上げた。 Mathematicaで書かれたアプリケーションを配布するための手段がいくつか用意されている。 Wolfram CDF Player 計算可能ドキュメント形式 (CDF) でセーブされ Mathematicaプログラムを実行できる無料のプレイヤーである。 代表的なウェブブラウザへのプラグインも含まれている。 Mathematicaの標準形式のファイルも閲覧可能だが、実行はできない。 Wolfram Player Pro Mathematicaのアプリケーションを実行可能なランタイム版Mathematicaである。 コードの作成・編集はできない。 webMathematica ウェブブラウザがリモートのMathematicaサーバのフロントエンドとして機能できるようにする。 ユーザーの書いたアプリケーションにブラウザ経由で任意のプラットフォームからアクセスすることを可能にする。 Mathematicaへの完全なアクセスを提供することはできない。 MathematicaのコードはC言語のコードに変換したり、DLL を自動生成することも可能である。また、閲覧に限ったファイルの共有にはHTMLやLaTeX書式での出力が便利である。数式はMathMLに変換することで他のソフトウェアとやりとりできる。 Mathematicaは、Microsoft Windows、macOS、Linuxの各種バージョンおよびクラウドで動作する。どのプラットフォームも64ビット版をサポートしている。過去にサポートしていたOSとしては、NeXTSTEP、Solaris、AIX、Convex、HP-UX、IRIX、MS-DOS、OS/2、Ultrix、Windows Me、Windows XPなどがある。 Mathematicaはプロプライエタリなシステムである。政府機関、非営利組織、教育機関、学生、家庭用に向けては低価格を設定している。例えば、学生向けの製品（内容は正規品と同じ）は正規価格の5%程度で購入できる。教育機関向けライセンスで契約した場合、学生は家庭でもMathematicaを利用可能である。指定された数の Mathematica をネットワーク上で同時に起動できるネットワークライセンスも用意されている。 Mathematicaの価格設定は地域によっても大きく異なる。日米での価格差は、電話対応を含め、国内宛に日本語で問い合わせができる点や、日本語技術サポート、有償セミナーの半額割引（一部代理店のみ）等のサービスの差により生じている。 2013年11月21日、ウルフラム・リサーチとラズベリーパイ財団は、すべてのRaspberry PiにWolfram言語とMathematica 10のパイロット版を無料でバンドルすることを発表した。これにより、Raspberry Piの計算速度の問題は残るものの、Mathematicaの全機能を実質25ドル（Raspberry Pi Model A のボード1枚の価格）で利用できることになった。Mathematicaがコンピュータに無料でバンドルされるのは、1988年のNeXT以来、25年ぶり2度目の出来事である。 2014年1月6日、ウルフラム・リサーチとインテルは、2014年夏頃に発売予定のSD カードサイズコンピュータ Intel EdisonにWolfram言語とMathematicaを標準搭載すると発表した。 ウルフラム・リサーチからリリースされたMathematicaのバージョンは以下の通り: 方程式 ex = x2 + 2 において x = -1 を開始点としてその根を数値的に求める。 In[1]:= FindRoot[Exp[x] == x^2 + 2, {x, -1}] Out[1]= {x -> 1.3190736768573652} 次の例では、インデックスの原点を0とする 6 × 6 の行列で i、j 番目のエントリの値が ij であり、0のエントリを1に置き換えたものの行列式を求めている。そのような行列式は0である。 In[2]:= Det[Array[Times, {6, 6}, 0] /. 0 -> 1] Out[2]= 0 一般的なプログラミング言語と大きく異なる点として、Mathematica ではリストのインデックスが 1 から始まることに注意が必要である。 Mathematicaはマルチパラダイム・プログラミング言語であり、一つの問題に対して複数のアプローチを取ることが可能である。 ここでは簡単な例として、最大公約数 GCD(x, y) のテーブルを作る問題を考える（ここで、1 ≤ x ≤ 5、1 ≤ y ≤ 5 とする）。これには、少なくとも次の4つのアプローチが考えられる。 1. 関数型のアプローチ： In[3]:= Array[GCD, {5, 5}] Out[3]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}} このアプローチは、表現が抽象的ではあるが、組み込み関数の性能を十分に引き出しており、簡潔で計算速度も速い。Array は引数として任意の関数を許容する（名前があるかどうかを問わない）ので、スロット #n を使って、& の後に対応する関数を記述することができる。したがって、上記の関数は Array[GCD[#1, #2]&, {5, 5}] とも記述できるが、Mathematicaではそれを上記のように省略してもよいようになっている。 2. APL 的なアプローチ： In[5]:= Outer[GCD, Range[5], Range[[5]] Out[5]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}} ここで、Outer とRange はそれぞれ APL の外積演算子とイオタ演算子に対応している。Outer も Array と同様、引数として任意の関数を許容する。 3. Table を使うアプローチ： In[4]:= Table[GCD[x, y], {x, 1, 5}, {y, 1, 5}] Out[4]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}} Table は任意の次元の表を作るのに使われる標準的な関数である。このアプローチは、GCD の取る引数が明示的で、直感的に理解しやすい。反面、上記1・2に比べると計算速度で若干劣る。 4. 手続き型のアプローチ： In[6]:= lst1 = {}; (* 空のリストを初期化 *) For[i = 1, i <= 5, i++, lst2 = {}; For[j = 1, j <= 5, j++, lst2 = Append[lst2, GCD[i, j]] ]; lst1 = Append[lst1, lst2]; (* 部分リストを繋ぐ。これが行となる *) ]; lst1 Out[6]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}} これは C 言語や FORTRAN などで馴染み深いアプローチである。しかし、組み込み関数を使った場合（上記1~3）に比べるとコードが冗長である。また、手続き型のアプローチは計算速度が遅くボトルネックになりやすいので、注意が必要である。 以上の例で見たように、Mathematicaプログラミングにおいては、組み込み関数を最大限に利用することが非常に重要である。Mathematicaの組み込み関数を有効に使うことで、問題を簡潔に表現することができる。また、Mathematicaの組み込み関数は、適切なアルゴリズムを用い、高度に最適化され、かつC言語で実装されているため、同じ機能を持つユーザー定義関数に比べて計算速度が圧倒的に速い。 Mathematicaは「すべては式である (Everything is an expression.)」という思想のもとに設計されている。ここで言う「式 (Expression)」とは、アトムと関数である。 Mathematicaにおいて、数式・リスト・グラフィックスを含むすべてのオブジェクトは head[e1, e2, ...] という共通の基本構造を持つ。そして、この構造は入れ子にできる（つまり、e1 や e2 もまたこの構造を持てる）。したがって、どんなに複雑なオブジェクトでも、この基本構造とその再帰的な繰り返しで表現できる。 例えば、x^4+1 という式を入力すると、出力は以下のように表示される。 In[7]:= x^4 + 1 Out[7]= 1+x4 FullForm を使うと、この式の完全形（Mathematica における内部表現）を見られる。 In[8]:= FullForm[x^4 + 1] Out[8]= Plus[1, Power[x, 4]] 上記の例では、Plus が head であり、Power[x, 4] が入れ子になっている。x のような記号も実は Symbol["x"] という構造を持っている。 リストも List を head とする同様の構造である。例えば、x^4+1 と {1, x^4} という2つの表現は、外見はまったく異なるが、完全形で見れば head が Plus か List かの違いしかない。 この基本構造により、リストとは無関係の普通の式をリスト演算子で処理できる。 In[9]:= Expand[(Cos[x] + 2 Log[x^11])/13][[2, 1]] Out[9]= 2/13 逆も同様で、リストを普通の式のように扱える。 In[10]:= Map[Apply[Log, #]&, {{2, x}, {3, x}, {4, x}}] Out[10]= {Log[x]/Log[2], Log[x]/Log[3], Log[x]/Log[4]} ここで、Apply は第二引数の head を第一引数で指定されたものに置換する関数である。また、Map は関数型言語によく見られる高階関数 map である。 Mathematica では、数学的オブジェクトがリスト構造と等価であるため、組み込み関数のいくつかは「スレッディング」可能であり、特に指定しなくてもリスト上の各要素にマップされるときにマルチスレッド化される。実際、Apply は次のような場合にマルチスレッド化される。 In[11]:= Apply[Log, {{2, x}, {3, x}, {4, x}}, 1] Out[11]= {Log[x]/Log[2], Log[x]/Log[3], Log[x]/Log[4]} 第三引数 1 により、Apply によって置換するのがリストの最初のレベルであることが指定され、これは前述の例と等価である。 ^ Wolfram, Stephen (Jun. 23, 2008), “Mathematica Turns 20 Today”, Wolfram Blog, http://blog.wolfram.com/2008/06/23/mathematica-turns-20-today/ 2012年5月16日閲覧。  ^ Wolfram, Stephen (Oct. 6, 2011), “Steve Jobs: A Few Memories”, WolframAlpha Blog, http://blog.wolframalpha.com/2011/10/06/steve-jobs-a-few-memories/ 2012年5月16日閲覧。  ^ Weisstein, Eric W., “Spykey”, Wolfram MathWorld, http://mathworld.wolfram.com/Spikey.html  ^ Trott, Michael (May 22, 2007), “Making the Mathematica 6 Spikey”, Wolfram Blog, http://blog.wolfram.com/2007/05/22/making-the-mathematica-6-spikey/  ^ Pollack, Andrew (Jun. 24, 1988), “A Top Scientist's Latest: Math Software”, The New York Times, https://www.nytimes.com/1988/06/24/business/a-top-scientist-s-latest-math-software.html  ^ Wolfram, Steven (Jun. 6, 2013), “There Was a Time before Mathematica”, Wolfram Blog, http://blog.wolfram.com/2013/06/06/there-was-a-time-before-mathematica/  ^ Sharma, Jai (Feb. 21, 2010), “Programming Language Influences”, Jai's Blog, http://www.jaisharma.info/static/choice/images/projects/lineage.svg  ^ “アルファベット順のリスト”, Mathematica ガイド, Wolfram Research, Inc., http://reference.wolfram.com/mathematica/guide/AlphabeticalListing.html  ^ “Wolfram Mathematica ドキュメントセンター”, Wolfram Mathematica, Wolfram Research, Inc., http://reference.wolfram.com/mathematica/guide/Mathematica.html  ^ “テキスト型インターフェイスを使った入出力”, Mathematica チュートリアル, Wolfram Research, Inc., http://reference.wolfram.com/mathematica/tutorial/UsingATextBasedInterface.html  ^ “科学・技術データ”, Mathematica ガイド, Wolfram Research, Inc., http://reference.wolfram.com/mathematica/guide/ScientificAndTechnicalData.html 2012年5月16日閲覧。  ^ “パックアレー”, Wolfram テクノロジーガイド, Wolfram Research, Inc., http://www.wolfram.com/technology/guide/PackedArrays/  ^ “疎（スパース）配列”, Wolfram テクノロジーガイド, Wolfram Research, Inc., http://www.wolfram.com/technology/guide/SparseArrays/  ^ “マルチコアのサポート”, Wolfram テクノロジーガイド, Wolfram Research, Inc., http://www.wolfram.com/technology/guide/MulticoreSupport/  ^ “ClearSpeed Advance(TM) Accelerator Boards Certified by Wolfram Research; Math Coprocessors Enable Mathematica Users to Quadruple Performance.”, Business Wire, (Jun 27, 2006), http://www.thefreelibrary.com/ClearSpeed+Advance(TM)+Accelerator+Boards+Certified+by+Wolfram...-a0147498410  ^ Sellers, Dennis (Nov. 20, 2002), “gridMathematica offers parallel computing solution”, MacWorld, http://www.macworld.com/news/2002/11/20/mathematica/index.php  ^ Todd, Daniel (Jun. 15, 1992), “New Mathematica: faster, leaner, linkable and QuickTime-compatible: MathLink kit allows ties to other apps.（2009年1月12日時点のインターネット・アーカイブ）”, MacWeek, https://web.archive.org/web/20090112043927/http://www.accessmylibrary.com/coms2/summary_0286-9256461_ITM  ^ “mathlink: Write Mathematica packages in Haskell”, hackage.haskell.org, http://hackage.haskell.org/package/mathlink  ^ “Mathlink for AppleScript”, uni software plus, http://www.unisoftwareplus.com/products/mathlinkosax/  ^ Zhu, Chongkai, “MrMathematica: Calling Mathematica from PLT Scheme (Racket)”, http://www.cs.utah.edu/~czhu/SchemeLink/mrmma.html  ^ “Mathematica for ActiveX”, Episoft, Inc., http://library.wolfram.com/infocenter/TechNotes/4710/  ^ Konerding, David (Feb 16, 1998), “PYML (Python Mathematica interface)”, http://library.wolfram.com/infocenter/MathSource/585/  ^ Sheldon-Coulson, Garth, “Clojuratica : An Interface Between Clojure and Wolfram Mathematica”, http://clojuratica.weebly.com/  ^ “CalcLink”, Lauschke Consulting, http://www.lauschkeconsulting.com/calclink.html  ^ “Wolfram Mathematica Link for Excel”, Wolfram Research, Inc., http://www.wolfram.com/products/applications/excel_link/  ^ “MATLink”, http://matlink.org/  ^ Barrowes, Ben, “Mathematica Symbolic Toolbox for MATLAB - Version 2.0”, MathWorks, http://www.mathworks.com/matlabcentral/fileexchange/6044-mathematica-symbolic-toolbox-for-matlab-version-2-0  ^ Germundsson, Roger, “MaMa: Calling MATLAB from Mathematica with MathLink”, Wolfram Research, Inc., http://library.wolfram.com/infocenter/MathSource/618/  ^ Kauers, Manuel, “An Interface between Mathematica and Singular”, http://www.risc.uni-linz.ac.at/people/mkauers/publications/kauers06m.pdf  ^ “Interface Links Origin And Mathematica Software”, Electronic Design, http://electronicdesign.com/Articles/ArticleID/1323/1323.html  ^ “Mathematica Link to Labview”, BetterView Consulting, http://www.bettervi.com/mlink/index.html  ^ “DDFLink”, Lauschke Consulting, http://www.lauschkeconsulting.com/ddfplus.html  ^ “GPIB Interface to Mathematica (GITM)”, (Mar 26, 2013), http://sourceforge.net/projects/gitm/  ^ “BTopTools for Mathematica Extends Data Acquisition Capabilities to the Lab Environment”, Wolfram Research, Inc., (Oct. 7, 2008), http://www.wolfram.com/news/btoptools.html  ^ Hu, Zhe, “Interfacing Hardware with Mathematica”, http://library.wolfram.com/infocenter/MathSource/6380/  ^ Cousineau, Denis (Mar., 2013), “Controlling Robots Built with the LEGO® MINDSTORMS® NXT Brick”, The Mathematica Journal, http://www.mathematica-journal.com/2013/03/controlling-robots-built-with-the-lego-mindstorms-nxt-brick/  ^ Wolfram, Stephen (Jan. 6, 2014), “Launching the Wolfram Connected Devices Project”, Wolfram Blog, http://blog.stephenwolfram.com/2014/01/launching-the-wolfram-connected-devices-project/  ^ “Using Connected Devices”, Wolfram Language Guide, Wolfram Research, Inc., http://reference.wolfram.com/language/guide/UsingConnectedDevices.html  ^ “Mathematica 10 の動作環境と利用できるプラットフォーム”, Wolfram Mathematica, Wolfram Research, Inc., http://www.wolfram.com/mathematica/system-requirements.html  ^ Wolfram, Stephen (Nov. 21, 2013), “Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi”, Wolfram Blog, http://blog.wolfram.com/2013/11/21/putting-the-wolfram-Language-and-mathematica-on-every-raspberry-pi/  ^ “The Wolfram Language and Mathematica on Raspberry Pi, for Free”, Rapsberry Pi Blog, (Nov. 21, 2013), http://www.raspberrypi.org/archives/5282  ^ “Wolfram to Bring World’s Most Sophisticated Programming Language to New Intel SD-Card-Sized Computer”, Wolfram Research, Inc., (Jan. 7, 2014), http://company.wolfram.com/news/2014/wolfram-language-on-intel-edison/  ^ “Mathematica バージョン履歴”, Wolfram Mathematica, Wolfram Research, Inc., http://www.wolfram.com/products/mathematica/quickrevisionhistory.html  ^ “How Do I Make My Mathematica Programs Run Faster?”, Mathematica HowTo, Wolfram Research, Inc., http://library.wolfram.com/howtos/faster/  ^ “すべては式”, Mathematica チュートリアル, Wolfram Research, Inc., http://reference.wolfram.com/mathematica/tutorial/EverythingIsAnExpression.html  出版順に並べる。年、月、日が不明なものはそれぞれ明らかなものよりも前側に置くことにする。 スティーブン・ウルフラム:「Mathematica - A System for Doing Mathematics by Computer, Second Edition（日本語版）」、アジソン・ウエスレイ・パブリッシャーズ・ジャパン、ISBN 4795296146（1992年）。 S. スキエナ, 植野 義明 (訳)：「Mathematica組み合わせ論とグラフ理論―離散数学を実現する」 (アジソン ウェスレイ・トッパン情報科学シリーズ)、トッパン、ISBN 978-4810180503（1992年7月）。 小野裕幸：「Mathematica DSPと制御」トッパン、ISBN 978-4810185492（1992年10月20日） T.W. グレイ、J. グリン：「Mathematicaビギナーズガイド」 (アジソン ウェスレイ・トッパン情報科学シリーズ)、トッパン、ISBN 978-4810180565(1992年11月）。 D.C.M. バーバラ、C.T.J. ドッドソン：「Mathematica微積分入門」 (プレンティスホール) 、トッパン、ISBN 978-4810185584(1993年4月）。 守谷 良二：「Mathematicaで数学を〈線形代数編〉」、海文堂出版、ISBN 978-4303728007(1993年9月）。 ディミトリ・D. ヴィーデンスキー：「Mathematica偏微分方程式」 (アジソン ウェスレイ・トッパン情報科学シリーズ) 、トッパン、ISBN 978-4810180695（1994年3月）。 T.W. グレイ、J. グリン：「Mathematica数学の探索」 (アジソン ウェスレイ・トッパン情報科学シリーズ)、トッパン、ISBN 978-4810180459　(1994年5月)。 守谷良二：「Mathematicaで数学を―微積分編Ｉ」、海文堂出版、ISBN 978-4303727901（1994年10月）。 N ブラックマン、新井 宏二 (訳), 松井 康範 (訳)：「Mathematica事典」、トッパン、ISBN 978-4810189018（1994年11月）。 R.J. ゲイロード、P.R. ウエリン、S.N. カーミン：「Mathematicaプログラミング」、近代科学社、ISBN 978-4764902282 (1994年12月）。 阿部寛：「Mathematicaでみる数理物理入門 II」、講談社、ISBN 978-4061532168（1995年4月）。 Robert D. Skeel, Jerry B. Keiper, 玄 光男 (訳), 辻 陽一 (訳)：「Mathematicaによる数値計算」、共立出版、ISBN 978-4320014886（1995年4月10日）。 小林道正：「Mathematicaによる微積分」、朝倉書店、ISBN 978-4254110692（1995年12月）。 A.グレイ, 武沢 護 (訳)：「Mathematica 曲線と曲面の微分幾何」、トッパン、ISBN 978-4810189193（1996年3月）。 和田昇：「線形・非線形力学とカオスへの入門―Mathematicaによる」、サイエンティスト社、ISBN 978-4914903299　(1996年4月）。 J.W.グレイ、時田 節 (訳), 武沢 護 (訳)：「Mathematica 方法と応用」、サイエンティスト社、ISBN 978-4914903312（1996年5月）。 S.ワゴン、長岡亮介(監訳):「Mathematicaで見える現代数学」、ブレーン出版、ISBN 4-89242-143-X（1996年5月10日、初版二刷）。 斎藤 兆古：「Mathematicaによるウェーブレット変換」、朝倉書店、ISBN 978-4254221398（1996年9月）。 John S. Robertson, 下地 貞夫 (訳):「Mathematicaによる工科系数学」、共立出版、ISBN 978-4320015180（1996年10月15日）。 白石修二:「例題で学ぶMathematica グラフィックス編」、森北出版、ISBN 978-4627838109 (1996年11月）。 片桐 重延、室岡 和彦：「Mathematicaによる離散数学入門」 (新・数学とコンピュータシリーズ) 、東京電機大学出版局、ISBN 978-4501526108(1997年4月）。 上坂 吉則：「Mathematica数値数式プログラミング」、牧野書店、ISBN 978-4795201132 (1997年4月1日）。 リチャード・J ゲイロード、ポール・R. ウェリン ：「MATHEMATICA複雑系のシミュレーション―物理学と生物学の探究」、シュプリンガー・フェアラーク東京、ISBN 978-4431707097(1998年5月）。 斎藤 兆古：「Mathematicaによる 画像処理入門」、朝倉書店,ISBN 978-4254221428 (1998年6月1日)。 鈴木 真二：「力学入門」 (Mathematicaで学ぶシリーズ)、コロナ社、ISBN 978-4339077520（1999年2月1日）。 田沢義彦：「曲線論・曲面論―Mathematicaで探索する古典微分幾何学」 (Computer in Education and Research) 、ピアソンエデュケーション、ISBN 978-4894711334（1999年8月）。 ロバート・L. ジンマーマン、フレデリック・I. オルネス：「物理学のためのMathematica―古典力学から宇宙論まで」、ピアソンエデュケーション、ISBN 978-4894711624（1999年12月）。 鈴木昱雄：「カオス入門」 (Mathematicaで学ぶシリーズ) 、コロナ社、ISBN 978-4339077537（1999年12月1日）。 川瀬 宏海：「Mathematicaによる電磁気学」第2版、東京電機大学出版局、ISBN 978-4501108809（2000年3月1日）。 小林道正：「Mathematica確率―基礎から確率微分方程式まで」 (Mathematica数学）、朝倉書店、ISBN 978-4254115222（2000年4月）。 宮岡悦良：「Mathematica数学の道具箱〈下〉」改訂新版、ブレーン出版、ISBN 978-4892421747（2000年7月）。 椎原 浩輔：「Mathematicaによる金融工学」、東京電機大学出版局、ISBN 978-4501618100（2000年9月1日）。 木村広:「Mathematicaハンドブック」、秀和システム、ISBN 978-4798000503（2000年12月14日）。 渋谷清雄、谷沢俊弘、藤井幸一：「Mathematica基礎からの演習」、サイエンティスト社、ISBN 978-4914903817（2001年4月)。 古田孝之：「もっとMathematicaで数学を」、培風館、ISBN 978-4563003302（2002年4月）。 大塚 道明：「試して分かる高校数学―Mathematicaでトライ!」、現代数学社、ISBN 978-4768702871（2003年4月）。 日本Mathematicaユーザー会編:「入門Mathematica 【決定版】 Ver.7対応」、東京電機大学出版局、ISBN 978-4501546205（2009年6月20日）。 榊原 進 『はやわかり Mathematica 第3版』 共立出版、2010年。ISBN 978-4320122482。 榊原進：「はやわかりMathematica 第3版」、共立出版、ISBN 978-4320122482（2010年3月24日）。 Sal Mangano (著), 松田 裕幸 (訳) :「Mathematicaクックブック」、オライリージャパン、ISBN 978-4873114835（2011年4月25日）。 依田 潔, 日本シミュレーション学会 (編)：「Mathematicaによる電磁界シミュレーション入門 - ＰＯＤ版」(計算電気・電子工学シリーズ) 、森北出版; POD版、ISBN 978-4627715295（2012年2月24日）。 川平友規：「レクチャーズオンMathematica」、プレアデス出版、ISBN 978-4903814612（2013年5月1日）。 小田部荘司：「学生が学ぶMathematica入門　(完全版)」、 Kindle版、Amazon Services International, Inc.　ASIN: B00JRP6DZK　(2014/4/17)。 野原 勉：「Mathematicaと微分方程式」 ,日新出版(実用数学全書)、ISBN 978-4817302489（2014年3月30日）。 大川善邦：「Raspberry Pi Mathematicaプログラミング」、Kindle版、 Amazon Services International, Inc.、ASIN: B00M6G224S (2014/7/27)。 大川善邦：「RaspberryPiシニアのためのMathematica」、Kindle版、Amazon Services International, Inc.、ASIN: B00OK14826 (2014/10/15)。 大川 善邦：「RaspberryPi2でMathematicaプログラミング」、工学社 (I・O BOOKS)、 ISBN 978-4777519033（2015年7月21日）。 中川栄一、勝明次郎：「Mathematicaへの誘い-今日から始める基礎と応用-」、成山堂書店、ISBN 978-4425651818　(2015年9月18日）。 宮岡 悦良：「数学の道具箱 Mathematica 基本編」、近代科学社、ISBN 978-4764905078（2016年4月12日）。 C.ヘイスティング、K.ミッショー、M.モリソン:「ハンズ・オン・スタートMathematica® : Wolfram言語™によるプログラミング」、丸善、ISBN 978-4-621-30273-6(2018年1月）。 C.ヘイスティング、K.ミッショー、M.モリソン:「ハンズ・オン・スタートMathematica®原書3版 : Wolfram言語™によるプログラミング」、丸善、ISBN 978-4-621-30867-7 (2023年11月）。 Roozbeh Hazrat:"Mathematica: A Problem-Centered Approach", Second Edition, Springer, ISBN 9783319275840 (2015). Paul Wellin: "Essentials of Programming in Mathematica"、Cambridge University Press、ISBN 978-1107116665 (2015年12月17日）。 Cliff Hastings, Kelvin Mischo, Michael Morrison:"Hands-On Start to Wolfram Mathematica: And Programming with the Wolfram Language"(2nd Ed.)、Wolfram Media Inc、ISBN 978-1579550127 (2016年11月30日）。 Stephen Wolfram: "An Elementary Introduction to the Wolfram Language"(2nd Ed.)、Wolfram Media Inc、ISBN 978-1944183059 (2017年4月)。 Stephen Wolfram:"An Elementary Introduction to the Wolfram Language" (2nd Ed.) ONLINE VERSION ウィキメディア・コモンズには、Mathematicaに関連するカテゴリがあります。 スティーブン・ウルフラム ウルフラム・リサーチ Wolfram Alpha New Kind of Science : Mathematica を全面的に利用して書かれたウルフラムの著書。 劣等上等：鏡音リン・レンの楽曲。曲中にマセマティカ(Mathematica)という言葉が登場する。 数値解析ソフトの比較 数値解析ソフトウェアの一覧 Wolfram Mathematica Wolfram Mathematica ドキュメントセンター HULINKS (国内認定販売代理店＆認定トレーニングパートナー) Wolfram Demonstrations Project　(12,000以上のデモサンプルや事例にアクセス可能) Wolfram Community The Mathematica Story: A Scrapbook The Mathematica Journal The Mathematica Journal日本語版セレクション（HULINKS）