【发布时间】:2019-03-09 05:02:18
【问题描述】:
我制作了一个简单的 GUI 来解决用户输入的积分问题,我想知道是否有任何方法可以在不牺牲准确性的情况下加快在我的代码中获取积分的过程?对于小范围来说它非常快,但是当下限和上限变大时,它变得非常低效。
from tkinter import *
import parser
from math import *
def Integrate(eq, a, b):
code = parser.expr(eq).compile() #parses user string into equation
dx = 0.0000001
area = 0.0
x = a
x_f = b
while x <= x_f:
x += dx
area += (dx*eval(code))
answer = float("{0:.5f}".format(area))
print(answer)
master = Tk()
master.title("Integration Program")
instruction = Label(master, text="Enter f(x): ")
instruction.grid(row=0, column=0)
lower_label = Label(master, text="Lower Bound: ")
lower_label.grid(row=0, column=1)
upper_label = Label(master, text="Upper Bound: ")
upper_label.grid(row=0, column=2)
f_of_x = StringVar()
lwr = StringVar()
upr = StringVar()
entry_f = Entry(master, textvariable=f_of_x, width=20)
entry_f.grid(row=1, column=0)
entry_l = Entry(master, textvariable=lwr, width=5)
entry_l.grid(row=1, column=1)
entry_u = Entry(master, textvariable=upr, width=5)
entry_u.grid(row=1, column=2)
go = Button (master, text = "Integrate",
command= lambda: Integrate(f_of_x.get(),
float(lwr.get()),
float(upr.get())))
go.grid(row=2, column=1)
mainloop()
【问题讨论】:
-
您可以使用更高阶的集成方法,例如Simpson 的方法或 Runge-Kutta 可以让您使用更大的
dx:en.wikipedia.org/wiki/Numerical_integration
标签: python-3.x computer-science integral