def randomMV(self, n=1, **kwargs) -> MultiVector: ''' Convenience method to create a random multivector. see `clifford.randomMV` for details ''' return cf.randomMV(layout=self, n=n, **kwargs)
def randomV(self, n=1, **kw): ''' generate n random 1-vector s ''' kw.update(dict(n=n, grades=[1])) return cf.randomMV(layout=self, **kw)
def randomMV(self, n=1, **kw): ''' Convenience method to create a random multivector. see `clifford.randomMV` for details ''' kw.update(dict(n=n)) return cf.randomMV(layout=self, **kw)
def test_inverse(self): for layout, blades in self.algebras: a = 1. + blades['e1'] self.assertRaises(ValueError, lambda x: 1/x, a) for i in range(10): a = randomMV(layout, grades=[0, 1]) denominator = float(a(1)**2-a(0)**2) if abs(denominator) > 1.e-5: a_inv = (-a(0)/denominator) + ((1./denominator) * a(1)) self.assert_(abs((a * a_inv)-1.) < 1.e-11) self.assert_(abs((a_inv * a)-1.) < 1.e-11) self.assert_(abs(a_inv - 1./a) < 1.e-11)
def test_inverse(self): for layout, blades in self.algebras: a = 1. + blades['e1'] self.assertRaises(ValueError, lambda x: 1 / x, a) for i in range(10): a = randomMV(layout, grades=[0, 1]) denominator = float(a(1)**2 - a(0)**2) if abs(denominator) > 1.e-5: a_inv = (-a(0) / denominator) + ((1. / denominator) * a(1)) self.assert_(abs((a * a_inv) - 1.) < 1.e-11) self.assert_(abs((a_inv * a) - 1.) < 1.e-11) self.assert_(abs(a_inv - 1. / a) < 1.e-11)
def test_inverse(self, algebra): layout, blades = algebra, algebra.blades a = 1. + blades['e1'] with pytest.raises(ValueError): 1 / a for i in range(10): a = randomMV(layout, grades=[0, 1]) denominator = float(a(1)**2 - a(0)**2) if abs(denominator) > 1.e-5: a_inv = (-a(0) / denominator) + ((1. / denominator) * a(1)) assert abs((a * a_inv) - 1.) < 1.e-11 assert abs((a_inv * a) - 1.) < 1.e-11 assert abs(a_inv - 1. / a) < 1.e-11
def randomV(self,*args, **kw): ''' create a random MV within space of self This is a wrapper for `Layout.randomMV` See Also --------- Layout.randomMV ''' if not self.isBlade(): raise ValueError('I must be a blade') kw.update(grades=[1]) return cf.randomMV(layout=self.layout, *args, **kw)(self)
def randomV(self, n=1, **kwargs) -> MultiVector: ''' generate n random 1-vector s ''' return cf.randomMV(layout=self, n=n, grades=[1], **kwargs)