[英]Using Python to Find Integer Solutions to System of Linear Equations
我正在嘗試編寫一個python程序來解決形式為x_1 + 2x_2 + ... + Tx_T = a
x_0 + x_1 + ... + x_T = b
的多項式的所有正整數解。
例如,通過蠻力,我可以證明服從x_0 + x_1 + x_2 = 2
x_1 + 2x_2 = 4
的唯一正整數解是(0,0,2)
。 但是,我希望有一個程序可以單獨執行此操作。
有什么建議么?
您可以使用Numpy線性代數求解方程組,即線性矩陣方程的最小二乘解。 對於您的情況,可以考慮以下向量:
import numpy as np
# range(T): coefficients of the first equation
# np.ones(T): only 'ones' as the coefficients of the second equation
A = np.array([range(T), np.ones(T)) # Coefficient matrix
B = np.array([a, b]) # Ordinate or “dependent variable” values
然后找到解決方案,如下所示:
x = np.linalg.lstsq(A, B)[0]
最后,您可以實現一個傳遞變量T, ab
的solve
方法:
import numpy as np
def solve(T, a, b):
A = np.array([range(T), np.ones(T)])
B = np.array([a, b])
return np.linalg.lstsq(A, B)[0]
整數解:如果只需要整數解,那么您正在尋找一個線性雙色子方程組。
每個線性Diophantine方程系統都可以寫成: AX = C ,其中A是一個m×n的整數矩陣, X是一個n×1的未知數列矩陣, C是一個m×1的整數列矩陣。
每個線性雙色子方程組都可以通過計算其矩陣的Smith正規形式來求解。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.