您正在寻找一个非平凡的解决方案 v 到 A*v=v 与 v=[x;y;z] 和...
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
所以,你有一个一维零空间。否则你会看到不止一列。列的每个线性组合都是这个零空间中的一个点,AI 映射到零向量。所以,这个向量的每一个倍数都是你问题的解决方案。
实际上,您的矩阵 A 是第一类旋转矩阵,因为 det(A)=1 和 A'*A=identity. 所以它的特征值为1,旋转轴作为对应的特征向量。我上面计算的向量是归一化的旋转轴。
注意:为此,我将您的 0.7071 替换为 sqrt(0.5)。如果舍入误差是一个问题,但您事先知道必须有一个重要的解决方案,最好的办法是对 AI 进行奇异值分解并选择最右边的奇异向量:
>> [u,s,v] = svd(A-eye(3));
>> v(:,end)
ans =
0.67859834454585
-0.67859834454585
0.28108463771482
这样你就可以计算出一个向量 v 来最小化 |A*vv| 在|v|=1 的约束下|.| 是欧几里得范数。