In [2]:
var('x y z d dx dy dz r px py pz cx cy cz')


Out[2]:
(x, y, z, d, dx, dy, dz, r, px, py, pz, cx, cy, cz)

In [3]:
eq1 = dx == (px - x)/d
eq2 = dy == (py - y)/d
eq3 = dz == (pz - z)/d
eq4 = (cx - x)^2 + (cy - y)^2 + (cz - z)^2 == r^2
eq5 = dx^2 + dy^2 + dz^2 ==1

In [4]:
assume(d>0)
assume(r>0)
assume(dx^2 + dy^2 + dz^2==1)
assumptions()


Out[4]:
[d > 0, r > 0, dx^2 + dy^2 + dz^2 == 1]

In [5]:
sol = solve([eq1, eq2, eq3, eq4], x,y,z,d)
sol


Out[5]:
[[x == (cx*dx^2 + cy*dx*dy + cz*dx*dz - dx*dy*py - dx*dz*pz + (dy^2 + dz^2)*px - sqrt(2*cx*cy*dx*dy - (cy^2 + cz^2)*dx^2 - (cx^2 + cz^2)*dy^2 - (cx^2 + cy^2)*dz^2 - (dy^2 + dz^2)*px^2 - (dx^2 + dz^2)*py^2 - (dx^2 + dy^2)*pz^2 + (dx^2 + dy^2 + dz^2)*r^2 + 2*(cx*cz*dx + cy*cz*dy)*dz - 2*(cy*dx*dy - cx*dy^2 + cz*dx*dz - cx*dz^2)*px + 2*(cy*dx^2 - cx*dx*dy - cz*dy*dz + cy*dz^2 + dx*dy*px)*py + 2*(cz*dx^2 + cz*dy^2 + dx*dz*px + dy*dz*py - (cx*dx + cy*dy)*dz)*pz)*dx)/(dx^2 + dy^2 + dz^2), y == (cy*dy^2 + cz*dy*dz - dx*dy*px - dy*dz*pz + (cx*dx - sqrt(-cy^2*dx^2 - cz^2*dx^2 + 2*cx*cy*dx*dy - cx^2*dy^2 - cz^2*dy^2 + 2*cx*cz*dx*dz + 2*cy*cz*dy*dz - cx^2*dz^2 - cy^2*dz^2 - 2*cy*dx*dy*px + 2*cx*dy^2*px - 2*cz*dx*dz*px + 2*cx*dz^2*px - dy^2*px^2 - dz^2*px^2 + 2*cy*dx^2*py - 2*cx*dx*dy*py - 2*cz*dy*dz*py + 2*cy*dz^2*py + 2*dx*dy*px*py - dx^2*py^2 - dz^2*py^2 + 2*cz*dx^2*pz + 2*cz*dy^2*pz - 2*cx*dx*dz*pz - 2*cy*dy*dz*pz + 2*dx*dz*px*pz + 2*dy*dz*py*pz - dx^2*pz^2 - dy^2*pz^2 + dx^2*r^2 + dy^2*r^2 + dz^2*r^2))*dy + (dx^2 + dz^2)*py)/(dx^2 + dy^2 + dz^2), z == (cz*dz^2 - dx*dz*px - dy*dz*py + (cx*dx + cy*dy - sqrt(-cy^2*dx^2 - cz^2*dx^2 + 2*cx*cy*dx*dy - cx^2*dy^2 - cz^2*dy^2 + 2*cx*cz*dx*dz + 2*cy*cz*dy*dz - cx^2*dz^2 - cy^2*dz^2 - 2*cy*dx*dy*px + 2*cx*dy^2*px - 2*cz*dx*dz*px + 2*cx*dz^2*px - dy^2*px^2 - dz^2*px^2 + 2*cy*dx^2*py - 2*cx*dx*dy*py - 2*cz*dy*dz*py + 2*cy*dz^2*py + 2*dx*dy*px*py - dx^2*py^2 - dz^2*py^2 + 2*cz*dx^2*pz + 2*cz*dy^2*pz - 2*cx*dx*dz*pz - 2*cy*dy*dz*pz + 2*dx*dz*px*pz + 2*dy*dz*py*pz - dx^2*pz^2 - dy^2*pz^2 + dx^2*r^2 + dy^2*r^2 + dz^2*r^2))*dz + (dx^2 + dy^2)*pz)/(dx^2 + dy^2 + dz^2), d == -(cx*dx + cy*dy + cz*dz - dx*px - dy*py - dz*pz - sqrt(-cy^2*dx^2 - cz^2*dx^2 + 2*cx*cy*dx*dy - cx^2*dy^2 - cz^2*dy^2 + 2*cx*cz*dx*dz + 2*cy*cz*dy*dz - cx^2*dz^2 - cy^2*dz^2 - 2*cy*dx*dy*px + 2*cx*dy^2*px - 2*cz*dx*dz*px + 2*cx*dz^2*px - dy^2*px^2 - dz^2*px^2 + 2*cy*dx^2*py - 2*cx*dx*dy*py - 2*cz*dy*dz*py + 2*cy*dz^2*py + 2*dx*dy*px*py - dx^2*py^2 - dz^2*py^2 + 2*cz*dx^2*pz + 2*cz*dy^2*pz - 2*cx*dx*dz*pz - 2*cy*dy*dz*pz + 2*dx*dz*px*pz + 2*dy*dz*py*pz - dx^2*pz^2 - dy^2*pz^2 + dx^2*r^2 + dy^2*r^2 + dz^2*r^2))/(dx^2 + dy^2 + dz^2)], [x == (cx*dx^2 + cy*dx*dy + cz*dx*dz - dx*dy*py - dx*dz*pz + (dy^2 + dz^2)*px + sqrt(2*cx*cy*dx*dy - (cy^2 + cz^2)*dx^2 - (cx^2 + cz^2)*dy^2 - (cx^2 + cy^2)*dz^2 - (dy^2 + dz^2)*px^2 - (dx^2 + dz^2)*py^2 - (dx^2 + dy^2)*pz^2 + (dx^2 + dy^2 + dz^2)*r^2 + 2*(cx*cz*dx + cy*cz*dy)*dz - 2*(cy*dx*dy - cx*dy^2 + cz*dx*dz - cx*dz^2)*px + 2*(cy*dx^2 - cx*dx*dy - cz*dy*dz + cy*dz^2 + dx*dy*px)*py + 2*(cz*dx^2 + cz*dy^2 + dx*dz*px + dy*dz*py - (cx*dx + cy*dy)*dz)*pz)*dx)/(dx^2 + dy^2 + dz^2), y == (cy*dy^2 + cz*dy*dz - dx*dy*px - dy*dz*pz + (cx*dx + sqrt(-cy^2*dx^2 - cz^2*dx^2 + 2*cx*cy*dx*dy - cx^2*dy^2 - cz^2*dy^2 + 2*cx*cz*dx*dz + 2*cy*cz*dy*dz - cx^2*dz^2 - cy^2*dz^2 - 2*cy*dx*dy*px + 2*cx*dy^2*px - 2*cz*dx*dz*px + 2*cx*dz^2*px - dy^2*px^2 - dz^2*px^2 + 2*cy*dx^2*py - 2*cx*dx*dy*py - 2*cz*dy*dz*py + 2*cy*dz^2*py + 2*dx*dy*px*py - dx^2*py^2 - dz^2*py^2 + 2*cz*dx^2*pz + 2*cz*dy^2*pz - 2*cx*dx*dz*pz - 2*cy*dy*dz*pz + 2*dx*dz*px*pz + 2*dy*dz*py*pz - dx^2*pz^2 - dy^2*pz^2 + dx^2*r^2 + dy^2*r^2 + dz^2*r^2))*dy + (dx^2 + dz^2)*py)/(dx^2 + dy^2 + dz^2), z == (cz*dz^2 - dx*dz*px - dy*dz*py + (cx*dx + cy*dy + sqrt(-cy^2*dx^2 - cz^2*dx^2 + 2*cx*cy*dx*dy - cx^2*dy^2 - cz^2*dy^2 + 2*cx*cz*dx*dz + 2*cy*cz*dy*dz - cx^2*dz^2 - cy^2*dz^2 - 2*cy*dx*dy*px + 2*cx*dy^2*px - 2*cz*dx*dz*px + 2*cx*dz^2*px - dy^2*px^2 - dz^2*px^2 + 2*cy*dx^2*py - 2*cx*dx*dy*py - 2*cz*dy*dz*py + 2*cy*dz^2*py + 2*dx*dy*px*py - dx^2*py^2 - dz^2*py^2 + 2*cz*dx^2*pz + 2*cz*dy^2*pz - 2*cx*dx*dz*pz - 2*cy*dy*dz*pz + 2*dx*dz*px*pz + 2*dy*dz*py*pz - dx^2*pz^2 - dy^2*pz^2 + dx^2*r^2 + dy^2*r^2 + dz^2*r^2))*dz + (dx^2 + dy^2)*pz)/(dx^2 + dy^2 + dz^2), d == -(cx*dx + cy*dy + cz*dz - dx*px - dy*py - dz*pz + sqrt(-cy^2*dx^2 - cz^2*dx^2 + 2*cx*cy*dx*dy - cx^2*dy^2 - cz^2*dy^2 + 2*cx*cz*dx*dz + 2*cy*cz*dy*dz - cx^2*dz^2 - cy^2*dz^2 - 2*cy*dx*dy*px + 2*cx*dy^2*px - 2*cz*dx*dz*px + 2*cx*dz^2*px - dy^2*px^2 - dz^2*px^2 + 2*cy*dx^2*py - 2*cx*dx*dy*py - 2*cz*dy*dz*py + 2*cy*dz^2*py + 2*dx*dy*px*py - dx^2*py^2 - dz^2*py^2 + 2*cz*dx^2*pz + 2*cz*dy^2*pz - 2*cx*dx*dz*pz - 2*cy*dy*dz*pz + 2*dx*dz*px*pz + 2*dy*dz*py*pz - dx^2*pz^2 - dy^2*pz^2 + dx^2*r^2 + dy^2*r^2 + dz^2*r^2))/(dx^2 + dy^2 + dz^2)]]

In [8]:
print(sol[1][3])
sol[0][3].rhs().full_simplify()


d == -(cx*dx + cy*dy + cz*dz - dx*px - dy*py - dz*pz + sqrt(-cy^2*dx^2 - cz^2*dx^2 + 2*cx*cy*dx*dy - cx^2*dy^2 - cz^2*dy^2 + 2*cx*cz*dx*dz + 2*cy*cz*dy*dz - cx^2*dz^2 - cy^2*dz^2 - 2*cy*dx*dy*px + 2*cx*dy^2*px - 2*cz*dx*dz*px + 2*cx*dz^2*px - dy^2*px^2 - dz^2*px^2 + 2*cy*dx^2*py - 2*cx*dx*dy*py - 2*cz*dy*dz*py + 2*cy*dz^2*py + 2*dx*dy*px*py - dx^2*py^2 - dz^2*py^2 + 2*cz*dx^2*pz + 2*cz*dy^2*pz - 2*cx*dx*dz*pz - 2*cy*dy*dz*pz + 2*dx*dz*px*pz + 2*dy*dz*py*pz - dx^2*pz^2 - dy^2*pz^2 + dx^2*r^2 + dy^2*r^2 + dz^2*r^2))/(dx^2 + dy^2 + dz^2)
Out[8]:
-(cx*dx + cy*dy + cz*dz - dx*px - dy*py - dz*pz - sqrt(2*cx*cy*dx*dy - (cy^2 + cz^2)*dx^2 - (cx^2 + cz^2)*dy^2 - (cx^2 + cy^2)*dz^2 - (dy^2 + dz^2)*px^2 - (dx^2 + dz^2)*py^2 - (dx^2 + dy^2)*pz^2 + (dx^2 + dy^2 + dz^2)*r^2 + 2*(cx*cz*dx + cy*cz*dy)*dz - 2*(cy*dx*dy - cx*dy^2 + cz*dx*dz - cx*dz^2)*px + 2*(cy*dx^2 - cx*dx*dy - cz*dy*dz + cy*dz^2 + dx*dy*px)*py + 2*(cz*dx^2 + cz*dy^2 + dx*dz*px + dy*dz*py - (cx*dx + cy*dy)*dz)*pz))/(dx^2 + dy^2 + dz^2)

In [9]:
print(sol[0][3])


d == -(cx*dx + cy*dy + cz*dz - dx*px - dy*py - dz*pz - sqrt(-cy^2*dx^2 - cz^2*dx^2 + 2*cx*cy*dx*dy - cx^2*dy^2 - cz^2*dy^2 + 2*cx*cz*dx*dz + 2*cy*cz*dy*dz - cx^2*dz^2 - cy^2*dz^2 - 2*cy*dx*dy*px + 2*cx*dy^2*px - 2*cz*dx*dz*px + 2*cx*dz^2*px - dy^2*px^2 - dz^2*px^2 + 2*cy*dx^2*py - 2*cx*dx*dy*py - 2*cz*dy*dz*py + 2*cy*dz^2*py + 2*dx*dy*px*py - dx^2*py^2 - dz^2*py^2 + 2*cz*dx^2*pz + 2*cz*dy^2*pz - 2*cx*dx*dz*pz - 2*cy*dy*dz*pz + 2*dx*dz*px*pz + 2*dy*dz*py*pz - dx^2*pz^2 - dy^2*pz^2 + dx^2*r^2 + dy^2*r^2 + dz^2*r^2))/(dx^2 + dy^2 + dz^2)

In [5]:
eq1 = p+q==9
eq2 = q*y+p*x==-6
eq3 = q*y^2+p*x^2==24
solve([eq1,eq2,eq3,p==1],p,q,x,y)


Out[5]:
[[p == 1, q == 8, x == -4/3*sqrt(10) - 2/3, y == 1/6*sqrt(5)*sqrt(2) - 2/3], [p == 1, q == 8, x == 4/3*sqrt(10) - 2/3, y == -1/6*sqrt(5)*sqrt(2) - 2/3]]

In [6]:
sqrt(2)


Out[6]:
sqrt(2)

In [ ]: