2026a
# dot,·
点积
函数库: TyMath
# 语法
C = dot(A,B)
C = ·(A,B)
C = dot(x, G, y)
# 说明
如果 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 函数将这些向量视为向量计算点积。