X-Git-Url: http://gitweb.michael.orlitzky.com/?p=numerical-analysis.git;a=blobdiff_plain;f=src%2FIntegration%2FGaussian.hs;h=c2e4d5f684b7b5a97cb702b0a6049f88f3031b84;hp=554dadc1b6f1b5f77f22efa0cb429e2369fd21ed;hb=b32831b5dde3440b85cbef62f4c47fcce0ee974f;hpb=38b68b8c9b83fc7bc9c6a2c9535a50a904d20b08 diff --git a/src/Integration/Gaussian.hs b/src/Integration/Gaussian.hs index 554dadc..c2e4d5f 100644 --- a/src/Integration/Gaussian.hs +++ b/src/Integration/Gaussian.hs @@ -102,14 +102,12 @@ nodes_and_weights :: forall m a. nodes_and_weights iterations = (nodes, weights) where - jac = jacobi_matrix - -- A shift is needed to make sure the QR algorithm -- converges. Since the roots (and thus eigenvalues) of orthogonal -- polynomials are real and distinct, there does exist a shift -- that will make it work. We guess lambda=1 makes it work. - shifted_jac = jac - identity_matrix + shifted_jac = jacobi_matrix - identity_matrix :: Mat (S m) (S m) a (shifted_nodes, vecs) = eigenvectors_symmetric iterations shifted_jac ones :: Col (S m) a @@ -147,6 +145,7 @@ gaussian :: forall a. gaussian f = gaussian' f nodes weights where + coerce :: (ToRational.C b) => b -> a coerce = fromRational' . toRational nodes :: Col10 a