# mcross
叉积
函数库: TyMath
# 语法
# 说明
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 平行,则叉积为零。
