自适应辛普森积分法在带奇异点函数积分中的应用
题目描述
计算定积分 \(I = \int_{0}^{1} \frac{\ln x}{\sqrt{x}} \, dx\)。该积分在 \(x = 0\) 处存在奇异点(被积函数趋于无穷大),且积分区域为有限区间。要求使用自适应辛普森积分法,通过合理的误差控制和局部细化策略,精确逼近积分值。
解题过程
- 问题分析
- 被积函数 \(f(x) = \frac{\ln x}{\sqrt{x}}\) 在 \(x = 0\) 时,分母 \(\sqrt{x} \to 0\),分子 \(\ln x \to -\infty\),但通过极限分析可发现函数可积:
\[ \lim_{x \to 0^+} x^{1/2} \cdot \frac{\ln x}{\sqrt{x}} = \lim_{x \to 0^+} \ln x = -\infty \quad \text{(发散)} \]
需用更精细的极限分析。实际上,考虑 $ \int_{0}^{1} x^{-1/2} \ln x \, dx $,令 $ t = -\ln x $,可证明积分收敛(具体计算见后文)。
- 直接使用均匀步长的数值积分法(如复合辛普森公式)在奇异点附近会因函数变化剧烈而失效,需采用自适应辛普森法,在奇异点附近自动加密节点。
- 自适应辛普森法的基本原理
- 对区间 \([a, b]\),先用辛普森公式计算积分近似值 \(S_1\):
\[ S_1 = \frac{b-a}{6} \left[ f(a) + 4f\left(\frac{a+b}{2}\right) + f(b) \right]. \]
- 将区间二等分,在两个子区间上分别应用辛普森公式,得到更精细的近似值 \(S_2\):
\[ S_2 = \frac{b-a}{12} \left[ f(a) + 4f\left(a+\frac{b-a}{4}\right) + 2f\left(\frac{a+b}{2}\right) + 4f\left(a+\frac{3(b-a)}{4}\right) + f(b) \right]. \]
- 比较 \(S_1\) 和 \(S_2\) 的误差:若 \(|S_1 - S_2| < \epsilon\)(预设容差),则接受 \(S_2\);否则递归处理两个子区间。
-
处理奇异点的适应性调整
- 由于 \(x=0\) 是奇异点,需避免直接计算 \(f(0)\)(结果为无穷大)。实际实现时,可将积分下限设为一个小正数 \(\delta\)(如 \(\delta = 10^{-10}\)),或直接让自适应算法在递归过程中跳过对 \(f(0)\) 的求值。
- 自适应算法会在 \(x\) 接近 0 时自动细分区间,利用函数在非奇异点的值逼近积分。例如,第一次递归将区间 \([0,1]\) 分为 \([0,0.5]\) 和 \([0.5,1]\),对 \([0,0.5]\) 继续细分,直到子区间宽度小于阈值或误差满足要求。
-
误差控制与收敛性
- 辛普森公式的局部截断误差与 \((b-a)^5\) 成正比,在奇异点附近,区间细分会显著降低误差。
- 对于本问题,理论积分值可通过变量替换求解:
令 \(t = -\ln x\),则 \(x = e^{-t}, \, dx = -e^{-t} dt\),积分变为
\[ I = \int_{\infty}^{0} \frac{-t}{e^{-t/2}} \cdot (-e^{-t}) dt = \int_{0}^{\infty} t e^{-t/2} dt. \]
该积分可解析计算:
\[ I = \int_{0}^{\infty} t e^{-t/2} dt = 4 \quad (通过伽马函数 \Gamma(2) = 1! = 1,或分部积分). \]
因此精确值为 $ I = 4 $,可作为自适应算法的验证基准。
-
算法实现步骤
- 步骤1:定义被积函数 \(f(x) = \ln x / \sqrt{x}\),在 \(x=0\) 处返回 0(因为 \(\lim_{x\to 0^+} f(x) = 0\),可通过洛必达法则验证)。
- 步骤2:实现自适应辛普森递归函数
adaptive_simpson(a, b, eps):- 计算中点 \(m = (a+b)/2\)。
- 计算 \(S_1\)(整个区间)和 \(S_2\)(两个半区间)。
- 若 \(|S_1 - S_2| < 15 \cdot \epsilon\)(保守误差阈值),返回 \(S_2 + (S_2 - S_1)/15\)(理查森外推加速);否则递归计算左右子区间并求和。
- 步骤3:调用
adaptive_simpson(0, 1, 1e-6),避免直接计算 \(f(0)\)。
-
结果与验证
- 自适应算法会在 \(x \in [0, 0.01]\) 等区间密集细分,最终积分值逼近 4.000。
- 与解析解对比,相对误差可控制在 \(10^{-6}\) 以内。
总结
自适应辛普森法通过局部细分和误差控制,有效处理了奇异点附近的积分困难。关键点在于避免直接计算奇异点,并利用递归细分捕捉函数在奇异点附近的行为。