本文整理汇总了Python中sympy.galgebra.GA.MV类的典型用法代码示例。如果您正苦于以下问题:Python MV类的具体用法?Python MV怎么用?Python MV使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了MV类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_extract_plane_and_line
def test_extract_plane_and_line():
"""
Show that conformal trivector encodes planes and lines. See D&L section
10.4.2
"""
metric = '# # # 0 0,'+ \
'# # # 0 0,'+ \
'# # # 0 0,'+ \
'0 0 0 0 2,'+ \
'0 0 0 2 0'
MV.setup('p1 p2 p3 n nbar',metric,debug=0)
MV.set_str_format(1)
ZERO_MV = MV()
P1 = F(p1)
P2 = F(p2)
P3 = F(p3)
#Line through p1 and p2
L = P1^P2^n
delta = (L|n)|nbar
delta_test = 2*p1-2*p2
diff = delta-delta_test
diff.compact()
assert diff == ZERO_MV
#Plane through p1, p2, and p3
C = P1^P2^P3
delta = ((C^n)|n)|nbar
delta_test = 2*(p1^p2)-2*(p1^p3)+2*(p2^p3)
diff = delta-delta_test
diff.compact()
assert diff == ZERO_MV
开发者ID:ALGHeArT,项目名称:sympy,代码行数:35,代码来源:test_GA.py
示例2: test_vector_extraction
def test_vector_extraction():
"""
Show that conformal bivector encodes two points. See D&L Section 10.4.1
"""
metric = ' 0 -1 #,'+ \
'-1 0 #,'+ \
' # # #,'
MV.setup('P1 P2 a',metric)
"""
P1 and P2 are null vectors and hence encode points in conformal space.
Show that P1 and P2 can be extracted from the bivector B = P1^P2. a is a
third vector in the conformal space with a.B not 0.
"""
ZERO_MV = MV()
B = P1^P2
Bsq = B*B
ap = a-(a^B)*B
Ap = ap+ap*B
Am = ap-ap*B
Ap_test = (-2*P2dota)*P1
Am_test = (-2*P1dota)*P2
Ap.compact()
Am.compact()
Ap_test.compact()
Am_test.compact()
assert Ap == Ap_test
assert Am == Am_test
Ap2 = Ap*Ap
Am2 = Am*Am
Ap2.compact()
Am2.compact()
assert Ap2 == ZERO_MV
assert Am2 == ZERO_MV
开发者ID:ALGHeArT,项目名称:sympy,代码行数:34,代码来源:test_GA.py
示例3: test_metrics
def test_metrics():
"""
Test specific metrics (diagpq, arbitrary_metric, arbitrary_metric_conformal)
"""
from sympy.galgebra.GA import diagpq, arbitrary_metric, arbitrary_metric_conformal
metric = diagpq(3)
p1, p2, p3 = MV.setup('p1 p2 p3', metric, debug=0)
MV.set_str_format(1)
x1, y1, z1 = sympy.symbols('x1 y1 z1')
x2, y2, z2 = sympy.symbols('x2 y2 z2')
v1 = x1*p1 + y1*p2 + z1*p3
v2 = x2*p1 + y2*p2 + z2*p3
prod1 = v1*v2
prod2 = (v1|v2) + (v1^v2)
diff = prod1 - prod2
diff.compact()
assert diff == ZERO
metric = arbitrary_metric(3)
p1, p2, p3 = MV.setup('p1 p2 p3', metric, debug=0)
v1 = x1*p1 + y1*p2 + z1*p3
v2 = x2*p1 + y2*p2 + z2*p3
prod1 = v1*v2
prod2 = (v1|v2) + (v1^v2)
diff = prod1 - prod2
diff.compact()
assert diff == ZERO
metric = arbitrary_metric_conformal(3)
p1, p2, p3 = MV.setup('p1 p2 p3', metric, debug=0)
v1 = x1*p1 + y1*p2 + z1*p3
v2 = x2*p1 + y2*p2 + z2*p3
prod1 = v1*v2
prod2 = (v1|v2) + (v1^v2)
diff = prod1 - prod2
diff.compact()
assert diff == ZERO
开发者ID:Abhityagi16,项目名称:sympy,代码行数:35,代码来源:test_GA.py
示例4: test_substitution
def test_substitution():
MV.setup("e_x e_y e_z", "1 0 0, 0 1 0, 0 0 1", offset=1)
make_symbols("x y z")
X = x * e_x + y * e_y + z * e_z
Y = X.subs([(x, 2), (y, 3), (z, 4)])
assert Y == 2 * e_x + 3 * e_y + 4 * e_z
开发者ID:rflynn,项目名称:sympy,代码行数:8,代码来源:test_GA.py
示例5: test_substitution
def test_substitution():
MV.setup('e_x e_y e_z','1 0 0, 0 1 0, 0 0 1',offset=1)
make_symbols('x y z')
X = x*e_x+y*e_y+z*e_z
Y = X.subs([(x,2),(y,3),(z,4)])
assert Y == 2*e_x+3*e_y+4*e_z
开发者ID:ALGHeArT,项目名称:sympy,代码行数:8,代码来源:test_GA.py
示例6: test_derivative
def test_derivative():
coords = make_symbols('x y z')
MV.setup('e','1 0 0, 0 1 0, 0 0 1',coords=coords)
X = x*e_x+y*e_y+z*e_z
a = MV('a','vector')
assert ((X|a).grad()) == a
assert ((X*X).grad()) == 2*X
assert (X*X*X).grad() == 5*X*X
assert X.grad_int() == 3
开发者ID:ALGHeArT,项目名称:sympy,代码行数:10,代码来源:test_GA.py
示例7: test_str
def test_str():
MV.setup('e_1 e_2 e_3','1 0 0, 0 1 0, 0 0 1')
X = MV('x')
assert str(X) == 'x+x__0*e_1+x__1*e_2+x__2*e_3+x__01*e_1e_2+x__02*e_1e_3+x__12*e_2e_3+x__012*e_1e_2e_3'
Y = MV('y','spinor')
assert str(Y) == 'y+y__01*e_1e_2+y__02*e_1e_3+y__12*e_2e_3'
Z = X+Y
assert str(Z) == 'x+y+x__0*e_1+x__1*e_2+x__2*e_3+(x__01+y__01)*e_1e_2+(x__02+y__02)*e_1e_3+(x__12+y__12)*e_2e_3+x__012*e_1e_2e_3'
assert str(e_1|e_1) == '1'
开发者ID:ALGHeArT,项目名称:sympy,代码行数:10,代码来源:test_GA.py
示例8: test_derivative
def test_derivative():
coords = make_symbols("x y z")
MV.setup("e", "1 0 0, 0 1 0, 0 0 1", coords=coords)
X = x * e_x + y * e_y + z * e_z
a = MV("a", "vector")
assert ((X | a).grad()) == a
assert ((X * X).grad()) == 2 * X
assert (X * X * X).grad() == 5 * X * X
assert X.grad_int() == 3
开发者ID:rflynn,项目名称:sympy,代码行数:10,代码来源:test_GA.py
示例9: test_rmul
def test_rmul():
"""
Test for commutative scalar multiplication. Leftover from when sympy and
numpy were not working together and __mul__ and __rmul__ would not give the
same answer.
"""
MV.setup('x y z')
make_symbols('a b c')
assert 5*x == x*5
assert HALF*x == x*HALF
assert a*x == x*a
开发者ID:ALGHeArT,项目名称:sympy,代码行数:11,代码来源:test_GA.py
示例10: test_geometry
def test_geometry():
"""
Test conformal geometric description of circles, lines, spheres, and planes.
"""
metric = "1 0 0 0 0," + "0 1 0 0 0," + "0 0 1 0 0," + "0 0 0 0 2," + "0 0 0 2 0"
MV.setup("e0 e1 e2 n nbar", metric, debug=0)
e = n + nbar
# conformal representation of points
ZERO_MV = MV()
A = make_vector(e0) # point a = (1,0,0) A = F(a)
B = make_vector(e1) # point b = (0,1,0) B = F(b)
C = make_vector(-1 * e0) # point c = (-1,0,0) C = F(c)
D = make_vector(e2) # point d = (0,0,1) D = F(d)
X = make_vector("x", 3)
Circle = A ^ B ^ C ^ X
Line = A ^ B ^ n ^ X
Sphere = A ^ B ^ C ^ D ^ X
Plane = A ^ B ^ n ^ D ^ X
# Circle through a, b, and c
Circle_test = (
-x2 * (e0 ^ e1 ^ e2 ^ n)
+ x2 * (e0 ^ e1 ^ e2 ^ nbar)
+ HALF * (-1 + x0 ** 2 + x1 ** 2 + x2 ** 2) * (e0 ^ e1 ^ n ^ nbar)
)
diff = Circle - Circle_test
diff.compact()
assert diff == ZERO_MV
# Line through a and b
Line_test = (
-x2 * (e0 ^ e1 ^ e2 ^ n)
+ HALF * (-1 + x0 + x1) * (e0 ^ e1 ^ n ^ nbar)
+ (HALF * x2) * (e0 ^ e2 ^ n ^ nbar)
+ (-HALF * x2) * (e1 ^ e2 ^ n ^ nbar)
)
diff = Line - Line_test
diff.compact()
assert diff == ZERO_MV
# Sphere through a, b, c, and d
Sphere_test = HALF * (1 - x0 ** 2 - x1 ** 2 - x2 ** 2) * (e0 ^ e1 ^ e2 ^ n ^ nbar)
diff = Sphere - Sphere_test
diff.compact()
assert diff == ZERO_MV
# Plane through a, b, and d
Plane_test = HALF * (1 - x0 - x1 - x2) * (e0 ^ e1 ^ e2 ^ n ^ nbar)
diff = Plane - Plane_test
diff.compact()
assert diff == ZERO_MV
开发者ID:rflynn,项目名称:sympy,代码行数:54,代码来源:test_GA.py
示例11: test_reciprocal_frame
def test_reciprocal_frame():
"""
Test of formula for general reciprocal frame of three vectors.
Let three independent vectors be e1, e2, and e3. The reciprocal
vectors E1, E2, and E3 obey the relations:
e_i.E_j = delta_ij*(e1^e2^e3)**2
"""
metric = '1 # #,'+ \
'# 1 #,'+ \
'# # 1,'
MV.setup('e1 e2 e3',metric)
E = e1^e2^e3
Esq = (E*E)()
Esq_inv = 1/Esq
E1 = (e2^e3)*E
E2 = (-1)*(e1^e3)*E
E3 = (e1^e2)*E
w = (E1|e2)
w.collect(MV.g)
w = w().expand()
w = (E1|e3)
w.collect(MV.g)
w = w().expand()
assert w == 0
w = (E2|e1)
w.collect(MV.g)
w = w().expand()
assert w == 0
w = (E2|e3)
w.collect(MV.g)
w = w().expand()
assert w == 0
w = (E3|e1)
w.collect(MV.g)
w = w().expand()
assert w == 0
w = (E3|e2)
w.collect(MV.g)
w = w().expand()
assert w == 0
w = (E1|e1)
w = w().expand()
Esq = Esq.expand()
assert w/Esq == 1
w = (E2|e2)
w = w().expand()
assert w/Esq == 1
w = (E3|e3)
w = w().expand()
assert w/Esq == 1
开发者ID:ALGHeArT,项目名称:sympy,代码行数:52,代码来源:test_GA.py
示例12: test_str
def test_str():
MV.setup("e_1 e_2 e_3", "1 0 0, 0 1 0, 0 0 1")
X = MV("x")
assert str(X) == "x+x__0*e_1+x__1*e_2+x__2*e_3+x__01*e_1e_2+x__02*e_1e_3+x__12*e_2e_3+x__012*e_1e_2e_3"
Y = MV("y", "spinor")
assert str(Y) == "y+y__01*e_1e_2+y__02*e_1e_3+y__12*e_2e_3"
Z = X + Y
assert (
str(Z)
== "x+y+x__0*e_1+x__1*e_2+x__2*e_3+(x__01+y__01)*e_1e_2+(x__02+y__02)*e_1e_3+(x__12+y__12)*e_2e_3+x__012*e_1e_2e_3"
)
assert str(e_1 | e_1) == "1"
开发者ID:rflynn,项目名称:sympy,代码行数:13,代码来源:test_GA.py
示例13: test_contraction
def test_contraction():
"""
Test for inner product and left and right contraction
"""
MV.setup('e_1 e_2 e_3','1 0 0, 0 1 0, 0 0 1',offset=1)
assert ((e_1^e_3)|e_1) == -e_3
assert ((e_1^e_3)>e_1) == -e_3
assert (e_1|(e_1^e_3)) == e_3
assert (e_1<(e_1^e_3)) == e_3
assert ((e_1^e_3)<e_1) == 0
assert (e_1>(e_1^e_3)) == 0
开发者ID:ALGHeArT,项目名称:sympy,代码行数:13,代码来源:test_GA.py
示例14: test_constructor
def test_constructor():
"""
Test various multivector constructors
"""
MV.setup("e_1 e_2 e_3", "[1,1,1]")
make_symbols("x")
assert str(S(1)) == "1"
assert str(S(x)) == "x"
assert str(MV("a", "scalar")) == "a"
assert str(MV("a", "vector")) == "a__0*e_1+a__1*e_2+a__2*e_3"
assert str(MV("a", "pseudo")) == "a*e_1e_2e_3"
assert str(MV("a", "spinor")) == "a+a__01*e_1e_2+a__02*e_1e_3+a__12*e_2e_3"
assert str(MV("a")) == "a+a__0*e_1+a__1*e_2+a__2*e_3+a__01*e_1e_2+a__02*e_1e_3+a__12*e_2e_3+a__012*e_1e_2e_3"
assert str(MV([2, "a"], "grade")) == "a__01*e_1e_2+a__02*e_1e_3+a__12*e_2e_3"
assert str(MV("a", "grade2")) == "a__01*e_1e_2+a__02*e_1e_3+a__12*e_2e_3"
开发者ID:rflynn,项目名称:sympy,代码行数:15,代码来源:test_GA.py
示例15: test_constructor
def test_constructor():
"""
Test various multivector constructors
"""
MV.setup('e_1 e_2 e_3','[1,1,1]')
make_symbols('x')
assert str(S(1)) == '1'
assert str(S(x)) == 'x'
assert str(MV('a','scalar')) == 'a'
assert str(MV('a','vector')) == 'a__0*e_1+a__1*e_2+a__2*e_3'
assert str(MV('a','pseudo')) == 'a*e_1e_2e_3'
assert str(MV('a','spinor')) == 'a+a__01*e_1e_2+a__02*e_1e_3+a__12*e_2e_3'
assert str(MV('a')) == 'a+a__0*e_1+a__1*e_2+a__2*e_3+a__01*e_1e_2+a__02*e_1e_3+a__12*e_2e_3+a__012*e_1e_2e_3'
assert str(MV([2,'a'],'grade')) == 'a__01*e_1e_2+a__02*e_1e_3+a__12*e_2e_3'
assert str(MV('a','grade2')) == 'a__01*e_1e_2+a__02*e_1e_3+a__12*e_2e_3'
开发者ID:ALGHeArT,项目名称:sympy,代码行数:15,代码来源:test_GA.py
示例16: test_geometry
def test_geometry():
"""
Test conformal geometric description of circles, lines, spheres, and planes.
"""
metric = '1 0 0 0 0,' + \
'0 1 0 0 0,' + \
'0 0 1 0 0,' + \
'0 0 0 0 2,' + \
'0 0 0 2 0'
e0, e1, e2, n, nbar = MV.setup('e0 e1 e2 n nbar', metric, debug=0)
e = n + nbar
#conformal representation of points
A = F(e0, n, nbar) # point a = (1,0,0) A = F(a)
B = F(e1, n, nbar) # point b = (0,1,0) B = F(b)
C = F(-1*e0, n, nbar) # point c = (-1,0,0) C = F(c)
D = F(e2, n, nbar) # point d = (0,0,1) D = F(d)
x0, x1, x2 = sympy.symbols('x0 x1 x2')
X = F(MV([x0, x1, x2], 'vector'), n, nbar)
Circle = A ^ B ^ C ^ X
Line = A ^ B ^ n ^ X
Sphere = A ^ B ^ C ^ D ^ X
Plane = A ^ B ^ n ^ D ^ X
#Circle through a, b, and c
Circle_test = -x2*(e0 ^ e1 ^ e2 ^ n) + x2*(
e0 ^ e1 ^ e2 ^ nbar) + HALF*(-1 + x0**2 + x1**2 + x2**2)*(e0 ^ e1 ^ n ^ nbar)
diff = Circle - Circle_test
diff.compact()
assert diff == ZERO
#Line through a and b
Line_test = -x2*(e0 ^ e1 ^ e2 ^ n) + \
HALF*(-1 + x0 + x1)*(e0 ^ e1 ^ n ^ nbar) + \
(HALF*x2)*(e0 ^ e2 ^ n ^ nbar) + \
(-HALF*x2)*(e1 ^ e2 ^ n ^ nbar)
diff = Line - Line_test
diff.compact()
assert diff == ZERO
#Sphere through a, b, c, and d
Sphere_test = HALF*(1 - x0**2 - x1**2 - x2**2)*(e0 ^ e1 ^ e2 ^ n ^ nbar)
diff = Sphere - Sphere_test
diff.compact()
assert diff == ZERO
#Plane through a, b, and d
Plane_test = HALF*(1 - x0 - x1 - x2)*(e0 ^ e1 ^ e2 ^ n ^ nbar)
diff = Plane - Plane_test
diff.compact()
assert diff == ZERO
开发者ID:Abhityagi16,项目名称:sympy,代码行数:53,代码来源:test_GA.py
示例17: test_noneuclidian
def test_noneuclidian():
"""
Test of complex geometric algebra manipulation to derive distance function
for 2-D hyperbolic non-euclidian space. See D&L Section 10.6.2
"""
metric = '0 # #,'+ \
'# 0 #,'+ \
'# # 1,'
MV.setup('X Y e',metric,debug=0)
MV.set_str_format(1)
L = X^Y^e
B = L*e
Bsq = (B*B)()
BeBr =B*e*B.rev()
(s,c,Binv,M,S,C,alpha) = sympy.symbols('s','c','Binv','M','S','C','alpha')
Bhat = Binv*B # Normalize translation generator
R = c+s*Bhat # Rotor R = exp(alpha*Bhat/2)
Z = R*X*R.rev()
Z.expand()
Z.collect([Binv,s,c,XdotY])
W = Z|Y
W.expand()
W.collect([s*Binv])
M = 1/Bsq
W.subs(Binv**2,M)
W.simplify()
Bmag = sympy.sqrt(XdotY**2-2*XdotY*Xdote*Ydote)
W.collect([Binv*c*s,XdotY])
W.subs(2*XdotY**2-4*XdotY*Xdote*Ydote,2/(Binv**2))
W.subs(2*c*s,S)
W.subs(c**2,(C+1)/2)
W.subs(s**2,(C-1)/2)
W.simplify()
W.subs(1/Binv,Bmag)
W = W().expand()
#print '(R*X*R.rev()).Y =',W
Wd = collect(W,[C,S],exact=True,evaluate=False)
#print 'Wd =',Wd
Wd_1 = Wd[ONE]
Wd_C = Wd[C]
Wd_S = Wd[S]
#print '|B| =',Bmag
Wd_1 = Wd_1.subs(Bmag,1/Binv)
Wd_C = Wd_C.subs(Bmag,1/Binv)
Wd_S = Wd_S.subs(Bmag,1/Binv)
#print 'Wd[ONE] =',Wd_1
#print 'Wd[C] =',Wd_C
#print 'Wd[S] =',Wd_S
lhs = Wd_1+Wd_C*C
rhs = -Wd_S*S
lhs = lhs**2
rhs = rhs**2
W = (lhs-rhs).expand()
W = (W.subs(1/Binv**2,Bmag**2)).expand()
#print 'W =',W
W = (W.subs(S**2,C**2-1)).expand()
W = collect(W,[C**2,C],evaluate=False)
#print 'W =',W
a = W[C**2]
b = W[C]
c = W[ONE]
#print 'a =',a
#print 'b =',b
#print 'c =',c
D = (b**2-4*a*c).expand()
#print 'Setting to 0 and solving for C gives:'
#print 'Descriminant D = b^2-4*a*c =',D
C = (-b/(2*a)).expand()
#print 'C = cosh(alpha) = -b/(2*a) =',C
#cosh(alpha) = 1-X.Y/((X.e)(Y.e))
#alpha is noneuclidian distance
assert C == 1-XdotY/(Xdote*Ydote)
开发者ID:gnulinooks,项目名称:sympy,代码行数:74,代码来源:test_GA.py
示例18: test_metric
def test_metric():
MV.setup("e_1 e_2 e_3", "[1,1,1]")
assert str(MV.metric) == "[[1 0 0]\n [0 1 0]\n [0 0 1]]"
开发者ID:rflynn,项目名称:sympy,代码行数:3,代码来源:test_GA.py
示例19: test_metric
def test_metric():
MV.setup('e_1 e_2 e_3','[1,1,1]')
assert str(MV.metric) == '[[1 0 0]\n [0 1 0]\n [0 0 1]]'
开发者ID:ALGHeArT,项目名称:sympy,代码行数:3,代码来源:test_GA.py
示例20: make_vector
def make_vector(a,n = 3):
if type(a) == types.StringType:
sym_str = ''
for i in range(n):
sym_str += a+str(i)+' '
sym_lst = make_symbols(sym_str)
sym_lst.append(ZERO)
sym_lst.append(ZERO)
a = MV(sym_lst,'vector')
return(F(a))
if __name__ == '__main__':
ti = time.time()
MV.setup('a b c d e')
MV.set_str_format(1)
print 'e|(a^b) =',e|(a^b)
print 'e|(a^b^c) =',e|(a^b^c)
print 'a*(b^c)-b*(a^c)+c*(a^b) =',a*(b^c)-b*(a^c)+c*(a^b)
print 'e|(a^b^c^d) =',e|(a^b^c^d)
print -d*(a^b^c)+c*(a^b^d)-b*(a^c^d)+a*(b^c^d)
print (a^b)|(c^d)
print 'Example: non-euclidian distance calculation'
metric = '0 # #,# 0 #,# # 1'
MV.setup('X Y e',metric)
MV.set_str_format(1)
开发者ID:ryanGT,项目名称:sympy,代码行数:31,代码来源:testsymbolicGA.py
注:本文中的sympy.galgebra.GA.MV类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论