有理式积分
小象实战讲义 · 人工智能数学基础
在学习了基本积分方法后,我们面临一个核心问题:哪些函数是“可积”的?即,其原函数能否用初等函数表示?本节将系统探讨一类重要的可积函数——有理函数。我们将学习如何将任意有理函数分解为几种简单的“部分分式”,并最终求出其不定积分。掌握这一方法,你就能从理论上解决所有有理函数的积分问题,并为后续学习更复杂的积分技巧(如三角有理式积分)打下坚实基础。
💡 核心导读
本节你将掌握:
- 有理式与部分分式:理解真分式与假分式的概念,以及有理式分解为四种基本部分分式的理论依据。
- 分解定理与操作:学习如何根据分母的因式分解,将复杂的有理式拆解为一系列简单分式的和。
- 四种部分分式的积分:掌握处理一次实根、重实根、一次复根对、重复根对所对应的四种标准形式的积分方法。
- 有理化技巧的应用:了解如何通过变量替换,将某些包含根式的非有理式积分转化为有理式积分问题。
有理式与部分分式分解
有理式(或有理函数)是指两个实系数多项式相除所构成的函数。一般形式为: R(x)=Q(x)P(x)=bmxm+bm−1xm−1+⋯+b0anxn+an−1xn−1+⋯+a0 其中要求 Q(x)≡0,且通常假设 P(x) 与 Q(x) 互质(即已约去公因式)。
若分子多项式 P(x) 的次数 n 小于分母多项式 Q(x) 的次数 m,则称 R(x) 为真分式;否则称为假分式。对于假分式,我们可以通过多项式除法将其化为一个多项式与一个真分式之和: Q(x)P(x)=S(x)+Q(x)P1(x),deg(P1)<deg(Q) 其中 S(x) 是商式,P1(x) 是余式。因此,研究有理式积分的核心在于解决真分式的积分问题。
一个关键结论是:任何实系数真分式都可以唯一地分解为若干种简单真分式的和,这些简单分式称为部分分式。部分分式共有四种基本类型:
- 一次单实根型:x−aA,其中 a,A∈R。
- 一次重实根型:(x−a)kA,其中 a,A∈R,k≥2。
- 二次单复根对型:x2+px+qBx+C,其中 B,C,p,q∈R,且判别式 Δ=p2−4q<0。
- 二次重复根对型:(x2+px+q)kBx+C,其中 B,C,p,q∈R,Δ<0,k≥2。
分解的理论基础源于代数基本定理:任何实系数多项式 Q(x) 在实数域上可以分解为一次因式和二次不可约因式(对应共轭复根)的乘积。设 Q(x) 有 s 个互异实根 ai,重数分别为 αi;以及 t 组互异的共轭复根对(对应二次不可约因式 x2+pjx+qj),重数分别为 βj,则: Q(x)=bmi=1∏s(x−ai)αij=1∏t(x2+pjx+qj)βj 那么,真分式 Q(x)P(x) 的部分分式分解形式为: Q(x)P(x)=i=1∑sr=1∑αi(x−ai)rAir+j=1∑tr=1∑βj(x2+pjx+qj)rBjrx+Cjr 其中 Air,Bjr,Cjr 为待定常数。
部分分式的积分方法
将有理真分式分解为部分分式后,积分问题就转化为对上述四种基本类型求积分。
类型一与类型二:实根相关型
这两种类型的积分本质上是幂函数积分。 ∫x−aAdx=Aln∣x−a∣+C ∫(x−a)kAdx=A∫(x−a)−kdx=(−k+1)A(x−a)−k+1+C,(k≥2)
类型三:二次单复根对型
对于 I=∫x2+px+qBx+Cdx,其中 p2−4q<0。核心思想是“凑微分”,将分子拆分为分母导数的一部分与一个常数。
首先,对分母配方:x2+px+q=(x+2p)2+(q−4p2)。令 a2=q−4p2>0,并作代换 u=x+p/2。
接着处理分子:Bx+C=B(x+p/2)+(C−Bp/2)。于是积分拆分为两部分: I=∫u2+a2Bu+(C−2Bp)du=2B∫u2+a22udu+(C−2Bp)∫u2+a21du=2Bln(u2+a2)+aC−2Bparctan(au)+C0 最后将 u=x+p/2 和 a=q−p2/4 代回即可。
类型四:二次重复根对型
对于 Ik=∫(x2+px+q)kBx+Cdx,处理更为复杂,但思路类似。通常先配方 x2+px+q=(x+d)2+a2,令 u=x+d,将分子表示为 B(u−d)+C=Bu+(C−Bd)。
积分 Ik 可拆分为两项: Ik=B∫(u2+a2)kudu+(C−Bd)∫(u2+a2)k1du 第一项是简单的幂函数积分:∫(u2+a2)kudu=2(1−k)1(u2+a2)1−k+C(k=1)。
第二项 Jk=∫(u2+a2)k1du 需要使用递推公式。通过分部积分可以推导出: Jk=2a2(k−1)(u2+a2)k−1u+2a2(k−1)2k−3Jk−1,k≥2 而 J1=a1arctan(au)+C。通过此递推式可逐步求出 Jk。
分解与求解实例
理论需要实践来巩固。我们通过两个例子来演示如何从分解到求解。
例1:分解 x(x−1)31 为部分分式。 分母 Q(x)=x(x−1)3,有一个一重实根 x=0 和一个三重实根 x=1。根据分解定理,应设: x(x−1)31=xA+x−1B+(x−1)2C+(x−1)3D 将右边通分,分子为: A(x−1)3+Bx(x−1)2+Cx(x−1)+Dx 令其等于左边分子 1。通过比较 x 的同次幂系数,或代入特殊值(如 x=0,1),可解得: A=−1,B=1,C=−1,D=1 因此, x(x−1)31=−x1+x−11−(x−1)21+(x−1)31 积分可得: ∫x(x−1)31dx=−ln∣x∣+ln∣x−1∣+x−11−2(x−1)21+C
例2:分解并积分 x3+4x4。 分母 Q(x)=x(x2+4),有一个一重实根 x=0 和一对一重复根 x=±2i(对应二次因式 x2+4)。设: x(x2+4)4=xA+x2+4Bx+C 通分后比较分子:4=A(x2+4)+(Bx+C)x=(A+B)x2+Cx+4A。 比较系数得方程组: ⎩⎨⎧A+B=0C=04A=4⇒A=1, B=−1, C=0. 所以, x3+4x4=x1−x2+4x 积分: ∫x3+4x4dx=∫x1dx−21∫x2+42xdx=ln∣x∣−21ln(x2+4)+C
有理化方法的应用
某些包含根式的积分,可以通过适当的变量代换转化为有理式积分。
例3:求 ∫3x+4xdx。 被积函数含有 x1/3 和 x1/4,指数分母的最小公倍数为 12。令 t=x1/12,则 x=t12,dx=12t11dt。代入原积分: ∫3x+4xdx=∫t4+t312t11dt=12∫t+1t8dt 这变成了一个有理函数的积分。通过多项式除法,t8=(t+1)(t7−t6+t5−t4+t3−t2+t−1)+1。所以, 12∫t+1t8dt=12∫(t7−t6+t5−t4+t3−t2+t−1+t+11)dt 逐项积分后,再将 t=x1/12 代回即可得到最终结果(表达式较长,此处略)。
这种通过代换 t=x1/n(n 为根指数的最小公倍数)将根式有理化的方法,对于被积函数为 x 的不同有理幂次构成的代数函数非常有效。
📝 动手练一练
- 分解练习:将有理式 (x−1)(x2+1)22x2−x+3 分解为部分分式的和(无需积分)。
- 积分计算:计算不定积分 ∫x3+xx2+2x+5dx。
参考答案:
设分解形式为: x−1A+x2+1Bx+C+(x2+1)2Dx+E 通分后比较分子与 2x2−x+3 的系数,可解得:A=1,B=−1,C=−1,D=0,E=−1。 因此,分解结果为: x−11+x2+1−x−1+(x2+1)2−1
首先分解:x(x2+1)x2+2x+5=xA+x2+1Bx+C。 通分得:x2+2x+5=A(x2+1)+(Bx+C)x=(A+B)x2+Cx+A。 解得:A=5,B=−4,C=2。 积分: ∫x3+xx2+2x+5dx=∫(x5+x2+1−4x+2)dx=5ln∣x∣−2∫x2+12xdx+2∫x2+11dx=5ln∣x∣−2ln(x2+1)+2arctanx+C
本章小结
本节系统学习了有理式积分的完整解决方案:
- 理论核心:任何实系数有理真分式均可唯一分解为四种部分分式(一次单/重实根、二次单/重复根对)的线性组合。
- 操作流程:先判别真假分式,假分式则多项式除法;再对分母进行实系数因式分解;根据因式类型设定部分分式待定形式;通分后比较系数求解待定常数。
- 积分归约:四种部分分式的积分均可通过基本公式、凑微分、配方、反正切积分及递推公式解决。
- 方法拓展:对于含根式的积分,常可通过变量代换(如令 t 为根指数的最小公倍数幂)将其有理化,从而应用本节方法。
行动清单 学完本节,你可以立即:
- 练习分解:找 3-5 个不同分母结构(含重根、复根)的有理式,手动完成其部分分式分解。
- 代码验证:使用
sympy 的 apart 函数验证你的分解结果,并用 integrate 函数验证积分结果。 - 总结题型:整理笔记,将例题和习题按“纯有理式积分”和“需有理化积分”分类,归纳各自的处理起点和关键步骤。
— 小象教研组
import sympy as sp
# 使用 sympy 验证有理式分解与积分
x = sp.symbols('x')
# 示例1:验证分解
expr1 = 1 / (x * (x-1)**3)
decomposed1 = sp.apart(expr1, x)
print("例1分解结果:")
print(decomposed1)
print()
# 示例2:验证积分
expr2 = 4 / (x**3 + 4*x)
integral2 = sp.integrate(expr2, x)
print("例2积分结果:")
print(integral2.simplify())
print()
# 动手练一练第2题验证
expr_practice = (x**2 + 2*x + 5) / (x**3 + x)
integral_practice = sp.integrate(expr_practice, x)
print("练习题2积分结果:")
print(integral_practice.simplify())
# 手动计算结果的验证:是否与 sympy 结果在形式上等价?
# 可以通过相减求导是否为0来验证,这里简单打印对比
print("\n验证:手动结果 5*log|x| - 2*log(x^2+1) + 2*arctan(x) 与 sympy 结果是否等价?")
manual_result = 5*sp.log(sp.Abs(x)) - 2*sp.log(x**2+1) + 2*sp.atan(x)
# 注意:sympy 的 log 默认是自然对数,且通常不写绝对值,实际等价性需考虑定义域
# 这里我们检查导数是否相同
derivative_diff = sp.diff(integral_practice - manual_result, x)
print("两者之差的导数为:", sp.simplify(derivative_diff))
if sp.simplify(derivative_diff) == 0:
print("✓ 导数为0,说明两个表达式在可导区间内仅相差一个常数。")