📜  Python| Numpy np.leggauss() 方法(1)

📅  最后修改于: 2023-12-03 15:34:15.561000             🧑  作者: Mango

Python numpy np.leggauss()方法

简介

numpynp.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() 方法非常方便地计算了数值积分的结果。