Matlab:如何求解二元方程组?

时间:2012-06-10 15:32:59

标签: matlab linear-algebra equation-solving

我正在尝试用以下形式解决方程组:

a5 + a6 + a7 + f5 + f6 + f7 = 11;
b5 + b6 + b7 + e5 + e6 + e7 = 100;
c5 + c6 + c7 + d5 + d6 + d7 = 100;

a5 + b5 + c5 + d5 + e5 + f5 = 11;
a6 + b6 + c6 + d6 + e6 + f6 = 100;
a7 + b7 + c7 + d7 + e7 + f7 = 100;

其中所有变量和数字都是二进制文件。

有没有办法在Matlab中做到这一点?

例如,通过用十进制值代替二进制数:

a5 + a6 + a7 + f5 + f6 + f7 = 3;
b5 + b6 + b7 + e5 + e6 + e7 = 4;
c5 + c6 + c7 + d5 + d6 + d7 = 4;

a5 + b5 + c5 + d5 + e5 + f5 = 3;
a6 + b6 + c6 + d6 + e6 + f6 = 4;
a7 + b7 + c7 + d7 + e7 + f7 = 4;

并以某种方式告诉Matlab未知数应该是整数并且来自区间[0:1]?


这是A x = b形式:

A = [1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1;
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0;
0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0;
1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0;
0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0;
0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1];

b = [3 4 4 3 4 4];

下一步会是什么?

1 个答案:

答案 0 :(得分:0)

bintprog,如果您有优化工具箱。

由于可能存在多种解决方案,因此我将选择具有最小总和的解决方案。

>> A = [1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1;
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0;
0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0;
1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0;
0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0;
0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1];

>> b = [3 4 4 3 4 4];

>> bintprog(ones(1,18),[],[],A,b)
Optimization terminated.
ans =
     0
     1
     1
     1
     1
     1
     1
     1
     1
     1
     0
     0
     0
     0
     1
     0
     1
     0