diff --git a/wafo/integrate.py b/wafo/integrate.py index 86ffb5b..48b5d72 100644 --- a/wafo/integrate.py +++ b/wafo/integrate.py @@ -96,8 +96,7 @@ def clencurt(fun, a, b, n=5, trace=False): else: x_0 = np.flipud(fun[:, 0]) n_2 = len(x_0) - 1 - if abs(x - x_0) > 1e-8: - raise ValueError( + _assert(abs(x - x_0) <= 1e-8, 'Input vector x must equal cos(pi*s/n_2)*(b-a)/2+(b+a)/2') f = np.flipud(fun[:, 1::]) @@ -545,7 +544,7 @@ def _p_roots_newton_start(n): return m, x -def _p_roots_newton(n, ): +def _p_roots_newton(n): """ Algorithm given by Davis and Rabinowitz in 'Methods of Numerical Integration', page 365, Academic Press, 1975. @@ -672,6 +671,12 @@ def p_roots(n, method='newton', a=-1, b=1): >>> nodes, weights = p_roots(11, a=0, b=3) >>> np.allclose(np.sum(np.exp(nodes) * weights), 19.085536923187668) True + >>> nodes, weights = p_roots(11, method='newton1', a=0, b=3) + >>> np.allclose(np.sum(np.exp(nodes) * weights), 19.085536923187668) + True + >>> nodes, weights = p_roots(11, method='eigenvalue', a=0, b=3) + >>> np.allclose(np.sum(np.exp(nodes) * weights), 19.085536923187668) + True See also -------- @@ -1094,6 +1099,12 @@ class _Quadgr(object): >>> q, err = quadgr(lambda x: np.cos(x)*np.exp(-x), 0, np.inf, 1e-9) >>> np.allclose(q, 0.5), err < 1e-9 (True, True) + >>> q, err = quadgr(lambda x: np.cos(x)*np.exp(-x), np.inf, 0, 1e-9) + >>> np.allclose(q, -0.5), err < 1e-9 + (True, True) + >>> q, err = quadgr(lambda x: np.cos(x)*np.exp(x), -np.inf, 0, 1e-9) + >>> np.allclose(q, 0.5), err < 1e-9 + (True, True) See also -------- @@ -1280,7 +1291,6 @@ def _display(neval, vals_dic, err_dic, plot_error): plt.xlabel('number of function evaluations') plt.ylabel('error') plt.legend() - plt.show('hold') def qdemo(f, a, b, kmax=9, plot_error=False): @@ -1308,7 +1318,7 @@ def qdemo(f, a, b, kmax=9, plot_error=False): Example ------- >>> import numpy as np - >>> qdemo(np.exp,0,3) + >>> qdemo(np.exp,0,3, plot_error=True) true value = 19.08553692 ftn, Boole, Chebychev evals approx error approx error