# Using the Norm Function

I am trying to take the norm of a general vector and show that for vectors, v,w, that

Norm[v cross w]^2==Norm[v]^2*Norm[w]^2-(v dot w)^2

In Mathematica, here are my steps:

v = {v1, v2, v3}
w = {w1, w2, w3}
q = Simplify[Norm[v]^2,
p = Simplify[Norm[w]^2,
x = Simplify[Dot[v, w]^2]
a = Simplify[Expand[q*p - x]]
z = Cross[v, w]
y = Norm[z]^2
y == a


However in computing the Norms of the vector, it gives me Abs[v1], Abs[v2], Abs[v3], etc. Any idea on how to remove it? Or should I define the elements of the vectors to be real numbers?

• Is this expression the expression you are actually entering into Mathematica? If so, v cross w is interpreted as multiplying the symbols v, cross, and w. If not, please edit your post with your actual code. – march Oct 20 '15 at 22:50
• No, not at all. I am doing it step by step. One moment – Jack Armstrong Oct 20 '15 at 22:52
• Well, I posted a quick answer. Let me know if more details are necessary. – march Oct 20 '15 at 22:53

## 1 Answer

Defining the vectors:

v1 = Array[v, 3]
v2 = Array[w, 3]
(* {v, v, v} *)
(* {w, w, w} *)


Then:

Cross[v1, v2].Cross[v1, v2] - (v1.v1 v2.v2 - (v1.v2)^2) // Expand
(* 0 *)


Note that in general, when doing algebraic manipulations, it is better to use the explicit form of the squared-norm of a vector, because Norm is interpreted in terms of Abs which does not automatically simplify because Mathematica assumes all symbols are Complex unless told otherwise. In other words, use Sqrt[v.v] instead of Norm[v] and v.v instead of Norm[v]^2.

• instead of v2 can I just use w1? I dont see why not – Jack Armstrong Oct 20 '15 at 22:55
• Sure, use w1 instead of v2. Call the variables whatever you want. However, you should avoid v = Array[v, 3] because you will get an infinite recursion. Your code above is fine, except that you want to avoid using Norm. I was just showing you another way of doing it. – march Oct 20 '15 at 22:58