用Python程序操作矩阵和向量交叉produ

2024-04-25 05:42:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个python程序, 给定一个由3个向量a1a2a3组成的矩阵b,计算方法如下:

enter image description here

三乘(分母)只是行列式。在

为了满足工作程序的要求:

enter image description here

换句话说:

{cd9}

在这个程序中,我仔细地使用了cross和nparray。但不满足上述关系:

import numpy as np
from numpy import pi as pi

# 'a' matrix:
a = np.array([[ 0.291761097764E+01 , 0.000000000000E+00 , 0.574463427333E+01  ],
              [ -0.145880548882E+01 , 0.252672522500E+01 , 0.574463427333E+01  ],
              [ -0.145880548882E+01 ,-0.252672522500E+01 , 0.574463427333E+01  ]])

# 'a' vectors:
a_1 = [ 0.291761097764E+01 , 0.000000000000E+00 , 0.574463427333E+01  ]
a_2 = [ -0.145880548882E+01 , 0.252672522500E+01 , 0.574463427333E+01  ]
a_3 = [ -0.145880548882E+01 ,-0.252672522500E+01 , 0.574463427333E+01  ]

# volume of 'a' matrix:
V_a = np.linalg.det(a)
print 'V_a = ', V_a

cte = (2*pi)/V_a

VEC_1 = np.cross(a_2, a_3)
VEC_2 = np.cross(a_3, a_1)
VEC_3 = np.cross(a_1, a_2)

# calculation of 'b' vectors:
b_1 = cte * VEC_1
b_2 = cte * VEC_2
b_3 = cte * VEC_3

print  'b_1 = ',  b_1
print  'b_2 = ',  b_2
print  'b_3 = ',  b_3

# building 'b' matrix:
b = np.vstack ([  b_1 , b_2,  b_3 ])
print 'b = ', b

# volume of 'b' matrix:
V_b = np.linalg.det(b)
print 'V_b = ', V_b
print "1/V_a = ", 1/V_a

print "1/V_a should be equal to V_b; however, we do not get this equality"

编辑:显示的最后一个公式不正确。以下内容应更准确:

enter image description here


Tags: ofimport程序numpyasnppimatrix
1条回答
网友
1楼 · 发布于 2024-04-25 05:42:27

您应该拥有1/V_a=V_b/(8*pi**3)而不是1/V_a=V_b(因为您忽略了printscreen中最后一个等式中的2*pi),当您运行代码时,前者确实有效。在

相关问题 更多 >