式a+b+c=2, a,b,c>=0
の場合、整数解を配列で返すことができるMATLAB関数がありますか?すなわち:整数解a + b + c = 2
[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!)
異なる整数解が存在します。
式a+b+c=2, a,b,c>=0
の場合、整数解を配列で返すことができるMATLAB関数がありますか?すなわち:整数解a + b + c = 2
[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の中で直接それを使用するかcall it from 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]]
あなたは、その後の数字のセル配列に返されたシンボリックVARSを変換することができます:いいえ
>> 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
ありがとう!ちなみに、軸に沿ってポイントを簡単にミラーリングする方法はありますか?例えば[1 1 1]は8つのミラーを持つことができます:[1 1 1 1 -1 -1 1 1 ...] –
@law_lightうわー、ここでは簡単な実装です:http://pastebin.com/MPGpuHcb。任意の長さで動作します。 – Amro
大きな感謝!!!印象的! –
ますが、そのファイル交換にはいくつかの提出がありますあなたに整数のパーティションを与えるでしょう。 – beaker