如何用matlab求解下面的线性方程组

来源:百度知道 编辑:UC知道 时间:2024/07/04 02:03:08
A*X=b
A=[1 1 0 0 0 0 0 0 0;1 0 -1 -1 0 0 0 0 0;0 1 1 0 -1 -1 0 0 0; 0 0 0 1 0 0 -1 -1 0;0 0 0 0 1 0 1 0 -1;0 0 0 0 0 1 0 1 1]
b=[1;0;0;0;0;1]
X只能取0或者1
怎样才能得到X的所有解。一共是6个解。
请不要用枚举法。因为这只是一个小例子,在程序实际应用中会遇到上百阶的方阵,枚举法算到地球毁灭也算不完。

A=[1 1 0 0 0 0 0 0 0;1 0 -1 -1 0 0 0 0 0;0 1 1 0 -1 -1 0 0 0; 0 0 0 1 0 0 -1 -1 0;0 0 0 0 1 0 1 0 -1;0 0 0 0 0 1 0 1 1] ;
b=[1;0;0;0;0;1];
x=[];
for i=1:2^9
a=dec2bin(2^9-i,9);
c=[];
a
for j=1:9
c=[c;str2num(a(j))];
end
if A*c==b
x=[x,c];
end
end

结果

x =

1 1 1 1 0 0
0 0 0 0 1 1
1 1 0 0 0 0
0 0 1 1 0 0
1 0 0 0 1 0
0 1 0 0 0 1
0 0 1 0 0 0
0 0 0 1 0 0
1 0 1 0 1 0
每列是一个解

不用枚举的话,你就得自己学学数学方面的知识了,我对数学这方面基本不懂啊,哈哈

奇异之分解(svd),解A'Ax=A'b这个方程