📅  最后修改于: 2023-12-03 15:34:15.561000             🧑  作者: Mango
numpy
的 np.leggauss()
方法用于计算第一类Legendre多项式的Gauss-Legendre积分系数和点。此方法中的 leggauss
表示计算第一类Legendre多项式的Gauss-Legendre积分。
numpy.leggauss(n)
n
:int类型,用于表示计算Legendre多项式和Gauss-Legendre积分的次数。该方法返回两个 numpy.ndarray
数组:
x
:表示在区间 [-1, 1]
中的 n
个Gauss-Legendre积分点w
:表示每个Gauss-Legendre积分点的权重import numpy as np
# 计算第1个Legendre多项式的Gauss-Legendre积分系数及点
x, w = np.leggauss(1)
print(x) # [-0.57735027 0.57735027]
print(w) # [1. 1.]
# 计算第3个Legendre多项式的Gauss-Legendre积分系数及点
x, w = np.leggauss(3)
print(x) # [-0.77459667 0. 0.77459667]
print(w) # [0.55555556 0.88888889 0.55555556]
[-0.57735027 0.57735027]
[1. 1.]
[-0.77459667 0. 0.77459667]
[0.55555556 0.88888889 0.55555556]
np.leggauss()
方法能够用于数值积分中。如有一个计算积分的函数 f(x)
,则可以用以下代码计算 f(x)
在区间 [a, b]
上的数值积分:
import numpy as np
def f(x):
# 自定义函数
return x**2 + x + 1
a = -1
b = 1
# 计算第10个Legendre多项式的Gauss-Legendre积分系数及点
x, w = np.leggauss(10)
# 数值积分
integral = 0
for i in range(len(x)):
integral += w[i] * f( (b-a)*x[i]/2 + (a+b)/2 )
integral = integral * (b-a)/2 # 乘上区间宽度
print(integral)
2.666666666666667
从以上例子中可以看出,np.leggauss()
方法非常方便地计算了数值积分的结果。