This is a pre-release version (2.0.0.dev0+git20260907.41eeb59).Go to latest (1.18.0)
{ } Raw JSON

bundles / scipy 2.0.0.dev0+git20260907.41eeb59 / scipy / integrate / _lebedev / lebedev_rule

function

scipy.integrate._lebedev:lebedev_rule

source: build-install/usr/lib/python3.14/site-packages/scipy/integrate/_lebedev.py:5360

Signature

def lebedev_rule(n)

Summary

Lebedev quadrature.

Extended Summary

Compute the sample points and weights for Lebedev quadrature [1] for integration of a function over the surface of a unit sphere.

Parameters

n : int

Quadrature order. See Notes for supported values.

Returns

x : ndarray of shape ``(3, m)``

Sample points on the unit sphere in Cartesian coordinates. m is the "degree" corresponding with the specified order; see Notes.

w : ndarray of shape ``(m,)``

Weights

Notes

Implemented by translating the Matlab code of [2] to Python.

The available orders (argument n) are

3, 5, 7, 9, 11, 13, 15, 17,
19, 21, 23, 25, 27, 29, 31, 35,
41, 47, 53, 59, 65, 71, 77, 83,
89, 95, 101, 107, 113, 119, 125, 131

The corresponding degrees m are

6, 14, 26, 38, 50, 74, 86, 110,
146, 170, 194, 230, 266, 302, 350, 434,
590, 770, 974, 1202, 1454, 1730, 2030, 2354,
2702, 3074, 3470, 3890, 4334, 4802, 5294, 5810

Examples

An example given in [3]_ is integration of :math:`f(x, y, z) = \exp(x)` over a sphere of radius :math:`1`; the reference there is ``14.7680137457653``. Show the convergence to the expected result as the order increases:
import matplotlib.pyplot as plt
import numpy as np
from scipy.integrate import lebedev_rule
def f(x):
    return np.exp(x[0])
res = []
orders = np.arange(3, 20, 2)
for n in orders:
    x, w = lebedev_rule(n)
    res.append(w @ f(x))
ref = np.full_like(res, 14.7680137457653)
err = abs(res - ref)/abs(ref)
✓
plt.semilogy(orders, err)
plt.xlabel('order $n$')
plt.ylabel('relative error')
plt.title(r'Convergence for $f(x, y, z) = \exp(x)$')
✗
Text(0.5, 1.0, 'Convergence for $f(x, y, z) = \\exp(x)$')
plt.show()
✓
fig-d66a8aaabf1f5c32.png

Aliases

  • scipy.integrate.lebedev_rule

Referenced by