X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FIntegration%2FGaussian.hs;h=554dadc1b6f1b5f77f22efa0cb429e2369fd21ed;hb=762a87a1bd7bc628ebf12263fb21566ab3aeb86f;hp=be92e5c8bdfd85e232cee5db3b1d57b7ce7675b1;hpb=9ef91ad4ec3a5c0966f0850d40310722b6c38b68;p=numerical-analysis.git diff --git a/src/Integration/Gaussian.hs b/src/Integration/Gaussian.hs index be92e5c..554dadc 100644 --- a/src/Integration/Gaussian.hs +++ b/src/Integration/Gaussian.hs @@ -24,15 +24,15 @@ import Linear.Matrix ( Col, Col10, Mat(..), - colzipwith, construct, + element_sum2, fromList, identity_matrix, map2, row, - transpose ) + transpose, + zipwith2 ) import Linear.QR ( eigenvectors_symmetric ) -import Normed ( Normed(..) ) -- | Compute the Jacobi matrix for the Legendre polynomials over @@ -187,9 +187,6 @@ gaussian f = -- 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 ) @@ -202,7 +199,7 @@ gaussian f = -- 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 @@ -210,7 +207,7 @@ gaussian' :: forall m a. 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 = colzipwith (*) weights function_values + weighted_values = zipwith2 (*) weights function_values