← 返回Book 3目录
第10章

函数

Functions

单调性、二元函数与多维可视化

📚 本章内容

本章介绍函数的基本性质和可视化方法,包括一元函数的单调性分析和二元函数的多视角3D可视化。 通过交互式探索,理解函数的增减性、切片视图、等高线和投影等概念。

10.1
函数单调性
10.2
二元函数可视化

10.1 函数单调性

函数的单调性描述了函数值随自变量增大而增大或减小的性质。 单调递增区间满足 f'(x) > 0,单调递减区间满足 f'(x) < 0。

单调递增:
对于区间I内任意x₁ < x₂,都有f(x₁) < f(x₂)
单调递减:
对于区间I内任意x₁ < x₂,都有f(x₁) > f(x₂)

函数单调性

分析函数在不同区间的增减性

xf(x)-2-112

当前函数

f(x) = -x²
开口向下的抛物线

选择函数

单调性区间

(-∞, 0)
↗ 单调递增
(0, +∞)
↘ 单调递减

💡 单调性判定

• 单调递增:f'(x) > 0,函数值随x增大而增大

• 单调递减:f'(x) < 0,函数值随x增大而减小

• 驻点:f'(x) = 0,可能是极值点

• 绿色区域:单调递增区间

• 红色区域:单调递减区间

10.2 一元函数:一个自变量

如果函数 f(x) 作为唯一一输入值,输出值写作 y = f(x),函数就是一元函数,也就是说,有一个 自变量的函数叫做一元函数 (univariate function)。

⚠️ 注意:定义域中任一 x 在值域中有唯一一对应的 y。当然,不同 x 可以对应一样的函数值 f(x)。

平面直角坐标系中,一般用线图 (line plot 或 line chart) 作为函数的可视化方案。

Peaks函数:
f(x,y) = 3(1-x)²e^(-x²-(y+1)²) - 10(x/5-x³-y⁵)e^(-x²-y²) - (1/3)e^(-(x+1)²-y²)
3D曲面:
完整空间视图
切片视图:
固定x或y
等高线:
俯视高度
投影:
不同方向

二元函数3D探索器

多视角展示二元函数 f(x,y) 的形状和特征

函数定义

f(x,y) = 3(1-x)²e^(-x²-(y+1)²) - 10(x/5-x³-y⁵)e^(-x²-y²) - (1/3)e^(-(x+1)²-y²)

视图模式

视角调节

📐 可视化说明

3D曲面:完整的三维表面视图

切片视图:固定x或y值观察函数变化

等高线图:从上方俯视的高度分布

投影视图:不同方向的投影效果

10.4 二元函数:两个自变量

有两个自变量函数叫做二元函数 (bivariate function),比如 y = f(x₁, x₂)。 本书常常借助三维直角坐标系可视化二元函数。图 18 所示为二元函数映射关系以及几个示例。

二元函数映射关系

x₁, x₂
x₁
x₂
x₁
x₂
x₁
x₂
x₁
x₂
x₁
x₂
x₁
x₂
y = f(x₁, x₂)
y
y1
y2
y3
y4
y5
y6

二元函数示例

平面
碗型
锥型
马鞍型

📝 示例:二元一次函数 y = f(x₁, x₂) = x₁ + x₂ 有 x₁ 和 x₂ 两个自变量。 当 x₁ 和 x₂ 取值分别为 x₁ = 2, x₂ = 4,函数值 f(x₁ = 2, x₂ = 4) = 2 + 4 = 6。

💡 此外,有多个自变量函数叫做多元函数 (multivariate function), 比如 y = f(x₁, x₂, ..., xD) 有 D 个自变量。

网格化数据

为了获得 f(x₁, x₂) 在三维空间的图形,需要提供一系列整齐的网格化坐标值 (x₁, x₂),如下:

(x₁, x₂) = [(-4,-4) (-2,-4) (0,-4) (2,-4) (4,-4)]
          [(-4,-2) (-2,-2) (0,-2) (2,-2) (4,-2)]
          [(-4,0) (-2,0) (0,0) (2,0) (4,0)]
          [(-4,2) (-2,2) (0,2) (2,2) (4,2)]
          [(-4,4) (-2,4) (0,4) (2,4) (4,4)]

(10)

将上述坐标点 x₁ 和 x₂ 分离并写成两个矩阵形式:

x₁ 矩阵(列相同)

[-4 -2 0 2 4]
[-4 -2 0 2 4]
[-4 -2 0 2 4]
[-4 -2 0 2 4]
[-4 -2 0 2 4]

x₁ 的每个值代表点的横坐标值

x₂ 矩阵(行相同)

[-4 -4 -4 -4 -4]
[-2 -2 -2 -2 -2]
[ 0 0 0 0 0]
[ 2 2 2 2 2]
[ 4 4 4 4 4]

x₂ 的每个值代表点的纵坐标值

公式 (11):式中,x₁ 的每个值代表点的横坐标值,x₂ 的每个值代表点的纵坐标值。 🐍 numpy.meshgrid() 可以用来获得网格化数据。

⚠️ 注意:上式中 x₁ 和 x₂ 仅仅是示意,本书矩阵一般记号都是大写字母, 如 A、V、X 等。

y = f(x₁, x₂) = x₁ + x₂ 这个二元函数便是将 (11) 相同位置的数值相加得到函数值 f(x₁, x₂) 的矩阵:

f(x₁, x₂) = x₁ + x₂ =
[-4 -2 0 2 4]
[-4 -2 0 2 4]
[-4 -2 0 2 4]
[-4 -2 0 2 4]
[-4 -2 0 2 4]
+
[-4 -4 -4 -4 -4]
[-2 -2 -2 -2 -2]
[ 0 0 0 0 0]
[ 2 2 2 2 2]
[ 4 4 4 4 4]
=
[-8 -6 -4 -2 0]
[-6 -4 -2 0 2]
[-4 -2 0 2 4]
[-2 0 2 4 6]
[ 0 2 4 6 8]

(12)

图 19 所示为 f(x₁, x₂) = x₁ + x₂ 对应的三维空间平面。函数 f() 则代表某种规则, 将网格化数据从 x₁x₂ 平面映射到三维空间。

x₁x₂f(x₁, x₂)

图 19. f(x₁, x₂) = x₁ + x₂ 对应的三维空间平面

💡 这就是前文提到的,在绘制函数图像时,比如二元函数曲面,实际上输入的函数值都是离散的、 网格化的。当然,网格越密,函数曲面越精细。

实际应用中,网格的疏密可以根据函数的复杂度调整。比如图 19 这种平面图像很简单,因此 可以用比较稀疏的网格来呈现图像;但是,对于比较复杂的函数,网格则需要设置的密一些,也 就是步长小一些。

一个复杂曲面

下面看一个复杂二元函数 f(x₁, x₂) 对应的曲面。

图 20 对应的函数解析式为:

f(x₁, x₂) = 3(1-x₁)² exp(-x₁² - (x₂+1)²) - 10(x₁/5 - x₁³ - x₂⁵) exp(-x₁² - x₂²) - (1/3) exp(-(x₁+1)² - x₂²)

(13)

相对图 19,图 20 的网格更为密集,这是为了更准确地观察分析这个比较复杂曲面的各种特征。 本章后续有关二元函数的可视化方案,都会以上述二元函数作为例子。

图 20. 网格化数据与二元函数映射

输入:网格化坐标 (x₁, x₂)
x₁ = -1x₂ = 1(-1, 1)

x₁x₂ 平面上的网格坐标点

输出:f(x₁, x₂) 三维曲面
f(-1,1)

网格点映射到三维空间形成曲面

Mapping: f(x₁, x₂)

📝 代码文件 Bk3_Ch10_02.py 中Bk3_Ch10_02_A 部分绘制 20 二元函数 f(x₁, x₂) 对应的网格曲面。

章节总结

关键要点

📈
函数单调性
增减性分析
🎨
多维可视化
3D、切片、等高线

核心概念

  • ▸单调性通过导数f'(x)的符号判定:正号递增,负号递减
  • ▸二元函数需要从多个视角观察才能全面理解其空间特征
  • ▸切片视图固定一个变量,观察函数在另一个方向的变化
  • ▸等高线图是从上方俯视的高度分布,类似地形图
  • ▸投影将3D信息压缩到2D平面,便于分析特定方向的特征

🔬 实际应用

优化问题

通过分析函数单调性寻找最优解,在工程设计和经济决策中广泛应用。

数据可视化

多维数据通过3D曲面和等高线展示,帮助发现数据中的模式和趋势。

地形分析

地理高程数据用二元函数表示,等高线图是地图的基础表达形式。

机器学习

损失函数通常是多元函数,通过可视化理解优化过程和梯度下降。