Я не уверен, что понимаю ваш вопрос, но ...
Вы можете решить первые 3 уравнения для 3 неизвестных и исключить их из 4-го уравнения, например
In [60]: s = solve([eq1, eq2, eq3], [b, g, t])
In [61]: s
Out[61]: {b: go + sa + 11, g: -2⋅go - 2⋅sa + 48, t: -2⋅f - go + 95}
In [62]: eq4_subs = eq4.subs(s)
In [63]: eq4_subs
Out[63]: -2⋅f + go⋅(f + go) - go + sa + 95 = result
Таким образом, b, g и t всегда являются целыми числами, если другие переменные.
В идеале вы могли бы решить это с помощью diophantine
за исключением:
In [64]: diophantine(eq4_subs)
---------------------------------------------------------------------------
...
NotImplementedError: No solver has been written for inhomogeneous_general_quadratic.
Похоже, решатель для этого случая не было реализовано в симпы. Особые случаи это, но общий случай не так, давайте попробуем особые случаи ...
Только разница result - sa
имеет смысл, поэтому мы установим sa в ноль и попробуем значения для результата:
In [65]: for r in range(200):
...: print('result =', r, 'go, f =', diophantine(eq4_subs.subs(sa, 0).subs(result, r), syms=(go, f)))
...:
result = 0 go, f = {(1, 95)}
result = 1 go, f = {(1, 94)}
result = 2 go, f = {(1, 93)}
result = 3 go, f = {(1, 92)}
result = 4 go, f = {(1, 91)}
...
result = 94 go, f = {(1, 1)}
result = 95 go, f = {(0, 0)}
result = 96 go, f = set()
result = 97 go, f = {(-t_0 - 1, t_0), (2, n1)}
result = 98 go, f = set()
result = 99 go, f = set()
result = 100 go, f = set()
result = 101 go, f = set()
result = 102 go, f = {(3, 1)}
result = 103 go, f = {(3, 2)}
...
result = 121 go, f = {(3, 20), (4, 7), (5, 2)}
result = 122 go, f = {(3, 21)}
result = 123 go, f = {(4, 8), (3, 22)}
result = 124 go, f = {(3, 23), (5, 3)}
result = 125 go, f = {(4, 9), (3, 24)}
...
result = 193 go, f = {(8, 7), (10, 1), (6, 17), (5, 26), (4, 43), (3, 92)}
result = 194 go, f = {(3, 93)}
result = 195 go, f = {(4, 44), (3, 94), (9, 4)}
result = 196 go, f = {(5, 27), (3, 95)}
result = 197 go, f = {(6, 18), (4, 45), (7, 12), (3, 96)}
result = 198 go, f = {(3, 97)}
result = 199 go, f = {(4, 46), (8, 8), (3, 98), (5, 28)}
Я не уверен, как express это вообще, но это говорит о том, что есть:
- уникальное решение для других параметров, если
result <= 95
. - конечное число решений для любых
result >= 102
. - бесконечных решений для
result = 97
. - Нет решений для
result in {96, 98, 99, 100, 101}
.