Chuyển đến nội dung chính

Cấp số nhân: Công thức, tính hội tụ và ví dụ

Hướng dẫn thực hành về cấp số nhân bao quát công thức tổng hữu hạn và vô hạn, điều kiện hội tụ, và các ứng dụng thực tế trong tài chính, vật lý và khoa học máy tính.
Đã cập nhật 4 thg 5, 2026  · 8 phút đọc

Bạn từng thắc mắc làm sao 1 + 2 + 4 + 8 + ... có thể được biểu diễn bằng một công thức gọn gàng duy nhất chưa?

Dãy tổng (series) đơn giản là tổng các hạng tử của một dãy số (sequence). Khi các hạng tử tăng (hoặc giảm) bằng cách mỗi lần nhân với cùng một số, bạn có một cấp số nhân. Hệ số nhân không đổi đó gọi là công bội (common ratio), và chính nó làm nên toàn bộ cấu trúc. 

Cấp số nhân xuất hiện khắp nơi, từ khoản vay, suy giảm tín hiệu, đến phân tích thuật toán. Biết cách làm việc với chúng là kỹ năng toán học thiết yếu cho bất kỳ ai làm việc với dữ liệu.

Trong bài viết này, tôi sẽ trình bày các công thức chính, giải thích khi nào một cấp số nhân vô hạn thực sự có tổng hữu hạn, và đi qua các ví dụ thực tế.

Nếu bạn đã biết các kiến thức cơ bản về Python, bạn đã sẵn sàng học những điều thú vị. Hãy đăng ký khóa học Nền tảng Học máy bằng Python kéo dài 16 giờ của chúng tôi.

Cấp số nhân là gì?

Cấp số nhân là tổng các hạng tử mà mỗi hạng tử thu được bằng cách nhân hạng tử trước đó với một công bội không đổi.

Ví dụ, xét 1 + 2 + 4 + 8 + 16. Mỗi hạng tử gấp đôi hạng tử liền trước. Yếu tố gấp đôi đó chính là điều khiến nó là cấp số nhân.

Có hai giá trị xác định mọi cấp số nhân:

  • Hạng tử đầu (a) - giá trị khởi đầu của dãy tổng
  • Công bội (r) - hệ số nhân không đổi áp dụng cho mỗi hạng tử để được hạng tử tiếp theo

Nếu a = 1r = 2, bạn được 1 + 2 + 4 + 8 + .... Nếu a = 3r = 0.5, bạn được 3 + 1.5 + 0.75 + ... Cấu trúc luôn như vậy.

Đó là toàn bộ ý tưởng. Mỗi cấp số nhân chỉ là phép nhân lặp lại, bắt đầu từ a và được co giãn bởi r ở mỗi bước.

Cấp số nhân rời rạc (sequence) vs cấp số nhân (series)

Hai thuật ngữ này thường bị lẫn lộn, nhưng sự khác biệt có thể giải thích trong đúng một câu.

Cấp số nhân dưới dạng dãy (sequence) chỉ là một danh sách số: 1, 2, 4, 8, 16, trong khi cấp số nhân dưới dạng tổng (series) là những gì bạn nhận được khi cộng chúng lại: 1 + 2 + 4 + 8 + 16 = 31.

Các số là giống hệt nhau, nhưng phép toán là khác nhau. Dãy thì liệt kê, dãy tổng thì cộng lại.

Công thức cho cấp số nhân hữu hạn

Tổng của n hạng tử đầu tiên của một cấp số nhân được xác định bởi công thức sau:

Sum of the first n terms formula

Công thức tổng n hạng tử đầu tiên

Trong đó:

  • a = hạng tử đầu

  • r = công bội

  • n = số lượng hạng tử

Hãy đi qua một ví dụ đơn giản. Giả sử bạn muốn cộng 4 hạng tử đầu của 1 + 2 + 4 + 8. Ở đây, a = 1, r = 2, và n = 4.

Simple geometric series example

Ví dụ cấp số nhân đơn giản

Bạn có thể tự kiểm chứng: 1 + 2 + 4 + 8 = 15. Công thức đưa bạn đến kết quả chỉ trong một bước, điều này quan trọng khi n lớn.

Cấp số nhân vô hạn và tính hội tụ

Đây là một khái niệm không thường gặp: một dãy tổng vô hạn có thể có tổng hữu hạn.

Xét 1 + 0.5 + 0.25 + 0.125 + .... Bạn có thể tiếp tục cộng các hạng tử mãi, nhưng tổng không bao giờ vượt quá 2. Đó là vì mỗi hạng tử mới nhỏ hơn hạng tử trước - đủ nhỏ để tổng tiến dần đến một giá trị cố định thay vì tăng vô hạn.

Hành vi này gọi là hội tụ, và nó chỉ xảy ra dưới một điều kiện: |r| < 1.

Khi công bội nằm giữa -1 và 1 (loại trừ), mỗi hạng tử sẽ nhỏ dần khi bạn đi dọc theo dãy tổng. Các hạng tử tiến về 0, nghĩa là cộng thêm nữa đóng góp ngày càng ít vào tổng. Tổng sẽ ổn định.

Nếu |r| ≥ 1, các hạng tử không nhỏ lại. Chúng giữ nguyên hoặc tăng, và tổng cứ tiếp tục tăng. Đó là dãy phân kỳ - không có tổng hữu hạn.

Dấu giá trị tuyệt đối quanh r là điều cần chú ý. Công bội -0.5 cũng hội tụ, vì các hạng tử luân phiên dấu nhưng vẫn nhỏ dần về 0.

Công thức cho cấp số nhân vô hạn

Khi |r| < 1, bạn có thể cộng một cấp số nhân vô hạn bằng một công thức duy nhất:

Infinite geometric series formula

Công thức cấp số nhân vô hạn

Trong đó a là hạng tử đầu và r là công bội. Thế thôi - không cần n, vì dãy tổng không bao giờ dừng.

Hãy dùng ví dụ ở phần trước: 1 + 0.5 + 0.25 + 0.125 + .... Ở đây, a = 1r = 0.5.

Infinite geometric series example

Ví dụ cấp số nhân vô hạn

Tổng vô hạn chính xác là 2. Bạn có thể cộng mãi nhưng không bao giờ vượt quá nó.

Điều quan trọng cần lưu ý là công thức này chỉ hoạt động khi |r| < 1. Nếu dãy phân kỳ, công thức sẽ không còn hiệu lực và cho ra kết quả vô nghĩa. Hãy luôn kiểm tra điều kiện hội tụ trước khi áp dụng.

Vì sao tính hội tụ quan trọng

Không phải mọi dãy tổng vô hạn đều tiến về một tổng hữu hạn. Một số chỉ đơn giản là tiếp tục tăng.

Xét 1 + 2 + 4 + 8 + .... Ở đây r = 2, nghĩa là mỗi hạng tử lớn hơn hạng tử trước. Tổng không có giới hạn - nó tăng vô hạn. Đó là một dãy phân kỳ, và áp dụng công thức tổng vô hạn cho nó sẽ cho kết quả vô nghĩa.

Điều tương tự xảy ra khi r = 1. Dãy 3 + 3 + 3 + 3 + ... không bao giờ ngừng cộng dồn, nên không có tổng hữu hạn để nói tới.

Đó là lý do tại sao việc kiểm tra |r| < 1 trước khi dùng công thức là bắt buộc. Nếu dãy phân kỳ, công thức không hỏng theo cách hiển nhiên - nó chỉ cho bạn một con số có vẻ hợp lý nhưng hoàn toàn sai.

Cấp số nhân trong Python

Hãy đưa mọi thứ đã đề cập vào mã. Tôi sẽ hiện thực cả công thức tổng hữu hạn lẫn vô hạn, kiểm chứng kết quả, và trực quan hóa cách tổng từng phần ứng xử khi thêm nhiều hạng tử.

Cấp số nhân hữu hạn

Đây là toàn bộ logic Python bạn cần để hiện thực công thức cấp số nhân hữu hạn:

def finite_geometric_sum(a, r, n):
    if r == 1:
        return a * n
    return a * (1 - r**n) / (1 - r)

result = finite_geometric_sum(a=1, r=2, n=4)
print(f"Finite sum (a=1, r=2, n=4): {result}")

Finite geometric series in Python

Cấp số nhân hữu hạn trong Python

Cấp số nhân vô hạn

Câu chuyện tương tự với dãy vô hạn, bạn chỉ cần phát sinh lỗi nếu vi phạm điều kiện:

def infinite_geometric_sum(a, r):
    if abs(r) >= 1:
        raise ValueError(f"Series diverges for |r| >= 1. Got r={r}.")
    return a / (1 - r)

# Example: 1 + 0.5 + 0.25 + ... (a=1, r=0.5)
result = infinite_geometric_sum(a=1, r=0.5)
print(f"Infinite sum (a=1, r=0.5): {result}")

Infinite geometric series in Python

Cấp số nhân vô hạn trong Python

Hàm sẽ phát sinh lỗi khi |r| >= 1 để bạn không âm thầm nhận được một đáp án sai.

Trực quan hóa tính hội tụ

Đây là phần thú vị. Với dãy hội tụ, tổng từng phần sẽ tiến dần đến giới hạn lý thuyết khi n tăng. Hãy vẽ đồ thị điều đó.

import numpy as np
import matplotlib.pyplot as plt

COLOR_DARK = "#1a1a2e"
COLOR_GREEN = "#03EF62"
COLOR_LIGHT_GRAY = "#cccccc"

a, r = 1, 0.5
n_terms = 30
theoretical_limit = infinite_geometric_sum(a, r)

# Compute partial sums
terms = a * r ** np.arange(n_terms)
partial_sums = np.cumsum(terms)

# Plot
fig, ax = plt.subplots(figsize=(10, 5), facecolor=COLOR_DARK)
ax.set_facecolor(COLOR_DARK)

ax.plot(range(1, n_terms + 1), partial_sums, color=COLOR_GREEN, linewidth=2, label="Partial sums")
ax.axhline(y=theoretical_limit, color=COLOR_LIGHT_GRAY, linewidth=1, linestyle="--", label=f"Limit = {theoretical_limit}")

ax.scatter(range(1, n_terms + 1), partial_sums, color=COLOR_LIGHT_GRAY, s=30, zorder=3)

# Style
for spine in ax.spines.values():
    spine.set_visible(False)
ax.spines["bottom"].set_visible(True)
ax.spines["bottom"].set_color(COLOR_LIGHT_GRAY)
ax.spines["bottom"].set_alpha(0.3)

ax.tick_params(colors=COLOR_LIGHT_GRAY)
ax.xaxis.label.set_color(COLOR_LIGHT_GRAY)
ax.yaxis.label.set_color(COLOR_LIGHT_GRAY)
ax.set_xlabel("Number of terms")
ax.set_ylabel("Partial sum")
ax.set_title("Convergence of geometric series (a=1, r=0.5)", color=COLOR_LIGHT_GRAY, pad=15)

legend = ax.legend(facecolor=COLOR_DARK, edgecolor=COLOR_LIGHT_GRAY, labelcolor=COLOR_LIGHT_GRAY)
legend.get_frame().set_alpha(0.3)

plt.tight_layout()
plt.show()

Converging series visualization

Trực quan hóa dãy hội tụ

Tổng từng phần tiến về 2.0 và dần phẳng ra, chính xác là những gì tính hội tụ trông như trong thực tế. Mỗi hạng tử bổ sung đóng góp ít hơn hạng tử trước, và đường cong ổn định ở giới hạn lý thuyết.

Ứng dụng phổ biến của cấp số nhân

Cấp số nhân mô hình hóa các quy luật thực tế xuất hiện trong tài chính, vật lý, và khoa học máy tính.

Tài chính là ví dụ quen thuộc nhất. Khi bạn đầu tư với lãi suất cố định, số dư mỗi kỳ là số dư kỳ trước nhân với một hệ số không đổi. Tổng giá trị lợi nhuận kép theo thời gian là một cấp số nhân. Cấu trúc tương tự áp dụng cho khấu hao khoản vay và tính toán niên kim.

Vật lý dùng cấp số nhân để mô hình hóa quá trình suy giảm. Phóng xạ, suy hao tín hiệu, và tiêu tán năng lượng đều tuân theo một quy luật mà mỗi bước giảm đại lượng theo một công bội cố định. Bạn có thể coi tổng lượng chất phân rã theo thời gian vô hạn như một cấp số nhân hội tụ.

Trong khoa học máy tính, cấp số nhân xuất hiện trong phân tích thuật toán. Các thuật toán đệ quy chia đôi kích thước bài toán ở mỗi bước - như tìm kiếm nhị phân hoặc trộn sắp - tạo ra một cấp số nhân khi bạn đếm tổng công việc trên tất cả các mức. Chúng cũng xuất hiện trong các sơ đồ cấp phát bộ nhớ và chiến lược kích thước cấu trúc dữ liệu nơi dung lượng tăng theo một bội số cố định.

Lỗi thường gặp với cấp số nhân

Hầu hết sai sót với cấp số nhân xuất phát từ vài định nghĩa bị hiểu sai và một lần áp dụng công thức không đúng.

Nhầm lẫn giữa dãy (sequence) và dãy tổng (series)

Đây là lỗi phổ biến nhất. Dãy là danh sách, dãy tổng là phép cộng. Nếu ai đó hỏi về "cấp số nhân" và bạn liệt kê các hạng tử thay vì cộng chúng lại, bạn đã trả lời sai câu hỏi. Sự phân biệt này đặc biệt quan trọng khi câu trả lời kỳ vọng là một con số duy nhất.

Áp dụng công thức tổng vô hạn khi |r| ≥ 1

Đây là lỗi âm thầm. Công thức S = a / (1 - r) chỉ đúng khi dãy hội tụ. Nếu bạn đặt r = 2 và nhận được một con số trông gọn gàng, con số đó là vô nghĩa. Luôn kiểm tra |r| < 1 trước.

Xác định sai công bội

Điều này khó hơn nghe qua. Công bội r luôn là giá trị bạn nhân vào để được hạng tử kế tiếp - không phải hiệu giữa các hạng tử, và không phải hạng tử đầu chia cho hạng tử thứ hai. Với 3 + 6 + 12 + 24, công bội là 2, không phải 3. Chia bất kỳ hạng tử nào cho hạng tử liền trước để được r, và kiểm tra lại với vài cặp liên tiếp để chắc chắn nó thực sự không đổi.

Kết luận

Cấp số nhân là phép nhân lặp lại rồi cộng lại. Mỗi hạng tử suy ra từ hạng tử trước theo cùng một công bội, điều này khiến mẫu hình có thể dự đoán và các công thức dễ hiểu.

Điều kiện hội tụ - |r| < 1 - là điều bạn phải nhớ. Nó phân biệt một dãy có tổng hữu hạn có ý nghĩa với một dãy tăng vô hạn. Nếu bạn kiểm tra sai điều kiện này, mọi kết quả nhận được sẽ không còn giá trị.

Về cơ bản chỉ có vậy. Xác định công bội, kiểm tra điều kiện hội tụ, áp dụng đúng công thức. Không hơn không kém.

Nếu bạn thấy cấp số nhân dễ, hãy đọc Khai triển Taylor: Từ xấp xỉ đến tối ưu hóa - bài viết gần đây của chúng tôi - phần toán không đơn giản bằng, nhưng lời giải thích vẫn rõ ràng như vậy.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Chuyên gia Khoa học Dữ liệu Cấp cao, làm việc tại Croatia. Tác giả Công nghệ Hàng đầu với hơn 700 bài viết đã xuất bản, đạt trên 10 triệu lượt xem. Tác giả cuốn sách Tự động hóa Machine Learning với TPOT.

Câu hỏi thường gặp về cấp số nhân

Cấp số nhân là gì?

Cấp số nhân là tổng các hạng tử mà mỗi hạng tử thu được bằng cách nhân hạng tử trước với một giá trị không đổi gọi là công bội. Ví dụ, 1 + 2 + 4 + 8 là một cấp số nhân với hạng tử đầu là 1 và công bội là 2. Khác biệt then chốt giữa dãy (sequence) và dãy tổng (series) cấp số nhân là dãy thì liệt kê các hạng tử còn dãy tổng thì cộng chúng lại.

Khi nào một cấp số nhân vô hạn hội tụ?

Một cấp số nhân vô hạn hội tụ khi trị tuyệt đối của công bội nhỏ hơn 1, viết là |r| < 1. Khi điều kiện này thỏa mãn, các hạng tử nhỏ dần về 0 đủ nhanh để tổng tiến đến một giá trị hữu hạn. Nếu |r| ≥ 1, dãy phân kỳ và không có tổng hữu hạn.

Cấp số nhân được dùng ở đời thực ở đâu?

Cấp số nhân xuất hiện trong tài chính, vật lý và khoa học máy tính. Trong tài chính, lãi kép và tính toán niên kim dựa vào cấu trúc cấp số nhân. Trong khoa học máy tính, chúng xuất hiện trong phân tích các thuật toán đệ quy chia đôi kích thước bài toán ở mỗi bước, như tìm kiếm nhị phân và trộn sắp.

Sự khác nhau giữa công thức cấp số nhân hữu hạn và vô hạn là gì?

Công thức hữu hạn, S_n = a(1 - r^n) / (1 - r), cộng chính xác n hạng tử và hoạt động với mọi giá trị r trừ 1. Công thức vô hạn, S = a / (1 - r), chỉ áp dụng khi |r| < 1 và cho tổng của mọi hạng tử khi dãy kéo dài vô hạn. Sử dụng công thức vô hạn mà không kiểm tra hội tụ trước là một trong những lỗi phổ biến nhất khi làm việc với cấp số nhân.

Làm sao tìm công bội của một cấp số nhân?

Chia bất kỳ hạng tử nào cho hạng tử đứng ngay trước nó. Ví dụ, trong 3 + 6 + 12 + 24, chia 6 cho 3 cho công bội bằng 2. Để chắc chắn dãy thực sự là cấp số nhân, hãy kiểm tra rằng công bội giống nhau giữa vài cặp liên tiếp khác - nếu nó không hằng, bạn không đang làm việc với cấp số nhân.

Chủ đề

Học cùng DataCamp

Courses

Đại số tuyến tính cho Khoa học dữ liệu với R

4 giờ
20.8K
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow
Có liên quan

blogs

Claude Opus 4.6: Tính năng, điểm chuẩn, các bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu bảng xếp hạng về mã hóa theo hướng tác nhân và suy luận phức tạp. Thêm nữa, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem thêmXem thêm