从‘三巨头’到‘莱布尼茨’:用Python可视化理解常数项级数的敛散性

发布时间:2026/5/19 19:22:08

从‘三巨头’到‘莱布尼茨’:用Python可视化理解常数项级数的敛散性 从‘三巨头’到‘莱布尼茨’用Python可视化理解常数项级数的敛散性数学分析中级数敛散性的判定一直是让学习者头疼的难点。那些抽象的数学定理和复杂的推导过程往往让人望而生畏。但如果我们换一种方式用Python代码将这些概念可视化一切就会变得直观而有趣。本文将带你用NumPy和Matplotlib从代码的角度重新理解级数敛散性的核心思想。1. 级数基础与Python实现级数简而言之就是无穷多项相加的和。判断这个和是否收敛趋近于某个有限值是数学分析中的重要课题。我们先从最基础的部分和数列开始。import numpy as np import matplotlib.pyplot as plt def partial_sums(series_terms, n_terms): 计算级数的部分和 return np.cumsum(series_terms[:n_terms]) # 示例调和级数 n 100 harmonic_terms 1 / np.arange(1, n1) harmonic_sums partial_sums(harmonic_terms, n) plt.figure(figsize(10,6)) plt.plot(harmonic_sums, labelHarmonic Series) plt.title(Partial Sums of Harmonic Series) plt.xlabel(Number of terms) plt.ylabel(Partial sum) plt.grid(True) plt.legend() plt.show()运行这段代码你会清晰地看到调和级数的部分和随着项数增加而缓慢增长但增长趋势似乎没有止境——这正是发散级数的典型特征。级数收敛的直观理解收敛级数部分和数列趋近于某个有限值发散级数部分和数列无限增大或振荡不定2. 正项级数审敛法的可视化实现正项级数的审敛有几种经典方法我们可以用Python将它们一一实现并可视化。2.1 比较法与极限比较法比较法的核心思想是将待判断的级数与已知敛散性的级数如p级数进行比较。def compare_test(series_func, benchmark_func, n100): 比较法可视化 series_func: 待判断级数的通项函数 benchmark_func: 比较基准级数的通项函数 terms series_func(np.arange(1, n1)) bench_terms benchmark_func(np.arange(1, n1)) ratio terms / bench_terms fig, (ax1, ax2) plt.subplots(1, 2, figsize(14,5)) # 部分和比较 ax1.plot(partial_sums(terms, n), labelTest Series) ax1.plot(partial_sums(bench_terms, n), labelBenchmark) ax1.set_title(Partial Sums Comparison) ax1.legend() # 通项比值 ax2.plot(ratio) ax2.set_title(Term Ratio (a_n / b_n)) ax2.axhline(1, colorred, linestyle--) plt.tight_layout() plt.show() # 示例比较 1/(n^21) 和 p级数 1/n^2 compare_test(lambda n: 1/(n**2 1), lambda n: 1/n**2)2.2 比值法与根值法对于含有阶乘、指数等三巨头项的正项级数比值法和根值法更为适用。def ratio_test(series_terms): 比值法可视化 ratios series_terms[1:] / series_terms[:-1] plt.figure(figsize(10,5)) plt.plot(ratios, labela_{n1}/a_n) plt.axhline(1, colorred, linestyle--, labelCritical line) plt.title(Ratio Test Visualization) plt.xlabel(n) plt.legend() plt.grid(True) plt.show() # 示例级数 1/n! n 20 factorial_terms 1 / np.array([np.math.factorial(i) for i in range(1, n1)]) ratio_test(factorial_terms)正项级数审敛法选择指南方法适用场景Python实现要点比较法通项简单能找到合适比较对象计算部分和比值观察极限行为比值法含阶乘等乘积形式计算相邻项比值观察是否小于1根值法含n次幂形式计算n次方根观察是否小于1积分判别法通项可表示为某函数的函数值比较级数和积分的行为3. 交错级数与莱布尼茨准则交错级数的敛散性判定有其独特的方法最著名的当属莱布尼茨准则。def leibniz_test(absolute_terms): 莱布尼茨准则可视化 absolute_terms: 交错级数绝对值项组成的数列 # 检查单调递减 diffs absolute_terms[:-1] - absolute_terms[1:] decreasing np.all(diffs 0) # 检查极限为零 limit_zero np.isclose(absolute_terms[-1], 0, atol1e-6) # 绘制数列行为 fig, (ax1, ax2) plt.subplots(1, 2, figsize(14,5)) ax1.plot(absolute_terms, o-, label|a_n|) ax1.set_title(Absolute Terms Behavior) ax1.legend() ax2.plot(diffs, o-, label|a_n| - |a_{n1}|) ax2.axhline(0, colorred, linestyle--) ax2.set_title(Monotonicity Check) ax2.legend() plt.tight_layout() plt.show() print(fMonotonically decreasing: {decreasing}) print(fLimit to zero: {limit_zero}) # 示例交错调和级数 n 30 harmonic_abs 1 / np.arange(1, n1) leibniz_test(harmonic_abs)莱布尼茨准则的两个条件在图中清晰可见蓝色曲线显示绝对值项单调递减而差值图右保持在零线以上证实了单调性。4. 绝对收敛与条件收敛的数值实验理解绝对收敛和条件收敛的区别对掌握级数理论至关重要。让我们用Python做个有趣的实验。def absolute_vs_conditional(original_terms, n_terms100): 比较原级数和绝对值级数的收敛行为 abs_terms np.abs(original_terms) original_sums partial_sums(original_terms, n_terms) abs_sums partial_sums(abs_terms, n_terms) plt.figure(figsize(10,6)) plt.plot(original_sums, labelOriginal Series) plt.plot(abs_sums, labelAbsolute Series) plt.title(Absolute vs Conditional Convergence) plt.xlabel(Number of terms) plt.ylabel(Partial sum) plt.legend() plt.grid(True) plt.show() # 示例交错调和级数 n 1000 alternating_harmonic (-1)**(np.arange(1, n1)1) / np.arange(1, n1) absolute_vs_conditional(alternating_harmonic)这个实验清晰地展示了条件收敛的有趣现象原级数收敛趋近于ln(2)而其绝对值级数调和级数却发散。收敛类型判断流程先计算绝对值级数的部分和如果收敛则为绝对收敛若绝对值级数发散再检查原级数如果原级数收敛则为条件收敛否则级数发散def convergence_type(terms_func, n1000): 判断级数收敛类型 terms terms_func(np.arange(1, n1)) abs_terms np.abs(terms) # 简单判断观察最后100项的变化 abs_tail abs_terms[-100:] original_tail terms[-100:] abs_diff np.max(abs_tail) - np.min(abs_tail) original_diff np.max(original_tail) - np.min(original_tail) if abs_diff 0.1: # 绝对值级数收敛 return Absolutely Convergent elif original_diff 0.1: # 原级数收敛但绝对值级数发散 return Conditionally Convergent else: return Divergent # 示例测试 print(Alternating Harmonic:, convergence_type(lambda n: (-1)**(n1)/n)) print(Harmonic Series:, convergence_type(lambda n: 1/n)) print(1/n^2 Series:, convergence_type(lambda n: 1/n**2))通过这些Python实现我们不仅验证了数学理论更重要的是获得了对级数行为的直观感受。当看到那些抽象的定理在代码中活起来时你会发现数学分析其实可以很生动。

相关新闻