如何在下限和上限之间对 f(x) 进行数值积分?
How to numerically integrate f(x) between a lower and an upper bound?
我被告知要修改之前的代码以在下限 a 和上限之间进行积分 b.This 通过添加另一个参数 width 来完成。然后可以通过将许多面积为 (width*f(x)) 的矩形相加来计算积分。下面显示了我需要计算的示例
Calculate the integrals of f(x)=x from 0 to 100.
我要修改的代码是这个,这个是用来计算乘积的,如何修改这个来计算积分?
def product(f, a, b):
total = 1
for i in range(a, b+1):
total *= f(i)
return total
已编辑:
假设您的函数 f(x)
计算 x
处的函数值,您可以这样做:
def f(x): # define this according to your function.
return x*x
def integrate(func, a, b, width):
total = 0
i = a
while i <= b:
total += func(i)
i += width
return total * width
width = 0.01
integral = integrate(f, 0, 100, width)
print(integral)
输出:
333283.3350000302
积分的真值为333333.333333,所以结果比较准确
编辑:
要使用其他一些函数,如 sin
或 cos
,您可以使用内置函数,在函数 f(x)
内,像这样:
def f(x):
return math.sin(x)
然后从 0 积分到 pi,使用这个:
width = 0.01
integral = integrate(f, 0, math.pi, width)
print(integral)
记得使用 import math
.
导入数学
如果您的 width
需要像 0.001 这样的值,您将不得不使用 range
以外的值,因为它无法处理浮点值。
尝试 while 循环:
def integral(f, a, b, width):
total = 0
i = a
while i <= b:
total += f(i)
i += width
return total*width
编辑:
你可以这样使用它:
def foo(x):
return x
a = 0
b = 1
width = 0.001
integrated = integrate(foo, a, b, width)
print(integrated)
请注意,您不必将 a
、b
和 width
声明为变量;直接传入即可。
我被告知要修改之前的代码以在下限 a 和上限之间进行积分 b.This 通过添加另一个参数 width 来完成。然后可以通过将许多面积为 (width*f(x)) 的矩形相加来计算积分。下面显示了我需要计算的示例
Calculate the integrals of f(x)=x from 0 to 100.
我要修改的代码是这个,这个是用来计算乘积的,如何修改这个来计算积分?
def product(f, a, b):
total = 1
for i in range(a, b+1):
total *= f(i)
return total
已编辑:
假设您的函数 f(x)
计算 x
处的函数值,您可以这样做:
def f(x): # define this according to your function.
return x*x
def integrate(func, a, b, width):
total = 0
i = a
while i <= b:
total += func(i)
i += width
return total * width
width = 0.01
integral = integrate(f, 0, 100, width)
print(integral)
输出:
333283.3350000302
积分的真值为333333.333333,所以结果比较准确
编辑:
要使用其他一些函数,如 sin
或 cos
,您可以使用内置函数,在函数 f(x)
内,像这样:
def f(x):
return math.sin(x)
然后从 0 积分到 pi,使用这个:
width = 0.01
integral = integrate(f, 0, math.pi, width)
print(integral)
记得使用 import math
.
如果您的 width
需要像 0.001 这样的值,您将不得不使用 range
以外的值,因为它无法处理浮点值。
尝试 while 循环:
def integral(f, a, b, width):
total = 0
i = a
while i <= b:
total += f(i)
i += width
return total*width
编辑: 你可以这样使用它:
def foo(x):
return x
a = 0
b = 1
width = 0.001
integrated = integrate(foo, a, b, width)
print(integrated)
请注意,您不必将 a
、b
和 width
声明为变量;直接传入即可。