积分的可视化
flyfish
考虑平方根函数
f
(
x
)
=
x
f(x) = \sqrt{x}
f(x)=x,其中
x
∈
[
0
,
1
]
x \in [0, 1]
x∈[0,1] 。在区间
[
0
,
1
]
[0, 1]
[0,1] 上,函数
f
f
f 下方的面积是指函数
y
=
f
(
x
)
y = f(x)
y=f(x) 的图像与
x
x
x 轴之间的部分面积
S
S
S。我们把这个面积称为函数
f
f
f 在区间
[
0
,
1
]
[0, 1]
[0,1] 上的积分,写作:
S
=
∫
0
1
x
d
x
S = \int_0^1 \sqrt{x} \, dx
S=∫01xdx其中,
d
x
dx
dx 称为积分变量,表示要求面积的范围是用坐标轴横轴的刻度计算。积分号
∫
\int
∫ 来源于拉长的字母
S
S
S(拉丁文中的 summa :求和的首字母),表示求和的过程。
∫
0
1
\int_0^1
∫01 则表示积分从 0 开始,到 1 为止,称为积分范围或积分域,其中 0 称为积分下界,1 称为积分上界,
x
\sqrt{x}
x 称为被积函数。为了计算这个积分,我们可以使用近似方法,将区间
[
0
,
1
]
[0, 1]
[0,1] 等分成若干小区间,用小长方形的面积和来逼近这个面积。假设将横轴区间
[
0
,
1
]
[0, 1]
[0,1] 等分成 5 个部分:[0,0.2)、[0.2,0.4)、[0.4,0.6)、[0.6,0.8)、[0.8,1]。然后在每一部分上放一个黄色的长方形,这些长方形的高度分别是函数在每个部分的极大值(即最右侧的值):
0.2
,
0.4
,
0.6
,
0.8
,
1
\sqrt{0.2}, \sqrt{0.4}, \sqrt{0.6}, \sqrt{0.8}, 1
0.2,0.4,0.6,0.8,1这样函数下方的部分就被这 5 个黄色长方形覆盖了,所以面积
S
S
S 小于这 5 个黄色长方形面积之和:
0.2
(
0.2
−
0
)
+
0.4
(
0.4
−
0.2
)
+
0.6
(
0.6
−
0.4
)
+
0.8
(
0.8
−
0.6
)
+
1
(
1
−
0.8
)
≈
0.7497
\sqrt{0.2} \left(0.2 - 0\right) + \sqrt{0.4} \left(0.4 - 0.2\right) + \sqrt{0.6} \left(0.6 - 0.4\right) + \sqrt{0.8} \left(0.8 - 0.6\right) + \sqrt{1} \left(1 - 0.8\right) \approx 0.7497
0.2(0.2−0)+0.4(0.4−0.2)+0.6(0.6−0.4)+0.8(0.8−0.6)+1(1−0.8)≈0.7497求出了
S
S
S 的上限之后,用类似的方法可以求
S
S
S 的下限。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# 定义函数
def f(x):
return np.sqrt(x)
# 创建绘图对象
fig, ax = plt.subplots()
x = np.linspace(0, 1, 400)
y = f(x)
# 设置坐标轴和标题
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_xlabel('$x$')
ax.set_ylabel('$f(x)$')
ax.set_title('Integral Approximation of $f(x) = \sqrt{x}$')
# 绘制函数图像
line, = ax.plot(x, y, label='$f(x) = \sqrt{x}$')
rects = []
# 更新函数,用于动画
def update(num):
ax.clear()
ax.plot(x, y, label='$f(x) = \sqrt{x}$')
# 设置等分数和间隔
n = 5
dx = 1 / n
xi = np.linspace(0, 1, n + 1)
# 黄色长方形,使用区间的最右侧值
yi_right = f(xi[1:])
for i in range(n):
rect = plt.Rectangle((xi[i], 0), dx, yi_right[i], color='yellow', alpha=0.5)
ax.add_patch(rect)
rects.append(rect)
# 计算黄色长方形面积和
integral_upper = np.sum(yi_right * dx)
# 绿色长方形,使用区间的最左侧值
yi_left = f(xi[:-1])
for i in range(n):
rect = plt.Rectangle((xi[i], 0), dx, yi_left[i], color='green', alpha=0.5)
ax.add_patch(rect)
rects.append(rect)
# 计算绿色长方形面积和
integral_lower = np.sum(yi_left * dx)
# 显示近似积分值
ax.text(0.5, 0.9, f'Upper Sum = {integral_upper:.4f}', transform=ax.transAxes, ha='center')
ax.text(0.5, 0.85, f'Lower Sum = {integral_lower:.4f}', transform=ax.transAxes, ha='center')
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_xlabel('$x$')
ax.set_ylabel('$f(x)$')
ax.set_title('Integral Approximation of $f(x) = \sqrt{x}$')
ax.legend()
# 创建动画
ani = animation.FuncAnimation(fig, update, frames=1, repeat=False)
# 保存为 GIF
ani.save('integral_approximation_animation.gif', writer='imagemagick')
# 显示动画
plt.show()
如果将横轴等分成 12 个部分,然后按照以上的方法放上绿色长方形,那么从图中可以看出,面积
S
S
S 必定大于绿色长方形面积之和:
0
12
(
1
12
−
0
)
+
1
12
(
2
12
−
1
12
)
+
⋯
+
11
12
(
1
−
11
12
)
≈
0.6203
\sqrt{\frac{0}{12}} \left(\frac{1}{12} - 0\right) + \sqrt{\frac{1}{12}} \left(\frac{2}{12} - \frac{1}{12}\right) + \cdots + \sqrt{\frac{11}{12}} \left(1 - \frac{11}{12}\right) \approx 0.6203
120(121−0)+121(122−121)+⋯+1211(1−1211)≈0.6203于是,面积
S
S
S 的取值介于 0.6203 和 0.7497 之间。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# 定义函数
def f(x):
return np.sqrt(x)
# 创建绘图对象
fig, ax = plt.subplots()
x = np.linspace(0, 1, 400)
y = f(x)
# 设置坐标轴和标题
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_xlabel('$x$')
ax.set_ylabel('$f(x)$')
ax.set_title('Integral Approximation of $f(x) = \sqrt{x}$')
# 绘制函数图像
line, = ax.plot(x, y, label='$f(x) = \sqrt{x}$')
rects = []
# 更新函数,用于动画
def update(num):
ax.clear()
ax.plot(x, y, label='$f(x) = \sqrt{x}$')
# 设置等分数和间隔
n = 12
dx = 1 / n
xi = np.linspace(0, 1, n + 1)
# 绿色长方形,使用区间的最左侧值
yi_left = f(xi[:-1])
for i in range(n):
rect = plt.Rectangle((xi[i], 0), dx, yi_left[i], color='green', alpha=0.5)
ax.add_patch(rect)
rects.append(rect)
# 计算绿色长方形面积和
integral_lower = np.sum(yi_left * dx)
# 显示近似积分值
ax.text(0.5, 0.85, f'Lower Sum = {integral_lower:.4f}', transform=ax.transAxes, ha='center')
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_xlabel('$x$')
ax.set_ylabel('$f(x)$')
ax.set_title('Integral Approximation of $f(x) = \sqrt{x}$')
ax.legend()
# 创建动画
ani = animation.FuncAnimation(fig, update, frames=1, repeat=False)
# 保存为 GIF
ani.save('integral_approximation_animation_12_parts.gif', writer='imagemagick')
# 显示动画
plt.show()
对于函数 f ( x ) = x f(x) = \sqrt{x} f(x)=x,在区间 [ 0 , 1 ] [0, 1] [0,1] 上的定积分,我们可以按照以下步骤来求解:
- 找到 f ( x ) f(x) f(x) 的不定积分 :我们首先将 f ( x ) = x f(x) = \sqrt{x} f(x)=x 转换成幂函数的形式: f ( x ) = x 1 / 2 f(x) = x^{1/2} f(x)=x1/2
根据幂函数积分法则:
∫
x
n
d
x
=
x
n
+
1
n
+
1
+
C
(
n
≠
−
1
)
\int x^n \, dx = \frac{x^{n+1}}{n+1} + C \quad (n \neq -1)
∫xndx=n+1xn+1+C(n=−1)
这里
n
=
1
/
2
n = 1/2
n=1/2,所以:
∫
x
1
/
2
d
x
=
x
(
1
/
2
)
+
1
(
1
/
2
)
+
1
+
C
=
x
3
/
2
3
/
2
+
C
=
2
3
x
3
/
2
+
C
\int x^{1/2} \, dx = \frac{x^{(1/2)+1}}{(1/2)+1} + C = \frac{x^{3/2}}{3/2} + C = \frac{2}{3} x^{3/2} + C
∫x1/2dx=(1/2)+1x(1/2)+1+C=3/2x3/2+C=32x3/2+C
因此,函数
x
\sqrt{x}
x 的不定积分(原函数)是:
F
(
x
)
=
2
3
x
3
/
2
+
C
F(x) = \frac{2}{3} x^{3/2} + C
F(x)=32x3/2+C
- 应用牛顿-莱布尼兹公式计算定积分 :
牛顿-莱布尼兹公式为:
∫ a b f ( x ) d x = F ( b ) − F ( a ) \int_a^b f(x) \, dx = F(b) - F(a) ∫abf(x)dx=F(b)−F(a)
在这里, f ( x ) = x f(x) = \sqrt{x} f(x)=x,积分的下限 a = 0 a = 0 a=0,上限 b = 1 b = 1 b=1。我们用不定积分 F ( x ) = 2 3 x 3 / 2 + C F(x) = \frac{2}{3} x^{3/2} + C F(x)=32x3/2+C 来计算定积分: ∫ 0 1 x d x = [ 2 3 x 3 / 2 ] 0 1 \int_0^1 \sqrt{x} \, dx = \left[ \frac{2}{3} x^{3/2} \right]_0^1 ∫01xdx=[32x3/2]01
计算 F ( 1 ) F(1) F(1) 和 F ( 0 ) F(0) F(0):
F ( 1 ) = 2 3 ⋅ 1 3 / 2 = 2 3 ⋅ 1 = 2 3 F(1) = \frac{2}{3} \cdot 1^{3/2} = \frac{2}{3} \cdot 1 = \frac{2}{3} F(1)=32⋅13/2=32⋅1=32
F ( 0 ) = 2 3 ⋅ 0 3 / 2 = 2 3 ⋅ 0 = 0 F(0) = \frac{2}{3} \cdot 0^{3/2} = \frac{2}{3} \cdot 0 = 0 F(0)=32⋅03/2=32⋅0=0
将这些值代入牛顿-莱布尼兹公式:
∫
0
1
x
d
x
=
2
3
−
0
=
2
3
\int_0^1 \sqrt{x} \, dx = \frac{2}{3} - 0 = \frac{2}{3}
∫01xdx=32−0=32
因此,函数
f
(
x
)
=
x
f(x) = \sqrt{x}
f(x)=x 在区间
[
0
,
1
]
[0, 1]
[0,1] 上的定积分为:
∫
0
1
x
d
x
=
2
3
\int_0^1 \sqrt{x} \, dx = \frac{2}{3}
∫01xdx=32
牛顿-莱布尼兹公式的意思是:要计算
f
(
x
)
f(x)
f(x) 在区间
[
a
,
b
]
[a, b]
[a,b] 上的定积分,我们首先找到
f
(
x
)
f(x)
f(x) 的一个原函数
F
(
x
)
F(x)
F(x),然后在
x
=
b
x = b
x=b 处计算
F
(
x
)
F(x)
F(x) 的值,再在
x
=
a
x = a
x=a 处计算
F
(
x
)
F(x)
F(x) 的值,最后用
F
(
b
)
−
F
(
a
)
F(b) - F(a)
F(b)−F(a) 得到定积分的值。
这个公式的重要性在于它将定积分问题转化为求原函数和计算函数值的问题。牛顿-莱布尼兹公式是微积分中的一个基本公式,它将定积分与导数(微分)联系起来。这个公式的表示形式是:
∫
a
b
f
(
x
)
d
x
=
F
(
b
)
−
F
(
a
)
\int_a^b f(x) \, dx = F(b) - F(a)
∫abf(x)dx=F(b)−F(a)
下面解释公式中的每个符号和字母的含义:
-
∫ a b \int_a^b ∫ab :这是定积分符号,表示我们要计算函数 f ( x ) f(x) f(x) 从 x = a x = a x=a 到 x = b x = b x=b 这段区间上的面积。
-
f ( x ) f(x) f(x) :这是被积函数,表示我们要对其求积分的函数。
-
d x dx dx :这是积分变量,表示我们对变量 x x x 求积分。
-
a a a :这是积分的下限,表示积分从 x = a x = a x=a 开始。
-
b b b :这是积分的上限,表示积分在 x = b x = b x=b 结束。
-
F ( x ) F(x) F(x) :这是函数 f ( x ) f(x) f(x) 的一个原函数(或不定积分),即 F ′ ( x ) = f ( x ) F'(x) = f(x) F′(x)=f(x)。也就是说, F ( x ) F(x) F(x) 的导数是 f ( x ) f(x) f(x)。
-
F ( b ) − F ( a ) F(b) - F(a) F(b)−F(a) :这是计算 F ( x ) F(x) F(x) 在上限 b b b 处的值减去在下限 a a a 处的值,表示从 x = a x = a x=a 到 x = b x = b x=b 这段区间上 f ( x ) f(x) f(x) 的定积分
幂函数积分法则可以通过反向操作微分来导出。幂函数积分法则的形式是:
∫
x
n
d
x
=
x
n
+
1
n
+
1
+
C
(
n
≠
−
1
)
\int x^n \, dx = \frac{x^{n+1}}{n+1} + C \quad (n \neq -1)
∫xndx=n+1xn+1+C(n=−1)
这里的
C
C
C 是积分常数。
证明过程
1. 基本思路
为了找到
∫
x
n
d
x
\int x^n \, dx
∫xndx 的结果,我们需要找到一个函数
F
(
x
)
F(x)
F(x),它的导数是
x
n
x^n
xn,即:
d
d
x
F
(
x
)
=
x
n
\frac{d}{dx} F(x) = x^n
dxdF(x)=xn
2. 试探求解
假设
F
(
x
)
F(x)
F(x) 具有以下形式:
F
(
x
)
=
x
n
+
1
n
+
1
F(x) = \frac{x^{n+1}}{n+1}
F(x)=n+1xn+1我们来验证这个假设是否正确,即验证它的导数是否等于
x
n
x^n
xn:
d
d
x
(
x
n
+
1
n
+
1
)
=
1
n
+
1
⋅
d
d
x
(
x
n
+
1
)
=
1
n
+
1
⋅
(
n
+
1
)
x
n
=
x
n
\frac{d}{dx} \left( \frac{x^{n+1}}{n+1} \right) = \frac{1}{n+1} \cdot \frac{d}{dx} \left( x^{n+1} \right) = \frac{1}{n+1} \cdot (n+1) x^n = x^n
dxd(n+1xn+1)=n+11⋅dxd(xn+1)=n+11⋅(n+1)xn=xn
所以,假设
F
(
x
)
=
x
n
+
1
n
+
1
F(x) = \frac{x^{n+1}}{n+1}
F(x)=n+1xn+1 的导数确实是
x
n
x^n
xn,因此:
∫
x
n
d
x
=
x
n
+
1
n
+
1
+
C
\int x^n \, dx = \frac{x^{n+1}}{n+1} + C
∫xndx=n+1xn+1+C
特殊情况
n
=
−
1
n = -1
n=−1对于
n
=
−
1
n = -1
n=−1,我们有:
∫
x
−
1
d
x
=
∫
1
x
d
x
\int x^{-1} \, dx = \int \frac{1}{x} \, dx
∫x−1dx=∫x1dx
根据对数函数的积分法则,我们知道:
∫
1
x
d
x
=
ln
∣
x
∣
+
C
\int \frac{1}{x} \, dx = \ln|x| + C
∫x1dx=ln∣x∣+C
进一步解释
-
基本思想 :积分是微分的逆运算。我们通过找到一个函数的导数等于被积函数来确定它的积分。
-
积分常数 C C C :不定积分结果中包含一个任意常数 C C C,因为导数过程中常数项会被消去。
-
适用范围 :幂函数积分法则适用于所有 n ≠ − 1 n \neq -1 n=−1 的实数。当 n = − 1 n = -1 n=−1 时,被积函数是 1 x \frac{1}{x} x1,它的积分是 ln ∣ x ∣ \ln|x| ln∣x∣,这是一个特殊情况。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.patches import Polygon
# 定义函数
def f(x):
return np.sqrt(x)
# 创建绘图对象
fig, ax = plt.subplots()
x = np.linspace(0, 1, 400)
y = f(x)
line, = ax.plot(x, y, label='$f(x) = \sqrt{x}$')
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_xlabel('$x$')
ax.set_ylabel('$f(x)$')
ax.set_title('Integral of $f(x) = \sqrt{x}$ from 0 to 1')
ax.legend()
# 更新函数,用于动画
def update(num):
ax.clear()
ax.plot(x, y, label='$f(x) = \sqrt{x}$')
ax.fill_between(x[:num], y[:num], color="skyblue", alpha=0.4)
# 计算当前的积分值
integral_value = np.trapz(y[:num], x[:num])
# 显示当前的积分值和 x 值
ax.text(0.1, 0.9, f'$x = {x[num]:.2f}$', transform=ax.transAxes)
ax.text(0.1, 0.85, f'Integral = {integral_value:.2f}', transform=ax.transAxes)
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.set_xlabel('$x$')
ax.set_ylabel('$f(x)$')
ax.set_title('Integral of $f(x) = \sqrt{x}$ from 0 to 1')
ax.legend()
# 创建动画
ani = animation.FuncAnimation(fig, update, frames=len(x), repeat=False)
# 保存为 GIF
ani.save('integral_animation.gif', writer='imagemagick')
# 显示动画
plt.show()
定积分与不定积分
定积分
定义 :定积分是计算一个函数在某个区间上的累积量(通常是面积)。表示 :定积分用符号 ∫ a b f ( x ) d x \int_a^b f(x) \, dx ∫abf(x)dx 表示,其中:
-
∫ \int ∫ 是积分符号。
-
a a a 和 b b b 是积分的下限和上限,分别表示积分的起点和终点。
-
f ( x ) f(x) f(x) 是被积函数。
-
d x dx dx 表示积分变量。
结果 :定积分的结果是一个数值,它表示函数 f ( x ) f(x) f(x) 在区间 [ a , b ] [a, b] [a,b] 上的累积量。例如,函数图像与 x 轴之间的面积。计算方法 :牛顿-莱布尼兹公式是常用的方法之一: ∫ a b f ( x ) d x = F ( b ) − F ( a ) \int_a^b f(x) \, dx = F(b) - F(a) ∫abf(x)dx=F(b)−F(a)
其中 F ( x ) F(x) F(x) 是 f ( x ) f(x) f(x) 的一个原函数(不定积分),即 F ′ ( x ) = f ( x ) F'(x) = f(x) F′(x)=f(x)。
不定积分
定义 :不定积分是找到一个函数的所有原函数的过程。表示 :不定积分用符号 ∫ f ( x ) d x \int f(x) \, dx ∫f(x)dx 表示,其中:
-
∫ \int ∫ 是积分符号。
-
f ( x ) f(x) f(x) 是被积函数。
-
d x dx dx 表示积分变量。
结果 :不定积分的结果是一个函数加上一个任意常数 C C C,表示函数的所有原函数。例如: ∫ f ( x ) d x = F ( x ) + C \int f(x) \, dx = F(x) + C ∫f(x)dx=F(x)+C
其中 F ( x ) F(x) F(x) 是 f ( x ) f(x) f(x) 的一个原函数,即 F ′ ( x ) = f ( x ) F'(x) = f(x) F′(x)=f(x),而 C C C 是积分常数。
定积分有上下限
∫
a
b
f
(
x
)
d
x
\int_a^b f(x) \, dx
∫abf(x)dx,不定积分没有上下限
∫
f
(
x
)
d
x
\int f(x) \, dx
∫f(x)dx。
定积分的结果是一个数值,不定积分的结果是一个函数加上一个常数
C
C
C。
定积分表示累积量(如面积),不定积分表示原函数(反导数)。
定积分常用牛顿-莱布尼兹公式计算,不定积分需要找到反导数并加上积分常数
C
C
C。
举例来说,对于函数
f
(
x
)
=
x
2
f(x) = x^2
f(x)=x2:
-
不定积分是:
∫ x 2 d x = x 3 3 + C \int x^2 \, dx = \frac{x^3}{3} + C ∫x2dx=3x3+C -
如果求定积分在区间 [ 1 , 2 ] [1, 2] [1,2] 上的面积:
∫ 1 2 x 2 d x = [ x 3 3 ] 1 2 = 2 3 3 − 1 3 3 = 8 3 − 1 3 = 7 3 \int_1^2 x^2 \, dx = \left[ \frac{x^3}{3} \right]_1^2 = \frac{2^3}{3} - \frac{1^3}{3} = \frac{8}{3} - \frac{1}{3} = \frac{7}{3} ∫12x2dx=[3x3]12=323−313=38−31=37
最常用的基本积分法则包括以下几条:
-
幂函数积分法则 : ∫ x n d x = x n + 1 n + 1 + C (其中 n ≠ − 1 ) \int x^n \, dx = \frac{x^{n+1}}{n+1} + C \quad \text{(其中 } n \neq -1 \text{)} ∫xndx=n+1xn+1+C(其中 n=−1)
-
常数积分法则 : ∫ a d x = a x + C \int a \, dx = ax + C ∫adx=ax+C
-
指数函数积分法则 : ∫ e x d x = e x + C \int e^x \, dx = e^x + C ∫exdx=ex+C
-
对数函数积分法则 : ∫ 1 x d x = ln ∣ x ∣ + C (其中 x ≠ 0 ) \int \frac{1}{x} \, dx = \ln|x| + C \quad \text{(其中 } x \neq 0 \text{)} ∫x1dx=ln∣x∣+C(其中 x=0)
-
正弦函数积分法则 : ∫ sin x d x = − cos x + C \int \sin x \, dx = -\cos x + C ∫sinxdx=−cosx+C
-
余弦函数积分法则 : ∫ cos x d x = sin x + C \int \cos x \, dx = \sin x + C ∫cosxdx=sinx+C
-
基本积分法则的线性组合 : ∫ ( a f ( x ) + b g ( x ) ) d x = a ∫ f ( x ) d x + b ∫ g ( x ) d x \int (af(x) + bg(x)) \, dx = a \int f(x) \, dx + b \int g(x) \, dx ∫(af(x)+bg(x))dx=a∫f(x)dx+b∫g(x)dx