如何在python中进行数值积分?

时间:2016-12-06 00:53:10

标签: python integration

我无法安装任何新东西,我需要使用默认的python库,我必须集成一个函数。我可以获得任何f(x)的值,我需要为函数f(x)从0到6进行积分。

3 个答案:

答案 0 :(得分:8)

在离散形式中,积分只是求和,即

enter image description here

其中n是样本数。如果我们让b-a / 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

请注意,我们在此处使用higher-order functions。具体来说,f是传递给integrate的函数。 ab是我们的界限,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

答案 1 :(得分:0)

您可以使用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

答案 2 :(得分:-1)

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