あなたはv=[x;y;z]と...でA*v=vへの自明でない解決策vを探しています。
A =
0.70710678118655 0 0.70710678118655
-0.50000000000000 0.70710678118655 0.50000000000000
-0.50000000000000 -0.70710678118655 0.50000000000000
これを(AI)v = 0に変換できます。ここで、Iは3x3単位行列です。重要な解決策を見つけるためにあなたがしなければならないことは、AIのヌルスペースをチェックすることです:
>> null(A-eye(3))
ans =
0.67859834454585
-0.67859834454585
0.28108463771482
つまり、1次元の零空間があります。そうしないと、複数の列が表示されます。列のすべての線形結合は、AIがヌルベクトルにマップするこのヌル空間内のポイントです。したがって、このベクトルのすべての倍数が問題の解決策になります。
実際、det(A)=1およびA'* A = Identityであるため、行列Aは第1種の回転行列です。したがって、固有値は1で、回転軸が対応する固有ベクトルになります。上で計算したベクトルは、正規化された回転軸です。
注:このために、0.7071をsqrt(0.5)に置き換えました。丸め誤差が懸念されるが、自明でない解決策が必要であることを事前に知っている場合、最善の策は、AIの特異値分解を実行し、右端の特異ベクトルを選択することです。
>> [u,s,v] = svd(A-eye(3));
>> v(:,end)
ans =
0.67859834454585
-0.67859834454585
0.28108463771482
このようにして、| A *vv|を最小化するベクトルvを計算できます。| v |=1という制約の下で|。| ユークリッドノルムです。