我面临着一个与化学(物质和建模)有关的问题,但基于线性代数和Python。所以我在这里问。
我有两个分子A和B的xyz坐标(为了清楚起见,我去掉了原子数)。
A=[[-3.046233, -5.4e-05, 0.182027], [-2.084295, 5.1e-05, 0.033334], [-3.450141, 0.000367, -0.693385]]
B=[[2.911769, 4.4e-05, -0.165016], [3.305155, 0.771695, 0.262288], [3.305, -0.772028, 0.261672]]
我能计算出A和B两点之间的距离。A 1和B[0]之间的距离为4.99单位。问题是我需要固定A的位置,但移动B,这样距离就增加到6,7,8个单位,沿着A 1-B[0]轴。我知道这是在平移一个向量,但我不知道平移向量。任何帮助来解决这个问题吗?
编辑1:(跟随@Caridorc评论)问题是沿着2-4线拖动原子4,5,6,使得只有2和4之间的距离增加。但是4-5和4-6的距离保持固定。
1条答案
按热度按时间nhaq1z211#
(我不确定你希望结果是什么样的,但这里是你如何将A从B中平移出来,使得A1和B0正好是6个单位,并且它们的方向保持不变。
我喜欢用numpy来解决很多数值线性代数问题:
这将沿着A1B[0]轴移动A中的所有点,使它们之间的距离为6。如果你想改变方向,你可以平移A,使枢轴点在原点,转置A,使位置是A^T的列,然后乘以左边的旋转矩阵(见旋转矩阵),转置它,然后将它平移回原来的位置。