求解 Mod 个方程
Solve Mod multiple equations
from sympy import *
x = sym.symbols('x')
result = solve([Eq(Mod(x, 23), 0), Eq(Mod(x, 41), 28), Eq(Mod(x, 829), 806), Eq(Mod(x, 13), 3), Eq(Mod(x, 17), 14), Eq(Mod(x, 29), 6), Eq(Mod(x, 677), 623), Eq(Mod(x, 37), 14), Eq(Mod(x, 19), 3)], x)
引发错误:
not a valid Sympy Expression
在 sympy 1.7.1 中尝试您的示例时我得到 NotImplementedError
。
这种方程组在solve
中没有实现。我不确定 sympy 中的高级求解器函数可以处理这个问题。
虽然有一个低级函数 crt
正是针对这种系统:
https://docs.sympy.org/latest/modules/ntheory.html#sympy.ntheory.modular.crt
您传入模数列表和余数列表:
>>> from sympy.ntheory.modular import crt
>>> crt([23, 41, 829, 13, 17, 29, 677, 37, 19], [0, 28, 806, 3, 14, 6, 623, 14, 3])
(600689120448303, 2384517360007913)
我认为这意味着解的形式是
x = 600689120448303 + 2384517360007913 * n
对于任何整数 n
。
from sympy import *
x = sym.symbols('x')
result = solve([Eq(Mod(x, 23), 0), Eq(Mod(x, 41), 28), Eq(Mod(x, 829), 806), Eq(Mod(x, 13), 3), Eq(Mod(x, 17), 14), Eq(Mod(x, 29), 6), Eq(Mod(x, 677), 623), Eq(Mod(x, 37), 14), Eq(Mod(x, 19), 3)], x)
引发错误:
not a valid Sympy Expression
在 sympy 1.7.1 中尝试您的示例时我得到 NotImplementedError
。
这种方程组在solve
中没有实现。我不确定 sympy 中的高级求解器函数可以处理这个问题。
虽然有一个低级函数 crt
正是针对这种系统:
https://docs.sympy.org/latest/modules/ntheory.html#sympy.ntheory.modular.crt
您传入模数列表和余数列表:
>>> from sympy.ntheory.modular import crt
>>> crt([23, 41, 829, 13, 17, 29, 677, 37, 19], [0, 28, 806, 3, 14, 6, 623, 14, 3])
(600689120448303, 2384517360007913)
我认为这意味着解的形式是
x = 600689120448303 + 2384517360007913 * n
对于任何整数 n
。