极限计算器(基础版)

极限计算器(基础版)趋于有限值的极限 设函数 f x 在点 xo 的一个去心邻域内有定义 如果当 x 趋于 xo 时 函数值 f x 无线接近于某个确定的值 A 则此值就为函数 f x 在点 xo 的极限 记为 或者反之 A 不存在 则函

大家好,欢迎来到IT知识分享网。

前言

最近,我在重温高数极限的时候,有时自己计算极限有些耗时,我就想着利用程序代码来帮我计算,这样就能很大的程度上压缩计算时间,将更多的时间利用在极限计算原理的理解上。

因此,在我重温了高数极限计算的基础部分之后,我就着手构建程序。

对于这个程序,在我看来要从简单开始,然后一步一步的开始计算复杂的极限。于是,这个计算器要能够计算基本初等函数的极限,比如:三角函数、指出函数等等。

在这个程序中,利用数学函数极限的定义和性质来计算函数极限,在计算中我分别计算函数的正无穷处的极限和负无穷处的极限,如果两个值相等,则函数在无穷远处具有极限,极限就等于之前计算的值,反之则没有极限;如果只计算其中一处的极限,那么能计算出值就有极限,反之没有。这个计算器也能计算出趋近确切值出的函数极限。

正篇

函数极限定义和性质

一、定义

趋于有限值的极限:

设函数f(x)在点xo的一个去心邻域内有定义,如果当x趋于xo时,函数值f(x)无线接近于某个确定的值A,则此值就为函数f(x)在点xo的极限,记为:

eq?%5Clim_%7Bx%20%5Cto%20xo%7D%7Bf%28x%29%7D%3DA  或者  eq?f%28x%29%5Crightarrow%20A%28x%5Crightarrow%20xo%29

反之,A不存在,则函数f(x)没有极限,常用eq?%5Clim_%7Bx%20%5Cto%20xo%7D%7Bf%28x%29%7D不存在。

左极限和右极限:

根据上述定义我们很容易得知左极限和右极限,记为:

左极限:eq?%5Clim_%7Bx%20%5Cto%20x_%7B0%7D%5E%7B-%7D%7D%7Bf%28x%29%7D%5Cdoteq%20A     或者   eq?f%28x_%7Bo%7D%5E%7B-%7D%29%3DA

右极限:eq?%5Clim_%7Bx%20%5Cto%20x_%7Bo%7D%5E%7B+%7D%7D%7Bf%28x%29%7D%3DA     或者   eq?f%28x_%7Bo%7D%5E%7B+%7D%29%3DA

趋于无穷远处的极限:

eq?%5Clim_%7Bx%20%5Cto%20%5Cinfty%20%7D%7Bf%28x%29%7D%3DA   或者   eq?f%28x%29%5Crightarrow%20A%28x%5Crightarrow%20%5Cinfty%20%29

正无穷和负无穷的极限同上。

二、性质

1、唯一性:

如果eq?%5Clim_%7Bx%20%5Cto%20x_%7Bo%7D%7Df%28x%29存在,那么这个极限是唯一的。

2、局部有限性:

如果eq?%5Clim_%7Bx%20%5Cto%20x_%7Bo%7D%7Df%28x%29存在,那么在点eq?x_%7Bo%7D的某个去心邻域内,函数eq?f%28x%29有界。

3、局部保号性:

如果eq?%5Clim_%7Bx%20%5Cto%20xo%7D%7Bf%28x%29%7D%3DA,且eq?A%3E0(或eq?A%3C0),那么在点eq?x_%7Bo%7D的某个去心邻域内,有eq?f%28x%29%3E0(或eq?f%28x%29%3C0

定义函数计算极限

根据以上内容,我可以知道函数的极限是唯一的,那么计算函数正无穷处的极限和负无穷处的极限应当相等,得出函数在无穷远处的极限,于是在代码中发分别计算正无穷和负无穷处的极限,如果两者相等,则函数有极限,输出值;反之无极限。

如果自变量趋近某个确切的值,那么直接计算即可。

总之,计算函数极限我在代码中分为以上两种情况,趋于无穷和趋于某个特定的值。

代码展示:

def calculate_limit(expr, var, approach): var = sp.symbols(var) expr = sp.sympify(expr) if approach == 'oo': # 处理无穷大 limit_result_plus = sp.limit(expr, var, sp.oo, dir='+') limit_result_minus = sp.limit(expr, var, sp.oo, dir='-') if limit_result_plus == limit_result_minus: limit_result = limit_result_plus else: limit_result = '不存在或不确定' elif approach == '-oo': # 处理负无穷大 limit_result_plus = sp.limit(expr, var, -sp.oo, dir='+') limit_result_minus = sp.limit(expr, var, -sp.oo, dir='-') if limit_result_plus == limit_result_minus: limit_result = limit_result_plus else: limit_result = '不存在或不确定' else: limit_result = sp.limit(expr, var, float(approach)) return limit_result

代码解释:

var和expr的代码前者是将var字符转换为sympy的符号变量,后者是将表达式字符串转换为sympy可以识别和处理的表达式。

然后就是计算无穷的情况,注意没有处理无穷大时,我没有写+,这也默认是正无穷。

在计算无穷时函数的极限,这里出现了+或-的情况,但是请注意,这里在数学上是没有意义的,可是为了保证不引入特殊情况,让代码不复杂,就这样写了,我想这几句代码写不写都无所谓。

绘制函数图像

我为了更好的分析函数,于是添加了绘制图像的功能。

函数图像的绘制的方法中有一个是五点法,于是我在代码中生成1000关于自变量x的值,然后将其代入到获取的函数表达式中计算其函数值,最终形成1000个关于x和f(x)的数组,连线而成函数图像。

代码展示:

def plot_function(expr, var, x_min, x_max): var = sp.symbols(var) expr = sp.sympify(expr) x = np.linspace(x_min, x_max, 1000) y = [expr.subs(var, x_i).evalf() for x_i in x] plt.plot(x, y) plt.xlabel(var) plt.ylabel('f(' + str(var) + ')') plt.title('函数 f(' + str(var) + ') 的图像') plt.grid(True) plt.show()

创建输入界面

做完上述工作,要更好的输入函数表达式,也不用频繁的更改代码来实现函数的变更,于是创建了一个UI界面,以便于更好的进行函数极限的运算。

代码展示:

def create_ui(): root = tk.Tk() root.title("极限计算器和函数图像绘制器") # 创建输入框和标签 # 输入函数表达式,注意输入时要表现数字与自变量之间的关系,比如:2x不能输入2x,要输入2*x expr_label = tk.Label(root, text="函数表达式 (例如 x^2, e^x, sin(x), 1/x):") expr_label.grid(row=0, column=0) expr_entry = tk.Entry(root) expr_entry.grid(row=0, column=1) # 定义自变量,因为有时计算函数的极限时,函数表达式中有字母,那就要表明其不是自变量,防止干扰计算 var_label = tk.Label(root, text="变量 (例如 x):") var_label.grid(row=1, column=0) var_entry = tk.Entry(root) var_entry.grid(row=1, column=1) # 输入接近值时,确切的数字输入就不再赘述,输入无穷时要注意输入的是o,不是零 approach_label = tk.Label(root, text="接近的值 (例如 1, 'oo' 表示无穷大):") approach_label.grid(row=2, column=0) approach_entry = tk.Entry(root) approach_entry.grid(row=2, column=1)

按钮绑定

设置了UI界面,就肯定有按钮,要让按钮发挥作用就需要为其绑定事件,当我们按下时就会触发,实现我们想要的功能。

代码展示:

 # 定义计算极限的函数 def calculate(): try: # 从UI界面获取函数表达式、自变量和趋近值 expr = expr_entry.get() var = var_entry.get() approach = approach_entry.get() # 调用函数计算极限 limit_result = calculate_limit(expr, var, approach) # 显示结果 messagebox.showinfo("结果", f"当 {var} 趋近于 {approach} 时,函数的极限值为 {limit_result}") except Exception as e: messagebox.showerror("错误", str(e)) # 创建计算按钮,用于触发极限计算 calculate_button = tk.Button(root, text="计算极限", command=calculate) # 按钮放置的位置 calculate_button.grid(row=3, column=0, columnspan=2) # 定义绘制函数图像的函数 def plot(): try: # 获取函数表达式和自变量 expr = expr_entry.get() var = var_entry.get() x_min = float(approach_entry.get()) # 使用接近值作为x的最小值 x_max = x_min + 10 # 设置x的最大值为接近值加10 # 绘制图像 plot_function(expr, var, x_min, x_max) except Exception as e: messagebox.showerror("错误", str(e)) # 创建绘图按钮 plot_button = tk.Button(root, text="绘制图像", command=plot) # 按钮放置位置 plot_button.grid(row=4, column=0, columnspan=2)

效果演示

完成了主要代码的设置之后,开始验证:

6f6011a469fc4997a2dfb92bcc02480d.png

7368217745ae4d9dad4ebd68a10d8b3f.png

注意:因为代码中选取接近值作为图像的起点,如果是oo就无法画出图像,所以我直接给了一个确定的值。

感言

这段代码还不能计算很复杂的函数极限,我会加油改进,如果这段代码中有错误,请各位大佬指正,不胜感激。

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/131996.html

(0)
上一篇 2025-08-03 20:10
下一篇 2025-08-03 20:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信