求解Matlab中的线性方程组特殊系统(GNU Octave)

时间:2015-10-13 11:01:04

标签: matlab octave linear-algebra

我有一个矩阵,让我们说5x5看起来像这样:

          0          0          0          1          0
          0          0          0        4/5        1/5
        3/5        1/5        1/5          0          0
        1/5        2/5        1/5        1/5          0
       1/10       1/10        2/5        1/5        1/5

我需要它来解决它就像一个看起来像这样的线性方程组(我可以自己转置它,但是然后将它与符号变量相乘会让我陷入麻烦):

   0 * a  +      0 * b  +    3/5 * c  +    1/5 * d  +    1/10 + e  =  a
   0 * a  +      0 * b  +    1/5 * c  +    2/5 * d  +    1/10 + e  =  b
   0 * a  +      0 * b  +    1/5 * c  +    1/5 * d  +     2/5 + e  =  c
   1 * a  +    4/5 * b  +      0 * c  +    1/5 * d  +     1/5 + e  =  d
   0 * a  +    1/5 * b  +      0 * c  +      0 * d  +     1/5 + e  =  e
       a  +         b  +          c  +          d  +           e  =  1

我可以在wxMaxima中轻松解决这个问题,但我必须手动编写那里的所有值,这对于更大的矩阵来说越来越乏味。

使用matlab运算符\来解决线性方程组的某些步骤后,有没有办法得到结果?

2 个答案:

答案 0 :(得分:3)

你可以解决方程组没有?

>>[A-eye(5);ones(1,5)]\[0,0,0,0,0,1]'
ans =

  0.1729
  0.2061
  0.1345
  0.4350
  0.0515

>> sum(ans)

ans =

    1.0000

答案 1 :(得分:0)

一个象征性的解决方案:

M=sym(A);
v=sym('[a;b;c;d;e]');
sol=solve(M*v==v,sum(v)==1);

sol.asol.b,...

的形式返回解决方案