def op(i, j, x, y):
p0, a, b, c = orthopy.line.recurrence_coefficients.jacobi(
i, 0, 0,
# standardization='monic'
standardization='p(1)=(n+alpha over n)'
)
val1 = orthopy.line.tools.evaluate_orthogonal_polynomial(
(x-y)/(x+y), p0, a, b, c
)
val1 = numpy.polyval(scipy.special.jacobi(i, 0, 0), (x-y)/(x+y))
# treat x==0, y==0 separately
if isinstance(val1, numpy.ndarray):
idx = numpy.where(numpy.logical_and(x == 0, y == 0))[0]
val1[idx] = numpy.polyval(scipy.special.jacobi(i, 0, 0), 0.0)
else:
if numpy.isnan(val1):
val1 = numpy.polyval(scipy.special.jacobi(i, 0, 0), 0.0)
p0, a, b, c = orthopy.line.recurrence_coefficients.jacobi(
j, 2*i+1, 0,
# standardization='monic'
standardization='p(1)=(n+alpha over n)'
)
val2 = orthopy.line.tools.evaluate_orthogonal_polynomial(
1-2*(x+y), p0, a, b, c
)
# val2 = numpy.polyval(scipy.special.jacobi(j, 2*i+1, 0), 1-2*(x+y))
flt = numpy.vectorize(float)
return flt(
numpy.sqrt(2*i + 1) * val1 * (x+y)**i
* numpy.sqrt(2*j + 2*i + 2) * val2
)
评论列表
文章目录