1
$\begingroup$

Consider this example (intersection of a line and a sphere):

 x=px+d*rx;
 y=py+d*ry;
 z=pz+d*rz;
 e1=Expand[r^2-(x-kx)^2-(y-ky)^2-(z-kz)^2];
 Factor /@ Solve[e1==0,d] // InputForm

Why does Factor not find its way under the arguments of Sqrt? The result is

 {{d -> (kx*rx - px*rx + ky*ry - py*ry + kz*rz - pz*rz + 
     Sqrt[(2*kx*rx - 2*px*rx + 2*ky*ry - 2*py*ry + 2*kz*rz - 2*pz*rz)^2 - 
        4*(-kx^2 - ky^2 - kz^2 + 2*kx*px - px^2 + 2*ky*py - py^2 + 2*kz*pz - pz^2 + r^2)*
         (-rx^2 - ry^2 - rz^2)]/2)/(rx^2 + ry^2 + rz^2)}, 
 {d -> (kx*rx - px*rx + ky*ry - py*ry + kz*rz - pz*rz - 
     Sqrt[(2*kx*rx - 2*px*rx + 2*ky*ry - 2*py*ry + 2*kz*rz - 2*pz*rz)^2 - 
        4*(-kx^2 - ky^2 - kz^2 + 2*kx*px - px^2 + 2*ky*py - py^2 + 2*kz*pz - pz^2 + r^2)*
         (-rx^2 - ry^2 - rz^2)]/2)/(rx^2 + ry^2 + rz^2)}}

and obviously there is a factor of 4 in the arguments of Sqrt (ok, after squaring out the first product in the sum, but even before, a factor of 2² is present there!)

In this situation, the Sqrt[4] could even been factored before Sqrt. If the argument of Sqrt is non-numerical, one can't always simplify Sqrt[x²] to x, -x might as well be a solution. But why does it not apply such a rule for numerical factors? How would one implement that?

$\endgroup$
  • $\begingroup$ How about Solve[e1 == 0, d] /. Sqrt[x_] :> Sqrt[Factor[x]] ? $\endgroup$ – vsht Jul 18 '17 at 20:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.