Wang Haihua
🍈 🍉🍊 🍋 🍌
本文将讨论积分的定义,微分的概念,我们将学习如何用微积分基本定理来解决积分
从历史上看,积分概念的发展是由一个重要的几何问题推动的:求几何形状的面积。
例如,考虑函数$f(x) = \mathrm{e}^x$,在$a = 0$和$b = 1$之间曲线下方的面积,即下图中浅蓝色阴影区域:
我们将函数$f(x)$下方从$a$到 $b$的面积定义为积分:
$$ \displaystyle\int_a^b f(x) dx = \text{由f(x)曲线下面积} $$我们如何用公式来定义积分的概念呢?
在初等几何中,我们常常通过将复杂形状细分成许多不重叠的简单形状来求其面积,因为这些简单形状的面积容易计算。我们可以用众多矩形来近似一个曲线下方的面积。具体来说,我们可以把$a$ 和 $b$之间的阴影部分面积分成 $N$ 个互不重叠的宽度为 $\Delta x$ 的矩形,举行的高为 $f(x_n)$, 这里 $x_n$ 是第n个矩形左下角点的横坐标. 这些近似值用以下图表表示: 多划分几个矩形 矩形再密一些
我们把这种近似方法写成下列公式 $$ \displaystyle\sum_{n=0}^{N-1} \text{第 $n$个矩形地面积} = \displaystyle\sum^{N-1}_{n=0} f(x_n) \Delta x $$ 其中 $\Delta x = \dfrac{b - a}{N}$ 是小矩形的宽度,$x_n = n \Delta x$ 是矩形左下角点的横坐标.
正如上面几幅图所展示的,矩形的近似值随着矩形的数量$N$的增加而变得越来越好。当$N$趋于无穷时就获得了近似面积的极限值:
$$ \displaystyle\int_a^b f(x) dx = \displaystyle\lim_{N \rightarrow \infty} \displaystyle\sum^{N-1}_{n=0} f(x_n) \Delta x_{n} = \displaystyle\lim_{N \rightarrow \infty} \displaystyle\sum^{N-1}_{n=0} f(x_n) \left(x_{n+1} - x_{n} \right) $$下图展示了近似面积的值逐渐收敛(趋近)于某个极限值 这个极限值就是函数$f(x)$在$a$到$b$的积分。
import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
import pandas as pd
import scipy.stats
plt.rcParams['font.family']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
%matplotlib inline
曲线下方的面积
def plot_area(x_range, f, label = ""):
plt.plot(x_range, f(x_range), label = label)
plt.fill_between(x_range, 0, f(x_range), alpha = 0.25)
plt.title("曲线下方的面积")
a = 0
b = 2
x_range = np.linspace(a,b,1000)
f = lambda x: np.exp(x)
plot_area(x_range, f, r"$e^x$")
plt.axvline(a, label="a", ls="--", color="k")
plt.axvline(b, label="b", ls="--", color="k")
plt.axhline(0, ls="--", color="k")
plt.legend(loc="best")
plt.savefig('images/cal0801.png')
fN = lambda x,N = 2: f(np.floor(x*N)/N)
plot_area(x_range, fN, label=str(4))
plt.plot(x_range, f(x_range), c="k", lw=2, label = "Real function")
#plt.legend(loc="best")
plt.axvline(a, label="a", ls="--", color="k")
plt.axvline(b, label="b", ls="--", color="k")
plt.axhline(0, ls="--", color="k")
plt.savefig('images/cal0802.png')
fN = lambda x,N = 4: f(np.floor(x*N)/N)
plot_area(x_range, fN, label=str(8))
plt.plot(x_range, f(x_range), c="k", lw=2, label = "Real function")
#plt.legend(loc="best")
plt.axvline(a, label="a", ls="--", color="k")
plt.axvline(b, label="b", ls="--", color="k")
plt.axhline(0, ls="--", color="k")
plt.savefig('images/cal0803.png')
fN = lambda x,N = 8: f(np.floor(x*N)/N)
plot_area(x_range, fN, label=str(16))
plt.plot(x_range, f(x_range), c="k", lw=2, label = "Real function")
#plt.legend(loc="best")
plt.axvline(a, label="a", ls="--", color="k")
plt.axvline(b, label="b", ls="--", color="k")
plt.axhline(0, ls="--", color="k")
plt.savefig('images/cal0804.png')
积分的定义
def integral(a, b, f, N):
x_range = np.linspace(a,b,N)
dx = (b-a)/N
f_values = [f(x) for x in x_range]
return sum([fx*dx for fx in f_values])
N_range = range(10,1000,10)
plt.plot(N_range, [integral(a,b,lambda x: np.exp(x), N) for N in N_range])
plt.axhline(np.exp(b) - np.exp(a), c = "k", ls="--")
plt.xlabel("小矩形的个数")
plt.savefig('images/cal0805.png')