Tìm công thức tường minh của các số Fibonacci F0 = 0 F1 = 1 Fn = Fn-1 Fn 2

Dãy Fibonacci là dãy số được xác định bằng công thức đệ qui:

fn = fn-1 + fn-2, n ≥2,

f0 = 1, f1 = 1 .

Ví dụ: Bài toán con thỏ

“Một đôi thỏ (gồm một thỏ đực và một thỏ cái) cứ mỗi tháng đẻ được một đôi thỏ con (cũng gồm một thỏ đực và thỏ cái); một đôi thỏ con, khi tròn 2 tháng tuổi, sau mỗi tháng đẻ ra một đôi thỏ con, và quá trình sinh nở cứ thế tiếp diễn. Hỏi n tháng bao nhiêu đôi thỏ, nếu đầu năm (tháng Giêng) có một đôi thỏ sơ sinh?

Tìm công thức tường minh của các số Fibonacci F0 = 0 F1 = 1 Fn = Fn-1 Fn 2

Trong hình vẽ trên, ta quy ước:

  • Cặp thỏ nâu là cặp thỏ có độ tuổi 1 tháng.
  • Cặp thỏ được đánh dấu (màu đỏ và màu xanh) là cặp thỏ có khả năng sinh sản.

Nhìn vào hình vẽ trên ta nhận thấy:

  • Tháng Giêng và tháng Hai: Chỉ có 1 đôi thỏ.
  • Tháng Ba: đôi thỏ này sẽ đẻ ra một đôi thỏ con, do đó trong tháng này có 2 đôi thỏ.
  • Tháng Tư: chỉ có đôi thỏ ban đầu sinh con nên đến thời điểm này có 3 đôi thỏ.
  • Tháng Năm: có hai đôi thỏ (đôi thỏ đầu và đôi thỏ được sinh ra ở tháng Ba) cùng sinh con nên ở tháng này có 2 + 3 = 5 đôi thỏ.
  • Tháng Sáu: có ba đôi thỏ (2 đôi thỏ đầu và đôi thỏ được sinh ra ở tháng Tư) cùng sinh con ở thời điểm này nên đến đây có 3 + 5 = 8 đôi thỏ.

Khái quát, nếu n là số tự nhiên khác 0, gọi f(n) là số đôi thỏ có ở tháng thứ n, ta có:

  • Với n = 1 ta được f(1) = 1.
  • Với n = 2 ta được f(2) = 1.
  • Với n = 3 ta được f(3) = 2.

Do đó với n > 3 ta được: f(n) = f(n-1) + f(n-2).

Điều đó có thể được giải thích như sau: Các đôi thỏ sinh ra ở tháng n -1 không thể sinh con ở tháng thứ n, và ở tháng này đôi thỏ tháng thứ n – 2 sinh ra một đôi thỏ con nên số đôi thỏ được sinh ra ở tháng thứ n chính là giá trị của f(n – 2).

Xét các trường hợp:

Bài toán 1: Cho một số tự nhiên n (n<=40) bạn hãy lập trình tìm số Fibonaci thứ n? Ta thấy với n<=40 thì phương án đầu tiên ta cân nhắc đến đó chính là đệ quy: Nhìn vào công thức trên ta thấy ngay bản chất đệ quy, việc tính Fn ta có thể viết ngay rất dễ dàng và ngắn gọn: Function Fb(n:longint):int64; Begin If (n<=2) then exit(1) else fb:=fb(n-1) + fb(n-2); End; Ta sẽ nhận xét về cách làm này thông qua ví dụ sau: Khi ta gọi: x:=Fb(10) thì việc tính fb(10) này sẽ tính như sau: X:= fb(9) + fb(8) X:= fb(7) + fb(8) + fb(6) + fb(7) X:= fb(5) + fb(6) + fb(6) + fb(7) + fb(4) + fb(5) + fb(5) + fb(6) ….. Ta thấy ngay bước thứ 3: có rất nhiều lời gọi hàm trùng lặp nhau: f6 gọi 3 lần, f5 gọi 3 lần … chính điều này làm cho thời gian thực thi thuật toán này rất lớn. Chính vì vậy thuật toán đệ quy này chỉ chạy được với dữ liệu nhỏ. Với n>=44 thuật toán trên không khả thi.

Bài toán 2: bạn hãy lập trình tìm số Fibonaci thứ n? (n<=1000.000) vì kết quả có thể rất lớn nên ta chỉ lấy kết quả là phần dư khi chia cho 1.000.000+7.


* Ý tưởng 1: QHĐ O(n) để tìm số fibonaci thứ n
            Gọi F[i] là số Fibonaci thứ i. Khi đó ta thấy việc tính mảng F này rất nhanh chóng: Function Fibo(n:longint):int64; Var i:longint; Begin f[1]:=1; f[2]:=1; For i:=1 to n do f[i] : = (f[i-1] + f[i-2]) mod base; Exit(f[n]); End;

* Ý tưởng 2: QHĐ O(n) để tìm số Fibonaci thứ n

Ta nhận thấy để tính Fn thì chỉ cần quan tâm đến F[n-1] và f[n-2] vậy ta đã lãng phí bộ nhớ dành cho mảng F. Ý tưởng là ta sẽ dùng 3 biến fn, f1, f2: để lần lượt tính: Funtion Fibothu_n(n:longint):int64; Var f1,f2,k,i:int64; Begin if (n=1) or (n=2) then exit(1) else Begin f1:=1; f2:=1; fn:=f1+f2; i:=3; While i<n do Begin f1:=f2; f2:=fn; fn:=f1+f2; i:=i+1; End; Exit(fn) End; End;

* Nhận xét: Ý tưởng 2 tốt hơn ý tưởng 1 rất nhiều về không gian bộ nhớ, tuy nhiên 2 ý tưởng này xét về độ phức tạp vẫn còn rất lớn:

Sau đây ta xét bài toán thứ 3 như sau:

Bài toán 3: Nguồn http://laptrinh.ntu.edu.vn/Problem/Details/1163


Xét dãy số Fibonaci {Fn} theo định nghĩa:
F1 = F2 = 1
Fn = Fn – 1 + Fn – 2 với mọi n > 2
Cho n, hãy tính Fn và đưa ra số dư của Fn chia cho (1.000.000 + 7)
Dữ liệu vào: n (0 < n ≤ 1000.000.000.000.000)
Dữ liệu ra: một số nguyên – số dư tìm được Ta nhận thấy với n<=1000.000.000.000.000 thì 2 cách làm QHĐ với độ phức tạp O(n) không khả thi. Để giải quyết vấn đề này ta dùng phương pháp nhân ma trận. Phương án sau được  đề xuất bởi Donald E. Knuth:

Tìm công thức tường minh của các số Fibonacci F0 = 0 F1 = 1 Fn = Fn-1 Fn 2

Vậy để tìm số Fibonaci thứ n đơn giản ta chỉ cần tính a mũ n (Với a là ma trận cơ sở như trên). Giả sử ta tính mảng 2 chiều F = a mu n, khi đó kết quả bài toán số fibonaci thứ n chính là F[1,2]. Bạn nào không nhớ rõ về cách nhân 2 ma trận thì có thể xem thêm đoạn chương trình sau: const base=1000007; type matrix=array[1..2,1..2] of int64; var n:int64; Function nhan(a,b:matrix):matrix; var c:matrix; begin c[1,1]:=(a[1,1]*b[1,1] + a[1,2]*b[2,1]) mod base; c[1,2]:=(a[1,1]*b[1,2] + a[1,2]*b[2,2]) mod base; c[2,1]:=(a[2,1]*b[1,1] + a[2,2]*b[2,1]) mod base; c[2,2]:=(a[2,1]*b[1,2] + a[2,2]*b[2,2]) mod base; exit(c); end; Function mu(a:matrix; n:int64):matrix; var b:matrix; begin if n=1 then exit(a); b:=mu(a, n div 2); b:=nhan(b,b); if n mod 2 = 0 then exit(b) else exit(nhan(b,a)); end; Function Fibo(n:int64):int64; var a,f:matrix; begin if n<=2 then exit(1); a[1,1]:=1; a[1,2]:=1; a[2,1]:=1; a[2,2]:=0; f:= mu(a,n); exit(f[1,2]); end; BEGIN readln(n); write(fibo(n)); readln;

END.

Sử dụng 2 biến để lưu giá trị hiện tại của 2 số fibonaci. Mỗi lần sinh ra số fibonaci mới ta sẽ gán lại giá trị mới cho 2 biến này bằng đoạn code;


F1:=F0+F1;


F0:=F1-F0;


 program csc;uses crt;var n,i:integer;    f0,f1:integer;begin clrscr; write('nhap so n:'); readln(n); f0:=0; f1:=1; for i:=2 to n do begin  f1:=f0+f1;  f0:=f1-f0; end; write('so fibonaci thu n la :',f1); readkey;end.

Chương trình chạy tối đa đến N=23 với số fibonaci là 28657 . Nếu lên đến số 24 sẽ vượt quá phạm vi của biến kiểu integer.

Dãy Fibonacci là dãy vô hạn các số tự nhiên bắt đầu bằng hai phần tử 0 và 1 hoặc 1 và 1, các phần tử sau đó được thiết lập theo quy tắc mỗi phần tử luôn bằng tổng hai phần tử trước nó. Công thức truy hồi của dãy Fibonacci là:

F ( n ) := { 1 ,     khi  n = 1 ;     1 , khi  n = 2 ;     F ( n − 1 ) + F ( n − 2 ) khi  n > 2. {\displaystyle F(n):=\left\{{\begin{matrix}1\,,\qquad \qquad \qquad \quad \,\ \ \,&&{\mbox{khi }}n=1\,;\ \ \\1,\qquad \qquad \qquad \qquad \,&&{\mbox{khi }}n=2;\ \ \,\\F(n-1)+F(n-2)&&{\mbox{khi }}n>2.\end{matrix}}\right.}
Tìm công thức tường minh của các số Fibonacci F0 = 0 F1 = 1 Fn = Fn-1 Fn 2

Tìm công thức tường minh của các số Fibonacci F0 = 0 F1 = 1 Fn = Fn-1 Fn 2

Xếp các hình vuông có các cạnh là các số Fibonacci

 

Leonardo Fibonacci (1175 - 1250)

 

Một trang của Liber Abaci từ Thư viện Trung tâm Quốc gia (Florence) với dãy Fibonacci với vị trí trong chuỗi được mô tả bằng Số La Mã và giá trị bằng chữ số Ả Rập.

Dãy số Fibonacci được Fibonacci, một nhà toán học người Ý, công bố vào năm 1202 trong cuốn sách Liber Abacci - Sách về toán đồ qua 2 bài toán: Bài toán con thỏ và bài toán số các "cụ tổ" của một ong đực.

Henry Dudeney (1857 - 1930) (là một nhà văn và nhà toán học người Anh) nghiên cứu ở bò sữa, cũng đạt kết quả tương tự.

Thế kỉ XIX, nhà toán học Edouard Lucas xuất bản một bộ sách bốn tập với chủ đề toán học giải trí, ông đã dùng tên Fibonacci để gọi dãy số kết quả của bài toán từ cuốn Liber Abaci – bài toán đã sinh ra dãy Fibonacci.

2 bài toán sau đây được trích từ sách Liber Abacci do Fibonacci viết vào năm 1202. Đây là những bài toán mẫu mực dẫn đến khảo sát dãy số Fibonacci.

 

Mười ba ( F 7 ) cách sắp xếp các âm tiết dài và ngắn theo một nhịp độ dài sáu. Năm ( F 5 ) kết thúc bằng âm tiết dài và tám ( F 6 ) kết thúc bằng âm tiết ngắn.

Bài toán số con thỏ

Một đôi thỏ (gồm một thỏ đực và một thỏ cái) không sinh cho đến khi chúng đủ 2 tháng tuổi. Sau khi đủ 2 tháng tuổi,mỗi đôi thỏ sinh một đôi thỏ con (gồm một thỏ đực và một thỏ cái) mỗi tháng. Hỏi sau n tháng có bao nhiêu đôi thỏ, nếu đầu năm (tháng Giêng) có một đôi thỏ sơ sinh

 

Trong hình vẽ trên, ta quy ước:

  • Cặp thỏ nâu là cặp thỏ có độ tuổi 1 tháng.
  • Cặp thỏ được đánh dấu (màu đỏ và màu xanh) là cặp thỏ có khả năng sinh sản.

Nhìn vào hình vẽ trên ta nhận thấy:

  • Tháng Giêng và tháng Hai: Chỉ có 1 đôi thỏ.
  • Tháng Ba: đôi thỏ này sẽ đẻ ra một đôi thỏ con, do đó trong tháng này có 2 đôi thỏ.
  • Tháng Tư: chỉ có đôi thỏ ban đầu sinh con nên đến thời điểm này có 3 đôi thỏ.
  • Tháng Năm: có hai đôi thỏ (đôi thỏ đầu và đôi thỏ được sinh ra ở tháng Ba) cùng sinh con nên ở tháng này có 2 + 3 = 5 đôi thỏ.
  • Tháng Sáu: có ba đôi thỏ (2 đôi thỏ đầu và đôi thỏ được sinh ra ở tháng Tư) cùng sinh con ở thời điểm này nên đến đây có 3 + 5 = 8 đôi thỏ.

Khái quát, nếu n là số tự nhiên khác 0, gọi f(n) là số đôi thỏ có ở tháng thứ n, ta có:

  • Với n = 1 ta được f(1) = 1.
  • Với n = 2 ta được f(2) = 1.
  • Với n = 3 ta được f(3) = 2.

Do đó với n > 2 ta được: f(n) = f(n-1) + f(n-2).

Điều đó có thể được giải thích như sau: Các đôi thỏ sinh ra ở tháng n -1 không thể sinh con ở tháng thứ n, và ở tháng này đôi thỏ tháng thứ n - 2 sinh ra một đôi thỏ con nên số đôi thỏ được sinh ra ở tháng thứ n chính là giá trị của f(n - 2).

Số các "cụ tổ" của một con ong đực

Fibonacci đã mô tả dãy các tổ tiên của một con ong đực như sau: (Loài ong có thể thụ tinh đơn tính hoặc lưỡng tính). Giả sử rằng:

  • Nếu một trứng ong thụ tinh bởi chính con ong cái nó nở thành một con ong đực
  • Tuy nhiên, nếu một trứng thụ tinh bởi một ong đực nó nở thành một con ong cái.
  • Như vậy một con ong đực sẽ luôn có một mẹ, và một con ong cái sẽ có cả bố và mẹ.

 

Số cụ tổ của một con ong đực

Ta bắt đầu tính số các con ong tổ tiên của một con ong đực. Xét một con ong đực ở thế hệ thứ n. Nhìn vào hình trên ta thấy:

  • Trước một đời, thế hệ n-1: Con ong đực chỉ có một mẹ (1 ong cái).
  • Trước hai đời, thế hệ n-2: Con ong cái đời n-1 có 2 bố mẹ, một ong bố (đực) và một ong mẹ (cái)(2 con ong: 1 đực+ một cái)).
  • Trước ba đời, thế hệ n-3: Con ong cái thế hệ n-2 lại có hai bố mẹ, một ong bố (đực) và một ong mẹ (cái), và con đực thế hệ n-2 có một mẹ (3 con ong: 1 ong đực + 2 ong cái)
  • Trước bốn đời, thế hệ n-4: Hai con cái, mỗi con có 2 cha, mẹ và mỗi con đực có một mẹ (5 con ong: 2 ong đực 3 ong cái)

Tiếp tục quá trình này ta sẽ có một dãy số Fibonacci.

Kết luận

Như vậy, công việc giải quyết hai bài toán trên của Fibonacci dẫn tới việc khảo sát dãy số f(n) xác định:

  • f(0)= 0.
  • f(1)= 1.
  • f(2)= 1.
  • f(n)= f(n-1) +f(n-2) với n > 2.

Đó là dãy Fibonacci và các số hạng trong dãy được gọi là các số Fibonacci.

n F(n) n F(n) n F(n)
0 0 1 1 2 1
3 2 4 3 5 5
6 8 7 13 8 21
9 34 10 55 11 89
12 144 13 233 14 377
15 610 16 987 17 1.597
18 2.584 19 4.181 20 6.765
21 10.946 22 17.711 23 28.657
24 46.368 25 75.025 26 121.393
27 196.418 28 317.811 29 514.229
30 832.040 31 1.346.269 32 2.178.309
33 3.524.578 34 5.702.887 35 9.227.465
36 14.930.352 37 24.157.817 38 39.088.169
... ... ... ... ... ...

Người ta chứng minh được rằng công thức tổng quát cho dãy Fibonacci là:

F n = 1 5 [ ( 1 + 5 2 ) n − ( 1 − 5 2 ) n ] {\displaystyle F_{n}={\frac {1}{\sqrt {5}}}\left[{\Big (}{\frac {1+{\sqrt {5}}}{2}}{\Big )}^{n}-{\Big (}{\frac {1-{\sqrt {5}}}{2}}{\Big )}^{n}\right]}  

 

Tỷ lệ vàng

Tỷ lệ vàng φ {\displaystyle \varphi }   (phi), được đinh nghĩa là tỷ số khi chia đoạn thẳng thành hai phần sao cho tỷ lệ giữa cả đoạn ban đầu với đoạn lớn hơn bằng tỷ số giữa đoạn lớn và đoạn nhỏ. Có thể chứng minh rằng nếu quy độ dài đoạn lớn về đơn vị thì tỷ lệ này là nghiệm dương của phương trình:

1 x = x 1 + x {\displaystyle {\frac {1}{x}}={\frac {x}{1+x}}}  , hay tương đương x 2 − x − 1 = 0 , {\displaystyle x^{2}-x-1=0,\,}  

chính là số φ = ( 1 + 5 ) 2 ≈ 1.618 033 989 {\displaystyle \varphi ={\frac {(1+{\sqrt {5}})}{2}}\approx 1.618\,033\,989}  .

Công thức dạng tường minh

Cũng như mọi dãy số xác định bởi công thức đệ quy tuyến tính, các số Fibonacci có thể tìm được công thức dạng tường minh.

Ta sẽ chứng minh (công thức Binet):

F ( n ) = φ n − ( 1 − φ ) n 5 {\displaystyle F\left(n\right)={{\varphi ^{n}-(1-\varphi )^{n}} \over {\sqrt {5}}}}  , trong đó φ {\displaystyle \varphi }   là tỷ lệ vàng ở trên.

Như vậy, từ hệ thức truy hồi Fibonacci ta có:

F ( n + 2 ) − F ( n + 1 ) − F ( n ) = 0. {\displaystyle F(n+2)-F(n+1)-F(n)=0.\,}  

sẽ dẫn tới phương trình xác định tỷ lệ vàng

x 2 − x − 1 = 0 , {\displaystyle x^{2}-x-1=0,\,}  

(là phương trình đa thức dặc trưng của hồi quy).

Chứng minh

Chứng minh (bằng quy nạp):

Một nghiệm bất kỳ của phương trình trên thoả mãn tính chất x 2 = x + 1 , {\displaystyle {\begin{matrix}x^{2}=x+1,\end{matrix}}\,}  . Nhân hai vế với x n − 1 {\displaystyle x^{n-1}\,}   có:

x n + 1 = x n + x n − 1 {\displaystyle x^{n+1}=x^{n}+x^{n-1}\,}  

Chú ý rằng, theo định nghĩa φ {\displaystyle \varphi }   là một nghiệm của phương trình và nghiệm kia là 1 − φ {\displaystyle 1-\varphi }  . Do đó:

φ n + 1 {\displaystyle \varphi ^{n+1}\,}   = φ n + φ n − 1 {\displaystyle =\varphi ^{n}+\varphi ^{n-1}\,}  
( 1 − φ ) n + 1 {\displaystyle (1-\varphi )^{n+1}\,}   = ( 1 − φ ) n + ( 1 − φ ) n − 1 {\displaystyle =(1-\varphi )^{n}+(1-\varphi )^{n-1}\,}  

Bây giờ định nghĩa hàm:

F a , b ( n ) = a φ n + b ( 1 − φ ) n {\displaystyle F_{a,b}(n)=a\varphi ^{n}+b(1-\varphi )^{n}}   xác định với mọi số thực a , b {\displaystyle a,b\,}  

Tất cả các hàm này thỏa mãn hệ thức truy hồi Fibonacci, thật vậy:

F a , b ( n + 1 ) {\displaystyle F_{a,b}(n+1)\,}   = a φ n + 1 + b ( 1 − φ ) n + 1 {\displaystyle =a\varphi ^{n+1}+b(1-\varphi )^{n+1}}  
= a ( φ n + φ n − 1 ) + b ( ( 1 − φ ) n + ( 1 − φ ) n − 1 ) {\displaystyle =a(\varphi ^{n}+\varphi ^{n-1})+b((1-\varphi )^{n}+(1-\varphi )^{n-1})}  
= a φ n + b ( 1 − φ ) n + a φ n − 1 + b ( 1 − φ ) n − 1 {\displaystyle =a{\varphi ^{n}+b(1-\varphi )^{n}}+a{\varphi ^{n-1}+b(1-\varphi )^{n-1}}}  
= F a , b ( n ) + F a , b ( n − 1 ) {\displaystyle =F_{a,b}(n)+F_{a,b}(n-1)\,}  

Bây giờ chọn a = 1 / 5 {\displaystyle a=1/{\sqrt {5}}}   b = − 1 / 5 {\displaystyle b=-1/{\sqrt {5}}}  . Tiếp tuc:

F a , b ( 0 ) = 1 5 − 1 5 = 0 {\displaystyle F_{a,b}(0)={\frac {1}{\sqrt {5}}}-{\frac {1}{\sqrt {5}}}=0\,\!}  

F a , b ( 1 ) = φ 5 − ( 1 − φ ) 5 = − 1 + 2 φ 5 = − 1 + ( 1 + 5 ) 5 = 1 , {\displaystyle F_{a,b}(1)={\frac {\varphi }{\sqrt {5}}}-{\frac {(1-\varphi )}{\sqrt {5}}}={\frac {-1+2\varphi }{\sqrt {5}}}={\frac {-1+(1+{\sqrt {5}})}{\sqrt {5}}}=1,}  

những chứng minh ở trên chứng tỏ rằng

F ( n ) = φ n − ( 1 − φ ) n 5 {\displaystyle F(n)={{\varphi ^{n}-(1-\varphi )^{n}} \over {\sqrt {5}}}}   với mọi n.

Chú ý rằng, với hai giá trị khởi đầu bất kỳ của a , b {\displaystyle a,b}  , hàm F a , b ( n ) {\displaystyle F_{a,b}(n)\,}   là công thức tường minh cho một loạt các hệ thức truy hồi.

Giới hạn của thương kế tiếp

Johannes Kepler, đã chứng minh sự hội tụ sau:

F ( n + 1 ) F ( n ) {\displaystyle {\frac {F(n+1)}{F(n)}}\,}  hội tụ tới tỷ lệ vàng φ {\displaystyle \varphi }   (phi)

Thực ra kết quả này đúng với mọi cặp giá trị khởi đầu, trừ (0, 0).

Từ công thức tường minh, ta có, với mọi a ≠ 0 , b ≠ 0 {\displaystyle a\neq 0,b\neq 0}  :

lim n → ∞ F a , b ( n + 1 ) F a , b ( n ) {\displaystyle \lim _{n\to \infty }{\frac {F_{a,b}(n+1)}{F_{a,b}(n)}}}   = lim n → ∞ a φ n + 1 − b ( 1 − φ ) n + 1 a φ n − b ( 1 − φ ) n {\displaystyle =\lim _{n\to \infty }{\frac {a\varphi ^{n+1}-b(1-\varphi )^{n+1}}{a\varphi ^{n}-b(1-\varphi )^{n}}}}  
= lim n → ∞ a φ − b ( 1 − φ ) ( 1 − φ φ ) n a − b ( 1 − φ φ ) n {\displaystyle =\lim _{n\to \infty }{\frac {a\varphi -b(1-\varphi )({\frac {1-\varphi }{\varphi }})^{n}}{a-b({\frac {1-\varphi }{\varphi }})^{n}}}}  
= φ {\displaystyle =\varphi }  ,

vì thế, như dễ dàng thấy, | 1 − φ φ | < 1 {\displaystyle \left|{\frac {1-\varphi }{\varphi }}\right|<1}   và như vậy lim n → ∞ ( 1 − φ φ ) n = 0 {\displaystyle \lim _{n\to \infty }\left({\frac {1-\varphi }{\varphi }}\right)^{n}=0}  

Chứng minh

Việc giải một hệ thức truy hồi tổng quát dựa trên việc giải phương trình đặc trưng của nó. Lấy ví dụ như, cho hệ thức truy hồi dạng an = c1an-1+ c2an-2 +... +ckan-k (1)

Khi đó nghiệm của hệ là r sẽ có dạng: rn = c1rn-1 + c2rn-2 +c3rn-3 +...+ckrn-k

Giải phương trình trên ta được các nghiệm phân biệt r1,r2,....,rn-1.Đồng thời ta có an=b1r1n +b2r2n +...+bn-1rn-1n (2)

Do vậy giải hệ phương trình (2) với a1,a2,.., an cho trước ta sẽ nhận được các giá trị b1,b2,...,bn-1, thay trở lại ta sẽ có phương trình tổng quát dành cho hệ thức truy hồi (1)

Từ hệ thức truy hồi ta có phương trình liên hệ lặp tuyến tính 2 chiều mô tả dãy Fibonacci là

( F k + 2 F k + 1 ) = ( 1 1 1 0 ) ( F k + 1 F k ) {\displaystyle {F_{k+2} \choose F_{k+1}}={\begin{pmatrix}1&1\\1&0\end{pmatrix}}{F_{k+1} \choose F_{k}}}  

có thể ký hiệu lại dưới dạng

F → k + 1 = A F → k , {\displaystyle {\vec {F}}_{k+1}=\mathbf {A} {\vec {F}}_{k},}  

từ điều này suy ra: F → n = A n F → 0 {\displaystyle {\vec {F}}_{n}=\mathbf {A} ^{n}{\vec {F}}_{0}}  . Các giá trị riêng của ma trận A φ = 1 2 ( 1 + 5 ) {\displaystyle \varphi ={\frac {1}{2}}(1+{\sqrt {5}})}   − φ − 1 = 1 2 ( 1 − 5 ) {\displaystyle -\varphi ^{-1}={\frac {1}{2}}(1-{\sqrt {5}})}   tương ứng với các vectơ riêng

μ → = ( φ 1 ) {\displaystyle {\vec {\mu }}={\varphi \choose 1}}  

ν → = ( − φ − 1 1 ) . {\displaystyle {\vec {\nu }}={-\varphi ^{-1} \choose 1}.}  

Ta có vectơ của giá trị ban đầu có dạng

F → 0 = ( 1 0 ) = 1 5 μ → − 1 5 ν → , {\displaystyle {\vec {F}}_{0}={1 \choose 0}={\frac {1}{\sqrt {5}}}{\vec {\mu }}-{\frac {1}{\sqrt {5}}}{\vec {\nu }},}  

suy ra biểu thức số hạng thứ n

F → n = 1 5 A n μ → − 1 5 A n ν → = 1 5 φ n μ → − 1 5 ( − φ ) − n ν →   = 1 5 ( 1 + 5 2 ) n ( φ 1 ) − 1 5 ( 1 − 5 2 ) n ( − φ − 1 1 ) , {\displaystyle {\begin{aligned}{\vec {F}}_{n}&={\frac {1}{\sqrt {5}}}A^{n}{\vec {\mu }}-{\frac {1}{\sqrt {5}}}A^{n}{\vec {\nu }}\\&={\frac {1}{\sqrt {5}}}\varphi ^{n}{\vec {\mu }}-{\frac {1}{\sqrt {5}}}(-\varphi )^{-n}{\vec {\nu }}~\\&={\cfrac {1}{\sqrt {5}}}\left({\cfrac {1+{\sqrt {5}}}{2}}\right)^{n}{\varphi \choose 1}-{\cfrac {1}{\sqrt {5}}}\left({\cfrac {1-{\sqrt {5}}}{2}}\right)^{n}{-\varphi ^{-1} \choose 1},\end{aligned}}}  

Từ đây ta có thể trực tiếp rút ra biểu thức dạng đóng cho số hạng thứ n trong dãy Fibonacci:

F n = 1 5 ( 1 + 5 2 ) n − 1 5 ( 1 − 5 2 ) n . {\displaystyle F_{n}={\cfrac {1}{\sqrt {5}}}\left({\cfrac {1+{\sqrt {5}}}{2}}\right)^{n}-{\cfrac {1}{\sqrt {5}}}\left({\cfrac {1-{\sqrt {5}}}{2}}\right)^{n}.}  

Một cách tuơng đương, ta có thể tính toán ma trận lũy thừa bằng cách chéo hóa ma trận A sử dụng phân tích riêng của nó, với Λ {\displaystyle \Lambda }   là ma trận đường chéo:

A = S Λ S − 1 , A n = S Λ n S − 1 , {\displaystyle {\begin{aligned}A&=S\Lambda S^{-1},\\A^{n}&=S\Lambda ^{n}S^{-1},\end{aligned}}}  

trong đó Λ = ( φ 0 0 − φ − 1 ) {\displaystyle \Lambda ={\begin{pmatrix}\varphi &0\\0&-\varphi ^{-1}\end{pmatrix}}}   S = ( φ − φ − 1 1 1 ) . {\displaystyle S={\begin{pmatrix}\varphi &-\varphi ^{-1}\\1&1\end{pmatrix}}.}  

Vì vậy biểu thức dạng đóng cho số hạng thứ n của dãy Fibonacci được cho bởi phương trình:

( F n + 1 F n ) = A n ( F 1 F 0 ) = S Λ n S − 1 ( F 1 F 0 ) = S ( φ n 0 0 ( − φ ) − n ) S − 1 ( F 1 F 0 ) = ( φ − φ − 1 1 1 ) ( φ n 0 0 ( − φ ) − n ) 1 5 ( 1 φ − 1 − 1 φ ) ( 1 0 ) , {\displaystyle {\begin{aligned}{F_{n+1} \choose F_{n}}&=A^{n}{F_{1} \choose F_{0}}\\&=S\Lambda ^{n}S^{-1}{F_{1} \choose F_{0}}\\&=S{\begin{pmatrix}\varphi ^{n}&0\\0&(-\varphi )^{-n}\end{pmatrix}}S^{-1}{F_{1} \choose F_{0}}\\&={\begin{pmatrix}\varphi &-\varphi ^{-1}\\1&1\end{pmatrix}}{\begin{pmatrix}\varphi ^{n}&0\\0&(-\varphi )^{-n}\end{pmatrix}}{\frac {1}{\sqrt {5}}}{\begin{pmatrix}1&\varphi ^{-1}\\-1&\varphi \end{pmatrix}}{1 \choose 0},\end{aligned}}}  

thực hiện nhân ma trận, tiếp tục ta suy ra được công thức Binet

F n = φ n − ( − φ ) − n 5 . {\displaystyle F_{n}={\cfrac {\varphi ^{n}-(-\varphi )^{-n}}{\sqrt {5}}}.}  

Ma trận A có định thức là −1, và vì thế nó là một ma trận 2×2 đơn môđun (unimodular). Một ma trận đơn môđun là ma trận vuông có định thức là 1 hoặc −1.

Tính chất này có thể được hiểu theo cách biểu diễn liên phân số cho tỉ lệ vàng:

φ = 1 + 1 1 + 1 1 + 1 1 + ⋱ . {\displaystyle \varphi =1+{\cfrac {1}{1+{\cfrac {1}{1+{\cfrac {1}{1+\ddots }}}}}}.}  

Các số Fibonacci chính là tỉ số giữa hai giản phân liên tiếp của liên phân số cho φ, mà ma trận được tạo ra từ các giản phân liên tiếp của một phân số liên tục bất kỳ thì có định thức là +1 hoặc −1, vậy nó là ma trận đơn môđun. Ta có biểu diễn ma trận đưa ra biểu thức dạng đóng sau đây cho các số Fibonacci:

( 1 1 1 0 ) n = ( F n + 1 F n F n F n − 1 ) . {\displaystyle {\begin{pmatrix}1&1\\1&0\end{pmatrix}}^{n}={\begin{pmatrix}F_{n+1}&F_{n}\\F_{n}&F_{n-1}\end{pmatrix}}.}  

Lấy định thức cho hai vế của phuơng trình này, ta có được đẳng thức Cassini:

( − 1 ) n = F n + 1 F n − 1 − F n 2 . {\textstyle (-1)^{n}=F_{n+1}F_{n-1}-F_{n}^{2}.}  

Hơn nữa, vì An Am = An+m cho bất kỳ ma trận vuông A, có thể suy ra các đẳng thức bên dưới (chúng được rút ra từ hai hệ số khác nhau của ma trận tích, dễ dàng suy ra đẳng thức thứ hai từ cái đầu tiên bằng cách thay n bởi n + 1),

F m F n + F m − 1 F n − 1 = F m + n − 1 , F m F n + 1 + F m − 1 F n = F m + n . {\displaystyle {\begin{aligned}{F_{m}}{F_{n}}+{F_{m-1}}{F_{n-1}}&=F_{m+n-1},\\F_{m}F_{n+1}+F_{m-1}F_{n}&=F_{m+n}.\end{aligned}}}  

cụ thể, với m = n,

F 2 n − 1 = F n 2 + F n − 1 2 F 2 n = ( F n − 1 + F n + 1 ) F n = ( 2 F n − 1 + F n ) F n . {\displaystyle {\begin{aligned}F_{2n-1}&=F_{n}^{2}+F_{n-1}^{2}\\F_{2n}&=(F_{n-1}+F_{n+1})F_{n}\\&=(2F_{n-1}+F_{n})F_{n}.\end{aligned}}}  

Hai đẳng thức cuối cùng cho ta một cách tính đệ quy các số Fibonacci với O(log(n)) phép toán số học trong thời gian O(M(n) log(n)), trong đó M(n) là thời gian để thực hiện phép nhân hai số có n chữ số. Thời gian tính toán số hạng thứ n của dãy Fibonacci sử dụng công thức này tương tự như cách tính với biểu thức ma trận dạng đóng, nhưng với ít hơn các bước không cần thiết nếu cần phải tránh thực hiện việc tính toán lại một số Fibonacci đã được tính ra trước đó (đệ quy có nhớ).[1]

F(n + 1) = F(n) + F(n − 1)F(0) + F(1) + F(2) +... + F(n) = F(n + 2) − 1F(1) + 2 F(2) + 3 F(3) +... + n F(n) = n F(n + 2) − F(n + 3) + 2

Tổng vô hạn các nghịch đảo của các số Fibonacci có tính chất tương tự các hàm theta.

Giá trị mang tên hằng số nghịch đảo Fibonacci

C = ∑ k = 1 ∞ 1 F k = 3.359885 … {\displaystyle C=\sum _{k=1}^{\infty }{\frac {1}{F_{k}}}=3.359885\dots }  

đã được chứng minh là số vô tỷ bởi Richard André-Jeannin, nhưng chưa biết một biểu thức dạng chính xác của nó.

Dùng Fn-2 = Fn - Fn-1, có thể mở rộng các số Fibonacci cho các chỉ số nguyên âm. Khi đó ta có:... -8, -5, -3, -2, -1, 1, 0, 1, 1, 2, 3, 5, 8,... và F-n = -(-1)nFn.

Không gian vectơ

Thuật ngữ dãy Fibonacci cũng được dùng cho các hàm g từ tập các số nguyên tới một trường F thoả mãn g(n+2) = g(n) + g(n+1). Các hàm này có thể biểu diễn dưới dạng

g(n) = F(n)g(1) + F(n-1)g(0),

do vậy các dãy Fibonacci hình thành một không gian vectơ với hàm F(n) và F(n-1) là một cơ sở.

Tổng quát hơn, giá trị của g có thể lấy trong một nhóm abel (xem như một z-module). Khi đó dãy Fibonacci là một Z-module 2 chiều.

Các dãy số nguyên tương tự

Các số Lucas

Đặc biệt, dãy Fibonacci L với L(1) = 1 và L(2) = 3 được gọi là số Lucas, theo tên của Edouard Lucas. Dãy Lucas đã được Leonhard Euler đề cập đến năm 1748, trong Nhập môn giải tích vô hạn (Introductio in Analysin Infinitorum). Về ý nghĩa, các sô Lucas L(n) là luỹ thừa bậc n của tỷ lệ vàng

( 1 2 ( 1 + 5 ) ) n = 1 2 ( L ( n ) + F ( n ) 5 ) . {\displaystyle \left({\frac {1}{2}}\left(1+{\sqrt {5}}\right)\right)^{n}={\frac {1}{2}}\left(L(n)+F(n){\sqrt {5}}\right).}  

Các số Lucas quan hệ với các số Fibonacci theo hệ thức

L ( n ) = F ( n − 1 ) + F ( n + 1 ) . {\displaystyle L\left(n\right)=F\left(n-1\right)+F\left(n+1\right).\,}  

Một tổng quát hoá của dãy Fibonacci là các dãy Lucas. Nó có thể định nghĩa như sau:

U(0) = 0 U(1) = 1 U(n + 2) = PU(n + 1) − QU(n)

trong đó dãy Fibonacci là trường hợp đặc biệt khi P = 1 và Q = −1. Một dạng khác của các dãy Lucas bắt đầu với V(0) = 2, V(1) = P. Các dãy này có ứng dụng trong lý thuyết số để kiểm tra tính nguyên tố.

Các dãy Padovan là tương tự với hệ thức truy hồi P(n) = P(n − 2) + P(n − 3).

Các số Tribonacci

Các số tribonacci tương tự các số Fibonacci, nhưng thay vì khởi động với hai phần tử, dãy này khởi động với ba phân tử và mỗi số tiếp theo bằng tổng của ba phần tử đứng trước. Sau đây là một số sô tribonacci   A000073:

0, 0, 1, 1, 2, 4, 7, 13, 24, 44, 81, 149, 274, 504, 927, 1705, 3136, 5768, 10609, 19513, 35890, 66012, …

Giá trị của hằng số tribonacci là tỷ số (tỷ lệ mà các số tribonacci liền kề có xu hướng). Nó là nghiệm của đa thức x3 − x2 − x − 1, xấp xỉ 1.83929, và cũng thoả mãn phương trình x + x−3 = 2. Nó có vai trò quan trọng khi nghiên cứu khối snub.

Các số tribonacci cũng được cho bởi

T ( n ) = [ 3 b ( 1 3 ( a + + a − + 1 ) ) n b 2 − 2 b + 4 ] {\displaystyle T(n)=\left[3\,b{\frac {\left({\frac {1}{3}}\left(a_{+}+a_{-}+1\right)\right)^{n}}{b^{2}-2b+4}}\right]}  

ở đây cặp dấu ngoặc vuông ngoài là ký hiệu của hàm phần nguyên và

a ± = ( 19 ± 3 33 ) 1 / 3 {\displaystyle a_{\pm }=\left(19\pm 3{\sqrt {33}}\right)^{1/3}}   b = ( 586 + 102 33 ) 1 / 3 {\displaystyle b=\left(586+102{\sqrt {33}}\right)^{1/3}}  

(Simon Plouffe, 1993).[1] Lưu trữ 2006-04-05 tại Wayback Machine

Các tổng quát hóa khác

Các đa thức Fibonacci là một tổng quát hoá khác của dãy Fibonacci.

Một dãy Fibonacci ngẫu nhiên có thể xác định bằng việc ném đồng xu cho mỗi n trong dãy và lấy F(n)=F(n−1)+F(n−2) nếu đồng xu sấp và lấy F(n)=F(n−1)−F(n−2) nếu đồng xu ngửa.

Có thể định nghĩa dãy "ngẫu nhiên Fibonacci" là dãy các số fn xác định theo đệ quy

f0 = 1, f1 = 1, and f n = { f n − 1 + f n − 2 , with probability 0.5 f n − 1 − f n − 2 , with probability 0.5 {\displaystyle f_{n}=\left\{{\begin{matrix}f_{n-1}+f_{n-2},&{\mbox{with probability 0.5}}\\f_{n-1}-f_{n-2},&{\mbox{with probability 0.5}}\end{matrix}}\right.}  

Hầu chắc chắn rằng căn bậc n của trị tuyệt đối của số hạng thứ n hội tụ về một hằng số khi n tăng vô hạn.

| f n | n → 1.13198824 …  as  n → ∞ . {\displaystyle {\sqrt[{n}]{|f_{n}|}}\to 1.13198824\dots {\mbox{ as }}n\to \infty .}  

Một số các số Fibonacci cũng là các số nguyên tố như: 2, 3, 5, 13, 89, 233, 1597, 28657, 514229,…. Chưa biết chắc rằng có vô hạn số nguyên tố Fibonacci không.

Cho xâu Fibonacci được định nghĩa đệ quy như sau:

F n := F ( n ) := { b khi  n = 0 ; a khi  n = 1 ; F ( n − 1 ) + F ( n − 2 ) khi  n > 1. {\displaystyle F_{n}:=F(n):={\begin{cases}b&{\mbox{khi }}n=0;\\a&{\mbox{khi }}n=1;\\F(n-1)+F(n-2)&{\mbox{khi }}n>1.\\\end{cases}}}  ,

trong đó dấu "+" ký hiệu cho phép ghép hai xâu.

Hãy viết giải thuật (đệ quy hoặc phi đệ quy) tính độ dài xâu.

Hãy cho biết giá trị của chuỗi với n = 7

Dãy các xâu Fibonacci khởi đầu là:

b, a, ab, aba, abaab, abaababa, abaababaabaab, …

Độ dài của mỗi xâu Fibonacci chính là số Fibonacci, và có một xâu Fibonacci tương ứng với mỗi số Fibonacci.

Các xâu Fibonacci cung cấp dữ liệu vào cho các minh dụ cho một vài thuật toán máy tính.

Dãy Fibonacci xuất hiện ở khắp nơi trong thiên nhiên. Những chiếc lá trên một nhành cây mọc cách nhau những khoảng tương ứng với dãy số Fibonacci.

Các số Fibonacci xuất hiện trong những bông hoa. Hầu hết các bông hoa có số cánh hoa là một trong các số: 3, 5, 8, 13, 21, 34, 55 hoặc 89. Hoa loa kèn có 3 cánh, Họ Mao lương có 5 cánh, phi yến thường có 8 cánh, hoa cúc vạn thọ có 13 cánh, hoa cúc tây có 21 cánh, hoa cúc thường có 34, hoặc 55 hoặc 89 cánh.

Nếu quan sát các 'mắt' trên vỏ của một trái thơm già, bạn có thể may mắn tìm thấy được số mắt trên 2 đường vòng cung chéo trên vỏ trái thơm là 2 số Fibonacci nào đó, thí dụ 13 và 21.

 

Các số Fibonacci trong hoa hướng dương. Những nụ nhỏ sẽ kết thành hạt ở đầu bông hoa hướng dương được xếp thành hai tập các hình xoắn ốc: một tập cuộn theo chiều kim đồng hồ, còn tập kia cuộn ngược theo chiều kim đồng hồ. Số các đường xoắn ốc hướng thuận chiều kim đồng hồ thường là 34 còn ngược chiều kim đồng hồ là 55. Đôi khi các số này là 55 và 89, và thậm chí là 89 và 144. Tất cả các số này đều là các số Fibonacci kết tiếp nhau (tỷ số của chúng tiến tới Tỷ lệ vàng)

 

Đầu hoa cúc vạn thọ thể hiện sự sắp xếp theo xoắn ốc 21 (xanh lam) và 13 (xanh dương).

 

Hình minh họa mô hình Vogel cho n = 1 ... 500

 

Hoa loa kèn có 3 cánh

  • Số đối-Fibonacci
  • Số dẻo
  • Số Padovan
  • Số Perrin

  1. ^ Dijkstra, Edsger W. (1978), In honour of Fibonacci (PDF)

  • Donald Knuth, The Art of Computer Programming, third edition (1997)
  • Hrant Arakelian, Mathematics and History of the Golden Section. Logos (2014), 404 p. ISBN 978-5-98704-663-0, (rus.) 
  • Alexey Stakhov, Museum of Harmony and Golden Section Lưu trữ 2019-04-05 tại Wayback Machine, (undated, 2005 or earlier).
  • Subhash Kak, The Golden Mean and the Physics of Aesthetics, Archive of Physics, (2004).
  • Ron Knott, The Golden Section: Phi Lưu trữ 2006-12-05 tại Wayback Machine, (2005).
  • Ron Knott, Representations of Integers using Fibonacci numbers Lưu trữ 2007-10-30 tại Wayback Machine, (2004).
  • Bob Johnson, Fibonacci resources Lưu trữ 2008-12-31 tại Wayback Machine, (2004)
  • Donald E. Simanek, Fibonacci Flim-Flam, (undated, 2005 or earlier).
  • Rachel Hall, Hemachandra's application to Sanskrit poetry Lưu trữ 2012-07-16 tại Wayback Machine, (undated; 2005 or earlier).
  • Alex Vinokur, Computing Fibonacci numbers on a Turing Machine Lưu trữ 2005-02-06 tại Wayback Machine, (2003).
  • (no author given), Fibonacci Numbers Information Lưu trữ 2005-08-29 tại Wayback Machine, (undated, 2005 or earlier).
  • Wikisource, Table of first 1000 Fibonacci numbers, (2005).
  • Fibonacci Numbers and the Golden Section Lưu trữ 2007-02-07 tại Wayback Machine - Ron Knott's Surrey University multimedia web site on the Fibonacci numbers, the Golden section and the Golden string.
  • The Fibonacci Association Lưu trữ 2005-10-01 tại Wayback Machine incorporated in 1963, focuses on Fibonacci numbers and related mathematics, emphasizing new results, research proposals, challenging problems, and new proofs of old ideas.
  • Dawson Merrill's Fib-Phi link page.
  • Fibonacci primes

Lấy từ “https://vi.wikipedia.org/w/index.php?title=Dãy_Fibonacci&oldid=68395393”