Wolfram Mathematica (简称:Mathematica)是一款科学计算软件,有时候也被称为计算机代数系统,广泛使用于科学、工程、数学、计算等领域。
它是由英国科学家斯蒂芬·沃尔夫勒姆提出构想,并且由他所领导的沃尔夫勒姆研究公司(位于美国伊利诺伊州香槟市)开发的一款广泛使用的科学计算软件。它拥有强大的数值计算和符号运算能力,是目前为止使用最广泛的数学软件之一。
Wolfram 语言是用于Mathematica的编程语言。
沃尔夫勒姆和他的工作团队于1986年开始Mathematica的研发。Mathematica 1.0于1988年1月23日正式发行。2008年12月发行的Mathematica 7.0版及之后的版本有中文版。
Mathematica的功能包括:
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编写的应用程序通过链接到 Mathematica内核。
使用,,任何一个.NET程序都可以调用Mathematica执行计算操作;相应地,Mathematica程序也可以加载.NET classes、操纵.NET对象并且执行方法调用。这样我们就可以从Mathematica内部构建.NET 图形用户界面。类似地,Mathematica也有。顾名思义,它可以用于Mathematica与Java程序之间的交互。
与SQL数据库之间的通讯是通过内置的JDBC支持实现的。 Mathematica也可以从一个WSDL描述中安装网页服务。
其它与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数据服务器自动更新数据。某些数据如股票价格和天气数据都是实时递送的。目前数据集包括:
Mathematica的产生是基于Cole和Wolfram早期的符号操作程序(SMP)的创意。
Wolfram Research已经发布了如下Mathematica版本: