def vandermonde_evaluate_expansion_all(self, input_array, output_array):
"""Naive implementation of evaluate_expansion_all
args:
input_array (input) Expansion coefficients
output_array (output) Function values on quadrature mesh
"""
assert abs(self.padding_factor-1) < 1e-8
assert self.N == output_array.shape[self.axis]
points = self.points_and_weights(self.N)[0]
V = self.vandermonde(points)
P = self.get_vandermonde_basis(V)
if output_array.ndim == 1:
output_array = np.dot(P, input_array, out=output_array)
else:
fc = np.moveaxis(input_array, self.axis, -2)
array = np.dot(P, fc)
output_array[:] = np.moveaxis(array, 0, self.axis)
assert output_array is self.backward.output_array
assert input_array is self.backward.input_array
return output_array
评论列表
文章目录