簡體   English   中英

使用Python查找線性方程組的整數解

[英]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, absolve方法:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM