
[英]Wrong solution of a linear equation, or why does A*(A\B) not equal B?
[英]About integer solution a+b+c=2 [closed]
对于方程a+b+c=2, a,b,c>=0
,是否有一个 MATLAB 函数可以返回数组中的整数解? 那是:
[0 0 2; 0 2 0; 2 0 0; 0 1 1; 1 0 1; 1 1 0]
注意a1+a2+..an=k, ai,k>=0
,有(n-1+k)!/((n-1)!*k!)
不同的整数解。
如果您可以访问 Symbolic Math Toolbox,则可以使用combinat::compositions
MuPAD 函数。 您可以直接在 MuPAD 中使用它,也可以从 MATLAB 中调用它:
>> x = evalin(symengine, 'combinat::compositions(2, Length=3, MinPart=0)')
x =
[ [2, 0, 0], [1, 1, 0], [1, 0, 1], [0, 2, 0], [0, 1, 1], [0, 0, 2]]
然后,您可以将返回的符号变量转换为数字元胞数组:
>> x = arrayfun(@double, x, 'Uniform',false)
x =
[1x3 double] [1x3 double] [1x3 double] [1x3 double] [1x3 double] [1x3 double]
>> celldisp(x)
x{1} =
2 0 0
x{2} =
1 1 0
x{3} =
1 0 1
x{4} =
0 2 0
x{5} =
0 1 1
x{6} =
0 0 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.