我想使用MATLAB来解决这些方程式,并且我确定存在非零解决方案。方程是:
0.7071*x + 0.7071*z = x
-0.5*x + 0.7071*y + 0.5*z = y
-0.5*x - 0.7071*y + 0.5*z = z
我在MATLAB中写道:
[x,y,z]=solve('0.7071 * x+0.7071 * z=x','-0.5 * x+0.7071 * y+0.5 * z=y','-0.5 * x-0.7071 * y+0.5 * z=z');
但结果是x = y = z = 0。 正如我所说,我确信有一个解决方案。任何人都可以帮忙吗?
答案 0 :(得分:5)
你正在寻找一个非平凡的解决方案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
您可以将其转换为(A-I)v = 0,其中I是3x3单位矩阵。要找到一个重要的解决方案,你需要做的就是检查A-I的零空间:
>> null(A-eye(3))
ans =
0.67859834454585
-0.67859834454585
0.28108463771482
所以,你有一个onedimensional nullspace。否则你会看到多个专栏。列的每个线性组合都是此零空间中的一个点,A-I映射到空向量。因此,此向量的每个倍数都是您问题的解决方案。
实际上,你的矩阵A是第一种旋转矩阵,因为det(A)= 1而A'* A =同一性。因此它的特征值为1,旋转轴为相应的特征向量。我在上面计算的向量是标准化的旋转轴。
注意:为此我用0.7071替换了sqrt(0.5)。如果舍入错误是一个问题,但你事先知道必须有一个非平凡的解决方案,最好的办法是对A-I进行奇异值分解并选择最右边的奇异向量:
>> [u,s,v] = svd(A-eye(3));
>> v(:,end)
ans =
0.67859834454585
-0.67859834454585
0.28108463771482
这样,您可以计算最小化| A * v-v |的向量v在| v | = 1的约束下,其中|。|是欧几里德规范。
答案 1 :(得分:4)
我认为你不需要使用solve
函数,因为你的方程式是一个线性方程组。
重新制作矩阵方程式:
Ax = B
在你的情况下:
| -0.2929 0.0 0.7071 | | x | | 0 |
| -0.5 -0.2929 0.5 | | y | = | 0 |
| -0.5 -0.7071 -0.5 | | z | | 0 |
使用MATLAB的内置功能来解决它。参见例如MATLAB: Solution of Linear Systems of Equations。
MATLAB的核心是解决这种方程式。
使用FreeMat(类似于开源MATLAB的环境) GPL许可; Windows安装程序direct download URL:
A = [ -0.2929 0.0 0.7071; -0.5 -0.2929 0.5; -0.5 -0.7071 -0.5 ]
B = [0.0; 0.0; 0.0]
A\B
ans =
0
0
0
所以解决方案是:x = 0,y = 0,z = 0
该解决方案也可以手工派生。从最后两个方程开始:
-0.5*x + 0.7071*y + 0.5*z = y
-0.5*x - 0.7071*y + 0.5*z = z
0.2929*y = -0.5*x + 0.5*z
0.7071*y = -0.5*x + 0.5*z
0.2929*y = 0.7071*y
因此y = 0.0且:
0.7071*y = -0.5*x + 0.5*z
0 = -0.5*x + 0.5*z
0 = -0.5*x + 0.5*z
0.5*x = 0.5*z
x = z
插入第一个等式:
0.7071*x + 0.7071*z = x
0.7071*x + 0.7071*x = x
1.4142*x = x
因此x = 0.0。并且当x = z时,则z = 0.0。
答案 2 :(得分:0)
x = 0,y = 0,z = 0是正确的解决方案。这个问题可以很容易地手工完成。
答案 3 :(得分:-1)
A = [ 0.7071 0 0.7071 ;
-0.5 0.7071 0.5 ;
-0.5 -0.7071 0.5 ];
B = [1 ; 1 ; 1];
AA = A-diag(B)
-0.2929 0 0.7071
-0.5 -0.2929 0.5
-0.5 -0.7071 -0.5
BB = B-B
0
0
0
AA\BB
0
0
0
答案 4 :(得分:-1)
朋友对Ax = B使用MATLAB命令rref(A)....它将给出一个上三角矩阵。那么你可以很容易地计算出非平凡的解决方案......但请记住,如果rref(A)= I(如你的情况那样)那么不存在非平凡的解决方案。 最好的运气