2013年12月31日 星期二

[數論] 連分數(Continued Fraction)

參考資料
1. 唐其鈺譯,方程的整數解,九章出版社,2002年出版,ISBN13:9799576032195
2. 認識連分數,林聰源,http://episte.math.ntu.edu.tw/articles/mm/mm_02_3_08/index.html
3. C.D.Olds(1963), Continued Fractions (New Mathmatical Library, Number 9)
    www.plouffe.fr/simon/math/Continued%20Fractions.pdf
4. Strayer(1994), Elementary Number Theory, Waveland Press, 1994/2002, ISBN 1-57766-224-5
5. Infinite continued fractions http://www.math.binghamton.edu/dikran/478/Ch7.pdf

0.一次不定方程
二元一次方程可表示為 ax+by+c=0,其中係數 ab 是非零整數,c 是任意整數。我們的目的是求出 xy 的整數解。

一般我們會直接設 gcd(a,b)=1,也就是兩係數互質。它的一切整數解的公式是 x=x0bty=y0+at其中 (x0,y0) 是一組解,t 是整數。也就是說,只要我們能找到一組解,就可以用這組解去找到其他所有的解。

如何找出一組解?我們以下面的例子說明。

設有一方程式 127x52y+1=0。先檢查 gcd(127,52)=1,而 1 能整除 1,所以此方程式有整數解。我們的方法將假分數 12752 化成連分數形式。

1.1 有限簡單連分數(finite simple continued fraction)
分數 a1+1a2+1a3+...+1an 稱為「有限簡單連分數(finite  simple continued fraction)」,可用符號 [a1,a2,...,an] 表示有限連分數。

例如 [0,3,2,4,3]=13+12+14+13[2,3,2,1,5]=2+13+12+11+15

例:試將 3711 表示為有限簡單連分數(Hint:輾轉相除法)

解:{37=11×3+411=4×2+34=3×1+13=1×3+0, 故 3711=[3,2,1,3]=3+12+11+13.

任何一個有理數都能表示成有限簡單連分數,反之亦然,這是因為輾轉相除法必會在有限步驟結束。

回到一開始提到的方程 127x52y+1=0,運用輾轉相除法原理,我們得到 12752=2+12+13+11+15=[2,2,3,1,5]。去掉此連分數最後一個分數 15,並用原來的分數 12752 減去它:

12752[2,2,3,1]=12752(2+12+13+11)=12752229=1529.

12752229=1529 通分,得到 127×952×22+1=0。對照 127x52y+1=0,我們得到了一組解 (x0,y0)=(9,22),也就是倒數第二個漸近分數的分母分子,因此全部的解就是 {x=9+52ty=22+127t,其中 t 是整數。


1.2 為什麼可以透過這個方法求解?
關鍵在於「輾轉相除法」和連分數的性質。我們將 12752 化成連分數的過程表示如下。

{(a=b×q+r)127=52×2+2352=23×2+623=6×3+56=5×1+15=1×5+0.

對照 a=b×q+rr<b 的格式,其中 q 是商數,r 是餘數。連分數 [2,2,3,1,5] 其實就是依序將商數排列而得。

對於一般連分數形式 ab=q1+1q2+1q3+1qn1+1qn=[q1,q2,,qn],若我們只取到連分數的某一環節,例如第 k 個環節 δk=PkQk,其餘部分捨棄,這個分數稱為「漸近分數(convergent)」或「近似分數」。根據這個定義,當 k=n 時,δn=PnQn 其實就是 ab 本身。

我們將在下面證明,當 k=n 時,有 δnδn1=(1)nQnQn1,即 abPk1Qk1=(1)nQnQn1。在等號兩邊同乘上 QnQn1,又 Qn=b,於是得到 aQn1bPn1+(1)n1=0。最後用 (1)n1c 乘之,得到

a[(1)n1cQn1]+b[(1)n1cPn1]+c=0.

這就是求 ax+by+c=0 方程的一組解的公式,也是我們為何是取倒數第二個漸近分數(Pk1Qk1)的原因。


1.3 連分數的第k個漸近分數(the kth convergent of continued fraction)
[q1,q2,...,qk]=PnQn(1kn) 稱為有限簡單連分數 [q1,q2,...,qn] 的第 k 個漸近分數(the kth convergent of [q1,q2,...,qn])。

有限連分數的一些性質,可參考林聰源的網頁。
http://episte.math.ntu.edu.tw/articles/mm/mm_02_3_08/page3.html

證明了 Pk=qkPk1+pk2Qk=qkQk1+Qk2 這兩條式子後,接著再證明相鄰兩個漸近分數的差 δkδk1=1kQkQk1 ,最後得到 aQn1bPn1+(1)n1=0

關於 Pk=qkPk1+pk2Qk=qkQk1+Qk2 這兩條式子,他們的用途是求漸進分數的分子及分母,顯然這兩條式子是遞迴式,稱為「Wallis-Euler recurrence relations」。我們用下面的表格示意。

12752=2+12+13+11+15=[2,2,3,1,5] 為例。

表一

表一清楚地列出如何透過 Pk=qkPk1+pk2Qk=qkQk1+Qk2,得到漸近分數。對於 δ1,分子 P1 就是 q1P0+P1=2×1+0=2,分母 Q1=q1Q0+Q1=2×0+1=1。透過這個模式,我們可以得到完整的內容,見表二。

表二

表二清楚地列出每一個漸近分數的成分。其中最後一項 δ5=P5Q5=12752

觀察漸近分數與原本的分數 ab,我們可以發現下面的大小關係。

                        δ1=[q1]=q1=P1Q1<ab.
                        δ2=[q1,q2]=q1+1q2=P2Q2>ab.
                        δ3=[q1,q2,q3]=q1+1q2+1q3=P3Q3<ab.
                        δ4=[q1,q2,q3,q4]=q1+1q2+1q3+1q4=P4Q4>ab.

我們在數線上標示這些漸近分數的位置,如圖一。
圖一

從圖一可以看出,漸近分數會是以左右來回逼近 ab 的模式運作,最終收斂到中心點 ab。奇數項在左側,偶數項在右側,其中奇數項會不斷地朝右方逼近(嚴格遞增);偶數項則是不斷地朝左逼近(嚴格遞減)。以數學式表示如下。

δ1<δ3<<δ2k1<ab<δ2k<<δ4<δ2.


備註:有些書對於漸近分數的表示的足碼(index)是從 0 開始,如此一來,其漸近分數偶數項會在左側,奇數項會在右側。

證明1:兩個漸近分數的差 δkδk1=(1)kQkQk1k2

<pf> 根據定義,δk=PkQkδk1=Pk1Qk1,所以δkδk1=PkQkPk1Qk1=PkQk1QkPk1QkQk1.

                   分子 =PkQk1QkPk1=(qkPk1+Pk2)Qk1(qkQk1+Qk2)Pk1
                                      =(qkPk1Qk1)+Pk2Qk1(qkQk1Pk1)Qk2Pk1
                                      =(Pk1Qk2Qk1Pk2).

觀察 PkQk1QkPk1(Pk1Qk2Qk1Pk2),我們發現後者可以從原式中的 kk1 代替而得到。依此類推,我們會得到一連串的等式:

                             Pk1Qk1=(1)(Pk1Qk2Qk1Pk2)
                                 =(1)2(Pk2Qk3Qk2Pk3)
                                 
                                 =(1)k2(P2Q1Q2P1)

由於 δ1=[q1]=q1=P1Q1δ2=[q1,q2]=q1+1q2=P2Q2,我們知道 P1P2Q1Q2 的值。

{P1=q1Q1=1P2=q1q2+1Q2=q2

因此分子 Pk1Qk1=(1)k2(P2Q1Q2P1)=(1)k2[(q1q2+1)1q2(q1)]=(1)k2=(1)k,於是

δkδk1=PkQkPk1Qk1=PkQk1QkPk1QkQk1=(1)kQkQk1


若將證明1的 δkδk1=(1)kQkQk1 等號兩邊同乘 QkQk1,我們得到

(δkδk1)QkQk1=(PkQkPk1Qk1)QkQk1=PkQk1QkPk1=(1)k.

上式透露出 PkQk 是互質的(根據Bezout定理),我們觀察表二也可發現到漸近分數一定是最簡分數。

證明1的結論也說明了兩個相鄰漸近的差會隨著漸近分數取得越準確(i 越大,Qi也越大)而越小,再次觀察表二,結論確實如此。經過不斷地「左右震盪」,最終會到達 ab

證明2:兩個漸近分數的差 δkδk2=(1)k1QkQk2k3

證明1中我們證明了兩個相鄰漸近分數的差會逐漸縮小。證明2是說明同側(參照圖一,在ab的左側或右側)的漸近分數隨著足碼(k)取得越大,左側(足碼為奇數)的漸近分數會越大,右側(足碼為偶數)的漸近分數會越小(Monotonicity properties of convergents.)。

<pf> δkδk2=PkQkPk2Qk2
            =PkQk2Pk2QkQkQk2
            =(qkPk1+Pk2)Qk2Pk2(qkQk1+Qk2)QkQk2
            =(qkPk1Qk2+Pk2Qk2)(qkPk2Qk1+Pk2Qk2)QkQk2
            =qk(1)k1QkQk2 (since PkQk1QkPk1=(1)k by 證明1) 

當足碼(k)是奇數時,qk(1)k1QkQk2為正數;當足碼為偶數時,qk(1)k1QkQk2為負數。可參照圖一。

圖一



1.4 回顧 127x52y+1=0
我們已經證明、也給出了關於一次不定方程的求解公式。現在再回頭看 12752 化為連分數的過程。

{(a=b×q+r)127=52×2+2352=23×2+623=6×3+56=5×1+15=1×5+0.

透過不斷地代換(用下面的式子代換上一條式子),我們得到:1=5×16=(236×3)6
                                                                                                                                              =6×(4)+23
                                                                                                                                              =(5223×2)×(4)+23
                                                                                                                                              =23×9+(52)×4
                                                                                                                                              =(12752×2)×9+(52)×4
                                                                                                                                              =127×952×22

最後得到一組解 (x0,y0)=(9,22)。但是這種不斷替換的方法實在太累人了,不如套用上面的求解公式便捷。


2.1 無限簡單連分數(infinite simple continued fraction)
並非任何實數都能表示成有限簡單連分數, 例如 2, π

化成無限連分數的步驟:(1)Split (2)Flip (3)RAT(有理化)。可參考下面的影片(MathForKid65)。

所有的無理數都能用無限簡單連分數表示,且表示方式是唯一的(證明略)。

1770年,拉格朗日證明一個數字能表示成循環連分數,若且唯若此數為二次無理數(二次無理數是某些有理數係數的一元二次方程式的根),例如下面影片的範例 33 是方程式 x23=0 的根,所以 3 可表示成循環連分數。


一個計算線上連分數的網站:http://www.andrewduncan.ws/goldenratio/continuedfractions/

無限簡單連分數有許多與有限簡單連分數類似的性質。例如我們在1.3 連分數的第k個漸近分數(the kth convergent of continued fraction)中提到的遞迴關係式,也可套用至此,因為我們在推導過程並無使用到「有限步驟」的條件。


2013年12月5日 星期四

[數論] 遞迴數列解法

參考資料:
遞歸數列,凡異出版社,1994年3月初版,ISBN:957694130X
線性遞迴關係之求解(下) - 中研院數學研究所

二階常係數線性齊次遞迴方程的解法(單一方程)
對於 an+p1an1+p2an2=0, 通解的主要思路是通過用 an=xn 代換, 把上述方程轉化到特徵方程 x2+p1x+p2=0, 解此特徵方程即得原方程的通解. 最後把初始條件帶入通解, 得到特解.
  • Δ>0 時, 有兩相異實根, x1=q1, x2=q2
        通解為 an=c1qn1+c2qn2.
  • Δ=0 時, 有兩相等實根, x1=x2=q
        通解為 an=(c1+c2n)qn.
  • Δ<0 時, 有一對共軛複數根, x1=r(cosθ+isinθ), x2=r(cosθisinθ)
        通解為 an=an=rn(c1cosnθ+c2sinnθ).

遞迴方程組的解法
設有兩個數列 a1,a2,...an,...b1,b2,...bn,... 同時滿足遞迴方程組 {an+1=p1an+q1bnbn+1=p2an+q2bn, 其中 pi, qi(i=1,2) 是實常數. 這個遞迴方程組稱為二元遞迴方程組.
  • 代入消去法
  • 行列式法
        對於方程組 {an+1=p1an+q1bnbn+1=p2an+q2bn, 若 |p1q1p2q2|=0, 即 p1=λp2, q1=λq2.

        對於 |p1p2q1q2|0, 我們求形如 an=Axn, bn=Bxn 的解(A, B 為待定係數).

二階常係數線性非齊次遞迴方程的解法
若存在兩個常數 p1, p2, 對任意 n2, 有 an+p1an1+p2an2=f(n), 其中 f(n)0, 則稱此方程為「二階常係數線性非其次遞迴方程」, 對應之齊次特徵方程為 x2+p1x+p2=0
通解 = 對應的齊次方程的通解 + 非齊次方程的任何一個特解
f(n) 的幾種特殊類型函數, 我們討論它的特解形式. 以下列出六種:
  • f(n)n 的二次多項式, 即 f(n)=a2n2+a1n+a0
       (1) 若 x=1 不是特徵方程的根, 則特解為 an=A2n2+A1n+A0.

       把特解代入特徵方程式, 比較係數得到 {A2(1+p1+p2)=a2A1(1+p1+p2)2A2(p1+2p2)=a1A0(1+p1+p2)A1(p1+p2)+A2(p1+4p2)=a0

       因為 x=1 不是 x2+p1x+p2=0 的根, 即 1+p1+p20, 故 A2, A1A0 都可以確定.

       (2) 若 x=1 是特徵方程式的單根, 則特解為 an=n(A2n2+A1n+A0).
       (3) 若 x=1 是特徵方程式的重根, 則特解為 an=n2(A2n2+A1n+A0).
  • f(n) 是指數函數, 即 f(n)=ckn
       (1) 若 x=k 不是特徵方程式的根 則特解為 an=Bkn. (B 是待解係數)
       (2) 若 x=k 是特徵方程式的單根 則特解為 an=nBkn.
       (3) 若 x=k 是特徵方程式的重根 則特解為 an=n2Bkn.
  • f(n) 是正弦或餘弦函數, 即 f(n)=ccosnθf(n)=csinnθ
  • f(n) 是一個指數函數與多項式的積, 即 f(n)=g(n)kn, 其中 k 是常數, g(n) 是關於 nm 次多項式
  • f(n) 是指數函數與正弦(或餘弦)函數的積, 即 f(n)=kncosnθf(n)=kncosnθ
  • f(n) 是多項式與正弦(或餘弦)函數的積, 即 f(n)=g(n)cosnθf(n)=g(n)sinnθ

二階遞迴數列的求和問題
一般來說, 數列 {an} 的求和問題, 關鍵是找出其通項公式再求和. 但是, 對於遞迴數列, 我們可以不求出它的通項, 直接從它所適合的遞迴方程中求出這個遞迴數列的前 n 項的和.

假設數列  {an} 是二階遞迴列, 所適合的二階線性齊次遞迴方程為 f(x)=0(二次多項式), 則 {an} 的前 n 項和 Sn 對應之特徵方程是 (x1)f(x)=0, 它只比 {an} 的特徵方程多了一個特徵根 x=1.
(hint: 用 an=SnSn1(n2) 代換)

遞迴方程的其他各種解法
當特徵方程式的根不易求出, 或遞迴方程不是線性或常係數時, 需要透過其他的途徑求解.
  • 數學歸納法
  • 迭代法與逐差法
  • 變量代換法(換元法) e.g. 非線性轉成線性, 變係數轉為常係數...等
  • 母函數解法