Python实现高数函数极限与导数计算:SymPy与NumPy实战
本文通过Python代码演示高等数学中函数极限与导数的计算方法。利用SymPy库进行符号极限推导,并结合NumPy的poly1d及SciPy的derivative函数实现多项式求导,帮助机器学习初学者验证数学公式,夯实算法背后的数学基础。
许多学习者在翻开厚重的机器学习教材时,常因密集的数学公式而感到困惑,原本高涨的学习热情瞬间受挫。
若仅停留在调用封装好的库函数,而忽视底层数学原理,便难以对算法进行针对性优化,导致实际应用效果受限。
掌握机器学习必须具备一定的数学功底,数学知识的积累非一日之功,需要长期且系统的学习过程。
对于数学基础相对薄弱、希望夯实机器学习数学基础的读者,建议关注笔者以共同学习;同时,数学专业读者也可参考文中的Python代码实现。
本文选取同济第七版《高等数学》课后习题为案例,使用Python语言求解函数极限与导数相关题目。
通过这种方式,读者在练习课后习题时,可利用Python代码验证计算结果的正确性。
实现过程主要依赖两个常用的Python库:sympy和numpy,建议学习时参考其官方文档。
sympy是基于Python编写的符号计算库,专门用于处理数学对象的精确符号运算。
官方在线文档地址:https://docs.sympy.org/dev/index.html
numpy是Python中用于处理多维数组和矩阵运算的核心库,提供了高效的数组操作API。
官方在线文档地址:https://www.numpy.org.cn/reference/
函数极限
参考同济第七版《高等数学》教材,函数极限的定义如下:

初次接触该定义时,许多学生会感到抽象难懂,从而降低学习高等数学的兴趣。
函数极限定义之所以晦涩,背后有着深刻的历史原因。
这涉及数学史的发展脉络,需追溯至数百年前的数学探索阶段。
古希腊数学家在处理无穷小量与极限问题时,主要采用穷竭法等繁琐手段。
牛顿创立微积分初期,理论尚不完善,无穷小量与极限的逻辑基础并未完全厘清。
后续多位数学家尝试修补理论漏洞,最终由魏尔斯特拉斯总结前人成果,提出了严谨的ε-δ极限定义。
因此,该定义难以直观理解是正常现象,其概念形成历经数百年,即便展示给当时的牛顿,他也可能感到困惑。
尽管如此,这一定义仍被公认为最严谨且接近本质的函数极限表述。
单纯讨论概念较为枯燥,数学学习需结合习题演练,以下选取几道典型高数题进行解析。
函数极限练习题.1
题目要求证明:

Python代码实现证明过程:
import sympy
from sympy import oo
import numpy as np
x = sympy.Symbol('x')
f = (x ** 2 - 4)/(x + 2)
sympy.limit(f,x,-2)
程序输出结果为:-4
函数极限练习题.2
题目要求证明:

Python代码实现证明过程:
import sympy #导入sympy符号计算库
from sympy import oo #oo为无穷大符号
import numpy as np
x = sympy.Symbol('x')
f = sympy.sin(x)/sympy.sqrt(x)
sympy.limit(f,x,oo) #求极限
程序输出结果为:0
关于limit函数的具体用法,可查阅官方文档获取详细信息:

导数
导数的标准定义如下:

理解基本概念后,通过以下导数练习题进行实战演练。
导数练习题一(源自《高等数学》总习题二第8题第1小题):
题目要求求解下列函数的导数:

Python代码实现求导过程:
import sympy
from sympy import *
from sympy.abc import x,y
diff(asin(sin(x)))
程序输出结果为:cos(x)/sqrt(-sin(x)**2 + 1)
Python求导数的三种写法
Python中实现求导主要有三种常用方法,以下通过练习题逐一演示。
导数练习题:
题目要求求解下列函数的导数:

方法一
利用SymPy库中的diff函数进行符号求导。
使用diff函数的求导代码:
import sympy
from sympy import *
from sympy.abc import x,y
diff(5*x**4 + 4*x**3 +2*x**2 + x + 666)
程序输出结果为:20*x**3 + 12*x**2 + 4*x + 1
方法二
利用NumPy库中的poly1d函数处理多项式求导。
查阅官方文档了解poly1d函数的具体用法:

使用poly1d函数的求导代码:
import numpy as np
p = np.poly1d([5,4, 0 ,2 ,1]) #构造多项式,每项是多项式前的系数,幂次由高到低,没有该幂次该项为0
print(np.polyder(p,1)) #求一阶导数
print(p.deriv(1)) #另一种方法求一阶导数
程序输出结果为:
3 2 20 x + 12 x + 2
方法三
利用SciPy库misc模块下的derivative函数进行数值求导。
查阅官方文档了解derivative函数的具体用法:

使用derivative函数的求导代码:
import numpy as npfrom scipy.misc
import derivative
def f(x):
return (5*x**4 + 4*x**3 +2*x**2 + x + 666)
print (derivative(f,3,dx=1e-6)) #求x=3时的导数
程序输出结果为:
661.0000001501248
至此,关于Python在高等数学中函数极限与导数计算的分享结束,更多相关内容可搜索本站往期文章或继续阅读后续章节,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









