Mathematica 全面教程
Mathematica 由 Wolfram Research 公司开发,是一个集成了数值计算、符号演算、数据可视化、机器学习、交互式界面开发等多种功能于一体的科学计算平台,它的核心思想是“一切皆表达式”(Everything is an Expression),理解这一点是掌握 Mathematica 的关键。

目录
-
第一部分:入门基础
- 1 安装与启动
- 2 界面初识:Notebook 与 Wolfram Desktop
- 3 第一个计算:
Shift + Enter - 4 核心理念:一切皆表达式
- 5 获取帮助: 和
F1键
-
第二部分:核心语法与数据类型
- 1 基本算术运算
- 2 变量与赋值
- 3 函数的定义与调用
- 4 常用数据类型
- 5 列表:Mathematica 的“瑞士军刀”
- 5.1 创建列表
- 5.2 访问列表元素
- 5.3 列表操作
- 6 注释
-
第三部分:Mathematica 的三大支柱
- 1 数值计算
- 2 符号演算 (Symbolic Computation)
- 3 绘图与可视化
- 3.1 基本绘图函数
- 3.2 绘图选项
- 3.3 三维绘图与数据可视化
-
第四部分:编程进阶
- 1 模块化编程:
Module与Block - 2 条件判断:
If,Which,Switch - 3 循环结构:
Do,For,While - 4 函数式编程:
Map,Table,Apply - 5 规则与模式匹配
- 1 模块化编程:
-
第五部分:实用技巧与资源
- 1 输入与输出格式控制
- 2 文件操作
- 3 与外部数据交互
- 4 创建交互式界面:
Manipulate - 5 Wolfram Cloud 与在线资源
第一部分:入门基础
1 安装与启动
- 购买与下载:访问 Wolfram 官网 购买 Mathematica 许可证(学生和教师通常有优惠),下载对应你操作系统的安装包。
- 激活:安装后,使用你的 Wolfram ID 登录并激活软件。
- 启动:启动后,你会看到 Wolfram Desktop 界面,这是管理所有 Wolfram 技术产品(如 Mathematica, Wolfram|Alpha)的统一环境。
2 界面初识:Notebook 与 Wolfram Desktop
- Wolfram Desktop:像一个“启动器”或“工作台”,你可以在这里创建新的 Notebook、打开已有的文件、访问文档等。
- Notebook:这是你进行计算和编写代码的主要工作区,它由一系列单元格组成,单元格可以是:
- 输入单元:你输入代码的地方。
- 输出单元:代码执行后显示结果的地方,通常带有蓝色框。
- 文本单元:用于写说明和文档,像 Word 一样。
- 标题单元:用于组织结构。
3 第一个计算:Shift + Enter
这是 Mathematica 中最重要的操作。
- 在 Notebook 的一个输入单元中输入:
1 + 1 - 按下
Shift + Enter组合键。 - Mathematica 会执行该单元格,并将结果输出到下方的输出单元中。
In[1]:= 1 + 1 Out[1]= 2
In[1] 和 Out[1] 是系统自动添加的输入和输出标签。
4 核心理念:一切皆表达式
理解这一点,你就能理解 Mathematica 90% 的工作方式。
- 表达式:Mathematica 中的所有东西,从数字
5到一个复杂的方程x^2 + y == 1,再到一个绘图命令Plot[Sin[x], {x, 0, 2 Pi}],都是表达式。 - 表达式的结构:表达式具有树形结构,最基本的形式是
Head[elements...]。1 + 2实际上是Plus[1, 2]。Plus是头部,1和2是元素。{a, b, c}实际上是List[a, b, c]。List是头部。x^2实际上是Power[x, 2]。
这种结构使得 Mathematica 可以对任何内容进行统一的操作。
5 获取帮助: 和 F1 键
Mathematica 的文档是其最大的优点之一。
-
符号:快速查询函数或符号的简要信息。
?Plot:查看Plot函数的基本信息。??Plot:查看更详细的信息,包括选项。?Pl*:查询所有以 "Pl" 开头的符号。
-
F1键:将光标放在任何函数或符号上,按F1键,会直接打开该函数的详细文档页面,文档包含用法、选项、示例和链接,非常全面。
第二部分:核心语法与数据类型
1 基本算术运算
| 运算 | Mathematica 符号 | 示例 | 结果 |
|---|---|---|---|
| 加法 | 3 + 5 |
8 |
|
| 减法 | 10 - 4 |
6 |
|
| 乘法 | 或 空格 | 2 * 3 或 2 3 |
6 |
| 除法 | 10 / 2 |
5 |
|
| 乘方 | ^ |
2^3 |
8 |
| 括号 | (2 + 3) * 4 |
20 |
注意:
- 乘法可以用 也可以用空格表示,
x y和x*y是等价的。 - 必须使用 来改变运算顺序,不要用 或
[]。
2 变量与赋值
-
赋值:使用 ,赋值是立即赋值,右边表达式会被立即计算并赋给左边。
x = 5 y = x^2 + 1
输出:
Out[1]= 5 Out[2]= 26 -
延迟赋值:使用 ,赋值是延迟赋值,右边表达式不会立即计算,只有在变量被调用时才会计算,这在定义函数时非常有用。
f[x_] := x^2 + 1 (* 延迟赋值,定义函数 *) g[x_] = x^2 + 1 (* 立即赋值,g 将被直接替换为 x^2+1 这个表达式 *)
-
清除变量:使用
Clear或Remove。Clear[x] (* 清除 x 的定义 *) Remove[f] (* 彻底移除 f *)
3 函数的定义与调用
-
调用内置函数:函数名 +
[参数],参数用逗号 分隔。Sin[Pi/2] (* 结果为 1 *) Plot[Sin[x], {x, 0, 2 Pi}] (* 绘制正弦函数 *) -
自定义函数:使用
f[x_] := ...的模式。x_是一个模式,代表“任何名为 x 的东西”,下划线_是模式匹配的关键。- 是延迟赋值,确保函数在被调用时才计算。
示例:定义一个二次函数
myQuadratic[x_, a_, b_, c_] := a x^2 + b x + c
调用函数
myQuadratic[2, 1, -3, 2] (* 计算 x=2 时的值,a=1, b=-3, c=2 *)
输出:
Out[3]= 0
4 常用数据类型
| 类型 | 示例 | 说明 |
|---|---|---|
| 整数 | 123 |
精确的任意精度整数 |
| 实数 | 45 |
机器精度浮点数 |
| 有理数 | 1/3 |
精确的分数 |
| 复数 | 3 + 4 I |
I 是虚数单位 |
| 字符串 | "Hello" |
用双引号括起来的字符序列 |
| 布尔值 | True, False |
逻辑值 |
| 符号 | x, Pi, E |
代表变量或数学常量的符号 |
5 列表:Mathematica 的“瑞士军刀”
列表是 Mathematica 中最核心、最常用的数据结构,用于存储有序的元素集合。
5.1 创建列表
- 手动输入:
{element1, element2, ...}list1 = {1, 2, 3, 4, 5} - 使用
Range和Table生成:Range[5] (* 生成 {1, 2, 3, 4, 5} *) Table[i^2, {i, 1, 5}] (* 生成 {1, 4, 9, 16, 25} *)
5.2 访问列表元素
- 使用双括号
[[ ]]。list1[[3]] (* 访问第三个元素,结果为 3 *)
- 使用
Part函数(与[[ ]]等价)。Part[list1, 3] (* 结果同样为 3 *)
5.3 列表操作
Mathematica 提供了海量对列表进行操作的函数。
- 长度:
Length[list] - 提取部分:
Take[list, {n, m}](从第 n 个到第 m 个),First[list],Last[list] - 添加元素:
Append[list, elem](在末尾添加),Prepend[list, elem](在开头添加) - 合并列表:
Join[list1, list2] - 映射函数:
Map[f, list]或f /@ list(将函数 f 应用于列表的每一个元素)Sqrt /@ {1, 4, 9, 16} (* 结果为 {1, 2, 3, 4} *)
6 注释
- 单行注释:
(* 这是注释内容 *) - 多行注释:使用多个 组合。
第三部分:Mathematica 的三大支柱
Mathematica 的强大之处在于它完美地集成了这三种能力。
1 数值计算
- 精确计算:默认情况下,Mathematica 会进行精确计算。
1/3 + 1/7
输出:
Out[1]= 10/21 - 数值计算:使用
N函数获得近似值。N[1/3 + 1/7] N[Pi, 50] (* 计算 Pi 的 50 位精度 *)
输出:
Out[2]= 0.47619 Out[3]= 3.1415926535897932384626433832795028841971693993751
2 符号演算
这是 Mathematica 的“杀手锏”。
- 展开表达式:
ExpandExpand[(x + y)^2]
输出:
Out[4]= x^2 + 2 x y + y^2 - 因式分解:
FactorFactor[x^2 + 2 x y + y^2]
输出:
Out[5]= (x + y)^2 - 求导:
DD[x^3 + 2 x^2 + x, x] (* 对 x 求导 *) D[Sin[x] Cos[x], {x, 2}] (* 对 x 求二阶导 *) - 积分:
IntegrateIntegrate[x^2, x] (* 不定积分 *) Integrate[Exp[-x^2], {x, -Infinity, Infinity}] (* 定积分 *) - 解方程:
SolveSolve[x^2 - 3 x + 2 == 0, x] (* 解代数方程 *) Solve[{x + y == 3, x - y == 1}, {x, y}] (* 解方程组 *)
3 绘图与可视化
3.1 基本绘图函数
- 一维函数绘图:
PlotPlot[Sin[x], {x, 0, 2 Pi}, PlotLabel -> "Sine Function"] - 参数方程绘图:
ParametricPlotParametricPlot[{Cos[t], Sin[t]}, {t, 0, 2 Pi}] - 二维数据点绘图:
ListPlotdata = Table[{i, RandomReal[]}, {i, 10}]; ListPlot[data] - 三维函数绘图:
Plot3DPlot3D[Sin[x] Cos[y], {x, 0, 2 Pi}, {y, 0, 2 Pi}] - 三维数据/曲面绘图:
ListPlot3D - 等高线图:
ContourPlot - 向量场图:
VectorPlot
3.2 绘图选项
几乎所有绘图函数都有丰富的选项,用来控制图形的外观,选项格式为 OptionName -> OptionValue。
PlotLabel: 图形标题AxesLabel: 坐标轴标签PlotRange: 设置绘图范围,如PlotRange -> {0, 1}ColorFunction: 设置颜色方案PlotStyle: 设置曲线样式,如PlotStyle -> {Red, Dashed}
示例:一个带有选项的绘图
Plot[x^2, {x, -2, 2},
PlotLabel -> "y = x^2",
AxesLabel -> {"x", "y"},
PlotRange -> {-1, 4},
PlotStyle -> {Thick, Blue},
GridLines -> Automatic
]
3.3 三维绘图与数据可视化
除了 Plot3D,还有 ListPlot3D 用于绘制三维数据点形成的曲面。DensityPlot 可以绘制二维数据的密度图,MatrixPlot 可以直接可视化矩阵。
第四部分:编程进阶
1 模块化编程:Module 与 Block
为了避免变量名冲突,并封装代码,应该使用 Module。
Module[{localVars}, body]:创建一个局部作用域。localVars是模块内独有的局部变量列表。(* 一个计算阶乘的函数 *) factorial[n_] := Module[{result = 1, i}, For[i = 1, i <= n, i++, result = result * i; ]; result ] factorial[5]这里的
result和i只在Module内部有效。
2 条件判断:If, Which, Switch
If[condition, trueExpr, falseExpr]:标准的 if-else 结构。x = -5; If[x > 0, Print["Positive"], Print["Non-positive"]]
Which[test1, value1, test2, value2, ...]:多个条件分支。grade = 85; Which[grade >= 90, "A", grade >= 80, "B", grade >= 70, "C", True, "F"]
Switch[expr, form1, value1, form2, value2, ...]:根据表达式的值进行匹配。
3 循环结构:Do, For, While
虽然 Mathematica 更推荐使用函数式编程,但有时循环也很方便。
Do[expr, {i, imax}]:从i=1到imax循环执行expr。Do[Print[i^2], {i, 5}]For[start, test, incr, body]:经典的 for 循环。For[i = 1, i <= 5, i++, Print[i^2]]
While[test, body]:当test为True时,重复执行body。
4 函数式编程:Map, Table, Apply
这是 Mathematica 编程的精髓,能让代码更简洁、高效。
Map或 :将函数作用于列表的每一个元素。f /@ {a, b, c} (* 等价于 {f[a], f[b], f[c]} *)Table:根据一个表达式生成一个列表。Table[i^2, {i, 1, 5}] (* 生成 {1, 4, 9, 16, 25} *)Apply或 :将一个列表作为函数的参数。Plus @@ {1, 2, 3, 4, 5} (* 等价于 Plus[1, 2, 3, 4, 5],结果为 15 *)Nest:将一个函数嵌套应用多次。Nest[Sqrt, 16.0, 2] (* 计算.Sqrt[Sqrt[16.0]],结果为 2. *)
5 规则与模式匹配
这是 Mathematica 最强大的特性之一,它允许你根据数据的结构来定义函数的行为,而不仅仅是值的匹配。
_(Blank):匹配任何表达式。x_(Pattern):匹配任何表达式,并将其命名为x。x_?test:匹配满足test条件的表达式。x_:value:可选参数,如果未提供则使用默认值value。
示例:定义一个只对正数有效的平方根函数
(* 如果输入不是正数,返回 Undefined *) realSqrt[x_?Positive] := Sqrt[x] realSqrt[9] (* 结果为 3 *) realSqrt[-1] (* 结果为 Undefined *)
第五部分:实用技巧与资源
1 输入与输出格式控制
InputForm:显示为可编辑的文本形式。StandardForm: Mathematica 的标准显示形式。TraditionalForm: 类似于传统数学教科书的排版形式。Export:将结果导出为文件(如 PDF, PNG, CSV, TXT)。plot = Plot[Sin[x], {x, 0, 2 Pi}]; Export["sine_plot.png", plot]
2 文件操作
- 保存整个 Notebook:
File -> Save。 - 只保存代码:
File -> Save As...,然后选择.m或.wl文件( Wolfram Language Script)。 - 执行外部文件:
Get["file.m"]或其简短形式<<file.m。
3 与外部数据交互
Import:从文件导入数据(支持 Excel, CSV, JSON, Image 等)。data = Import["data.csv"];
Export:将数据导出到文件。
4 创建交互式界面:Manipulate
Manipulate 是 Mathematica 最具魅力的功能之一,它能让你用几行代码就创建出包含滑块、按钮等控件的交互式应用程序。
示例:交互式正弦波
Manipulate[
Plot[A Sin[2 Pi f t + p], {t, 0, 1},
PlotRange -> {-1.1, 1.1}],
{{A, 1, "振幅"}, 0, 2},
{{f, 1, "频率"}, 0.1, 5},
{{p, 0, "相位"}, 0, 2 Pi}
]
运行这段代码,你会得到一个图形和三个滑块,拖动滑块可以实时看到正弦波的变化。
5 Wolfram Cloud 与在线资源
- Wolfram Cloud:你可以在云端运行 Mathematica,创建和分享 Notebook,无需在本地安装。
- Wolfram Demonstrations Project:一个包含成千上万由社区创建的交互式演示的网站,是学习
Manipulate和各种应用案例的绝佳资源。 - Wolfram|Alpha:集成在 Mathematica 中,可以直接用自然语言提问或进行计算。
学习 Mathematica 是一个循序渐进的过程,建议你:
- 从基础开始:熟练掌握变量、函数、列表和基本绘图。
- 勤用帮助:遇到任何函数,先用 或
F1查看文档。 - 多动手实践:尝试复现教程中的例子,并解决一些小问题。
- 拥抱函数式编程:逐渐减少对
For循环的依赖,尝试使用Map,Table等函数式工具。 - 探索
Manipulate:这是将你的工作成果变得生动有趣的利器。
Mathematica 是一个极其强大的工具,一旦掌握,它将成为你科研、工程或数据分析工作中的得力助手,祝你学习愉快!
