Пример #1
0
def test(a,b):
    g = (vsr.CGA(vsr.Mot(0,1,0,0,0,0,0,0)).comm(vsr.CGA(a)) * vsr.CGA(b) * 2.0)[0]
    h = (a[1]* b[0] - a[0] * b[1]) * 2
    print(h)
    print(g)
    i =  (-a[0] * b[0] - a[1] * b[1] ) * 4.0
    j = (vsr.CGA(vsr.Mot(0,1,0,0,0,0,0,0)).comm(vsr.CGA(vsr.Mot(0,1,0,0,0,0,0,0)).comm(vsr.CGA(a))) * vsr.CGA(b) * 4.0)[0]
    print(i)
    print(j)
Пример #2
0
def project(Y, M):
    YM2 = Y * M
    YM2[0] = 0.0
    YM2[26] = 0.0
    YM2[27] = 0.0
    YM2[28] = 0.0
    YM2[29] = 0.0
    YM2[30] = 0.0
    return vsr.CGA(vsr.MotRec(YM2 * M.rev()))
Пример #3
0
def cga_gp_tensor():
    dim = 32
    M = np.zeros((dim, dim))
    mask = np.arange(1, dim + 1)
    for i in range(dim):
        for j in range(dim):
            a = vsr.CGA(*[0] * 32)
            b = vsr.CGA(*[0] * 32)
            a[i] = 1.
            b[j] = 1.
            M[i, j] = np.dot(mask, np.array(a * b))
    tensor = np.zeros((dim, dim, dim))
    for k in range(dim):
        for i in range(dim):
            for j in range(dim):
                val = M[i, j]
                if abs(val) == k + 1:
                    tensor[k, i, j] = np.sign(val)
    return tensor
Пример #4
0
            a[i] = 1.
            b[j] = 1.
            # print(a * b)
            M[i, j] = np.dot(mask, np.array(a * b))
    tensor = np.zeros((dim, dim, dim))
    for k in range(dim):
        for i in range(dim):
            for j in range(dim):
                val = M[i, j]
                if abs(val) == k + 1:
                    tensor[k, i, j] = np.sign(val)
    return tensor


Gkij = cga_gp_tensor()
a = vsr.CGA(*np.arange(1, 33)) * 0.1
b = vsr.CGA(*np.arange(1, 33)) * 0.1
# print(a * b)
# print(vsr.CGA(*np.einsum('i,j,kij->k', a, b, Gkij)))

Gkij = ega_gp_tensor()
for i in range(8):
    a = vsr.EGA(*np.arange(1, 9))
    b = vsr.EGA(*[0] * 8)
    b[i] = 1.0
    c = a * b
    d = vsr.EGA(*np.einsum('i,j,kij->k', a, b, Gkij))
    print(c)
    print(d)

Gkij = cga_gp_tensor()
Пример #5
0
def main1():

    motor0 = create_motor()
    motor = create_motor()
    points = create_points(motor)

    A, B, _ = points[0]
    dM = vsr.CGA(A) * vsr.CGA(motor0).rev() * vsr.CGA(B) + \
        vsr.CGA(A).rev() * vsr.CGA(motor0).rev() * vsr.CGA(B).rev()

    # print(vsr.CGA(motor0))
    proj = project(dM, vsr.CGA(motor0))
    print(proj)

    dM2 =  vsr.CGA(motor0).rev() * vsr.CGA(A).spin(vsr.CGA(motor0)) * vsr.CGA(B) * 2.0
    print(project(dM2, vsr.CGA(motor0)))
Пример #6
0
 def err(points, mot):
     err = 0.0
     for A, B, _ in points:
         err += (vsr.CGA(A.spin(mot)) * vsr.CGA(B) * -2.0)[0]
     return err