目录
- 不定积分
- 定积分
- 微分方程
- 线性微分方程解的结构
- 常系数齐次线性微分方程
- 常系数齐次线性微分方程特解的求法
- 计算机解法
不定积分
第一类换元积分法:灵感来自于复合函数的求导,利用中间变量替换得到复合函数的积分法:设 f ( u ) f(u) f(u)具有原函数, u = φ ( x ) u=\varphi(x) u=φ(x)可导,则有换元公式
∫ f [ φ ( x ) ] φ ′ ( x ) d x = [ ∫ f ( u ) d u ] u = φ ( x ) \int f[\varphi(x)]\varphi'(x)dx=[\int f(u)du]_{u=\varphi(x)} ∫f[φ(x)]φ′(x)dx=[∫f(u)du]u=φ(x)
∫ 2 cos 2 x d x = ∫ cos 2 x ( 2 x ) ′ d x ( 令 u = 2 x ) = sin 2 x + C \int 2\cos 2xdx=\int \cos 2x(2x)'dx(令u=2x)=\sin 2x+C ∫2cos2xdx=∫cos2x(2x)′dx(令u=2x)=sin2x+C
∫ 2 x e x 2 d x = ∫ e x 2 ( x 2 ) ′ d x = e x 2 + C \int 2xe^{x^2}dx=\int e^{x^2}(x^2)'dx=e^{x^2}+C ∫2xex2dx=∫ex2(x2)′dx=ex2+C
第二类换元积分法: 设 x = ψ ( t ) x=\psi(t) x=ψ(t)是单调的可导函数,并且 ψ ′ ( t ) ≠ 0 \psi'(t)\ne 0 ψ′(t)=0. 又设 f [ ψ ( t ) ] ψ ′ ( t ) f[\psi(t)]\psi'(t) f[ψ(t)]ψ′(t)具有原函数,则有换元公式
∫ f ( x ) d x = [ ∫ f ( ψ ( t ) ψ ′ ( t ) d t ] t = ψ − 1 ( x ) \int f(x)dx=\left[\int f(\psi(t)\psi'(t)dt\right]_{t=\psi^{-1}(x)} ∫f(x)dx=[∫f(ψ(t)ψ′(t)dt]t=ψ−1(x)
这种情况其实很难一眼直观看出来,三角函数相关的积分比较常见。
f ( x ) = a 2 − x 2 d x = a 2 cos 2 t ∣ d t ( 令 x = a sin t , − π 2 < t < π 2 ) = a 2 t + sin t cos t 2 + C = a 2 arcsin x a + x a 2 − x 2 2 + C ( 将 t = arcsin x a 带入 ) \begin{aligned} f(x)&=\sqrt{a^2-x^2}dx\\ &=a^2\cos^2 t|dt\ (令x=a\sin t, -\frac{\pi}{2}<t<\frac{\pi}{2})\\ &=\frac{a^2t+\sin t\cos t}{2}+C\\ &=\frac{a^2\arcsin \frac{x}{a}+x\sqrt{a^2-x^2}}{2}+C(将t=\arcsin \frac{x}{a}带入) \end{aligned} f(x)=a2−x2dx=a2cos2t∣dt (令x=asint,−2π<t<2π)=2a2t+sintcost+C=2a2arcsinax+xa2−x2+C(将t=arcsinax带入)
分部积分法:来源于两个函数乘积的导数计算公式。设函数 u = u ( x ) , v = v ( x ) u=u(x), v=v(x) u=u(x),v=v(x)具有连续导数,则 ( u v ) ′ = u ′ v + u v ′ (uv)'=u'v+uv' (uv)′=u′v+uv′,移项并求积分得到:
∫ u v ′ d x = u v − ∫ u ′ v d x \int uv'dx=uv-\int u'vdx ∫uv′dx=uv−∫u′vdx
也即 ∫ u d v = u v − ∫ v d u \int udv=uv-\int vdu ∫udv=uv−∫vdu
∫ x cos x d x = x sin x − ∫ sin x d x = x sin x + cos x + C ( 其中 u = x , v = sin x ) \int x\cos xdx=x\sin x-\int \sin xdx=x\sin x+\cos x+C(其中u=x,v=\sin x) ∫xcosxdx=xsinx−∫sinxdx=xsinx+cosx+C(其中u=x,v=sinx)
通常来讲,希望取原函数的函数 u u u的导数具有更简单的形式,从而 ∫ u ′ v d x \int u'vdx ∫u′vdx具有更简单的形式。
积分示例
多项式积分
f ( x ) = x x 2 − x + 1 ∫ f ( x ) d x = ∫ 1 2 2 x − 1 x 2 − x + 1 + 1 2 1 x 2 − x + 1 d x = ∫ 1 2 1 x 2 − x + 1 d ( x 2 − x + 1 ) + ∫ 1 2 1 ( x − 1 2 ) 2 + 3 4 d x = 1 2 l n ∣ x 2 − x + 1 ∣ + 1 3 a r c t a n 2 3 ( x − 1 2 ) + C \begin{aligned} f(x) &= \frac {x}{x^2-x+1}\\ \int f(x)dx&=\int \frac{1}{2}\frac{2x-1}{x^2-x+1}+\frac{1}{2}\frac{1}{x^2-x+1}dx\\ &=\int\frac 1 2\frac{1}{x^2-x+1}d(x^2-x+1)+\int\frac{1}{2}\frac{1}{(x-\frac{1}{2})^2+\frac 3 4}dx\\ &=\frac 1 2 ln|x^2-x+1|+\frac 1 {\sqrt{3}}arctan\frac 2{\sqrt{3}}(x-\frac 1 2)+C \end{aligned} f(x)∫f(x)dx=x2−x+1x=∫21x2−x+12x−1+21x2−x+11dx=∫21x2−x+11d(x2−x+1)+∫21(x−21)2+431dx=21ln∣x2−x+1∣+31arctan32(x−21)+C
万能公式
∫ c s c x d x = ∫ 1 s i n x d x = ∫ 1 2 s i n x 2 c o s x 2 d x = ∫ s i n 2 x 2 + c o s 2 x 2 2 s i n x 2 c o s x 2 d x = ∫ t a n 2 x 2 + 1 2 t a n x 2 d x 令 t = t a n x 2 ,则 x = 2 a r c t a n t , ∫ c s c x d x = ∫ t 2 + 1 2 t d ( 2 a r c t a n t ) = ∫ 1 t d t = l n ∣ t ∣ + C = l n ∣ t a n x 2 ∣ + C \begin{aligned} \int csc xdx&=\int \frac{1}{sinx}dx\\ &=\int\frac{1}{2sin\frac{x}{2}cos\frac{x}{2}}dx\\ &=\int\frac{sin^2\frac{x}{2}+cos^2\frac{x}{2}}{2sin\frac{x}{2}cos\frac{x}{2}}dx\\ &=\int\frac{tan^2\frac{x}{2}+1}{2tan\frac{x}{2}}dx\\ \end{aligned}\\ 令t= tan\frac{x}{2},则x =2arctan t,\\ \begin{aligned} \int csc xdx&=\int\frac{t^2+1}{2t}d(2arctant)\\ &=\int\frac{1}{t}dt\\ &=ln|t|+C\\ &=ln|tan\frac{x}{2}|+C \end{aligned}\\ ∫cscxdx=∫sinx1dx=∫2sin2xcos2x1dx=∫2sin2xcos2xsin22x+cos22xdx=∫2tan2xtan22x+1dx令t=tan2x,则x=2arctant,∫cscxdx=∫2tt2+1d(2arctant)=∫t1dt=ln∣t∣+C=ln∣tan2x∣+C
万能公式(三角函数转成 t a n x 2 tan\frac{x}{2} tan2x的多项式)也没那么万能,复杂多项式也不好求积分。
复数范围内积分
∫ 1 1 + x 2 d x = a r c t a n x + C 上式是通过 a r c t a n x 的导数推导出来。然而根据多项式求积分方法 ∫ 1 1 + x 2 d x = ∫ 1 ( x + i ) ( x − i ) d x = i 2 ∫ 1 x + i − 1 x − i d x = i 2 l n ( x + i x − i ) + C 两个结果相去甚远。但是其物理含义上,又是一致的。调整中间过程,可得 ∫ 1 1 + x 2 d x = ∫ 1 ( x + i ) ( x − i ) d x = 1 2 l n ( 1 + x i 1 − x i ) + C = 1 2 l n ( e 1 + x 2 a r c t a n x e − 1 + x 2 a r c t a n x ) + C = 1 2 ( 2 a r c t a n x ) + C \int \frac{1}{1+x^2}dx=arctanx+C\\ 上式是通过arctan x的导数推导出来。 然而根据多项式求积分方法\\ \begin{aligned} \int\frac{1}{1+x^2}dx&=\int\frac{1}{(x+i)(x-i)}dx\\ &=\frac{i}{2}\int\frac{1}{x+i}-\frac{1}{x-i}dx\\ &=\frac{i}{2}ln\left(\frac{x+i}{x-i}\right)+C \end{aligned}\\ 两个结果相去甚远。但是其物理含义上,又是一致的。调整中间过程,可得\\ \begin{aligned} \int\frac{1}{1+x^2}dx&=\int\frac{1}{(x+i)(x-i)}dx\\ &=\frac{1}{2}ln\left(\frac{1+xi}{1-xi}\right)+C\\ &=\frac{1}{2}ln\left(\frac{e^{{\sqrt{1+x^2}arctanx}}}{e^{-\sqrt{1+x^2}arctanx}}\right)+C\\ &=\frac{1}{2}\left(2arctanx\right)+C \end{aligned}\\ ∫1+x21dx=arctanx+C上式是通过arctanx的导数推导出来。然而根据多项式求积分方法∫1+x21dx=∫(x+i)(x−i)1dx=2i∫x+i1−x−i1dx=2iln(x−ix+i)+C两个结果相去甚远。但是其物理含义上,又是一致的。调整中间过程,可得∫1+x21dx=∫(x+i)(x−i)1dx=21ln(1−xi1+xi)+C=21ln(e−1+x2arctanxe1+x2arctanx)+C=21(2arctanx)+C
定积分
众所周知,可以使用矩形(将圆弧使用平行于x轴横线来拟合)、梯形(将圆弧使用小块的连线来拟合)、辛普森法(将圆弧使用抛物线来拟合,估计在辛普森时代就已经知道了直线和抛物线围成图形面积的计算公式)求曲线和坐标轴围成的图形的面积,那么这么做是有误差的,难道误差就不管了吗?课本上并没有这个讨论,实际上,误差是更高阶无穷小,对误差进行一次积分的结果仍是无穷小,当 Δ x → 0 \Delta x\to 0 Δx→0时,值为0.
我们来说明一下这个问题,对于 x i , x i + 1 和 f ( x ) x_i,x_{i+1}和f(x) xi,xi+1和f(x)围成的图形面积 S i S_{i} Si,其中矩形的面积为 S m i S_{mi} Smi,曲线和矩形围成的面积为 S r i S_{ri} Sri,有 S i = S m i + S r i S_{i}=S_{mi}+S_{ri} Si=Smi+Sri. 假设 f ( x ) 在 [ x i , x i + 1 ) f(x)在[x_i,x_{i+1}) f(x)在[xi,xi+1)上,斜率的最大值和最小值分别是 k m a x 和 k m i n k_{max}和k_{min} kmax和kmin, S r i S_{ri} Sri面积小于矩形和最大斜率直线围成的三角形面积,即 S r i < ( x i + 1 − x i ) ( x i + 1 − x i ) k m a x / 2 = k m a x Δ x 2 / 2 S_{ri}<(x_{i+1}-x_{i})(x_{i+1}-x_{i})k_{max}/2=k_{max}\Delta x^2/2 Sri<(xi+1−xi)(xi+1−xi)kmax/2=kmaxΔx2/2
S = lim Δ x i → 0 ∑ Δ x i → 0 n S i = ∑ Δ x i → 0 n ( S m i + S r i ) = lim Δ x i → 0 ∑ Δ x i → 0 n ( f ( x i ) Δ x i + k m a x Δ x 2 / 2 ) = ∫ a b f ( x i ) d x + ∫ a b k m a x / 2 d 2 x = ∫ a b f ( x i ) d x \begin{aligned} S&=\lim_{\Delta x_i\to 0}\sum_{\Delta x_{i}\to 0}^nS_i=\sum_{\Delta x_{i}\to 0}^n(S_{mi}+S_{ri})\\ &=\lim_{\Delta x_i\to 0}\sum_{\Delta x_{i}\to 0}^n(f(x_i)\Delta x_i+k_{max}\Delta x^2/2)\\ &=\int_a^bf(x_i)dx+\int_a^bk_{max}/2\ d^2x\\ &=\int_a^bf(x_i)dx \end{aligned} S=Δxi→0limΔxi→0∑nSi=Δxi→0∑n(Smi+Sri)=Δxi→0limΔxi→0∑n(f(xi)Δxi+kmaxΔx2/2)=∫abf(xi)dx+∫abkmax/2 d2x=∫abf(xi)dx
使用不同的方法求面积,进行同样小间隔的划分,能取得不同精度的原因是:它们的误差 S r i S_{ri} Sri是 Δ x i \Delta x_i Δxi的不同阶数的无穷小,矩形、梯形、抛物线都是 Δ x i \Delta x_i Δxi的一阶无穷小,矩形误差是二阶,梯形误差是三阶,辛普森误差是四阶。如果存在一种划分,误差是 S m i S_{mi} Smi对于 Δ x i \Delta x_i Δxi的同阶无穷小,则使用这种划分得到的面积和真实值相差一个常数。
含有瑕点的瑕积分不能直接通过原函数的积分上下限相减得到,必须根据瑕点分段求积分。
Q: Δ x → 0 时,弦长和弧长的差为什么是更高阶无穷小? \Delta x\to 0时,弦长和弧长的差为什么是更高阶无穷小? Δx→0时,弦长和弧长的差为什么是更高阶无穷小?
微分方程
能使微分方程恒等的函数叫做微分方程的解;如果微分方程的解中含有任意常数,且任意常数的个数与微分方程的阶数相同,这样的解叫做微分方程的通解。
线性微分方程解的结构
对于二阶齐次线性微分方程: y ′ ′ + P ( x ) y ′ + Q ( x ) y = 0 y''+P(x)y'+Q(x)y=0 y′′+P(x)y′+Q(x)y=0
如果函数 y 1 ( x ) y_1(x) y1(x)和 y 2 ( x ) y_2(x) y2(x)是方程的两个解,那么 y = C 1 y 1 ( x ) + C 2 y 2 ( x ) y=C_1y_1(x)+C_2y_2(x) y=C1y1(x)+C2y2(x)是方程的解,其中 C 1 , C 2 C_1, C_2 C1,C2为任意常数。如果 y 1 ( x ) y_1(x) y1(x)和 y 2 ( x ) y_2(x) y2(x)的两个线性无关的特解,那么 y = C 1 y 1 ( x ) + C 2 y 2 ( x ) y=C_1y_1(x)+C_2y_2(x) y=C1y1(x)+C2y2(x)是方程的通解。
而对于二阶非齐次线性方程 y ′ ′ + P ( x ) y ′ + Q ( x ) y = f ( x ) y''+P(x)y'+Q(x)y=f(x) y′′+P(x)y′+Q(x)y=f(x),如果 y ∗ y^* y∗是他的一个特解,Y(x)是其对应的齐次方程的通解,则 y = Y ( x ) + y ∗ ( x ) y=Y(x)+y^*(x) y=Y(x)+y∗(x)是二阶非齐次线性微分方程的通解。
常系数齐次线性微分方程
二阶常系数齐次线性微分方程通解:
特征方程的根和解的关系
常系数齐次线性微分方程特解的求法
对于f(x)的两种常见形式,有如下经验:
(1) f ( x ) = e λ x P m ( x ) f(x)=e^{\lambda x}P_m(x) f(x)=eλxPm(x),其中 λ \lambda λ是常数, P m P_m Pm是m阶多项式。
其特解形式为 y ∗ = x k R m ( x ) e λ x y^*=x^kR_m(x)e^{\lambda x} y∗=xkRm(x)eλx. k k k可以按照 λ \lambda λ是方程的根的重数取 0 , 1 , 2 , . . . 0, 1, 2, ... 0,1,2,...
(2) f ( x ) = e λ x ( P l ( x ) cos ω x + Q n ( x ) sin ω x ) f(x)=e^{\lambda x}(P_l(x)\cos\omega x+Q_n(x)\sin \omega x) f(x)=eλx(Pl(x)cosωx+Qn(x)sinωx),其特解形式为 y ∗ = x k e λ x [ R m ( 1 ) ( x ) cos ω x + R m ( 2 ) ( x ) sin ω x ] y^*=x^ke^{\lambda x}[R_m^{(1)}(x)\cos\omega x+R_m^{(2)}(x)\sin\omega x] y∗=xkeλx[Rm(1)(x)cosωx+Rm(2)(x)sinωx],k可按 λ + ω i \lambda+\omega i λ+ωi是方程特征根的重数取 0 , 1 , . . . 0, 1, ... 0,1,...
以上两种情况可以使用欧拉公式合并下:
对于 f ( x ) = e ( λ + ω i ) x P m ( x ) f(x)=e^{(\lambda+\omega i)x}P_m(x) f(x)=e(λ+ωi)xPm(x),其特解为 y ∗ = x k R m ( x ) e ( λ + ω i ) x y^*=x^kR_m(x)e^{(\lambda+\omega i) x} y∗=xkRm(x)e(λ+ωi)x
因为常系数齐次线性微分方程的通解导致方程左边恒为0,实际上就是求y使得经过左侧方程运算之后能得到方程右边的函数。根据经验可以知道其特解应该有相对固定的形式,故可以使用待定系数法来确定系数。教材上为了通用给了一些例子,但是过于刻板了。
举个例子: y ′ ′ − 2 y ′ − 3 y = 3 x + 1 y''-2y'-3y=3x+1 y′′−2y′−3y=3x+1的特解,教材给的解法是带入通用公式,但其实大可不必,可以看做是:一个函数的二阶导数、一阶导数和本身的一个线性组合是 3 x + 1 3x+1 3x+1,求这个函数。可以推出这个函数至多是个三阶多项式,设 y ∗ = a x 3 + b x 2 + c x + d y^*=ax^3+bx^2+cx+d y∗=ax3+bx2+cx+d,求其一阶、二阶导数,带入微分方程,对比系数求得 a = 0 , b = 0 , c = − 1 , d = 1 / 3 a=0,b=0,c=-1,d=1/3 a=0,b=0,c=−1,d=1/3
计算机解法
sympy是个符号计算库,在诸多方面不完善,但是对于日常的辅助计算,已经非常足够了。
import sympy as sp
sp.init_session() # 导入sp相关基本变量 x, y, z; i, j, k(Integer); f, g(Function)
f.assumptions0 # 展示f的假设; Function
sinc(pi/6).evalf(6) # 求出数值解,保留6位有效数字
p = Piecewise((0,x<-1),(x**2,x<=1),(0,True)) # 分段函数
ff = 1/(x**4+1)
int_ff = Integral(ff, x)
int_ff.doit()
# 上述等价于 integrate(ff, x)
ff.subs(x**2, t) # 换元
ff = x + y + 4
ff.subs({x:3,y:t,4:1}) # 替换,部分求和
ff = sp.exp(x**y)
ff.diff(x,x,y) # 对x求2次偏导,再对y求1次偏导
ff.diff(x,2,y,3) # 对x求2次偏导,再对y求3次偏导
ff.apart() #部分分式展开
ff.expand() # 因式展开
ff.factor() # 因式分解
ff.series(x, 10) # 泰勒展开(洛朗展开)
ff.series(x,y,10) # 二阶泰勒展开
ff.simplify() # 启发式化简
diffeq = [sympy.Eq(f(x).diff(x, x) - f(x), sympy.sin(x)), sympy.Eq(g(x).diff(x), 0)]
res = sympy.dsolve(diffeq, [f(x), g(x)], ics={f(0): 1, f(x).diff(x).subs(x, 0): 3}) # 指定初值,求解微分方程