как решить для всех неотрицательных целых чисел XI в Mathematica - PullRequest
1 голос
/ 14 февраля 2011

У меня есть проблема, аналогичная функции IntegerPartitions, в которой я хочу перечислить все неотрицательные целые числа xi, чтобы для заданного списка целых чисел {c1,c2,...,cn} и целого числа n:

x1*c1+x2*c2+...+xn*cn=n

Пожалуйста, поделитесь своими мыслями. Большое спасибо.

Ответы [ 2 ]

4 голосов
/ 14 февраля 2011

Встроенная функция FrobeniusSolve решает случай, когда c1, c2, ..., cn являются положительными целыми числами (а правая часть не n):

In[1]:= FrobeniusSolve[{2, 3, 5, 6}, 13]

Out[1]= {{0, 1, 2, 0}, {1, 0, 1, 1}, {1, 2, 1, 0}, {2, 1, 0, 1}, {2, 
  3, 0, 0}, {4, 0, 1, 0}, {5, 1, 0, 0}}

Это тот случай, когда вам нужен или вам нужен отрицательный c1, c2, ..., cn также?

1 голос
/ 14 февраля 2011

Составьте список ci и коэффициентов, используя

n = 10;
cList = RandomInteger[{1, 20}, n]
xList = Table[Symbol["x" <> ToString[i]], {i, n}]

Тогда, если есть набор решений для неотрицательных xi, он будет найден

Reduce[cList.xList == n && And@@Thread[xList >= 0], xList, Integers]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...