[英]How to do numerical integration in python?
我无法安装任何新的东西我需要使用默认的 python 库,我必须集成一个函数。 我可以得到任何 f(x) 的值,我需要为我的函数 f(x) 从 0 积分到 6。
在离散形式中,积分只是求和,即
其中 n 是样本数。 如果我们让 ba/n 为 dx(我们样本的“宽度”),那么我们可以在 python 中这样写:
def integrate(f, a, b, dx=0.1):
i = a
s = 0
while i <= b:
s += f(i)*dx
i += dx
return s
请注意,我们在这里使用了高阶函数。 具体来说, f
是一个传递给integrate
的函数。 a
, b
是我们的边界,默认情况下dx
是 1/10。 这允许我们将新的集成函数应用于我们希望的任何函数,如下所示:
# the linear function, y = x
def linear(x):
return x
integrate(linear, 1, 6) // output: 17.85
# or using lamdba function we can write it directly in the argument
# here is the quadratic function, y=x^2
integrate(lambda x: x**2, 0, 10) // output: 338.35
您可以使用quadpy (在我的软件包动物园之外):
import numpy
import quadpy
def f(x):
return numpy.sin(x) - x
val, err = quadpy.quad(f, 0.0, 6.0)
print(val)
-17.96017028290743
def func():
print "F(x) = 2x + 3"
x = int(raw_input('Enter an integer value for x: '))
Fx = 2 * x + 3
return Fx
print func()
使用python中的输入函数,您可以随机输入您想要的任何数字并获取该函数,或者如果硬编码这是必要的,您可以使用for循环并将数字附加到列表中
def func2():
print "F(x) = 2x + 3"
x = []
for numbers in range(1,7):
x.append(numbers)
upd = 0
for i in x:
Fx = 2 * x[upd] + 3
upd +=1
print Fx
print func2()
编辑:如果您希望数字从 0 开始计数,请将范围内的第一个值设置为 0 而不是 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.