# mcross


叉积

函数库: TyMath

# 语法

C = mcross(A,B)

C = mcross(A,B,dim)

# 说明

C = mcross(A,B) 返回 A 和 B 的叉积示例

  • 如果 A 和 B 为向量,则它们的长度必须为 3;
  • 如果 A 和 B 为矩阵或多维数组,则它们必须具有相同大小。在这种情况下,mcross 函数将 A 和 B 视为三元素向量集合。该函数计算对应向量沿大小等于 3 的第一个数组维度的叉积。

C = mcross(A,B,dim) 计算数组 A 和 B 沿维度 dim 的叉积。A 和 B 必须具有相同的大小,并且 size(A,dim) 和 size(B,dim) 必须为 3。dim 输入是一个正整数标量。示例

# 示例

向量的叉积

创建两个三维向量。

using TyMath
A = [4 ,-2, 1]
B = [1, -1, 3]

求出 A 和 B 的叉积。结果 C 是同时与 A 和 B 垂直的一个向量。

C = mcross(A,B)
C = 3-element Vector{Int64}:
-5
-11
-2

使用点积验证 C 是否与 A 和 B 垂直。

dot(C,A)==0 & dot(C,B)==0
ans = true
矩阵的叉积

创建两个包含随机整数的矩阵。

using TyMath
rng=MT19937ar(5489)
A = randi(rng,15,3,5)
3×5 Matrix{Int64}:
 13  14   5  15  15
 14  10   9   3   8
  2   2  15  15  13
B = randi(rng,25,3,5)
3×5 Matrix{Int64}:
  4  20   1  17  10
 11  24  22  19  17
 23  17  24  19   5

求出 A 和 B 的叉积。

C =  mcross(A,B)
3×5 Matrix{Int64}:
  300   122  -114  -228  -181
 -291  -198  -105   -30    55
   87   136   101   234   175

结果 C 包含 A 和 B 的列之间的五个独立叉积。例如,C[:,1] 等于 A[:,1] 与 B[:,1] 的叉积。

多维数组的叉积

创建两个 3×3×3 的多维随机整数数组。

using TyMath
rng=MT19937ar(5489)
A = randi(rng,10,3,3,3)
B = randi(rng,25,3,3,3)

求出 A 和 B 的叉积,并将行视为向量。

C =  mcross(A,B,2)
3×3×3 Array{Int64, 3}:
[:, :, 1] =
 -34  12    62
  15  72  -109
 -49   8     9

[:, :, 2] =
 198  -164  -170
  45     0   -18
 -55   190  -116

[:, :, 3] =
 -109  -45   131
    1  -74    82
   -6  101  -121

结果为一个行向量集合。例如,C[1,:,1] 等于 A[1,:,1] 与 B[1,:,1] 的叉积。

# 输入参数

A,B - 输入数组
数值数组

输入数组,指定为数值数组。

数据类型: Integer | Float64 | Float32 | Float16

复数支持:

dim - 沿其运算的维度
正整数标量

沿其运算的维度,指定为正整数标量。维度 dim 的大小必须为 3。如果未指定值,则默认值是大小等于 3 的第一个数组维度。

考虑两个二维输入数组:A 和 B:

  • mcross(A,B,1) 将 A 和 B 的列视为向量,并返回对应列的叉积;

  • mcross(A,B,2) 将 A 和 B 的行视为向量,并返回对应行的叉积。

# 详细信息

叉积

两个三维向量之间的叉积生成一个与这两个向量都垂直的新向量。

考虑两个向量:

根据涉及基向量 的矩阵行列式,A 和 B 的叉积为:

在几何上,A×B 同时与 A 和 B 正交。叉积 的幅值等于使用 A 和 B 作为边构成的平行四边形的面积。此面积与 A 和 B 的幅值以及向量之间的角度有关。

因此,如果 A 和 B 平行,则叉积为零。

# 另请参阅

dot,· | kron