2026a

# dot,·


点积

函数库: TyMath

# 语法

C = dot(A,B)
C = ·(A,B)
C = dot(x, G, y)

# 说明

C = dot(A,B) 返回 A 和 B 的标量点积。

如果 A 和 B 是向量,则它们的长度必须相同。

如果 A 和 B 为矩阵或多维数组,则它们必须具有相同大小。在本例中,dot 函数将 A 和 B 视为向量。该函数计算整体的点积。示例


C = dot(x, G, y) 计算广义点积。对于两个向量 x,y,等价于 dot(x, G*y),但是不存储 G*y 的中间结果。示例

# 示例

实数向量的点积

创建两个简单的三元素向量。

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

计算 A 和 B 的点积。

C = dot(A,B)
C = 8

结果为 8,因为 C = A[1]*B[1] + A[2]*B[2] + A[3]*B[3]

复数向量的点积

创建两个复数向量。

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

计算 A 和 B 的点积。

C = dot(A,B)
C = 1 - 5im

结果为一个复数标量,因为 A 和 B 是复数。通常,两个复数向量的点积也是复数。获取一个复数向量与其自身的点积除外。

计算 A 与自身的内积。

D = dot(A,A)
D = 8 + 0im

结果为一个实数标量。向量与自身的内积与向量 norm(A) 的欧几里德长度相关。

矩阵的点积

创建两个矩阵。

using TyMath
A = [1 2 3;4 5 6;7 8 9]
B = [9 8 7;6 5 4;3 2 1]

求 A 和 B 的点积。

C = dot(A,B)
C = 165
C = dot(vec(A),vec(B))
C = 165

结果 C 为标量,因为 A 和 B 是矩阵。该函数将 A 和 B 视为向量。该函数计算整体的点积。

多维数组的点积

创建两个多维数组。

using TyMath
A = cat([1 1;1 1],[2 3;4 5],[6 7;8 9],dims=3)
A = 2×2×3 Array{Int64, 3}:
[:, :, 1] =
1  1
1  1
[:, :, 2] =
2  3
4  5
[:, :, 3] =
6  7
8  9
B = cat([2 2;2 2],[10 11;12 13],[14 15; 16 17],dims=3)
B = 2×2×3 Array{Int64, 3}:
[:, :, 1] =
2  2
2  2
[:, :, 2] =
10  11
12  13
[:, :, 3] =
14  15
16  17
dot(A,B)

ans = 644
计算广义点积
using TyMath
x = [1; 1]
G = [1 2; 3 4]
y = [2; 3]
z = dot(x, G, y)
26

使用另一种方式计算。

z = dot(x, G*y)
26

结果一致。

# 输入参数

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

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

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

复数支持:

# 详细信息

标量点积

长度为 n 的两个实数向量的标量点积等于

对于实数向量,此关系可互换,这样 dot(u,v) 等于 dot(v,u)。如果点积等于零,则 u 和 v 垂直。

对于复数向量,点积涉及复共轭。这将确保任何向量与自身的内积都为实数正定矩阵。

与实数向量的关系不同,复数关系不可互换,这样 dot(u,v) 等于 conj(dot(v,u))。

# 算法

  • 当输入 A 和 B 为实数或复数向量时,dot 函数将这些向量视为列向量,并且 dot(A,B) 与 sum(conj(A).*B) 相同;
  • 当输入为矩阵或多维数组时,dot 函数将这些向量视为向量计算点积。

# 另请参阅

cross,× | adjoint | kron