【问题标题】:Solve a system of equations with a constraint to x in Matlab在 Matlab 中求解具有 x 约束的方程组
【发布时间】: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


    【解决方案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...
    

    现在拉出正确的特征向量

    >> v = V(:, index);
    

    并确保其最终元素等于 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) 为零的解决方案。当有多个零对角线条目时,它没有理由也可以工作。
    猜你喜欢
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多