我有这个奇异矩阵(我称之为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来解决这个问题。
答案 0 :(得分: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
答案 1 :(得分: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.