微积分40. 有理函数的积分法(上)

有理函数积分是微积分中的重要内容,也是实际问题中常见的积分类型。本文将系统讲解有理函数积分的基本概念、核心方法和Python工具实现,帮助读者建立系统的解题思路。

一、有理函数的数学定义与分类

有理函数是指两个多项式的商,具体定义为:

设 P n ( x ) P_n(x) Pn(x) 与 Q m ( x ) Q_m(x) Qm(x) 分别是 n n n 次和 m m m 次多项式,则称分式 Q m ( x ) P n ( x ) \frac{Q_m(x)}{P_n(x)} Pn(x)Qm(x) 为有理函数。

根据分子与分母多项式的次数关系,有理函数可分为两类:

  • 真分式 :当 m < n m < n m<n 时,分子次数小于分母次数,例如 x + 1 x 2 + 2 x + 3 \frac{x+1}{x^2+2x+3} x2+2x+3x+1
  • 假分式 :当 m ≥ n m \geq n m≥n 时,分子次数大于等于分母次数,例如 x 3 + 2 x x 2 + 1 \frac{x^3+2x}{x^2+1} x2+1x3+2x

重要结论 :任何假分式都可以通过多项式除法化为一个多项式与一个真分式的和。即存在多项式 S ( x ) S(x) S(x) 和次数小于 n n n 的多项式 R ( x ) R(x) R(x),使得: Q m ( x ) P n ( x ) = S ( x ) + R ( x ) P n ( x ) \frac{Q_m(x)}{P_n(x)} = S(x) + \frac{R(x)}{P_n(x)} Pn(x)Qm(x)=S(x)+Pn(x)R(x)

因此,有理函数的积分问题最终都归结为真分式的积分问题

二、有理函数积分的基本方法

有理函数积分的一般步骤如下:

  1. 判断分式类型:如果是假分式,先用多项式除法将其化为多项式与真分式的和
  2. 分母因式分解:将分母分解为一次因式和二次不可约因式的乘积
  3. 部分分式分解:根据分母因式类型,将分式拆解为简单分式的和
  4. 确定待定系数:通过比较系数法或赋值法求出各分式的系数
  5. 逐项积分:对分解后的简单分式分别积分

1. 分母为一次重因式的积分法

例题 :求 ∫ 5 x 2 + 3 ( x + 2 ) 3 d x \int \frac{5x^2+3}{(x+2)^3} dx ∫(x+2)35x2+3dx

求解步骤

第一步:部分分式分解 5 x 2 + 3 ( x + 2 ) 3 = A x + 2 + B ( x + 2 ) 2 + C ( x + 2 ) 3 \frac{5x^2+3}{(x+2)^3} = \frac{A}{x+2} + \frac{B}{(x+2)^2} + \frac{C}{(x+2)^3} (x+2)35x2+3=x+2A+(x+2)2B+(x+2)3C

第二步:通分比较系数 右端通分得: A x 2 + ( 4 A + B ) x + ( 4 A + 2 B + C ) ( x + 2 ) 3 \frac{Ax^2 + (4A+B)x + (4A+2B+C)}{(x+2)^3} (x+2)3Ax2+(4A+B)x+(4A+2B+C)

比较系数:

  • A = 5 A = 5 A=5
  • 4 A + B = 0 4A + B = 0 4A+B=0 ⇒ B = − 20 B = -20 B=−20
  • 4 A + 2 B + C = 3 4A + 2B + C = 3 4A+2B+C=3 ⇒ C = 23 C = 23 C=23

第三步:逐项积分 ∫ 5 x 2 + 3 ( x + 2 ) 3 d x = 5 ∫ 1 x + 2 d x − 20 ∫ 1 ( x + 2 ) 2 d x + 23 ∫ 1 ( x + 2 ) 3 d x \int \frac{5x^2+3}{(x+2)^3} dx = 5\int \frac{1}{x+2} dx - 20\int \frac{1}{(x+2)^2} dx + 23\int \frac{1}{(x+2)^3} dx ∫(x+2)35x2+3dx=5∫x+21dx−20∫(x+2)21dx+23∫(x+2)31dx

第四步:计算结果 = 5 ln ⁡ ∣ x + 2 ∣ + 20 x + 2 − 23 2 ( x + 2 ) 2 + C = 5\ln|x+2| + \frac{20}{x+2} - \frac{23}{2(x+2)^2} + C =5ln∣x+2∣+x+220−2(x+2)223+C

2. 分母为不同一次因式的积分法

例题 :求 ∫ x − 2 ( x − 3 ) ( x − 5 ) d x \int \frac{x-2}{(x-3)(x-5)} dx ∫(x−3)(x−5)x−2dx

求解步骤

第一步:部分分式分解 x − 2 ( x − 3 ) ( x − 5 ) = A x − 3 + B x − 5 \frac{x-2}{(x-3)(x-5)} = \frac{A}{x-3} + \frac{B}{x-5} (x−3)(x−5)x−2=x−3A+x−5B

第二步:通分比较系数 右端通分得: ( A + B ) x − ( 5 A + 3 B ) ( x − 3 ) ( x − 5 ) \frac{(A+B)x - (5A+3B)}{(x-3)(x-5)} (x−3)(x−5)(A+B)x−(5A+3B)

比较系数:

  • A + B = 1 A + B = 1 A+B=1
  • 5 A + 3 B = 2 5A + 3B = 2 5A+3B=2

解得: A = − 1 2 A = -\frac{1}{2} A=−21, B = 3 2 B = \frac{3}{2} B=23

第三步:逐项积分 ∫ x − 2 ( x − 3 ) ( x − 5 ) d x = − 1 2 ∫ 1 x − 3 d x + 3 2 ∫ 1 x − 5 d x \int \frac{x-2}{(x-3)(x-5)} dx = -\frac{1}{2}\int \frac{1}{x-3} dx + \frac{3}{2}\int \frac{1}{x-5} dx ∫(x−3)(x−5)x−2dx=−21∫x−31dx+23∫x−51dx

第四步:计算结果 = − 1 2 ln ⁡ ∣ x − 3 ∣ + 3 2 ln ⁡ ∣ x − 5 ∣ + C = -\frac{1}{2}\ln|x-3| + \frac{3}{2}\ln|x-5| + C =−21ln∣x−3∣+23ln∣x−5∣+C

三、有理函数积分的Python实现

使用Python的SymPy库可以自动化完成有理函数的积分计算,以下是一个完整的示例:

1. 一次重因式的Python验证

见calculus/chapter07/note40_test01.py

python 复制代码
import sympy as sp
x = sp.Symbol('x')
expr1 = (5*x**2 + 3) / (x + 2)**3

# 步骤1:先对原始有理函数进行部分分式分解
partial_frac1 = sp.apart(expr1, x)
print("部分分式分解: ", partial_frac1)

# 步骤2:对分解后的各项分别积分
integral_from_partial = sp.integrate(partial_frac1, x)
print("通过部分分式积分的结果: ", integral_from_partial)

# 步骤3:直接积分原始表达式
direct_integral = sp.integrate(expr1, x)
print("直接积分结果: ", direct_integral)

# 步骤4:检查两者是否一致
if sp.simplify(integral_from_partial - direct_integral) == 0:
    print("✓ 部分分式积分与直接积分结果一致")
else:
    print("✗ 结果不一致,需检查")

输出结果

复制代码
部分分式分解:  5/(x + 2) - 20/(x + 2)**2 + 23/(x + 2)**3
通过部分分式积分的结果:  (40*x + 57)/(2*x**2 + 8*x + 8) + 5*log(x + 2)
直接积分结果:  (40*x + 57)/(2*x**2 + 8*x + 8) + 5*log(x + 2)
✓ 部分分式积分与直接积分结果一致

2. 不同一次因式的Python验证

见calculus/chapter07/note40_test02.py

python 复制代码
import sympy as sp
x = sp.Symbol('x')
expr1 = (x - 2)/((x - 3)*(x - 5))

# 步骤1:先对原始有理函数进行部分分式分解
partial_frac1 = sp.apart(expr1, x)
print("部分分式分解: ", partial_frac1)

# 步骤2:对分解后的各项分别积分
integral_from_partial = sp.integrate(partial_frac1, x)
print("通过部分分式积分的结果: ", integral_from_partial)

# 步骤3:直接积分原始表达式
direct_integral = sp.integrate(expr1, x)
print("直接积分结果: ", direct_integral)

# 步骤4:检查两者是否一致
if sp.simplify(integral_from_partial - direct_integral) == 0:
    print("✓ 部分分式积分与直接积分结果一致")
else:
    print("✗ 结果不一致,需检查")

输出结果

复制代码
部分分式分解:  -1/(2*(x - 3)) + 3/(2*(x - 5))
通过部分分式积分的结果:  3*log(x - 5)/2 - log(x - 3)/2
直接积分结果:  3*log(x - 5)/2 - log(x - 3)/2
✓ 部分分式积分与直接积分结果一致

四、关键技术要点分析

4.1 部分分式分解的原理与技巧

部分分式分解是有理函数积分的核心技巧,其数学原理基于以下定理:

定理 :设 Q ( x ) P ( x ) \frac{Q(x)}{P(x)} P(x)Q(x)是一个真分式,且分母 P ( x ) P(x) P(x)已分解为不可约多项式的乘积,则该有理函数可唯一表示为最简分式之和。

具体分解方法取决于分母的因式结构:

  1. 单重一次因式 :对于分母中的每个一次因式 ( x − a ) (x-a) (x−a),分解式中对应一项 A x − a \frac{A}{x-a} x−aA
  2. k重一次因式 :对于k重一次因式 ( x − a ) k (x-a)^k (x−a)k,分解式中对应k项: A 1 x − a + A 2 ( x − a ) 2 + ⋯ + A k ( x − a ) k \frac{A_1}{x-a} + \frac{A_2}{(x-a)^2} + \cdots + \frac{A_k}{(x-a)^k} x−aA1+(x−a)2A2+⋯+(x−a)kAk
  3. 单重二次不可约因式 :对于二次不可约因式 ( p x 2 + q x + r ) (px^2+qx+r) (px2+qx+r),分解式中对应一项 B x + C p x 2 + q x + r \frac{Bx+C}{px^2+qx+r} px2+qx+rBx+C
  4. k重二次不可约因式 :对于k重二次不可约因式 ( p x 2 + q x + r ) k (px^2+qx+r)^k (px2+qx+r)k,分解式中对应k项: B 1 x + C 1 p x 2 + q x + r + B 2 x + C 2 ( p x 2 + q x + r ) 2 + ⋯ + B k x + C k ( p x 2 + q x + r ) k \frac{B_1x+C_1}{px^2+qx+r} + \frac{B_2x+C_2}{(px^2+qx+r)^2} + \cdots + \frac{B_kx+C_k}{(px^2+qx+r)^k} px2+qx+rB1x+C1+(px2+qx+r)2B2x+C2+⋯+(px2+qx+r)kBkx+Ck

待定系数法的求解技巧

  • 留数法:等式两边同时乘以某个因子,再令该因子为零,解出待定系数
  • 特殊值法:选取特殊的x值代入方程,简化计算
  • 比较系数法:通分后比较分子多项式的各项系数,建立方程组

4.2 部分分式分解的数学本质

部分分式分解的本质是将有理函数分解为更简单的部分,以便于积分运算。这种分解与有理数分解为部分分数类似,都是将复杂对象分解为简单组成部分的方法。

从代数角度看,部分分式分解基于多项式环上的唯一分解定理。实数域上不可约多项式只能是一次或二次多项式,而复数域上所有不可约多项式都是一次的。这解释了为什么实数域上的部分分式分解总会产生一次和二次分式。

4.3 常见错误与注意事项

在进行有理函数积分时,需要注意以下常见错误:

  1. 忽略分式类型判断:未先将假分式通过多项式除法化为真分式
  2. 分母因式分解不彻底:导致部分分式分解不正确
  3. 待定系数求解错误:特别是重因式情况下的系数确定
  4. 积分常数遗漏:不定积分中忘记添加常数C
  5. 对数函数的绝对值符号 :积分 ∫ 1 x d x = ln ⁡ ∣ x ∣ + C \int \frac{1}{x}dx = \ln|x| + C ∫x1dx=ln∣x∣+C中的绝对值符号容易被忽略

总结

本文系统介绍了有理函数积分的基本方法和实现技巧。关键在于掌握部分分式分解的原理,将复杂的有理函数转化为最简分式的和,然后逐项积分。

通过Python的SymPy库,我们可以自动化这一过程,大大提高计算效率和准确性。在实际应用中,建议先手动理解计算原理,再借助工具进行验证和复杂计算。

在下一篇文章中,我们将继续探讨分母包含二次因式的有理函数积分,以及三角有理式的积分方法。

相关推荐
qq_349317482 小时前
Python GUI界面如何实现主题美化_引入ttk模块实现原生外观风格
jvm·数据库·python
yuanpan2 小时前
Python Scrapy 入门教程:从零学会抓取和解析网页数据
java·python·scrapy
forEverPlume2 小时前
c++如何通过解析二进制包头信息解决Socket传输过程中的粘包问题【详解】
jvm·数据库·python
玉小格2 小时前
对py作业的一个复盘
开发语言·python
BU摆烂会噶2 小时前
【LangGraph 持久化】让 AI Agent 拥有“记忆”
数据库·人工智能·python·langchain
zhangchaoxies2 小时前
c++怎么在Linux下获取文件被最后一次访问的精确纳秒时间【进阶】
jvm·数据库·python
拾-光2 小时前
LTX-Video 2.3 实战:用图片生成视频,消费级显卡也能跑的开源 I2V 模型(GPT Image 2)
java·人工智能·python·深度学习·算法·机器学习·音视频
m0_747854522 小时前
c++怎么在Linux下获取文件被最后一次访问的精确纳秒时间【进阶】
jvm·数据库·python
AVA洋2 小时前
初识Coze(扣子)工作流,ai视频自动化制作
人工智能·python·大模型