在Matlab中求解具有x约束的方程组
我已经给出了一个在Matlab中求解具有x约束的方程组,matlab,constraints,equation-solving,triangular,Matlab,Constraints,Equation Solving,Triangular,我已经给出了一个nxn上三角矩阵R,我想解方程组Rx=0,其中x是一个大小为n的向量。此外,R的最低对角线是0(R(n,n)=0)。因此,我想设置x(n)=1 我尝试了一些循环,但我不知道如何解决它 感谢您的帮助。保证R的特征值为零,您需要的解决方案是对应于该特征值的特征向量的倍数。让我们先创建一些矩阵R: >> R = triu(rand(3, 3)); >> R(3, 3) = 0; >> R R = 0.8147 0.9134
nxn
上三角矩阵R
,我想解方程组Rx=0
,其中x
是一个大小为n
的向量。此外,R
的最低对角线是0
(R(n,n)=0
)。因此,我想设置x(n)=1
我尝试了一些循环,但我不知道如何解决它
感谢您的帮助。保证R的特征值为零,您需要的解决方案是对应于该特征值的特征向量的倍数。让我们先创建一些矩阵R:
>> R = triu(rand(3, 3));
>> R(3, 3) = 0;
>> R
R =
0.8147 0.9134 0.2785
0 0.6324 0.5469
0 0 0
现在让我们得到特征值和特征向量:
>> [V, E] = eig(R)
V =
1.0000 -0.9806 0.4289
0 0.1958 -0.5909
0 0 0.6833
E =
0.8147 0 0
0 0.6324 0
0 0 0
特征向量是E的对角元素
>> E = diag(E);
>> index = find(abs(E) < 1e-16); %// NB don't use find(E==0) because of fp problems...
并确保其最终元素等于1
>> v = v / v(end)
v =
0.6277
-0.8648
1.0000
您可以检查这是否是您想要的解决方案
>> R * v
ans =
0
0
0
我用triu(rand(6,6))尝试了你的例子,并将最后3个对角线元素定义为0(R(4,4)=0,R(5,5)=0.R(6,6)=0),而你的解在那里不起作用。那是因为你问我最后一个对角线条目R(6,6)为零的解。当有一个以上的零对角条目时,它没有理由也起作用。
>> R * v
ans =
0
0
0