Cross[a,b]
gives the vector cross product of a and b.
Cross 
Cross[a,b]
gives the vector cross product of a and b.
Details
- If a and b are lists of length 3, corresponding to vectors in three dimensions, then Cross[a,b] is also a list of length 3.
- Cross[a,b] can be entered in StandardForm and InputForm as ab, a
cross
b or a\[Cross]b. Note the difference between \[Cross] and \[Times]. - Cross is antisymmetric, so that Cross[b,a] is -Cross[a,b]. »
- Cross[{x,y}] gives the perpendicular vector {-y,x}.
- In general, Cross[v1,v2,…,vn-1] is a totally antisymmetric product which takes vectors of length n and yields a vector of length n that is orthogonal to all of the vi.
- Cross[v1,v2,…] gives the dual (Hodge star) of the wedge product of the vi, viewed as one‐forms in n dimensions.
Examples
open all close allBasic Examples (3)
The cross product of two vectors in three dimensions:
u = {1, 2, -1};
v = {-1, 1, 0};w = Cross[u, v]Visualize the two initial vectors, the plane they span in and the product:
Graphics3D[{Black, Arrow[Tube[{{0, 0, 0}, u}]], Arrow[Tube[{{0, 0, 0}, v}]], StandardRed, Arrow[{{0, 0, 0}, w}], White, InfinitePlane[{0, 0, 0}, {u, v}]}, Axes -> True, PlotRangePadding -> 2]The cross product of a single vector in two dimensions:
Cross[{1, Sqrt[3]}]Graphics[{Arrow[{{0, 0}, {1, Sqrt[3]}}], StandardRed, Arrow[{{0, 0}, {-Sqrt[3], 1}}]}, Axes -> True]{a, b, c}⨯{x, y, z}Scope (9)
Find the cross product of machine-precision vectors:
Cross[{3.2, 4.2, 5.2}, {0.75, 0.09, 0.06}]Cross product of complex vectors:
Cross[{1.3 + I, 2, 3 - 2 I}, {6. + I, 4, 5 - 7 I}]Cross product of exact vectors:
{1, 2, 3}⨯{1, 8, 9}The cross product of arbitrary-precision vectors:
{u, v} = RandomReal[4, {2, 3}, WorkingPrecision -> 20]u⨯vCross product of symbolic vectors:
Cross[{x, 0, x}, {x, y, 2x}]Compute the cross product of QuantityArray vectors:
e = QuantityArray[{1, 2, 3}, "Newtons" / "Coulombs"]b = QuantityArray[{4, 5, 6}, "Teslas"]The QuantityArray structure is preserved:
e⨯b%//MatrixFormThe cross product of a single vector in two dimensions:
Cross[{x, y}]The result is perpendicular to the original vector:
{x, y}.%Define two vectors in three dimensions:
a = {1, 2, 3};b = {4, 5, 6};Verify that Cross is antisymmetric:
Cross[a, b] == -Cross[b, a]Define three vectors in four dimensions:
{a, b, c} = {{1, 2, 3, 4}, {1, 4, 9, 16}, {1, 8, 27, 81}};Compute the cross product of the vectors:
d = a⨯b⨯cVerify that the product is orthogonal to all three vectors:
{d.a, d.b, d.c}Compute all possible product orders; each swap of two vectors merely changes the overall sign:
Cross @@@ Permutations[{a, b, c}]Applications (10)
Geometric Applications (5)
Find the normal to the plane spanned by two vectors:
u = {1, 2, 3};
v = {1, 4, 9};w = Cross[u, v]Verify that the result is perpendicular to both inputs:
{w.u, w.v}w.{x, y, z} == 0Find a vector perpendicular to a vector in the plane:
u = RandomReal[1, 2]v = Cross[u]Verify that u and v are perpendicular:
u.vFind a vector orthogonal to n-1 vectors in n dimensions:
n = 5;
uu = RandomReal[1, {n - 1, n}];
v = Apply[Cross, uu]Chop[uu.v]Find the area of the parallelogram defined by two vectors:
a = {1, 2, -2};
b = {1, -1, 2};
Norm[a⨯b]Compare with a direct computation using Area:
Area[Parallelepiped[{0, 0, 0}, {a, b}]]This can also be computed as
, with
the angle between the vectors:
Norm[a]Norm[b]Sin[VectorAngle[a, b]]Graphics3D[Parallelepiped[{0, 0, 0}, {a, b}]]The Frenet–Serret system encodes every space curve's properties in a vector basis and scalar functions. Consider the following curve:
c[t_] := {Cos[t], Sin[t], (t/2π)}Define the tangent, normal and binormal vectors in terms of cross products of the first two derivatives:
{Subscript[e, 1], Subscript[e, 2], Subscript[e, 3]} = Simplify[{Normalize[c'[t]], Normalize[c'[t]⨯(c''[t]⨯c'[t])], Normalize[c'[t]⨯c''[t]]}, t∈Reals]These three vectors define a right-handed, orthonormal basis for
:
{Table[Subscript[e, i].Subscript[e, j], {i, 3}, {j, 3}], Subscript[e, 1]⨯Subscript[e, 2] == Subscript[e, 3]}//SimplifyCompute the curvature,
, and torsion,
, which quantify how the curve bends:
{κ, τ} = Simplify[{(Norm[c''[t]⨯c'[t]]/Norm[c'[t]]^3), (c'[t].(c''[t]⨯c'''[t])/Norm[c'[t]⨯c''[t]]^2)}, t∈Reals]Verify the answers using FrenetSerretSystem:
Simplify[{{κ, τ}, {Subscript[e, 1], Subscript[e, 2], Subscript[e, 3]}} == FrenetSerretSystem[c[t], t], t∈Reals]Visualize the curve and the associated moving basis, also called a frame:
DynamicModule[{s}, Labeled[Show[ParametricPlot3D[c[t], {t, 0, 6π}, PlotRangePadding -> {.5, .5, .9}], Graphics3D[{AbsoluteThickness[2], 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]]Physical Applications (5)
Find the torque about the origin of a force
straight down applied at the point
:
F = Quantity[{0, 0, -10}, "Newtons"];
r = Quantity[{1.5, 3.2, 1.25}, "Meters"];Torque is given by the formula
:
r⨯FFind the angular momentum of a particle of mass
, velocity
and position
about the origin:
m = Quantity[3, "Kilograms"];
v = Quantity[{1.5, 2.3, -3.4}, "Meters" / "Seconds"];
r = Quantity[{2.5, -3.3, 1.4}, "Meters"];Angular momentum is given by
, with linear momentum
equal to
:
r⨯(m v)Find the magnetic force on the particle of charge
and velocity
moving through a magnetic field of
in the positive
direction:
q = Quantity[2, "Coulombs"];
v = QuantityArray[{3, -4, 5}, "Meters" / "Seconds"];
B = QuantityArray[{0, 0, 0.075}, "Teslas"];q v ⨯BUse UnitSimplify get the expected unit Newtons, and MatrixForm to format the vector:
UnitSimplify[%]//MatrixFormConsider a particle constrained to rotate at a fixed distance from the
axis:
r[t_] := {0, Cos[t^2], Sin[t^2]}Define the angular velocity by means of a cross product:
ω = (r'[t]⨯r''[t]/r'[t].r'[t])//SimplifyMany properties can be expressed in terms of
. The linear velocity
equals
:
r'[t] == ω⨯r[t]The perpendicular or centripetal acceleration equals
:
Subscript[a, perp] = ω⨯r'[t]Since
and
are orthogonal, it is immediate that
:
Simplify[Norm[Subscript[a, perp]] == Norm[ω]Norm[r'[t]] == (r'[t].r'[t]/Norm[r[t]]), t∈Reals]The well-known formula for centripetal acceleration,
, also holds:
Simplify[Norm[Subscript[a, perp]] == (r'[t].r'[t]/Norm[r[t]]), t∈Reals]The derivative of
is the angular velocity
:
α = D[ω, t]The acceleration parallel to the direction of motion,
, equals
:
Subscript[a, par] = α⨯r[t]Note that the linear acceleration
equals the sum
:
r''[t] == Subscript[a, par] + Subscript[a, perp]Cross products with respect to fixed three-dimensional vectors can be represented by matrix multiplication, which is useful in studying rotational motion. Construct the antisymmetric matrix representing the linear operator
, where
is an angular velocity about the
axis:
Overscript[ω, ⇀] = {0, 0, 2};(Subscript[ℒ, L] = Map[Cross[#, Overscript[ω, ⇀]]&, IdentityMatrix[3]])//MatrixFormVerify that the action of
is the same as doing a cross product with
:
Subscript[ℒ, L]. {x, y, z} == Overscript[ω, ⇀]⨯{x, y, z}The rotation matrix at time
is the matrix exponential of
times the previous matrix:
(rot[t_] = MatrixExp[t Subscript[ℒ, L]])//MatrixFormVerify
using RotationMatrix:
rot[t] == RotationMatrix[Norm[Overscript[ω, ⇀]]t, {0, 0, 1}]The point
at time zero will be
at time
:
Overscript[r, ⇀] = rot[t].{x, y, z}The velocity of
will be given by
:
Overscript[v, ⇀] = Overscript[ω, ⇀]⨯Overscript[r, ⇀]And the vector from the axis of rotation to
is
:
(Overscript[v, ⇀]⨯Overscript[ω, ⇀]/Overscript[ω, ⇀].Overscript[ω, ⇀])//ExpandVisualize this motion and the associated vectors:
With[{w = Overscript[ω, ⇀], x = rot[s].{1, 1, 1}}, Animate[Legended[Graphics3D[{AbsoluteThickness[3], StandardRed, Arrow[{{0, 0, 0}, w}], StandardBlue, Arrow[{{0, 0, 0}, x}], StandardCyan, Arrow[{{0, 0, 1}, x}], StandardPurple, Translate[Arrow[{{0, 0, 0}, w⨯x}], x]}, PlotRange -> {{-3, 3}, {-3, 3}, {0, 2}}], SwatchLegend[{StandardRed, StandardBlue, StandardPurple, StandardCyan}, {ω, r[t], v[t] == ω⨯r[t], Subscript[r, "⟂"] == (v[t]⨯ω/ω.ω)}]], {{s, 0, t}, 0, 2π}]]Properties & Relations (10)
If u and v are linearly independent, u×v is nonzero and orthogonal to u and v:
{u, v} = RandomInteger[{-9, 9}, {2, 3}]w = Cross[u, v]{u.w, v.w}If u and v are linearly dependent, u×v is zero:
u = RandomReal[1, 3];
v = RandomReal[1] u;Chop[Cross[u, v]]For three-dimensional vectors,
, with
the angle between
and
:
{u1, u2} = RandomReal[1, {2, 3}];
Norm[u1⨯u2] == Norm[u1]Norm[u2]Sin[VectorAngle[u1, u2]]The norm of Cross[u1,…,uk] is the measure of the k-dimensional parallelopiped spanned by ui:
{u1, u2} = {{5, -9, 6}, {-7, 5, 3}};
p = Parallelepiped[{0, 0, 0}, {u1, u2}];
Norm[u1⨯u2] == Area[p] == RegionMeasure[p, 2]{v1, v2, v3} = {{8, -5, 5, -1}, {6, 7, 8, -2}, {-7, 6, -3, 2}};
p = Parallelepiped[{0, 0, 0, 0}, {v1, v2, v3}];
Norm[v1⨯v2⨯v3] == Volume[p] == RegionMeasure[p, 3]Cross is antisymmetric:
{u, v} = RandomReal[1, {2, 3}];Cross[u, v] == -Cross[v, u]Cross is linear in each argument:
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[Cross[a Subscript[u, 1] + Subscript[u, 3], Subscript[u, 2]] == a Cross[Subscript[u, 1], Subscript[u, 2]] + Cross[Subscript[u, 3], Subscript[u, 2]]]Expand[Cross[Subscript[u, 1], b Subscript[u, 2] + Subscript[u, 3]] == b Cross[Subscript[u, 1], Subscript[u, 2]] + Cross[Subscript[u, 1], Subscript[u, 3]]]Since Cross is linear, the operator
can be represented by matrix multiplication:
Overscript[ω, ⇀] = {Subscript[ω, x], Subscript[ω, y], Subscript[ω, z]};(Subscript[ℒ, L] = Map[Cross[#, Overscript[ω, ⇀]]&, IdentityMatrix[3]])//MatrixFormMultiplying a vector
by by the antisymmetric matrix
is equivalent to
:
Subscript[ℒ, L].{a, b, c} == Overscript[ω, ⇀]⨯{a, b, c}There is a corresponding operator,
, for computing the product in the opposite order:
(Subscript[ℒ, R] = Map[Cross[Overscript[ω, ⇀], #]&, IdentityMatrix[3]])//MatrixFormSubscript[ℒ, R].{a, b, c} == {a, b, c}⨯Overscript[ω, ⇀]These two matrices are transposes or—equivalently, due to antisymmetry—negations of each other:
Subscript[ℒ, R] == Transpose[Subscript[ℒ, L]] == -Subscript[ℒ, L]Cross in dimension
is the contraction of
vectors into the Levi-Civita tensor:
α = Array[a, {4}];
β = Array[b, {4}];
γ = Array[c, {4}];
Cross[α, β, γ] === TensorContract[αβγLeviCivitaTensor[4, List], {{1, 4}, {2, 5}, {3, 6}}]Cross of
vectors in dimension
is (
times the Hodge dual of their tensor product:
{a, b, c, d}⨯{d, e, f, g}⨯{h, i, j, k}(4 - 1)!HodgeDual[{a, b, c, d}{d, e, f, g}{h, i, j, k}]% == %%The Hodge dual of the TensorWedge of
-vectors coincides with the Cross of those vectors:
v1 = {a, b, c};
v2 = {x, y, z};Normal@HodgeDual[v1v2] === Cross[v1, v2]v1 = {a, b, c, d};
v2 = {x, y, z, t};
v3 = {p, q, r, s};Normal@HodgeDual[v1v2v3] === Cross[v1, v2, v3]TensorWedge can treat higher-rank forms:
M = Array[m, {5, 5}];
Q = Array[q, {5, 5}];HodgeDual[MQ]Interactive Examples (1)
Create a visualization of two draggable vectors in the
-
plane, their cross product (parallel to the
axis), and the parallelogram they span:
Manipulate[
DynamicModule[{vv, ww, angles, cros},
vv = Normalize[v];ww = Normalize[w];
cros = First[PadLeft[v, 3]⨯PadLeft[w, 3]];
angles = Sort[N@{ArcTan@@vv, ArcTan@@ww}];Graphics[{IconizedObject[«x ticks»], {If[showPar, {If[cros > 0, RGBColor[1, 0.6, 0.7000000000000001, 0.5], RGBColor[0.6, 0.7000000000000001, 1, 0.5]], Polygon[{{0, 0}, v, v + w, w}]}]},
{LightDarkSwitched[GrayLevel[0]], Arrow[{{0, 0}, v}]}, {LightDarkSwitched[GrayLevel[0]], Arrow[{{0, 0}, w}]}, AbsoluteThickness[3], {If[cros < 0, RGBColor[0.4, 0.6, 1], RGBColor[0.98, 0.56, 0.17]], Circle[{0, 0}, .3, If[-Subtract@@angles < π, angles, Reverse[angles] + {0, 2π}]]}, {If[cros > 0, RGBColor[0.98, 0.56, 0.17], RGBColor[0.4, 0.6, 1]], Arrow[{{0, 0}, cros{-1 / 2, -1 / 2}}]}, Text["OverscriptBox[v, ⇀]", v 3 / 4, {1, 1}], Text["OverscriptBox[w, ⇀]", 3w / 4, {1, 1}], Text["OverscriptBox[v, ⇀] ⨯ OverscriptBox[w, ⇀]", cros{-1 / 2, -1 / 2}, {1, 1}]}, Axes -> True, PlotRange -> 3, AxesLabel -> {y, z}, ImageSize -> {400, 400}, PlotLabel -> Grid[
{{If[cros > 0, Style["acute or obtuse angle", RGBColor[0.98, 0.56, 0.17]], Style["reflex angle", RGBColor[0.4, 0.6, 1]]], Norm["OverscriptBox[v, ⇀] ⨯ OverscriptBox[w, ⇀]"] == DecimalForm[Abs[cros], {4, 3}]}}, ItemSize -> 10]]],
{{showPar, True, "show parallelogram"}, {True, False}},
{{v, {1., 0.5}}, {-3, -3}, {3, 3}, Locator, Appearance -> None, Exclusions -> {0, 0}},
{{w, {-2., 1.}}, {-3, -3}, {3, 3}, Locator, Appearance -> None, Exclusions -> {0, 0}}
]See Also
Dot Signature Outer Curl TensorWedge LeviCivitaTensor HodgeDual KroneckerProduct Orthogonalize VectorAngle
Characters: \[Cross]
Tech Notes
Related Guides
History
Introduced in 1996 (3.0)
Text
Wolfram Research (1996), Cross, Wolfram Language function, https://reference.wolfram.com/language/ref/Cross.html.
CMS
Wolfram Language. 1996. "Cross." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/Cross.html.
APA
Wolfram Language. (1996). Cross. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Cross.html
BibTeX
@misc{reference.wolfram_2026_cross, author="Wolfram Research", title="{Cross}", year="1996", howpublished="\url{https://reference.wolfram.com/language/ref/Cross.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_cross, organization={Wolfram Research}, title={Cross}, year={1996}, url={https://reference.wolfram.com/language/ref/Cross.html}, note=[Accessed: 13-June-2026]}