Python实现高数函数极限与导数计算:SymPy与NumPy实战

温以宁
温以宁
发布时间:2026-10-14| 7人浏览过
原创

本文通过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在高等数学中函数极限与导数计算的分享结束,更多相关内容可搜索本站往期文章或继续阅读后续章节,感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。