def _radau(alpha, beta, xr):
'''From <http://www.scientificpython.net/pyblog/radau-quadrature>:
Compute the Radau nodes and weights with the preassigned node xr.
Based on the section 7 of the paper
Some modified matrix eigenvalue problems,
Gene Golub,
SIAM Review Vol 15, No. 2, April 1973, pp.318--334.
'''
from scipy.linalg import solve_banded
n = len(alpha)-1
f = numpy.zeros(n)
f[-1] = beta[-1]
A = numpy.vstack((numpy.sqrt(beta), alpha-xr))
J = numpy.vstack((A[:, 0:-1], A[0, 1:]))
delta = solve_banded((1, 1), J, f)
alphar = alpha.copy()
alphar[-1] = xr + delta[-1]
x, w = orthopy.line.schemes.custom(alphar, beta, mode='numpy')
return x, w
评论列表
文章目录