计算求解具有奇异矩阵的方程组



我有这个奇异矩阵(我称之为A)

-3a          1         0    0
 3a    -2a - 1         2    0
 0      2a        -a-b-2    3
 0           0     a+b     -3

我正在尝试解决 Ax = 0,使得 x 中元素的总和为 1。 我想用 a 和 b 求解 x。 我知道如何手动执行此操作(使用高斯消除根据第四个分量编写所有分量,然后设置第四分量,以便对解决方案进行归一化)。 但是有没有办法在计算上做到这一点? 我在Python,Mathematica或R中都可以。 (或者 MATLAB,但我认为没有办法在 MATLAB 中做到这一点。

我复制的代码通过在矩阵中添加第五行来实现这一点,

1    1    1    1

然后使用 QR 分解找到最小二乘解。 但是,我认为我不能这样做,因为我没有 a 和 b 的值,我想用 a 和 b 来解决解决方案。

In[1]:= A = {{-3a,1,0,0}, {3a,-2a-1,2,0}, {0,2a,-a-b-2,3}, {0,0,a+b,-3}};
x = {p, q, r, s};
sol = Reduce[A.x==0 && p+q+r+s==1 && Det[A]==0, x, Backsubstitution->True]
Out[3]= (1+3*a+3*a^2+a^3+a^2*b) != 0 && 
p == 1/(1+3*a+3*a^2+a^3+a^2*b) && 
q == (3*a)/(1+3*a+3*a^2+a^3+a^2*b) && 
r == (3*a^2)/(1+3*a+3*a^2+a^3+a^2*b) && 
s == (a^3 + a^2*b)/(1+3*a+3*a^2+a^3+a^2*b)
In[4]:= x=x/.ToRules[sol (* Watch out for that denominator!!! *)];
Simplify[A.x]
Out[5]= {0, 0, 0, 0}
In[6]:= Simplify[Total[x]]
Out[6]= 1

有一种方法可以在 MATLAB 中做到这一点,但我无法比这更进一步。

syms a b
A = [ -3*a,         1,           0,  0;
       3*a, - 2*a - 1,           2,  0;
         0,       2*a, - a - b - 2,  3;
         0,         0,       a + b, -3;
         1,         1,           1,  1];
x = solve(A,[0 0 0 0 1]')

我收到以下警告:

Warning: 20 equations in 2 variables. 
Warning: Explicit solution could not be found. 

相关内容

  • 没有找到相关文章

最新更新