杰瑞科技汇

Mathematica教程,如何快速入门与高效应用?

Mathematica 全面教程

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

Mathematica教程,如何快速入门与高效应用?-图1
(图片来源网络,侵删)

目录

  1. 第一部分:入门基础

    • 1 安装与启动
    • 2 界面初识:Notebook 与 Wolfram Desktop
    • 3 第一个计算:Shift + Enter
    • 4 核心理念:一切皆表达式
    • 5 获取帮助: 和 F1
  2. 第二部分:核心语法与数据类型

    • 1 基本算术运算
    • 2 变量与赋值
    • 3 函数的定义与调用
    • 4 常用数据类型
    • 5 列表:Mathematica 的“瑞士军刀”
      • 5.1 创建列表
      • 5.2 访问列表元素
      • 5.3 列表操作
    • 6 注释
  3. 第三部分:Mathematica 的三大支柱

    • 1 数值计算
    • 2 符号演算 (Symbolic Computation)
    • 3 绘图与可视化
      • 3.1 基本绘图函数
      • 3.2 绘图选项
      • 3.3 三维绘图与数据可视化
  4. 第四部分:编程进阶

    • 1 模块化编程:ModuleBlock
    • 2 条件判断:If, Which, Switch
    • 3 循环结构:Do, For, While
    • 4 函数式编程:Map, Table, Apply
    • 5 规则与模式匹配
  5. 第五部分:实用技巧与资源

    • 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 中最重要的操作。

  1. 在 Notebook 的一个输入单元中输入:1 + 1
  2. 按下 Shift + Enter 组合键。
  3. 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 是头部,12 是元素。
    • {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 * 32 3 6
除法 10 / 2 5
乘方 ^ 2^3 8
括号 (2 + 3) * 4 20

注意

  • 乘法可以用 也可以用空格表示,x yx*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 这个表达式 *)
  • 清除变量:使用 ClearRemove

    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}
  • 使用 RangeTable 生成:
    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 的“杀手锏”。

  • 展开表达式Expand
    Expand[(x + y)^2]

    输出:

    Out[4]= x^2 + 2 x y + y^2
  • 因式分解Factor
    Factor[x^2 + 2 x y + y^2]

    输出:

    Out[5]= (x + y)^2
  • 求导D
    D[x^3 + 2 x^2 + x, x] (* 对 x 求导 *)
    D[Sin[x] Cos[x], {x, 2}] (* 对 x 求二阶导 *)
  • 积分Integrate
    Integrate[x^2, x]          (* 不定积分 *)
    Integrate[Exp[-x^2], {x, -Infinity, Infinity}] (* 定积分 *)
  • 解方程Solve
    Solve[x^2 - 3 x + 2 == 0, x] (* 解代数方程 *)
    Solve[{x + y == 3, x - y == 1}, {x, y}] (* 解方程组 *)

3 绘图与可视化

3.1 基本绘图函数
  • 一维函数绘图Plot
    Plot[Sin[x], {x, 0, 2 Pi}, PlotLabel -> "Sine Function"]
  • 参数方程绘图ParametricPlot
    ParametricPlot[{Cos[t], Sin[t]}, {t, 0, 2 Pi}]
  • 二维数据点绘图ListPlot
    data = Table[{i, RandomReal[]}, {i, 10}];
    ListPlot[data]
  • 三维函数绘图Plot3D
    Plot3D[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 模块化编程:ModuleBlock

为了避免变量名冲突,并封装代码,应该使用 Module

  • Module[{localVars}, body]:创建一个局部作用域。localVars 是模块内独有的局部变量列表。
    (* 一个计算阶乘的函数 *)
    factorial[n_] := Module[{result = 1, i},
      For[i = 1, i <= n, i++,
        result = result * i;
      ];
      result
    ]
    factorial[5]

    这里的 resulti 只在 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=1imax 循环执行 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]:当 testTrue 时,重复执行 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 是一个循序渐进的过程,建议你:

  1. 从基础开始:熟练掌握变量、函数、列表和基本绘图。
  2. 勤用帮助:遇到任何函数,先用 或 F1 查看文档。
  3. 多动手实践:尝试复现教程中的例子,并解决一些小问题。
  4. 拥抱函数式编程:逐渐减少对 For 循环的依赖,尝试使用 Map, Table 等函数式工具。
  5. 探索 Manipulate:这是将你的工作成果变得生动有趣的利器。

Mathematica 是一个极其强大的工具,一旦掌握,它将成为你科研、工程或数据分析工作中的得力助手,祝你学习愉快!

分享:
扫描分享到社交APP
上一篇
下一篇