【发布时间】:2014-11-26 14:51:46
【问题描述】:
我给出了一个nxn 上三角矩阵R,我想求解方程组Rx=0,其中x 是一个大小为n 的向量。此外,R 的最低对角线是0 (R(n,n)=0)。因此我想设置x(n)=1。
我尝试了一些循环,但我不知道如何解决它。
感谢您的帮助。
【问题讨论】:
标签: matlab constraints equation-solving triangular
我给出了一个nxn 上三角矩阵R,我想求解方程组Rx=0,其中x 是一个大小为n 的向量。此外,R 的最低对角线是0 (R(n,n)=0)。因此我想设置x(n)=1。
我尝试了一些循环,但我不知道如何解决它。
感谢您的帮助。
【问题讨论】:
标签: matlab constraints equation-solving triangular
保证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...
现在拉出正确的特征向量
>> v = V(:, index);
并确保其最终元素等于 1
>> v = v / v(end)
v =
0.6277
-0.8648
1.0000
您可以检查这是否是您想要的解决方案
>> R * v
ans =
0
0
0
【讨论】: