Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中求解具有x约束的方程组_Matlab_Constraints_Equation Solving_Triangular - Fatal编程技术网

在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