diff --git a/polyrat/arnoldi.py b/polyrat/arnoldi.py index f2755e9..76d4f5e 100644 --- a/polyrat/arnoldi.py +++ b/polyrat/arnoldi.py @@ -185,7 +185,7 @@ def vandermonde(self, X, weight = None): def vandermonde_derivative(self, X, weight = None): if np.array_equal(X, self.X): - return vandermonde_arnoldi_eval_der(X, self._R, self._indices, self.mode, weight = weight, V = self.Q) + return vandermonde_arnoldi_eval_der(X, self._R, self._indices, self.mode, weight = weight, V = self._Q) else: return vandermonde_arnoldi_eval_der(X, self._R, self._indices, self.mode, weight = weight) diff --git a/polyrat/version.py b/polyrat/version.py index 831fd7f..b7b6da0 100644 --- a/polyrat/version.py +++ b/polyrat/version.py @@ -1,2 +1,2 @@ -__version__ = '0.1.2' +__version__ = '0.1.3' diff --git a/tests/test_arnoldi.py b/tests/test_arnoldi.py index d77c234..bc2d580 100644 --- a/tests/test_arnoldi.py +++ b/tests/test_arnoldi.py @@ -33,5 +33,23 @@ def wilkinson(x): print("error", err) assert err < 1e-7, "Error too large" + +def test_arnoldi_vandermonde(): + dim = 2 + degree = 3 + X = np.random.randn(100, dim) + arn = ArnoldiPolynomialBasis(X, degree) + + err = arn.basis() - arn.vandermonde(X) + norm_err = np.linalg.norm(err, 'fro') + assert norm_err < 1e-10 + + # Note, these are already verified in test_basis -> test_vandermonde_derivative + # so the following checks are simply that the pass through access works correctly + arn.vandermonde_derivative(X) + arn.vandermonde_derivative(np.random.randn(10, dim)) + + + if __name__ == '__main__': test_arnoldi_roots(20)