Logo
Section 1 / 11

函数

了解函数,学习在 Python 中实现函数,并进行可视化。

导入

函数

了解函数,学习在 Python 中实现函数,并进行可视化。

什么是函数?

...
函数的机器类比图

一个函数就像一台输入数据并产生输出结果的机器。大多数机器都有不同的设置来调节输出结果(通常会有一个按钮面板用于调整设置),这些设置被称为函数的参数。

函数示例

例如,在 fa,b(x1,x2)=ax1+bx2f_{a,b}(x_1,x_2)=ax_1+bx_2 中,ff 是一个函数,x1x_1 和 x2x_2 是两个输入,aa 和 bb 是两个参数,而 ax1+bx2ax_1+bx_2 是函数的输出结果。

Python 中的函数

提示: 本课程使用 Python。如果你不熟悉 Python,建议先学习一些 Python 基础知识。

以下是我们在 Python 中对上述示例函数进行实验的方法:

1def f(x1, x2): 2 a, b = 2, -4 3 output = a * x1 + b * x2 4 return output 5 6x1, x2 = 5, 7 7c = f(x1, x2) 8print(c)

函数的正式定义

从数学上讲,函数是从一组输入到一组可能输出的关系,其中每个输入都唯一对应一个输出。

...
函数示意图

这意味着,如果某个对象 xx 属于输入集合(称为定义域),那么函数 ff 就将该对象 xx 映射到输出集合(称为陪域)中的唯一一个对象 f(x)f(x)。

函数输入与输出的通用性

函数的输入 xx 和输出 yy 可以是任意类型的对象,比如数组、矩阵、张量等。矩阵是一种二维数组,而张量则是具有多个维度(通常超过两个)的数组。不必过于担心这些概念,后续课程中我们会详细讲解矩阵、向量和张量。

示例:数组作为输入,标量作为输出

以下函数将输入数组的所有元素相加,并返回总和: f([x1,x2,…,xn])=x1+x2+⋯+xnf([x_1, x_2, \dots, x_n]) = x_1 + x_2 + \dots + x_n

1import numpy as np 2def f(x): 3 return np.sum(x) 4print(f(np.array([-1, 3, 4.6, 0, 9])))

示例:数组作为输入,数组作为输出

以下函数将输入数组按升序排列: f([x1,x2,…,xn])=[xi1,xi2,…,xin]f([x_1, x_2, \dots, x_n]) = [x_{i1}, x_{i2}, \dots, x_{in}],其中满足 xij≤xikx_{ij} \le x_{ik},当 k>jk > j 时成立。

1import numpy as np 2def f(x): 3 return np.sort(x) 4print(f(np.array([3, 4, 6, 1, 2, -1, 0, 9])))

函数的可视化

可视化函数有助于理解其行为。在数据分析中,可视化能更清晰地揭示输入与输出之间的关系。

多项式的可视化

让我们来可视化一些简单的多项式函数:f(x)=x2f(x) = x^2 和 f(x)=x3f(x) = x^3。

1import numpy as np 2import matplotlib.pyplot as plt 3x = np.arange(0., 5., 0.2) 4plt.plot(x, x**2, 'bs', x, x**3, 'g^') 5plt.xlabel('x'); plt.ylabel('f(x)') 6plt.legend(['x^2', 'x^3'], loc='upper left')

三维平面的可视化

三维空间中的一个平面可以看作是一个函数:fa,b,c(x1,x2)=ax1+bx2+cf_{a,b,c}(x_1, x_2) = ax_1 + bx_2 + c。如果 c=0c = 0,则该平面经过原点,构成一个子空间(稍后会进一步讨论)。

...
三维图像可视化

注意: 我们还可以通过以下应用程序与三维图像互动。启动应用后,点击“Jupyter”笔记本中的“运行”按钮。使用鼠标旋转和缩放图像。欢迎修改代码,尝试不同的参数和代码。

简介

数据科学中的函数