# Indicate Unit Vectors in Solve

I'm solving a system defined by two rays. The rays originate from two points {x,y,z} and {x,y,z-h}. They go in directions (unit vectors) {u1,v1,w1} and {u2,v2,w2}. The rays are connected by a line segment of length l. The endpoints of the line segment are t units down the length of each ray. The variable to solve for is t.

This solution is all well and good, but I notice in the output I have collections of terms like u1^2 ... + v1^2 ... + w1^2. I know that {u1,v1,w1} and {u2,v2,w2} are unit vectors, so these could be substituted with a 1, and maybe even other simplifications could occur. I modified the solve like so:

This looks like a step in the right direction. (I tried Norm[{u1,v1,w1}]==1 but it had no effect.) So, I tried constraining {u2,v2,w2} to a unit vector.

Sadly, it blows up to a size even larger than the first output. Doing this last step manually could be "an exercise left up to me," but I'm curious if there's some way I could approach this that yields better results. I thought maybe there was some way to declare a vector as a unit vector, and came across How can I use a unit vector notation found in physic texts? but I wasn't able to glean anything useful from it. How can I let Mathematica know that a vector is a unit vector so that it can use it as a hint in simplifying output?

• Welcome to Mathematica.SE! I suggest the following: 1) As you receive help, try to give it too, by answering questions in your area of expertise. 2) Take the tour and check the faqs! 3) When you see good questions and answers, vote them up by clicking the gray triangles, because the credibility of the system is based on the reputation gained by users sharing their knowledge. Also, please remember to accept the answer, if any, that solves your problem, [by clicking the checkmark sign](tinyurl.com/4srwe26 Commented Mar 22, 2020 at 5:16
• Solve by itself does not do everything it can to Simplify a result. That makes Solve faster and you can use Simplify only if need be. This FullSimplify[(-h(2w1-2w2)-Sqrt[h^2(2w1-2w2)^2-4(h^2-l^2)(u1^2-2u1*u2+u2^2+v1^2-2v1*v2+v2^2+w1^2-2w1*w2+w2^2)])/(2(u1^2-2u1*u2+u2^2+v1^2-2v1*v2+v2^2+w1^2-2w1*w2+w2^2)), Norm[{u1,v1,w1}]==1&& Norm[{u2,v2,w2}]==1] gives a substantially smaller result, but only because I have included the second argument to FullSimplify telling it about two of your assumptions, otherwise Mathematica would never know. With more assumptions an even smaller result?
– Bill
Commented Mar 22, 2020 at 5:33
• Try doing this Replace[Solve[{EuclideanDistance[r1, r2] == l}, t], {u1^2 -> 1 - v1^2 - w1^2, u2^2 -> 1 - v2^2 - w2^2}, {6, 10}] // Simplify . The idea is that you replace the solution at different "levels" inside the equation. To understand this more check out the help for Replace[] Commented Mar 22, 2020 at 5:48