線性方程定理

關注我的公衆號c137Lab獲取更多相關內容

在這裏插入圖片描述

線性方程定理

線性方程定理

​ 設 aabb 是非零整數,g=gcd(a,b)g=gcd(a,b) 方程
ax+by=g ax+by=g
總有一個整數解 (x1,y1)(x_1,y_1),它可由歐幾里得算法得到。則方程中的每一個解可由
(x1+kbg,y1kag) (x_1+k\cdot \frac{b}{g},y_1-k\cdot \frac{a}{g})
得到,其中 kk 爲任意整數.

使用歐幾里得算法求解 ax+by=gcd(a,b)ax+by=gcd(a,b) 的步驟如下

我們將歐幾里得定理寫成如下表形式(左邊爲歐幾里得定理,右邊爲計算線性方程的解):

1

以此遞推,陸續得到一個如下形式的等式:
=a+b 最新餘數=a的倍數+b的倍數
最終得到的非零餘數等於 gcd(a,b)gcd(a,b) ,這就給出了方程的整數解。

舉例計算:
60x+22y=gcd(60,22) 60x+22y=gcd(60,22)
使用歐幾里得定理:
在這裏插入圖片描述
(4,11)(-4,11) 爲方程的一個整數解。

接下來證明定理的第二部分:

證明:方程的 ax+by=gax+by=g 的通解可以由其中一個特解得出

將方程左右兩端除以 gg
agx+bgy=1 \frac{a}{g}x+\frac{b}{g}y=1
假設(x1,y1),(x2,y2)(x_1,y_1),(x_2,y_2) 是方程的兩個解,則有
agx1+bgy1=1,agx2+bgy2=1 \frac{a}{g}x_1+\frac{b}{g}y_1=1,\quad\frac{a}{g}x_2+\frac{b}{g}y_2=1
y1y_1乘以第二個方程,用 y2y_2乘以第一個方程,再做差就可以消去 bb
agx1y2agx2y1=y2y1 \frac{a}{g}x_1y_2-\frac{a}{g}x_2y_1=y_2-y_1
同理,用 x1x_1 乘以第二個方程,用 x2x_2乘以第一個方程可以消去 aa
bgx2y1bgx1y2=x2x1 \frac{b}{g}x_2y_1-\frac{b}{g}x_1y_2=x_2-x_1

k=x2y1x1y2k=x_2y_1-x_1y_2 得到:
x2=x1+kbg,y2=y1kag x_2=x_1+k\frac{b}{g},\quad y_2=y_1-k\frac{a}{g}
上式表示 (x2,y2)(x_2,y_2) 可由 (x1,y1)(x_1,y_1)得到

接下來使用代碼實現這一算法:

def linear_equ(a, b):
    if a == 0 or b == 0:
        return -1
    else:
        g, w = a, b
        x, v = 1, 0

        while w != 0:
            t = g % w
            s = x - (g // w) * v
            x, g = v, w
            v, w = s, t

        y = (g - a * x) // b
        return g, x, y

參考文獻:A Brief Introduction to Number Theory --Joseph H.Silverman

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章