Skip to content

Commit

Permalink
Fixed a bug when calling ArnoldiPolynomialBasis.vandermonde_derivative
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffrey-hokanson committed Sep 30, 2020
1 parent 4a43c3a commit 51b7cb5
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
2 changes: 1 addition & 1 deletion polyrat/arnoldi.py
Expand Up @@ -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)

Expand Down
2 changes: 1 addition & 1 deletion polyrat/version.py
@@ -1,2 +1,2 @@
__version__ = '0.1.2'
__version__ = '0.1.3'

18 changes: 18 additions & 0 deletions tests/test_arnoldi.py
Expand Up @@ -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)

0 comments on commit 51b7cb5

Please sign in to comment.