【高数:2 数列的极限、函数的极限】
- 1 数列的极限
- 2 函数极限
参考书籍:毕文斌, 毛悦悦. Python漫游数学王国[M]. 北京:清华大学出版社,2022.
1 数列的极限
数列 2 , 1 2 , 4 3 , 3 4 , ⋅ ⋅ ⋅ , n + ( − 1 ) n − 1 n 2,\frac{1}{2},\frac{4}{3},\frac{3}{4},···,\frac{n+(-1)^{n-1}}{n} 2,21,34,43,⋅⋅⋅,nn+(−1)n−1的极限是1.
import matplotlib.pyplot as plt
import numpy as np
def a(n):
return (n+np.power(-1,n-1))/n
for i in range(1,6):
print('a[{}]={};'.format(i,a(i)))
>>> a[1]=2.0;
a[2]=0.5;
a[3]=1.3333333333333333;
a[4]=0.75;
a[5]=1.2;
n=[]
for i in range(90,160):
n.append(i)
a_n=[]
for i in range(len(n)):
a_n.append(a(n[i]))
epsilon=0.01
fig,ax=plt.subplots()
#绘制水平参考线
ax.hlines(1-epsilon,90,160,'g','dashed',label='y=0.99')
ax.hlines(1,90,160,'k','solid',label='y=1.00')
ax.hlines(1+epsilon,90,160,'r','dashed',label='y=1.01')
#绘制数列散点图
ax.scatter(n,a_n,s=10,label='a(n)')
#确定N值,当n>N时,|a_n-1|<epsilon
for N in range(len(a_n)):
if np.abs(a_n[N]-1)<epsilon:
break #条件满足时退出循环
N-=1
N+=90
#设置垂直参考线
ax.vlines(N,0.989,1.011,colors='b',label='n=N',lw=3)
ax.set_title('Defination limit of a series of numbers by Epsilon')
plt.xlabel('n')
plt.ylabel('a(n)')
plt.legend()
plt.show()
2 函数极限
eg1:求 lim x → 1 x 2 − 1 x − 1 \lim_{x \to 1}\frac{x^2-1}{x-1} limx→1x−1x2−1的极限。
import sympy as sy #导入sympy并命名为sy
x=sy.symbols('x') #定义变量
def f(x):return (x**2-1)/(x-1)
result=sy.limit(f(x),x,1,dir='+-') #求x趋近于1时的极限
print(result)
>>>2
注释: sympy 中定义变量可以使用 symbols(),如果定义单个变量也可以使用symbol()函数,如x=symbol(‘x’)。symbols()函数可接收一系列由空格分隔的变量名字符串,并将其赋给相应的变量名,例如:x,y,z=sy.symbols(‘x y z’)。limit()函数用来求极限,它有四个参数limit(f,x,x0,dir=‘+’), 其中, f 表示函数; x表示要取极限的变量; x0表示x趋近的数值; dir 表示取极限的方向, 如果 dir='+'则表示取右极限, '-‘表示取左极限,‘±’表示取双向左右极限, 默认 dir=’+’.
eg2: 求 lim x → 0 − ∣ x ∣ x \lim_{x \to 0^-}\frac{|x|}{x} limx→0−x∣x∣和 lim x → 0 + ∣ x ∣ x \lim_{x \to 0^+}\frac{|x|}{x} limx→0+x∣x∣的极限。
x=sy.symbols('x')
g=lambda x:sy.Abs(x)/x
sy.limit(g(x),x,0,dir='-'),sy.limit(g(x),x,0,dir='+')
>>>(-1,1)
eg3:分段函数极限, f ( x ) = { x − 1 , x < 0 0 , x = 0 x + 1 , x > 0 f(x)=\begin{cases}x-1,~~x<0\\0,~~~~x=0\\x+1,~~x>0\end{cases} f(x)=⎩ ⎨ ⎧x−1, x<00, x=0x+1, x>0,证明当x->0时,函数极限不存在。
x=sy.symbols('x')
def f(x):
if x<0:return x-1
elif x==0:return 0
else:return x+1
f(-1),f(0),f(1)
>>>(-2,0,2)
x=sy.symbols('x')
def f_left(x):return x-1
def f_middle(x):return 0
def f_right(x):return x+1
sy.limit(f_left(x),x,0,dir='-'),sy.limit(f_right(x),x,0,dir='+')
>>>(-1,1)
趋于0的左右极限不相等,故当x->0时函数极限不存在。