Mathematica

**Wolfram Mathematica** （簡稱：Mathematica）是一款科學計算軟體，有時候也被稱為電腦代數系統，廣泛使用於科學、工程、數學、計算等領域。

它是由英國科學家史蒂芬・沃爾夫勒姆提出構想，並且由他所領導的沃爾夫勒姆研究公司（位於美國伊利諾州香檳市）開發的一款廣泛使用的科學計算軟體。它擁有強大的數值計算和符號運算能力，是目前為止使用最廣泛的數學軟體之一。

Wolfram 語言是用於 Mathematica 的程式語言。

沃爾夫勒姆和他的工作團隊於 1986 年開始 Mathematica 的研發。Mathematica 1.0 於 1988 年 1 月 23 日正式發行。2008 年 12 月發行的 Mathematica 7.0 版及之後的版本有中文版。

## 產品功能

Mathematica 的功能包括：

* 各種基本數學函數庫
* 各種特殊屬性函數庫
* 矩陣和資料操縱工具，包括對稀疏矩陣的處理
* 支援複數、任意精度數、區間算術和符號運算
* 2 維和 3 維資料以及函數的視覺化和動畫工具
* 求解方程組、常微分方程式、偏微分方程式、微分代數方程式、時滯微分方程式、遞迴關係式等等
* 離散和連續微積分的數值和符號工具
* 多變數統計程式庫，包括支援 100 多種資料分布的資料擬合、假說檢定、機率和期望的運算
* 支援刪失資料、暫態資料、時間序列和有單位的資料
* 隨機過程和佇列的計算及仿真
* 為包括神經網路在內的資料、圖像和聲音的有監督和無監督機器學習提供工具
* 對運算和應用程式添加使用者介面的各種工具包
* 約束和無約束局部及全域最佳化
* 程式語言支援：程序式程式語言、函式語言程式設計語言和物件導向的程式語言
* 圖像處理工具，包括圖像辨識
* 提供用於圖論中圖的分析和視覺化的工具
* 分析組合問題的工具
* 用於文字挖掘的工具
* 資料探勘的工具，比如聚類分析、字串對齊和模式匹配
* 數論函數庫
* 金融運算的工具，包括期權、債券、年金、衍生工具等的計算
* 群論函數
* 技術文字處理，包括公式編輯器和自動報告生成
* 用於聲音、圖像和資料的小波分析程式庫
* 控制系統程式庫
* 連續和離散的積分轉換
* 匯入和匯出資料、圖像、影片、GIS、CAD 等各種檔案格式，並支援對生物醫學類資料的輸入和輸出
* 連結 Wolfram Alpha 的大量數學、科學、社會經濟學類的資料集合
* 檢視並且重新使用前面的輸入和輸出（包括圖像和文字記號）的筆記本介面
* 和基於 DLL、SQL、Java、.NET、C++、FORTRAN、CUDA、OpenCL 以及 http 的系統相連結的工具
* 編寫並列程式的工具
* 當與網際網路連接時，在筆記本中可同時使用「自由格式語言輸入」（一個自然語言型的使用者介面）和 Wolfram 語言

## 介面

Mathematica 分為兩部分：核心和前端。核心對表達式（即 Wolfram 語言代碼）進行解釋，並且返回結果表達式。

前端由西奧多・格雷於 1988 年設計，它提供了一個允許使用者建立並且編輯一個「筆記本文件」的 GUI，該筆記本文件可以包含程式碼、格式化文字以及包括公式、圖像、GUI 組件、表格、聲音在內的各種輸出結果。所有的內容和格式都可以通過演算法生成或者通過互動式方法進行編輯。其支援大多數標準文書處理功能，還含有一個多語種的即時拼寫檢查器。

文件可以使用層次式單元進行結構化處理，這樣便於對文件劃分章節。文件也可以表示為幻燈片形式，便於進行演講。筆記本與其內容均以 Mathematica 表達式的形式儲存，並且可用使用 Mathematica 程式進行建立、編輯和修改，而且還可以轉化為其它格式，比如 TeX 或者 XML。

前端包括開發工具，比如除錯器、輸入自動補全、以及自動語法著色。

預設情況下，Mathematica 使用一個標準前端，不過也有其它前端可供選擇，包括 Wolfram Workbench、2006 年引入的基於 Eclipse 的 IDE。它們為 Mathematica 提供了面向專案的開發工具，包括版本管理、除錯、歸檔和測試。此外，Mathematica 還包括一個命令列前端（Mathematica Kernel）。

沃爾夫勒姆研究公司已經推出一系列初學者入門影片，介紹使用者介面和引擎。

## 高效能計算

近年來，Mathematica 系統已經開始支援高效能計算。在 Mathmatica 5.2 版本中，它已經支援自動多執行緒計算。2002 年，gridMathematica （頁面存檔備份，存於網際網路檔案館）的引入使得使用者級的並列編程可以在不同的叢集和多處理器系統中進行在 2008 年，在所有的 Mathematcia 許可證中囊括了平行計算技術，包括支援網格技術如 Windows HPC Server 2008、Microsoft Compute Cluster Server 和 Sun Grid。2010 年，Mathematica 增加了對 CUDA 和 OpenCL GPU 硬體的支援。另外，第 8 版還可以生成 C 代碼，它可以自動由系統 C 編譯器進行編譯，比如 Intel C++ 編譯器或者 Visual Studio 2010 編譯器。

## 部署

使用者可以通過多種解決方案部署使用 Mathematica 編寫的應用程式：

Mathematica Player Pro 是 Mathematica 的「唯讀」版本，它可以執行任何 Mathematica 應用程式，但是不允許編輯或者建立 Mathematica 代碼。此外，還有一個免費版本的 Mathematica Player 可以用來執行 CDF 格式的 Mathematica 程式；它也可以用來檢視標準 Mathematica 檔案，但是不能執行它們。

webMathematica 的網頁瀏覽器可以作為遠端 Mathematica 伺服器的一個「前端」。它允許使用者在任何平台上遠端存取編寫好的應用程式。但是，它不允許使用者完全存取 Mathematica。

另外，第 8 版可以自動將 Mathematica 代碼轉換成可執行的 C 代碼，這些自動生成的 C 代碼可以在標準 C 編譯器中進行編譯，比如 Intel C++ Compiler 或者 Visual Studio 2010 的編譯器。因此，從某種角度上，Mathematica 代碼的執行速度可以與 C 語言代碼相媲美。

## 與其他應用的連結

Mathematica 通過名為 MathLink 的協定與其它應用程式連結。通過該協定，Mathematica 實現核心與前端的通訊，並且也提供了核心和其它應用程式之間的一個通用介面。

Mathematica 不但本身具有豐富的功能，而且它也提供了大量介面用以存取其它軟體，從而可以方便地呼叫那些其它軟體具有但 Mathematica 暫時不具備的功能。這樣做可以進一步增強 Mathematica 的適用性。

Wolfram Research 發布了一個免費的開發工具包，該工具包允許 C programming language 編寫的應用程式通過 _MathLink_ 連結到 Mathematica 核心。

使用_.NET/Link_，，任何一個.NET 程式都可以呼叫 Mathematica 執行計算操作；相應地，Mathematica 程式也可以載入.NET classes、操縱.NET 物件並且執行方法呼叫。這樣我們就可以從 Mathematica 內部構建.NET 圖形化使用者介面。類似地，Mathematica 也有 _J/Link_。顧名思義，它可以用於 Mathematica 與 Java 程式之間的互動。

與 SQL 資料庫之間的通訊是通過內建的 JDBC 支援實現的。 Mathematica 也可以從一個 WSDL 描述中安裝網頁服務。

Mathematica 支援生成和執行 Modelica 系統建模的模型，並連線到 Wolfram System Modeler.

連結也可用於許多第三方軟體包和 API.

Mathematica 還可以從各種來源捕獲實時資料 並可以讀取和寫入公共區塊鏈 (Bitcoin, Ethereum, and ARK).

它支援匯入和匯出 220 多個資料、影象、影片、聲音，電腦輔助設計 (CAD), 地理訊息系統 (GIS), 檔案和生物醫學格式。

 
其它與 Mathematica 相連結的語言套件括 Haskell、AppleScript、PLT Scheme、Visual Basic、Python 和 Clojure。

在 Mathematica 和 OpenOffice.org Calc 以及 Microsoft Excel 之間有雙向的連結。

Mathematica 也提供了與許多專門的數學軟體套件之間的連結，包括 MATLAB、R 、Sage、SINGULAR、MathModelica 和 Origin 

Mathematica 中的數學公式也可以與其它計算或者排版軟體（比如 MathML）的公式進行相互轉換。

Mathematica 可以通過多種方式擷取即時資料，比如與 LabVIEW 的連結，金融資料 feeds ，或者直接通過 GPIB 從硬體裝置（IEEE 488）、USB 以及串行介面取得。

其他可用介面有 JMath, 它基於 GNU readline 和 MASH，並利用 UNIX 命令列執行內建的 Mathematica 程式（內含參數）。

## 可計算資料

Mathematica 囊括了大量可立即計算的資料。使用者可以通過編程存取這些資料，並且也可以通過 Wolfram Research 資料伺服器自動更新資料。某些資料如股票價格和天氣資料都是即時遞送的。目前資料集包括：

* 天文資料：155,000 個天體的 99 個屬性
* 化學資料：34,000 個化合物的 111 個屬性，118 個化學元素的 86 個屬性以及 1000 個次原子粒子的 35 個屬性
* 地緣政治資料：237 個國家的 225 個屬性，以及全世界 160,000 個城市的 14 個屬性
* 金融資料：186,000 個股票和金融工具的歷史和即時屬性
* 數學資料：187 種多面體的 89 個屬性，3000 種圖的 258 個屬性，6 種 knots 的 63 個屬性，21 種晶格結構的 37 個屬性，52 個測地學方案的 32 個屬性
* 語言資料：149,000 個英語單詞的 37 個屬性。26 個其他語言的詞典
* 生物醫學資料：所有 40,000 個人類基因的 41 個資料，27,000 類蛋白質的 30 個屬性
* 天氣資料：全球 17,000 個氣象站的 43 個即時和歷史的測量資料
* Wolfram|Alpha 資料：來自 Wolfram Alpha 的億萬兆資料

## 版本歷史

Mathematica 的產生是基於 Cole 和 Wolfram 早期的符號操作程式（SMP）的創意。

Wolfram Research 已經發布了如下 Mathematica 版本：

 

## 參見

* 電腦代數系統比較
* 多重編程範式
* 動態語言
* 第四代程式語言
* 函式程式語言
* 文學編程
* Wolfram 語言
* Wolfram Alpha—— 可計算知識引擎
* Wolfram SystemModeler—— 一個與 Mathematica 整合的物理建模和仿真工具
* IMTEK Mathematica Supplement—— 有限元仿真的開源 Mathematica 附加軟體
* 數學軟體

## 參考文獻

## 外部連結

* Wolfram Mathematica 官方網站 （頁面存檔備份，存於網際網路檔案館）
* Mathematica 參考資料中心 （頁面存檔備份，存於網際網路檔案館）
* Wolfram Research 中文官方網站 （頁面存檔備份，存於網際網路檔案館）
* Mathematica 中文討論 （頁面存檔備份，存於網際網路檔案館）
* MathWorld Archive.is 的存檔，存檔日期 2000-02-29
* Wolfram 官方微博 （頁面存檔備份，存於網際網路檔案館）
* 史蒂芬・沃爾夫勒姆 著，赫孝良、周義倉 譯：《Mathematica 全書》，西安交通大學出版社，2002 年
* 吳飛 著：《Mathematica 演示專案筆記》，清華大學出版社，2010 年