繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM