示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
 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)
示例#5
0
 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)
示例#6
0
 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
示例#7
0
    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)
示例#8
0
 def randomV(self, n=1, **kwargs) -> MultiVector:
     '''
     generate n random 1-vector s
     '''
     return cf.randomMV(layout=self, n=n, grades=[1], **kwargs)