Col10,
Mat(..),
construct,
+ element_sum2,
fromList,
identity_matrix,
map2,
transpose,
zipwith2 )
import Linear.QR ( eigenvectors_symmetric )
-import Normed ( Normed(..) )
-- | Compute the Jacobi matrix for the Legendre polynomials over
-- type level so this function couldn't just compute e.g. @n@ of
-- them for you).
--
--- The class constraints on @a@ could be loosened significantly if
--- we implemented column sum outside of the 1-norm.
---
-- Examples:
--
-- >>> import Linear.Matrix ( Col5 )
-- True
--
gaussian' :: forall m a.
- (Arity m, Absolute.C a, Algebraic.C a, ToRational.C a, Ring.C a)
+ (Arity m, ToRational.C a, Ring.C a)
=> (a -> a) -- ^ The function @f@ to integrate.
-> Col (S m) a -- ^ Column matrix of nodes
-> Col (S m) a -- ^ Column matrix of weights
gaussian' f nodes weights =
-- The one norm is just the sum of the entries, which is what we
-- want.
- norm_p (1::Int) weighted_values
+ element_sum2 weighted_values
where
function_values = map2 f nodes
weighted_values = zipwith2 (*) weights function_values