2013-09-27 30 views
4

我有这种奇异矩阵(I将称之为A)计算上求解方程系统与奇异矩阵

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

我试图解决斧= 0,使得在x中的元素之和是1.我想用a和b来解答x。我知道如何手工完成这个工作(使用高斯消元法根据第四个分量写入所有分量,然后设置第四个分量以使解进行归一化)。但是有没有办法做到这一点计算?我可以在Python,Mathematica或者R.(或者MATLAB,但是我认为在MATLAB中没有办法做到这一点)。

我正在复制的代码通过添加第五行矩阵,

1 1 1 1 

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

回答

2
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 
+0

谢谢,我不知道你能做到这一点! – Jessica

+0

你知道我在一个更大的系统上如何做到这一点,比如11x11?我尝试它时需要永远运行。 – Jessica

+1

如果你看一下由小整数组成的11x11矩阵行列式的大小,以及在你的4x4问题中大约相同的包含变量的表达式的百分比,那么我想你会对你问的问题的大小有所了解解决。或者,简短的回答,不。但是,对于答案的真正感兴趣的一些问题可能需要等待几天或几周。但不知道它是否正在取得进展,或者如果它完成,将会给出有用的答案。 – Bill

0

有一种方法可以在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.