Công thức truy hồi¶
Dãy số là một ánh xạ từ \(\mathbb{N}\) tới \(\mathbb{R}\)
Khi đó các giá trị \(u(1)\), \(u(2)\), ... được gọi là số hạng của dãy số. Chúng ta cũng có thể viết \(u_1\), \(u_2\), ... thay vì \(u(1)\), \(u(2)\), ..., hoặc thậm chí là \(\{ u_ n \}\).
Cấp số cộng và công thức truy hồi bậc nhất¶
Cho dãy số \(\{ u_n \}\) với phần tử đầu \(u_0\) và công sai \(d\). Khi đó các phần tử sau đó được tính với công thức
với mọi \(n \geqslant 1\) thì \(\{ u_n \}\) được gọi là cấp số cộng.
Như vậy cấp số cộng là một dãy số có dạng
Dãy số có dạng như trên gọi là truy hồi bậc nhất (hay first order).
Ví dụ 18
Dãy số \(\{ u_n \}\) xác định bởi
với \(u_0\) là số hạng đầu; \(a\), \(b\) và \(c\) là các số thực.
Ví dụ 19
Dãy số \(\{ u_ n \}\) xác định bởi
với \(u_0\) là số hạng đầu; \(a\), \(b\) và \(c\) là các số thực.
Ta cần chú ý rằng việc nói truy hồi bậc nhất mang nghĩa là số hạng thứ \(n\) chỉ phụ thuộc vào số hạng thứ \(n - 1\), chứ không phải các số hạng trước đó như số hạng thứ \(n - 2\), \(n - 3\), vân vân và mây mây.
Ở ví dụ thứ hai thì số hạng thứ \(n\) là hàm bậc hai theo số hạng thứ \(n - 1\) nhưng đây là công thức truy hồi bậc nhất.
Dãy số Fibonacci và công thức truy hồi bậc hai¶
Đây có lẽ là dãy số nổi tiếng nhất trong toán học. Công thức của dãy số là với hai phần tử ban đầu \(u_0 = 0\) và \(u_1 = 1\), các phần tử sau sẽ được tính với công thức
với mọi \(n \geqslant 2\).
Ở đây, số hạng thứ \(n\) được tính bởi hai số hạng trước nó nên đây là ví dụ của truy hồi bậc hai. Dãy số truy hồi bậc hai là dãy số có dạng
Ví dụ 20
Dãy số \(\{ u_n \}\) được xác định bởi
với \(u_0\) và \(u_1\) là số hạng đầu; \(a\), \(b\) và \(c\) là các số thực.
Công thức truy hồi bậc cao¶
Tổng quát, nếu số hạng thứ \(n\) của dãy số \(\{ u_n \}\) được tính bởi \(k\) số hạng trước nó, nghĩa là
thì ta gọi là công thức truy hồi bậc \(k\).
Các dãy truy hồi có ứng dụng rộng rãi trong toán học và các ngành khoa học khác, tiêu biểu nhất là dãy Fibonacci ở trên. Trong khoa học máy tính, công thức truy hồi có một ứng dụng để sinh một dãy số cho nhiều mục đích khác nhau như sinh số giả ngẫu nhiên (pseudo-random), sinh khóa cho thuật toán mã hóa dòng (stream cipher). Các ứng dụng này thường sử dụng dãy truy hồi tuyến tính, tức là bậc của các hạng tử \(u_{n-1}\), \(u_{n-2}\), ..., \(u_{n-k}\) không quá \(1\). Nói cách khác thì
trong đó \(\phi(n)\) là một hàm số nào đó không phụ thuộc các hạng tử \(u_{n-1}\), ..., \(u_{n-k}\). Các hệ số \(a_{n-1}\), ..., \(a_{n-k}\) nằm trong trường số nào đó tùy thuộc bài toán. Ví dụ với các dãy LFSR (Linear Feedback Shift Register) để sinh dãy trong tin học ở trên thì các phép tính được thực trên trên trường \(\mathbb{F}_2\). Hiện tại chúng ta sẽ khảo sát dãy số với hệ số thực.
Chúng ta quan tâm đến công thức tổng quát của dãy số truy hồi. Dễ thấy rằng, để tính số hạng thứ \(n\) theo truy hồi thì ta phải biết đủ \(k\) số hạng trước đó. Nhưng với mỗi số hạng trong \(k\) số hạng đó ta lại cần đi ngược về trước đó nữa cho đến khi tới các số hạng ban đầu \(u_0\), \(u_1\), ..., \(u_{k-1}\). Tuy nhiên đôi khi chúng ta quan tâm một số tính chất đại số mà cần công thức tổng quát cho \(\{ u_n \}\) và chỉ phụ thuộc \(n\), nghĩa là \(u_n = f(n)\). Khi đó chúng ta sẽ sử dụng phương pháp hàm sinh (hay generating function method, hay метод проводящих функций).
Phương pháp hàm sinh¶
Phương pháp hàm sinh thực hiện theo các bước sau:
Xác định các số hạng ban đầu \(u_0\), \(u_1\), ..., \(u_{k-1}\).
Gọi \(G(x)\) là đa thức với hệ số là các số hạng của dãy số, tức là
Phân tích \(G(x)\) thành tổng các phân thức dạng \(\dfrac{1}{H(x)}\). Sau đó ta gom các số hạng có cùng lũy thừa của \(x\) lại để được công thức tổng quát của \(\{ u_n \}\). Các hàm \(H(x)\) sẽ được trình bày ở phần cuối với các ví dụ, và ta gọi chúng là hàm sinh.
Một ví dụ hay dùng của hàm sinh là khai triển sau.
Công thức trên có thể thu được từ khai triển Taylor-Maclaurin hoặc bằng quy nạp.
Ví dụ I¶
Xét dãy số \(\{ u_n \}\) với \(u_0 = 0\), \(u_1 = 1\), và
Đặt
Khi đó, ta nhân \(G(x)\) với \(x\), \(x^2\) và nhân thêm số hạng để khử các hạng tử theo công thức truy hồi
Cụ thể, ta tính
và
Khi đó
Các bạn có thấy điều gì không? Các số hạng trước \(x^2\), \(x^3\), ... đều bằng \(0\) theo công thức truy hồi. Như vậy thu gọn vế trái và thay \(u_0\), \(u_1\) vào vế phải ta có
tương đương với
Vì \(1 - 5x + 6x^2\) phân tích thành nhân tử là \((1 - 2x)(1 - 3x)\) nên ta muốn phân tích \(G(x)\) thành tổng
với \(\alpha\) và \(\beta\) là hệ số cần tìm để
Như vậy, đồng nhất hệ số ta có
giải hệ ta có \(\alpha = -1\) và \(\beta = 1\). Ta thu được
Theo công thức (7), ta có
và
Thay hai khai triển trên vào \(G(x)\) ta có
Đồng nhất hệ số với (8) ta có
Đây chính là công thức tổng quát của dãy \(\{ u_n \}\).
Tất nhiên là ví dụ trên có thể được giải bằng cách khác là đa thức đặc trưng và đây là phương pháp phổ biến ở phổ thông. Tuy nhiên một số bài toán khác không thể sử dụng đa thức đặc trưng. Trước khi đến với các bài toán như vậy thì mình sẽ liệt kê một số hàm sinh thông dụng để giải quyết các bài toán đó.
Một số hàm sinh thông dụng¶
Khi \(t = 2\) thì \(C^i_{i+1} = \dfrac{(i+1)!}{i! \cdot 1!} = i + 1\) nên ta có kết quả
Kết hợp hai công thức trên
Ví dụ II¶
Cho dãy số \(\{ u_n \}\) xác định bởi \(u_0 = 1\), \(u_1 = 2\) và
Tương tự, đầu tiên ta đặt \(G(x)\) là đa thức có hệ số là dãy \(\{ u_n \}\), nghĩa là
Ta cũng nhân \(x\) và \(x^2\) cho \(G(x)\) và thu được
và
Như vậy, hoàn toàn tương tự ví dụ I, mình tính được
Cơ mà ở đây \(u_n - 6 u_{n-1} + 8 u_{n-2}\) không đủ để triệt tiêu thành \(0\) mà cần thêm \(n\) nữa. Vậy phải làm sao?
Chúng ta sẽ cần một hàm \(F(x)\) sao cho
Như vậy mình gom các hệ số màu đỏ lại sẽ được
Khi đó
và việc của chúng ta là tìm một hàm sinh biểu thị cho \(F(x)\) nữa để có thể biểu diễn \(G(x)\) như ở ví dụ I.
Ta có
Thay \(u_0\), \(u_1\) và \(F(x)\) vào ta tính được \(G(x)\) là hàm
tương đương với
Bây giờ, \(1 - 6x + 8x^2\) phân tích thành nhân tử \((1 - 2x)(1 - 4x)\). Vậy mình sẽ cần tách \(G(x)\) thành
với \(A\), \(B\), \(C\) và \(D\) là các hệ số cần tìm. Quy đồng mẫu số mình có
Thu gọn tử số lại mình được
và đồng nhất hệ số thì mình cần giải hệ phương trình
Bây giờ thay các hàm sinh vào \(G(x)\) (chưa cần thay \(A\), \(B\), \(C\) và \(D\) vội) thì mình có
Nhìn vào hệ số của \(x^n\) mình có công thức tổng quát
Ví dụ III¶
Trong một số trường hợp "hơi lú", ví dụ như
thì nếu sử dụng đa thức đặc trưng ta có một phương trình bậc hai với nghiệm kép. Khi đó công thức tổng quát không còn ở dạng
với \(z_1\) và \(z_2\) là hai nghiệm phân biệt của phương trình đặc trưng, mà ở một dạng khác. Phương pháp hàm sinh sẽ giúp chúng ta tìm công thức tổng quát ở trường hợp này.
Xét đa thức \(G(x)\) với hệ số là các số hạng của dãy \(\{ u_n \}\) cho bởi công thức truy hồi ở trên:
Thực hiện tương tự bên trên, mình tính
và
Như vậy
Đặt \(G(x)\) làm nhân tử chung và chuyển vế mình có
Mình cần tách \(G(x)\) thành tổng
Quy đồng mẫu số và đồng nhất hệ số mình cần tìm \(A\) và \(B\) thỏa mãn hệ phương trình
Thay hàm sinh vào \(G(x)\) mình được
Hệ số trước \(x^n\) cho ta công thức tổng quát của dãy số