Wolfram 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 date=20110612185503 的引入使得用户级的并行编程可以在不同的集群和多处理器系统中进行在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语言、SageMath、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版本
Mathematica的产生是基于Cole和Wolfram早期的符号操作程序（SMP）的创意。
Wolfram Research已经发布了如下Mathematica版本：- 1.0（1988年6月23日）- 1.1（1989年）- 1.2（1989年8月1日）- 2.0（1991年1月15日）- 2.1（1992年6月15日）- 2.2（1993年6月1日）- 3.0（1996年9月3日）- 4.0（1999年5月19日）- 4.1（2000年11月2日）- 4.2（2002年11月1日）- 5.0（2003年6月12日）- 5.1（2004年10月25日）- 5.2（2005年6月20日）- 6.0（2007年5日1日）- 6.0.1（2007年6月5日）（此版本以及之后版本具有中文版）- 6.0.2（2008年2月）- 6.0.3（2008年6月）- 7.0（2008年11月18日）- 7.0.1（2009年3月5日）- 8.0（2010年11月15日）- 8.0.1（2011年3月7日）- 8.0.4（2011年10月24日）- 9.0.0（2012年11月28日）- 9.0.1（2013年1月31日）- 10.0.0（2014年7月9日）- 10.0.1（2014年9月17日）- 10.0.2（2014年12月10日，仅有英文界面）- 10.1（2015年3月30日）- 10.2（2015年7月14日）- 10.3（2015年10月15日）- 10.3.1（2015年12月16日）- 10.4（2016年3月2日）- 10.4.1（2016年4月18日）- 11.0.0（2016年8月8日）- 11.0.1（2016年9月28日）- 11.1（2017年3月16日）- 11.1.1（2017年5月）- 11.2（2017年9月14日）- 11.3（2018年3月8日）- 12.0（2019年4月16日）- 12.1 (2020年3月)- 12.1.1 （2020年6月）- 12.2（2020年12月）- 12.3（2021年5月）- 12.3.1（2021年7月）- 13（2021年12月）- 13.0.1（2022年2月）- 13.1（2022年6月）- 13.2（2022年12月）- 13.2.1（2023年2月）- 13.3 （2023年6月）-  13.3.1（2023年8月）-  14.0（2024年1月）-  14.1（2024年7月）

**参见**
 计算机代数系统比较- 多重编程范式- 动态语言- 第四代程式语言- 函数式编程- 文学编程- Wolfram语言- Wolfram Alpha——可计算知识引擎- Wolfram SystemModeler——一个与Mathematica集成的物理建模和仿真工具- IMTEK Mathematica Supplement——有限元仿真的开源Mathematica附加软件- 数学软件

**参考文献**

**外部链接**
  Wolfram Mathematica官方网站 date=20180715072440 -  Mathematica参考资料中心 date=20180714230050 -  Wolfram Research中文官方网站 date=20211009212413 -  Mathematica中文讨论 date=20111116195802 -  MathWorld date=2000-02-29 -  Wolfram官方微博 date=20210811224645 - 斯蒂芬·沃尔夫勒姆 着，赫孝良、周义仓 译：《Mathematica全书》，西安交通大学出版社，2002年- 吴飞 着：《Mathematica演示项目笔记》，清华大学出版社，2010年