用Python探索数列和函数的极限概念

1、数列的极限

数列,很自然地理解就是1列数,不过这列数一般是有规律可循的。在小学经常做的找规律填数题,实际上就是为一个数列找出规律,根据规律来填充数列中的空白项。

例如:

2,4,8,……,2^n,……

1/2,2/3,3/4,……,n/n+1,……

1/2,1/4,1/8,……,1/2^n,……

在上面列举的数列中,都有规律可循。第1个数列的规律是数列第n项的值是2n;第2个数列的规律是数列第n项的值是n/n+1;第3个数列的规律是数列第n项的值是1/2n。

数列的第n项是指任何一个正整数n与数列的对应项,例如:正整数1对应着数列的第1项,正整数2对应着数列的第2项,……,正整数n对应着数列的第n项。

数列的规律称为数列的一般项,也称为数列的通项,数列简记为{Xn}。

数列{Xn}可看作自变量为正整数n的函数Xn=f(n),函数的定义域是全体正整数,当自变量n依次取1,2,3,……等正整数时,对应的函数值就排列成数列{Xn}。

例1 绘制一般项为n/n+1的数列图像

import numpy as np
import matplotlib.pyplot as plt
# 获取数列n/n+1数据
def get_sequence_data():
# 创建200个数据点
data = np.linspace(1,200,200)
# x数据为data
x = data
# y数据由数列一般项给出
y = data/(data+1)
return (x,y)


# 获取数列渐进线
def get_line_data():
# 创建200个数据点
data = np.linspace(1,200,200)
# x数据为data
x = data
# y数据为data/data
y = data/data
return (x,y)
# 程序入口
if __name__ == '__main__':
# 获取数列数据
x,y = get_sequence_data()
# 绘制数列
plt.plot(x,y,color='r',linestyle='-')
# 获取数列渐近线数据
x1,y1 = get_line_data()
# 绘制渐近线
plt.plot(x1,y1,color='b',linestyle='-')
plt.show()

观察数列n/n+1的图像,当n无限增大时,对应的数列第n项的值无限接近于1,读者可以修改程序,让n逐渐增大,观察数列对应的第n项的值是否无限接近于1,若数列第n项的值无限接近于1,可以初步认为1是该数列的极限。下面例3计算数列n/n+1的极限,验证1是否是该数列的极限。

例2 计算数列n/n+1的极限

# 导入sympy库
import sympy as sym
# 定义数学符号n,n为数列的自变量
n = sym.symbols('n')


# 定义函数,描述数列一般项公式n/(n+1)
def sequence():
return n/(n+1)


f = sequence()
# 计算数列的极限
# sym.oo表示趋向于无穷大
y = sym.limit(f,n,sym.oo)
print(y)
执行例3的程序,数列n/n+1的极限为1,数列收敛于1。
绘制一般项为(-1)^(n-1)的数列图像
案例代码见课程资源(unit1/case18.py)
import numpy as np
import matplotlib.pyplot as plt
# 获取数列n/n+1数据
def get_sequence_data():
# 创建200个数据点
data = np.linspace(1,30,30)
# x数据为data
x = data
# y数据由数列一般项给出
# y = data/(data+1)
y = (-1)**(data+1)
return (x,y)


# 获取数列渐进线
def get_line_data():
# 创建200个数据点
data = np.linspace(1,30,30)
# x数据为data
x = data
# y数据为data/data
y = data/data
return (x,y)


# 程序入口
if __name__ == '__main__':


# 获取数列数据
x,y = get_sequence_data()
# 绘制数列
plt.plot(x,y,color='r',linestyle='-')
# 获取数列渐近线数据
x1,y1 = get_line_data()
# 绘制渐近线
plt.plot(x1,y1,color='b',linestyle='-')
plt.show()

观察数列(-1)^(n-1)的图像,无论n如何变化,对应的数列第n项的值总是为1或-1,该数列振荡无极限,数列发散。

2、函数的极限

掌握了数列的极限,函数的极限就很容易理解。数列是一类特殊的函数,数列的自变量n只能取正整数,自变量变化的过程为趋向于无穷大,如果把数列函数的特殊性抛开,就可以引出函数极限的一般概念。

在函数自变量某个变化过程中,如果对应的函数值无限接近于某个确定的数,那么这个确定的数就叫做这一变化过程中函数的极限。

理解函数自变量的某个变化过程是非常重要的,因为函数自变量的变化过程不同,函数的极限就表现为不同的形式。例如:数列极限看作函数f(n)当n趋向于无穷大的极限,这里自变量的变化过程是n—>∞的极限。

函数的极限主要研究自变量变化过程的两种情形:

(1)自变量x任意地接近于有限值x0或者说趋于有限值x0(记作x->x0)时,对应的函数值f(x)的变化情形;

(2)自变量x的绝对值|x|无限增大,即趋于无穷大(记作x->∞)时,对应的函数值f(x)的变化情形。

先考虑自变量x->x0的变化过程,如果在x->x0的变化过程中,对应的函数值f(x)无限接近于确定的数值A,可以说数值A是函数f(x)当x->x0时的极限。在x趋向于x0的过程中,主要研究x趋向于x0,因此f(x)在x0处是否有定义,与f(x)趋向于x0的极限无关。

可以设想一下,在x->x0的过程中,对应的函数值f(x)无限接近于A,也就是说f(x)与A的差值可以任意小,f(x)与A的差值可以任意小可以用下面的公式表示:

|f(x)-A|<ε

其中ε是任意给定的正数,在x->x0的过程中,总能找到一些充分接近x0的x对应的函数值f(x)满足不等式|f(x)-A|<ε,这些变量x的范围可表示为:

0<|x-x0|<δ

其中δ是某个正数,该数体现了x与x0的接近程度,当x的取值范围落在0<|x-x0|<δ区域内时,对应的函数值f(x)都会满足不等式:

|f(x)-A|<ε

0<|x-x0|<δ也可以表示为Ù(x0,δ),即x0去心的δ邻域。由此,可以给出函数极限的定义:

设函数f(x)在点x0的某一去心邻域内有定义,对于任意给定的正数ε(不论它多么小),总存在正数δ,使得对于适合不等式0<|x-x0|<δ的一切x,对应的函数值f(x)都满足不等式

|f(x)-A|<ε

那么,常数A就叫做函数f(x)当x->x0时的极限。

例1 函数f(x)=1/x,当x->x0(x0=0.4)时极限为2.5(A=2.5,若函数是连续函数,x->0.4时极限就是x为0.4的函数值),取ε=0.8,找到x0=0.4的去心δ邻域Ù(x0,δ),在x->x0(x0=0.4)变化过程中,若x∈Ù(x0,δ),对应的函数值f(x)都满足不等式:

|f(x)-2.5|<0.8

import numpy as np
import matplotlib.pyplot as plt
import math
# 导入ticker类,设置轴刻度值
import matplotlib.ticker as mtick
from matplotlib.ticker import MultipleLocator, FormatStrFormatter


# 返回函数1/x数据
def get_data():
# 创建20个函数数据点
x = np.linspace(0.1,1.0,50)
# 计算y数据
y = 1/x
# 返回x,y数据
return (x,y)


# 返回x->x0时,以极限值A为y坐标的直线数据
def get_limit_data(x0):
x = np.linspace(0.1,1.0,50)
limit = 1/x0
y = [limit for x in range(50)]
return (x,y)


# 返回曲线与直线的交点坐标
def intersection(a1,a2,ax):
for i,y1 in enumerate(a1):
for y2 in a2:
if math.fabs(y1 - y2) < 0.1:
return (ax[i],a2[i])
return 0


# 程序入口
if __name__ == '__main__':


# 获取曲线数据
x,y = get_data()
# 设置Y轴刻度显示格式
fig, ax = plt.subplots()
yticks = mtick.FormatStrFormatter('%.2f')
ax.yaxis.set_major_formatter(yticks)
yticks_value = MultipleLocator(0.5)
xticks_value = MultipleLocator(0.08)
ax.yaxis.set_major_locator(yticks_value)
ax.xaxis.set_major_locator(xticks_value)


# 绘制曲线
plt.plot(x,y,color='b',linestyle='-')


# 获取x->0.4时,以极限值A为y坐标的直线数据
# 若函数连续,极限值就是极限x对应的函数值
x1,y1 = get_limit_data(0.4)
# 绘制以极限值A为y坐标的直线
plt.plot(x1,y1,color='r',linestyle='-',label='A')


# 设置为ε为0.8,用k表示ε
k = 0.8
# A+ε
up = np.array(y1)+k
# A-ε
bottom = np.array(y1)- k
# 绘制A+ε直线
plt.plot(x1,up,color='y',linestyle='--',label='A+ε')
# 绘制A-ε直线
plt.plot(x1,bottom,color='m',linestyle='--',label='A-ε')


'''
绘制x=0.4的去心邻域
在x->0.4变化过程中,若x进入该邻域
所有的函数都满足不等式
|f(x)-2.5|<0.8
'''
# 计算曲线与A+ε直线的交点
ax1,ay1 = intersection(y,up,x1)
# 计算曲线与A-ε直线的交点
ax2,ay2 = intersection(y,bottom,x1)
# 计算曲线与A直线的交点
iax1,iay1 = intersection(y,y1,x1)
# 在ax1和iax1之间均匀创建30个数据点
ax_data = np.linspace(ax1,iax1,30)
# 填充由ax_data、ay1,ay2构成的矩形区域
plt.fill_between(ax_data,ay1,ay2,color='blue', alpha=0.5)
# 在iax1和ax2之间均匀创建30个数据点
print(math.fabs(iax1-ax1))
ax_data = np.linspace(iax1,iax1+math.fabs(iax1-ax1),30)
# 填充由ax_data、ay1,ay2构成的矩形区域
plt.fill_between(ax_data,ay1,ay2,color='m', alpha=0.5)
# 绘制曲线与A直线的交点
plt.scatter(iax1,iay1,c='w',marker='o')
plt.legend()
plt.show()

程序绘制的图形如下:

图中蓝色曲线是f(x)=1/x函数图像,红色直线是x—>0.4时以极限值A(A =2.5)为Y坐标的直线,A直线上方的虚直线为A+ε(ε=0.8),A直线下方的虚直线为A-ε。

观察图像发现,δ约为0.1,x0=0.4的去心δ邻域为Ù(0.4,0.1),即x进入区间[0.3,0.4)和区间(0.4,0.5]时,x对应的函数值满足不等式:

|f(x)-2.5|<0.8

此时函数的图像在A+ε和A-ε之间,数值2.5即为f(x)=1/x,当x->0.4时的极限。

从图中还可以观察到,只要x进入区间[0.3,0.4)和区间(0.4,0.56]时,x对应的函数值就满足不等式:

|f(x)-2.5|<0.8

实际上,只要x进入曲线与A+ε和A-ε交点之间的区间(x=x0)除外,x对应的函数值都满足不等式:

|f(x)-2.5|<0.8

x趋向于x0的极限研究的是x0的去心领域,我们只关注进入x0去心邻域的x值和函数值就可以了。

从图中还可以观察到,当x趋向于x0时,x有两个方向趋向于x0:一个方向是x从x0的左侧趋向于x0,当x进入蓝色填充区域时,x对应的所有函数值都满足上面的不等式,x0称为函数x->x0时的左极限;一个方向是x从x0的右侧趋向于x0,当x进入粉紫色填充区域时,x对应的所有函数值都满足上面的不等式,x0称为函数x->x0时的右极限,只有左右极限相等时,x->x0时的极限值才会存在。

再考虑自变量x的绝对值|x|无限增大,即趋于无穷大(记作x->∞)时,对应的函数值f(x)的变化情形。自变量x的绝对值|x|趋于无穷大时,同数列的极限类似,但有两个重要的不同之处:(1)数列的自变量n只能取正整数,函数的自变量x可以取任意实数;(2)数列的自变量n只能趋向于正无穷大,函数的自变量x可以趋向正无穷大,也可以趋向负无穷大。

最后:

Python学习资料

如果你想学习Python帮助你实现自动化办公,或者准备学习Python或者正在学习,下面这些你应该能用得上,有需要可以领取。

① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习
⑤历年互联网企业Python面试真题,复习时非常方便

文末有领取方式哦

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python课程视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

在这里插入图片描述

三、Python实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

四、Python漫画教程

用通俗易懂的漫画,来教你学习Python,让你更容易记住,并且不会枯燥乏味。
在这里插入图片描述

在这里插入图片描述

五、互联网企业面试真题

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要也可以扫描下方csdn官方二维码或者点击主页和文章下方的微信卡片获取领取方式,【保证100%免费】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值