a.b.c 或 Dot[a,b,c]
给出向量、矩阵和张量的乘积.
Dot 
a.b.c 或 Dot[a,b,c]
给出向量、矩阵和张量的乘积.
更多信息
- a 和 b 是适当维数的列表时,a.b 给出一个明确的结果. 它将 a 中最后一个指标与 b 中第一个指标之间建立约定.
- Dot 的各种应用:
-
{a1,a2}.{b1,b2} 向量的标积 {a1,a2}.{{m11,m12},{m21,m22}}向量和矩阵的乘积 {{m11,m12},{m21,m22}}.{a1,a2}矩阵和向量的乘积 {{m11,m12},{m21,m22}}.{{n11,n12},{n21,n22}}两个矩阵的乘积 - 对两个张量
和
使用 Dot 的结果是张量
将 Dot 应用到一个
维张量和一个
维张量得到一个
维的张量. » - 可将 Dot 应用于 SparseArray 和结构化数组对象. 可能的情况下,它将返回与输入相同类型的对象. »
- 对于所有参数,Dot 都是线性的. » 它没有定义向量上的复(厄米特)内积. »
- 当它的参数不是列表或稀疏数组时,Dot 保持不计算. 它具有 Flat 属性.
范例
打开所有单元 关闭所有单元基本范例 (4)
{a, b, c} . {x, y, z}u = {1, 1};
v = {-1, 1};
u.vθ = VectorAngle[u, v]GeometricScene[{"u" -> u, "v" -> v}, {PlanarAngle[{u, {0, 0}, v}] == θ}]["Graphics"]{{a, b}, {c, d}} . {x, y}{x, y} . {{a, b}, {c, d}}{x, y} . {{a, b}, {c, d}} . {r, s}{{a, b}, {c, d}} . {{1, 2}, {3, 4}} //MatrixForm{{1, 2}, {3, 4}} .{{a, b}, {c, d}} //MatrixForm{{1, 2, 3}, {4, 5, 6}} .{{a, b}, {c, d}, {e, f}} //MatrixForm范围 (28)
向量的点积 (7)
Dot[{3.2, 4.2, 5.2}, {0.75, 1.1, 0.0625}]{1, 2, 3, 4, 5}.{1, 8, 9, 0, -1}{a, b, c} . {0, b, d + e}{u, v} = RandomReal[4, {2, 3}, WorkingPrecision -> 20]u.vDot 允许复数输入,但不会取任意一个输入的共轭:
u = {1, 2 - I};
v = {z, 3};
u.v如果想对复数或 Hermitian 内积进行计算,对其中一个输入应用 Conjugate:
cDot[a_, b_] := Conjugate[a].bcDot[u, v]cDot2[a_, b_] := a.Conjugate[b]cDot2[u, v]{Sqrt[cDot[u, u]], Sqrt[cDot2[u, u]]}用 Norm 验证结果:
Norm[u]v = SparseArray[{1 -> 1, 50 -> 3}, {100}]w = SparseArray[{50 -> 7, 100 -> 5}, {100}]v.w计算两个 QuantityArray 向量的标量积:
x = QuantityArray[{1, 2, 3}, "Meters"]f = QuantityArray[{0, 0, -9.8}, "Newtons"]x.f矩阵-向量相乘 (5)
r = {{0.187902, 0.498054, 0.767621}, {0.226789, 0.852257, 0.819982}};
r//MatrixFormv2 = {0.618678, 0.213605};
v3 = {0.804978, 0.587651, 0.2951};
{v2//MatrixForm, v3//MatrixForm}v2.rr.v2r.v3v2.r.v3m = {{1, 2}, {3, 4}};
v = {5, 6};m . vv.mv.m.v定义一个列矩阵和一个行矩阵 c 和 r,其中的元素与 v 一样:
c = {{5}, {6}};
r = {{5, 6}};涉及 m、c 和 r 的乘积与涉及 m 和 v 的乘积的元素一样,但都是矩阵:
r.mm.cr.m.cc.m.rm = {{.5, .32}, {.19, .73}};
u = {1.5, .27};
v = {-3.2, 5.5};m.u.v{v.m.u, u.m.v}SparseArray[{{1, 1} -> 5, {10, 10} -> 10}].SparseArray[{{10} -> 7}]MatrixForm[{%}]SparseArray[{{1, 1} -> 5, {10, 10} -> 10}].{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}mat = SymmetrizedArray[{{1, 1} -> 2, {1, 2} -> 3, {2, 2} -> 5}, {2, 2}, Symmetric[{1, 2}]]mat.{7, 11}mat.SparseArray[{1, 2}]{{2, 3}, {3, 5}}.QuantityArray[{a, b}, "Meters"]矩阵-矩阵相乘 (11)
m = {{1.2, 3.2, 5.2}, {2.2, 4.2, -6.4}, {3.1, 5.1, 7.3}};
n = {{4.2, 6.3, 8.2}, {2.5, -7.3, 9.3}, {6.3, 8.3, -1.10}};
m.n // MatrixFormm = {{1 + I, 2, 3 - 2 I}, {0, 4, 5I}, {0, 0, 6}};
n = {{6 + I, 4, 5 - 7 I}, {5, 3, 2I}, {5, 2, 7}};
m.n // MatrixFormm = {{1, 2}, {3, 4}, {5, 6}};
n = {{6, 5, 4}, {3, 2, 1}};
m.n // MatrixFormn.m // MatrixForm{MatrixPlot[m], MatrixPlot[n], MatrixPlot[m.n], MatrixPlot[n.m]}m = RandomReal[1, {4, 3}, WorkingPrecision -> 20];
n = RandomReal[1, {3, 2}, WorkingPrecision -> 20];
m.n//MatrixFormn.m
{{a, b}, {c, d}} . {{r, s}, {t, u}}ℱ = FiniteField[29, 4];
m = {{ℱ[12], ℱ[23], ℱ[34]}, {ℱ[45], ℱ[56], ℱ[67]}, {ℱ[78], ℱ[89], ℱ[90]}};
n = {{ℱ[123], ℱ[234]}, {ℱ[345], ℱ[456]}, {ℱ[567], ℱ[678]}};
m.n // MatrixFormCenteredInterval 矩阵的乘积:
m = Map[CenteredInterval, RandomReal[{-10, 10}, {3, 3}, WorkingPrecision -> 10], {2}];
n = Map[CenteredInterval, RandomReal[{-10, 10}, {3, 2}, WorkingPrecision -> 10], {2}];
(mn = m.n)//MatrixFormranrep[e_CenteredInterval] := e["Center"] + RandomInteger[{-1000, 1000}] / 1000 e["Radius"]
(mrep = Map[ranrep, m, {2}])//MatrixForm(nrep = Map[ranrep, n, {2}])//MatrixFormMapThread[IntervalMemberQ, {mn, mrep.nrep}, 2]//MatrixFormDot[SparseArray[Automatic, {2, 3}, 0, {1, {{0, 1, 2}, {{3}, {2}}}, {3, 11}}], SparseArray[Automatic, {3, 3}, 0, {1, {{0, 0, 1, 2}, {{3}, {1}}}, {2, 9}}]]%//MatrixFormDot[SymmetrizedArray[StructuredArray`StructuredData[{3, 3}, {{{1, 1} -> 2, {2, 3} -> 35/2},
Symmetric[{1, 2}]}]], SymmetrizedArray[StructuredArray`StructuredData[{3, 3}, {{{1, 1} -> 8, {2, 3} -> 10},
Symmetric[{1, 2}]}]]]%//MatrixFormm = {{a, 1}, {0, b}};m.m.m//MatrixForm与 MatrixPower 的结果相比较:
MatrixPower[m, 3]//MatrixForm用 Dot 与 Apply (@@) 和 ConstantArray 计算矩阵的 10 次方:
Dot @@ ConstantArray[m, {10}]//ExpandMatrixPower[m, 10]//Expandmat = RandomReal[{0, 9}, {1000, 1000}];
mat2 = RandomComplex[1 + I, {1000, 300}];
Dot[mat, mat2];//AbsoluteTiming高阶数组 (5)
Dot 适用于任意阶数的数组:
a = RandomInteger[9, {2, 3, 4}];
b = RandomInteger[9, {4, 5, 2}];
c = RandomInteger[9, {2}];a.bDimensions[%]c.a.b.c(a = {{{8, 0}, {4, 2}}, {{0, 7}, {5, 6}}})//MatrixFormx = {1, 2};
y = {(1/2), (1/3)};
z = {-1, 1};
是完全缩并
,将
与
的最后一层相配,将
与
的第一层相配:
a.x.y.z
是不同的缩并
,将
与
的第一层相配,将
与
的最后一层相配:
a.z.y.xa = RandomReal[1, {2, 3, 4}];
m = RandomReal[1, {3, 4}];
Flatten[m].Flatten[a, {2, 3}]两个稀疏数组的 Dot 通常是另一个稀疏数组:
a = SparseArray[Automatic, {2, 2, 3, 4}, 0, {1, {{0, 2, 2}, {{2, 3, 4}, {1, 1, 1}}}, {x, y}}];m = SparseArray[Automatic, {4, 10}, 0, {1, {{0, 1, 1, 1, 2}, {{1}, {5}}}, {3, 2}}];a.m一个稀疏数组与一个普通列表的 Dot 可能是另一个稀疏数组或普通列表:
a.{1, 2, 3, 4}a.{{1}, {2}, {3}, {4}}%//MatrixForm两个 SymmetrizedArray 对象的乘积通常是另一个对称数组:
s = SymmetrizedArray[StructuredArray`StructuredData[{4, 4, 4, 4},
{{{1, 2, 3, 4} -> 1}, Symmetric[{1, 2, 3, 4}]}]];
m = SymmetrizedArray[StructuredArray`StructuredData[{4, 4}, {{{1, 2} -> 3}, Antisymmetric[{1, 2}]}]];
s.ma = SymmetrizedArray[StructuredArray`StructuredData[{4, 4, 4},
{{{1, 2, 3} -> 2}, Antisymmetric[{1, 2, 3}]}]];
s.aTensorSymmetry[%]应用 (16)
投影和基 (6)
v = {-1, 3};l = {1, 1};
p = (v.l/l.l)lGraphics[{InfiniteLine[{0, 0}, l], Arrow[{{0, 0}, v}], {Directive[StandardRed, Thick], Arrow[{{0, 0}, p}]}, {Dotted, Arrow[{p, v}]}}, PlotRangePadding -> .5, Axes -> True]v = {1, 2, 1 / 2};
b1 = {2, 4, -2};
b2 = {-3, 3, 0};b3 = b2 - (b2.b1/b1.b1)b1p = (v.b1/b1.b1)b1 + (v.b3/b3.b3)b3v - p% == (v.(b1⨯b2)/(b1⨯b2).(b1⨯b2))(b1⨯b2)Graphics3D[{FaceForm[Opacity[.25]], InfinitePlane[{0, 0, 0}, {b1, b2}], Arrow[{{0, 0, 0}, v}], {Directive[StandardMagenta, Thick], Arrow[{{0, 0, 0}, p}]}, Directive[Thick, Dotted], Arrow[{p, v}]}, PlotRangePadding -> 1, Axes -> True]应用 Gram–Schmidt 过程根据以下向量构建正交基:
{Subscript[v, 1], Subscript[v, 2], Subscript[v, 3], Subscript[v, 4]} = {{-0.449, -0.028, -0.209, 0.376}, {0.547, -0.943, 0.141, -0.522}, {0.405, -0.078, -0.511, 0.532}, {-0.358, -0.452, 0.651, -0.13}};Subscript[e, 1] = Normalize[Subscript[v, 1]]Subscript[e, 2] = Normalize[Subscript[v, 2] - Subscript[v, 2].Subscript[e, 1]Subscript[e, 1]]Subscript[e, 3] = Normalize[Subscript[v, 3] - Subscript[v, 3].Subscript[e, 1]Subscript[e, 1] - Subscript[v, 3].Subscript[e, 2]Subscript[e, 2]]Subscript[e, 4] = Normalize[Subscript[v, 4] - Subscript[v, 4].Subscript[e, 1]Subscript[e, 1] - Subscript[v, 4].Subscript[e, 2]Subscript[e, 2] - Subscript[v, 4].Subscript[e, 3]Subscript[e, 3]]用 Orthogonalize 确认答案:
{Subscript[e, 1], Subscript[e, 2], Subscript[e, 3], Subscript[e, 4]} == Orthogonalize[{Subscript[v, 1], Subscript[v, 2], Subscript[v, 3], Subscript[v, 4]}]Subscript[e, 1] = {1, 1, 0, 0} / Sqrt[2];
Subscript[e, 2] = {1, -1, 0, 0} / Sqrt[2];
Subscript[e, 3] = {0, 0, 1, -1} / Sqrt[2];
Subscript[e, 4] = {0, 0, 1, 1} / Sqrt[2];Table[Subscript[e, i].Subscript[e, j], {i, 4}, {j, 4}]//MatrixFormv = {w, x, y, z};{Subscript[c, 1], Subscript[c, 2], Subscript[c, 3], Subscript[c, 4]} = Table[v.Subscript[e, j], {j, 4}]v == Sum[Subscript[c, j] Subscript[e, j], {j, 4}]//Simplify{Subscript[b, 1], Subscript[b, 2], Subscript[b, 3], Subscript[b, 4], Subscript[b, 5]} = {{0, 1, 4, -2, -5}, {-4, -1, 0, 3, -5}, {-3, -3, 0, 4, -4}, {0, -4, -2, -3, 3}, {1, -2, -1, 3, 1}};Det[{Subscript[b, 1], Subscript[b, 2], Subscript[b, 3], Subscript[b, 4], Subscript[b, 5]}]c = Inverse[Transpose[{Subscript[b, 1], Subscript[b, 2], Subscript[b, 3], Subscript[b, 4], Subscript[b, 5]}]]{Subscript[y, 1], Subscript[y, 2], Subscript[y, 3], Subscript[y, 4], Subscript[y, 5]} = c.{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5]}Sum[Subscript[y, i]Subscript[b, i], {i, 5}]//SimplifyFrenet–Serret 系统将每条空间曲线的属性编码到向量基和标量函数中. 考虑以下曲线:
c[t_] := {Cos[t], Sin[t], (t/2π)}{Subscript[e, 1], Subscript[e, 2], Subscript[e, 3]} = Table[Normalize[Derivative[j][c][t] - Underoverscript[∑, k = 1, j - 1](Derivative[j][c][t].Derivative[k][c][t]/Derivative[k][c][t].Derivative[k][c][t])Derivative[k][c][t]], {j, 3}]~Simplify~(t∈Reals)Subscript[e, 3] = Simplify[Det[{Subscript[e, 1], Subscript[e, 2], Subscript[e, 3]}]]Subscript[e, 3];{κ, τ} = {(D[Subscript[e, 1], t].Subscript[e, 2]/Sqrt[c'[t].c'[t]]), -(D[Subscript[e, 3], t].Subscript[e, 2]/Sqrt[c'[t].c'[t]])}//Simplify用 FrenetSerretSystem 验证答案:
Simplify[{{κ, τ}, {Subscript[e, 1], Subscript[e, 2], Subscript[e, 3]}} == FrenetSerretSystem[c[t], t], t∈Reals]DynamicModule[{s}, Labeled[Show[ParametricPlot3D[c[t], {t, 0, 6π}, PlotRangePadding -> {.5, .5, .9}], Graphics3D[{StandardBlue, Arrow[{c[t], c[t] + Subscript[e, 1]}], StandardRed, Arrow[{c[t], c[t] + Subscript[e, 2]}], StandardPurple, Arrow[{c[t], c[t] + Subscript[e, 3]}]}] /. t -> Dynamic[s]], Animator[Dynamic[s], {0, 6π}], Top]]矩阵和线性算子 (6)
r = RotationMatrix[θ, {1, 1, 1}]r.Transpose[r]//Simplify用 OrthogonalMatrixQ 确认:
OrthogonalMatrixQ[r]p = PauliMatrix[2]p.ConjugateTranspose[p]用 UnitaryMatrixQ 确认:
UnitaryMatrixQ[p]m = {{1, 2, -1}, {-1, 1, 2}, {2, -1, 1}};
MatrixForm /@ {m.Transpose[m], Transpose[m].m}用 NormalMatrixQ 确认:
NormalMatrixQ[m]正规矩阵包括许多其他类型的矩阵,为正规矩阵的特例. 酉矩阵是正规矩阵:
p = {{0, -I}, {I, 0}};
p . ConjugateTranspose[p] == ConjugateTranspose[p].p == {{1, 0}, {0, 1}}p == ConjugateTranspose[p]{UnitaryMatrixQ[m], HermitianMatrixQ[m]}在量子力学中,具有有限多个状态的系统由单位向量表示,物理量由作用于它们的矩阵表示. 考虑一个自旋 1/2 的粒子,如电子. 它可能处于如下状态:
s = {(1/Sqrt[5]), (2I/Sqrt[5])};jz = (ℏ/2)PauliMatrix[3]Conjugate[s].jz.sσz = Simplify[Sqrt[Conjugate[s].jz.jz.s - (Conjugate[s].jz.s)^2], ℏ > 0]jy = (ℏ/2)PauliMatrix[2]σy = Simplify[Sqrt[Conjugate[s].jy.jy.s - (Conjugate[s].jy.s)^2], ℏ > 0]Simplify[σy σz > (ℏ/2)Abs[ Conjugate[s].(jy.jz - jz.jy).s] , ℏ > 0]n = 10;
u = Array[Subscript[x, #]&, n];
l = ListConvolve[{1, -2, 1} n ^ 2, u, {2, 2}]{c, m} = N[CoefficientArrays[%, u]]v = Sin[2. Pi Range[n] / n];ListConvolve[{1, -2, 1} n ^ 2, v, {2, 2}]l /. Thread[u -> v]m.v将
与 Dot 一起使用是最快的方法:
trials = 10000;
Map[First, {AbsoluteTiming[Do[ListConvolve[{1, -2, 1} n ^ 2, v, {2, 2}], {trials}]],
AbsoluteTiming[Do[l /. Thread[u -> v], {trials}]], AbsoluteTiming[Do[m.v, {trials}]]}]m = RandomReal[1, {3, 3}];vs = RandomReal[1, {10^6, 3}];Map[m.#&, vs] == vs.Transpose[m]vs.Transpose[m];//AbsoluteTimingMap[m.#&, vs];//AbsoluteTiming具有对称性的矩阵和数组 (4)
s = {{12, 7, 13}, {7, 10, -8}, {13, -8, 4}};
s//MatrixFormq[v_] := v.s.vq[α{x, y, z}] == α ^2q[{x, y, z}]//Simplifyq[{x, y, z}]//ExpandFunctionRange[%, {x, y, z}, q]DensityPlot3D[q[{x, y, z}], {x, y, z}∈Cuboid[5{-1, -1, -1}, 5{1, 1, 1}]](g = {{7, 2, 0}, {2, 6, -2}, {0, -2, 5}})//MatrixForm〈u_, v_〉 := u.g.vFunctionSign[{〈{x, y, z}, {x, y, z}〉, {x, y, z} != {0, 0, 0}}, {x, y, z}, StrictInequalities -> True]注意 Dot 本身是与单位矩阵相关的内积:
{u, v, w}.{x, y, z} == {u, v, w}.IdentityMatrix[3].{x, y, z}{Subscript[b, 1], Subscript[b, 2], Subscript[b, 3]} = IdentityMatrix[3];
Do[ Subscript[e, j] = Subscript[b, j] - Underoverscript[∑, k = 1, j - 1]〈Subscript[b, j], Subscript[e, k]〉Subscript[e, k]; Subscript[e, j] = (Subscript[e, j]/Sqrt[〈Subscript[e, j], Subscript[e, j]〉]), {j, 3}];
{Subscript[e, 1], Subscript[e, 2], Subscript[e, 3]}Table[〈Subscript[e, i], Subscript[e, j]〉, {i, 3}, {j, 3}]//Simplify对于反对称矩阵
,
定义了一个 Hamiltonian 2-form
:
(Ω = {{0, 0, -1, 0}, {0, 0, 0, -1}, {1, 0, 0, 0}, {0, 1, 0, 0}})//MatrixFormω[u_, v_] := u.Ω.v{AntisymmetricMatrixQ[Ω], Ω.Ω == -IdentityMatrix[4]}ω[{q1, q2, p1, p2}, {q1, q2, p1, p2}]Solve[Subscript[∀, {q3, q4, p3, p4}]ω[{q1, q2, p1, p2}, {q3, q4, p3, p4}] == 0, {q1, q2, p1, p2}]{a, b, c, d, e, f} = RandomReal[1, {6, 6}]用 LeviCivitaTensor 构建六维全反对称数组:
ϵ = LeviCivitaTensor[6, SymmetrizedArray]ϵ.f.e.d.c.b.aDet[{a, b, c, d, e, f}]根据
的反对称,反向缩并 (reversed contraction) 的区别是维度
上相差
:
Block[{n = 6}, (-1)^(n(n + 1)/2)ϵ.a.b.c.d.e.f]属性和关系 (16)
对于每个参数,Dot 都是线性的:
Subscript[u, 1] = {Subscript[x, 1], Subscript[y, 1], Subscript[z, 1]};
Subscript[u, 2] = {Subscript[x, 2], Subscript[y, 2], Subscript[z, 2]};
Subscript[u, 3] = {Subscript[x, 3], Subscript[y, 3], Subscript[z, 3]};Expand[Dot[a Subscript[u, 1] + Subscript[u, 3], Subscript[u, 2]] == a Dot[Subscript[u, 1], Subscript[u, 2]] + Dot[Subscript[u, 3], Subscript[u, 2]]]Expand[Dot[Subscript[u, 1], b Subscript[u, 2] + Subscript[u, 3]] == b Dot[Subscript[u, 1], Subscript[u, 2]] + Dot[Subscript[u, 1], Subscript[u, 3]]]对于实向量
,Norm[v] 等于
:
vr = RandomReal[1, {3}]Norm[vr] == Sqrt[vr.vr]vc = RandomComplex[1 + I, {3}]Norm[vc] == Sqrt[vc.Conjugate[vc]] == Sqrt[Conjugate[vc].vc]{u1, u2} = RandomReal[1, {2, 5}]u1.u2 == Norm[u1]Norm[u2]Cos[VectorAngle[u1, u2]]{u, v} = RandomReal[1, {2, 3}];
rt = RotationTransform[RandomReal[{0, 2Pi}], RandomReal[{-1, 1}, 3]];
u.v == rt[u].rt[v]对于两个矩阵,
的第
和第
项是
的第
行与
的第
列的点积:
m = Array[x, {3, 4}];
n = Array[y, {4, 5}];
m.n == Table[m[[i, All]].n[[All, j]], {i, 3}, {j, 5}]m = RandomInteger[{-10, 10}, {3, 3}];
n = RandomInteger[{-10, 10}, {3, 3}];
m.n == n.m用 MatrixPower 计算重复的矩阵相乘:
a = {{1, 1, 0}, {0, 1, 1}, {0, 0, 1}};b = MatrixPower[a, 4]b == Dot[a, a, a, a]b.{v1, v2, v3} == Nest[x a.x, {v1, v2, v3}, 4]t = RandomInteger[9, {2, 3, 4}];
u = RandomInteger[9, {4, 5}];
t.u == Table[Sum[t[[i1, i2, k]] u[[k, j2]], {k, 4}], {i1, 2}, {i2, 3}, {j2, 5}]对秩为
的张量和秩为
的张量应用 Dot 给出秩为
的张量:
a = RandomInteger[9, {2, 3, 4}];
b = RandomInteger[9, {4, 5}];TensorRank[a.b] == TensorRank[a] + TensorRank[b] - 2Inner[Times, {a, b, c}, {x, y, z}, Plus]Dot[{a, b, c}, {x, y, z}]Dot 实现了数组的标准内积:
{{a, b}, {c, d}}.{{w, x}, {y, z}}使用 Times 做元素乘法:
{{a, b}, {c, d}} * {{w, x}, {y, z}}可通过 TensorProduct 和 TensorContract 组合使用实现 Dot:
v = Array[x, {3}];
a = Array[y, {3, 4, 5}];
m = Array[z, {5, 6}];v.a.m == TensorContract[vam, {{1, 2}, {4, 5}}]//Simplify将 Dot 与 Flatten 一起使用以缩并一个数组的多个层级与另一个数组的多个层级:
a = Array[x, {3, 4, 5}];
b = Array[y, {3, 4, 5}];TensorContract[ab, {{2, 5}, {3, 6}}] == Flatten[a, {{1}, {2, 3}}].Flatten[b, {{2, 3}, {1}}]TensorReduce 可简化含有 Dot 的表达式:
TensorReduce[v.m.v, Assumptions -> {m∈Matrices[{n, n}, Antisymmetric[{1, 2}]], v∈Vectors[n]}]u = {1, 2, 3};
v = {x, y, z};
Outer[Times, u, v]c = List /@ ur = {v}c.r一个行矩阵和列矩阵的 Dot 等于对应向量的 KroneckerProduct:
u = {{1}, {2}, {3}};
v = {{4, 5, 6}};
u.v == KroneckerProduct[Flatten[u], Flatten[v]]可能存在的问题 (2)
Dot 实际上从右边处理多维向量,可以视为列向量:
a = {{1, 2}, {3, 4}, {5, 6}};a.{1, 1}a.{{1}, {1}}Dot 实际上从左边边处理多维向量,可以视为行向量:
{1, 1, 1}.a{{1, 1, 1}}.aDot 不给出
的标准内积:
a = {1 + I, 2 - I, -1 - 2I};a.a对一个参数应用 Conjugate 以获取厄米特内积:
Conjugate[a].aNorm[a] ^ 2相关指南
-
▪
- 矩阵运算 ▪
- GPU 计算 ▪
- 张量 ▪
- 向量运算 ▪
- 矩阵和线性代数 ▪
- 符号向量、矩阵和数组 ▪
- 有限数学 ▪
- NVIDIA GPU 计算 ▪
- 列表中的数学和统计运算 ▪
- 有限域 ▪
- 结构化数组 ▪
- 图编程
历史
1988年引入 (1.0) | 在以下年份被更新:2003 (5.0) ▪ 2012 (9.0) ▪ 2024 (14.0)
文本
Wolfram Research (1988),Dot,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Dot.html (更新于 2024 年).
CMS
Wolfram 语言. 1988. "Dot." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2024. https://reference.wolfram.com/language/ref/Dot.html.
APA
Wolfram 语言. (1988). Dot. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Dot.html 年
BibTeX
@misc{reference.wolfram_2026_dot, author="Wolfram Research", title="{Dot}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Dot.html}", note=[Accessed: 07-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_dot, organization={Wolfram Research}, title={Dot}, year={2024}, url={https://reference.wolfram.com/language/ref/Dot.html}, note=[Accessed: 07-September-2026]}