2013-09-27 31 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.