出てくる数は全て実数であるとして回答します.
(1) まずp,q,rという数を
xp+yq+rz=0, p>=0, q>=0, pq-r^2>=0
を満たすように決めます.具体的には次のように
決めます.
(1-1) x=y=z=0のとき
p,q,rはp>=0, q>=0, pq-r^2>=0を満たす数(何でもい い)とします.
(1-2) xが0でなくy=z=0のとき
p=r=0, qはq>=0を満たす数(何でもいい)とします.
(1-3) x,yが0でなくz=0のとき
(1-3-1) 更にx,yが同符号のとき
この時はa,b,c,dの解はありません.
(1-3-2) 更にx,yが異符号のとき
pはp>=0をみたす数(何でもいい),q=-xp/yとし
rはpq-r^2>=0を満たす数(何でもいい)とします.
(1-4)x,y,zが全て0でない場合
pを0以上の数とします.
p=0のときはqは0以上の数(なんでもいい),
r=0とします.
p>0のときはqは
y^2q^2 + (z^2-2xy)pq + x^2p^2 >= 0
を満たす0以上の数(なんでもいい)として
r=-(xp+yq)/zとします.
(p,q,r)を一つ定めたら(2)に進みます.
(2) 2次方程式t^2 - (p+q)t + (pq-r^2) = 0
を解いて2解をt_1,t_2とします.(このとき(1)の
条件よりt_1,t_2は0以上)
ここでもしt_1=t_2であればp=q=t_1, r=0となって
います.この時は(a,b,c,d)=(√p,0,0,√p)が
一つの解です.
t_1とt_2が異なるときは(3)に進みます.
(3) 変数X_1,Y_1についての
連立方程式
(p-t_1)X_1 + rY_1 = 0,
rX_1 + (q-t_1)Y_1 = 0,
X_1^2 + Y_1^2 = t_1,
を解いて解を一組求めます.
同様に変数X_2, Y_2についての連立方程式
(p-t_2)X_2 + rY_2 = 0,
rX_2 + (q-t_2)Y_2 = 0,
X_2^2 + Y_2^2 = t_2,
を解いて解を一組求めます.
すると(a,b,c,d)=(X_1,X_2,Y_1,Y_2)が一つの解です.
(4) これで(p,q,r)を固定したときに解
(a,b,c,d)が一組もとまりました.(p,q,r)を
固定した時のほかの解は
(a,b,c,d)を
(a*cos(v)+b*sin(v), a*(-sin(v))+b*cos(v),
c*cos(v)+d*sin(v), c*(-sin(v))+d*cos(v)),
あるいは
(a*cos(v)+b*sin(v), a*sin(v)+b*(-cos(v)),
c*cos(v)+d*sin(v), c*sin(v)+d*(-cos(v))),
と変えたものとなります.
(p,q,r)を(1)の条件を満たす範囲でいろいろ変えて
上の操作をすれば,原理的には全ての解が求まり
ます.
もっと簡単な方法もあるかもしれませんが
とりあえず書いてみました.
なお,なぜこれでよいのか,ということですが
大学で学ぶ線形代数の応用ですので(特に(2),(3)の
部分),適当な本を読んでみてください.
ひょっとしたら計算が違ってるかもしれません.
そのときは申し訳ありませんが,原理的には
これでいけると思います.
補足
何の問題ということでもなく、単に興味本位で考えてみたのですが、与えられたx,y,zに対してa,b,c,dを決定する方法が分からなかったのでお聞きしました。 恐れ入ります…。