請輸入首項 a₁,以及遞迴關係式 a(n+1) = p·a(n) + q 的係數 p 和常數 q。下方的數學式和輸入欄連動,直接改寫式子裡的數字也能計算。
這個頁面可以做什麼
- 馬上求出一階遞迴關係式 \(a_{n+1} = p a_n + q\)(首項 \(a_1\))的一般項,並附上用特徵方程式化成等比數列的計算過程
- 答案是像 \(\dfrac{381}{64}\) 這樣已約分的分數(精確值)。\(p = 1\)(等差數列型)、\(q = 0\)(等比數列型)的情形也會自動分開處理
- 也會顯示指定編號 \(n\) 的值(第 \(n\) 項),以及第 1~10 項的數列表和圖表。數列收斂時,還能知道它逐漸接近的值(極限值=特徵根)
- 首項和係數除了小數、負數,也可以輸入像 1/2 這樣的分數
- 計算機會顯示和手寫一樣的遞迴關係式,也可以直接改寫式子裡的數字來計算
- 這個頁面還整理了公式的淺顯解說,以及可直接複製到 Excel、Google 試算表、Python 使用的公式
這個計算有什麼用?
每個月計息、每個月固定還款的貸款,餘額正好依照「下個月的餘額 =(1 + 月利率)× 這個月的餘額 − 每月還款額」這個一階遞迴關係式變化。
例如房貸月利率 0.2%(年利率約 2.4%)、每月還款 NT$30,000,特徵根就是 30,000 ÷ 0.002 = NT$1,500 萬。這是利息和還款剛好抵消、餘額不再變動的貸款金額;只要餘額低於它,每還一次款,餘額就一定會減少(這個平衡的觀念是還款規劃的基礎)。
藥物會隨著時間以固定的比例被身體分解、排出。在「一天後體內還剩 50%,每天服用 200 mg」的模型中,體內的藥量依照遞迴關係式 \(a_{n+1} = 0.5a_n + 200\) 變化,並收斂到特徵根 200 ÷ (1 − 0.5) = 400 mg。
這個式子說明,即使每天持續服用,藥量也不會無限累積,而是會穩定在一定的量。實際的用藥設計,會用更精密的藥物動力學模型來決定劑量和服藥間隔。
對於「每個月有 90% 的會員續訂,並有 1,000 人新加入」的服務,會員數依照遞迴關係式 \(a_{n+1} = 0.9a_n + 1000\) 變化,並收斂到特徵根 1000 ÷ (1 − 0.9) = 10,000 人。
也就是說,只要新加入人數和流失率不變,會員數大約會在 1 萬人停止成長。這是估算成長上限、以及降低流失率能讓上限提高多少的基本商業規劃模型(假設續訂率和新加入人數固定的粗略估算)。
在炎熱的房間開冷氣,室溫和設定溫度的差,每分鐘會以固定的比例縮小。例如「每分鐘,室溫和設定溫度 26℃ 的差縮小 10%」,室溫就依照遞迴關係式 \(a_{n+1} = 0.9a_n + 2.6\) 變化,並收斂到特徵根 2.6 ÷ 0.1 = 26℃,也就是設定溫度。
「一開始降得快,越接近設定溫度越慢」,正是這個遞迴關係式收斂的樣子(在物理上,這是牛頓冷卻定律以每分鐘為單位的版本)。
「每月底加上利息,每個月再存入固定金額」的存款,餘額也依照同樣的遞迴關係式:「下個月的餘額 =(1 + 月利率)× 這個月的餘額 + 存入金額」。不過這時乘上的數大於 1,所以不會收斂,餘額會一直增加(發散的例子)。
求出一般項,就能一次算出「n 個月後的餘額」。這和金融上使用的年金終值公式相同,「能存到多少錢」的試算,就是用這個遞迴關係式的一般項算出來的。
公式與圖表
符號與用語解說
符號
| \(a_n\) | a 下標 n | 數列從前面數來的第 \(n\) 項。數列常用文字 \(a\) 表示(據說因為它是字母表的第一個字母)。右下角的小下標 \(n\) 表示「第幾個」。 |
| \(a_{n+1}\) | a 下標 n 加 1 | 第 \(n\) 項的下一項,也就是第 \(n+1\) 項。在遞迴關係式中扮演「目前這一項 \(a_n\) 的下一項」的角色。 |
| \(a_1\) | a 下標 1 | 數列的第一項(首項)。遞迴關係式是「由目前這一項做出下一項的規則」,所以起點首項沒有決定,數列就無法決定。 |
| \(n\) | n | 項的編號(從前面數來第幾個)。習慣上用 number(數)的第一個字母 \(n\),取 1, 2, 3,…這些自然數的值。 |
| \(p\) | p | 乘上目前這一項 \(a_n\) 的常數,相當於等比數列的公比。這個值在 \(-1\) 和 \(1\) 之間時,數列會收斂到特徵根。 |
| \(q\) | q | 乘完之後加上的常數,相當於等差數列的公差。習慣上用 \(p\) 的下一個字母 \(q\)。 |
| \(c\) | c | 特徵方程式 \(x = px + q\) 的解(特徵根)。\(c\) 是 constant(常數)的第一個字母。這是「某一項變成這個值後,下一項也保持相同的值」的特別值,也是收斂數列的去處。 |
| \(\{a_n\}\) | 數列 a 下標 n | 表示由各項 \(a_n\) 排成的整個數列的寫法。大括號表示「把 \(a_1, a_2, a_3, \dots\) 全部合起來看」。 |
| \(p^{n-1}\) | p 的 n 減 1 次方 | \(p\) 連乘 \(n-1\) 次(次方)。右上角的小數字(指數)表示乘的次數。從首項到第 \(n\) 項乘上公比的次數是 \(n-1\) 次,所以一般項會出現這個形式。 |
| \(\displaystyle\lim_{n\to\infty} a_n\) | 當 n 趨近無限大時 a 下標 n 的極限 | \(n\) 無限變大時,\(a_n\) 所接近的值(極限值)。\(\lim\) 是 limit(極限)的前三個字母。數列收斂時,這個計算機會顯示極限值。 |
用語
| 數列 | 把數依順序排列而成的一列數。其中每一個數稱為項,並像 \(a_1, a_2, a_3, \dots\) 這樣加上編號表示。 |
| 項 | 數列中的每一個數。從前面數來第 \(n\) 個項,稱為第 \(n\) 項。 |
| 首項 | 數列的第一項 \(a_1\),是用遞迴關係式決定數列時的起點。 |
| 遞迴關係式 (遞迴式) |
把「由目前這一項做出下一項的規則」寫成式子。例如 \(a_{n+1} = 2a_n + 3\) 就是「下一項等於目前這一項乘 2 再加 3」的規則。和首項一起,就能決定整個數列。 |
| 一階遞迴關係式 | 只用相鄰兩項(\(a_n\) 和 \(a_{n+1}\))寫成的遞迴關係式。本頁處理的 \(a_{n+1} = p a_n + q\) 是代表性的形式。出現 \(a_n,\ a_{n+1},\ a_{n+2}\) 三項的,稱為二階(相鄰三項)遞迴關係式,解法不同。 |
| 一般項 | 把第 \(n\) 項直接寫成 \(n\) 的式子。例如求出 \(a_n = 4 \cdot 2^{n-1} - 3\) 之後,即使是第 100 項,只要代入 \(n = 100\) 就能一次算出。 |
| 等差數列 | 相鄰兩項的差永遠相同的數列(每次加上同一個數)。\(5, 8, 11, 14, \dots\) 是公差 3 的等差數列,相當於遞迴關係式 \(p = 1\) 的情形。 |
| 公差 | 等差數列每次加上的固定的數。在本頁的遞迴關係式中,\(p = 1\) 時的 \(q\) 扮演公差的角色。 |
| 等比數列 | 相鄰兩項的比永遠相同的數列(每次乘上同一個數)。\(3, 6, 12, 24, \dots\) 是公比 2 的等比數列,相當於遞迴關係式 \(q = 0\) 的情形。 |
| 公比 | 等比數列每次乘上的固定的數。在本頁的遞迴關係式中,\(p\) 扮演公比的角色。 |
| 特徵方程式 | 把遞迴關係式中的 \(a_{n+1}\) 和 \(a_n\) 換成同一個文字 \(x\) 所得到的方程式 \(x = px + q\)。用它的解(特徵根),就能把遞迴關係式變形成等比數列的形式。 |
| 特徵根 | 特徵方程式的解 \(c = \dfrac{q}{1-p}\)。這是「某一項變成這個值後,下一項也保持相同的值」的數列不動的點,數列收斂時也是它的去處(極限值)。 |
| 不動點 | 套用規則後也不會改變的值。在遞迴關係式中,特徵根 \(c\) 就是不動點,滿足 \(c = pc + q\)。大學以後的數學,會用這個觀點分析遞迴關係式和函數的反覆運算。 |
| 收斂 | \(n\) 越來越大時,項的值無限接近某個固定的值。這個遞迴關係式在 \(|p| < 1\)(\(p\) 在 \(-1\) 和 \(1\) 之間)時,會收斂到特徵根 \(c\)。 |
| 極限值 | 收斂的數列所接近的值,寫成 \(\displaystyle\lim_{n\to\infty} a_n\)。在高三的選修數學甲才會正式學到,不過想成「越來越接近的目的地」就足夠了。 |
| 發散 | 不收斂。包括項的值無限變大(或無限變小),以及在兩個值之間來回、無法停在一個值的情形。這個遞迴關係式在 \(|p| > 1\) 時,除非剛好從特徵根開始,否則會發散。 |
建議先了解的基礎知識
為了能「理解意義」地使用本頁的計算,這裡整理了建議先了解的基礎知識。
遇到困難時,回頭複習這張表的內容是最快的方法。
| 什麼是數列(國中八年級,13~14 歲) |
|
| 等差數列與等比數列(國中八年級~高一,13~16 歲) |
|
| 一元一次方程式與移項(國中七年級,12~13 歲) |
|
| 次方與指數(國中七年級~高一,12~16 歲) |
|
| 分數的計算(國小五年級~國中七年級,10~13 歲) |
|
用 Excel 計算的方法
| 首項 a1 | 1 |
| 係數 p | 2 |
| 常數 q | 3 |
| 要求的項編號 n | 10 |
| 特徵根 c = q/(1−p) | =B3/(1-B2) |
| 首項與特徵根的差 a1−c | =B1-B5 |
| 第 n 項 (a1−c)×p^(n−1)+c | =B6*B2^(B4-1)+B5 |
| 係數 p | 2 |
| 常數 q | 3 |
| 第 1 項 a1 | 1 |
| 第 2 項 | =B1*B3+B2 |
| 第 3 項 | =B1*B4+B2 |
| 第 4 項 | =B1*B5+B2 |
| 第 5 項 | =B1*B6+B2 |
| 第 6 項 | =B1*B7+B2 |
| 第 7 項 | =B1*B8+B2 |
| 第 8 項 | =B1*B9+B2 |
| 第 9 項 | =B1*B10+B2 |
| 第 10 項 | =B1*B11+B2 |
| 首項 a1 | 5 |
| 公差 q | 3 |
| 要求的項編號 n | 4 |
| 第 n 項 a1+(n−1)q | =B1+(B3-1)*B2 |
| 首項 a1 | 3 |
| 公比 p | 2 |
| 要求的項編號 n | 4 |
| 第 n 項 a1×p^(n−1) | =B1*B2^(B3-1) |
第一個表格用一般項,求首項 1、遞迴關係式 a(n+1) = 2a(n) + 3 的數列的第 10 項。特徵根 c 是 −3,答案是 2045。p = 1 時無法使用這個表格的公式(1−p 會變成 0,等於除以 0),這時請用第三個表格。
第二個表格完全照遞迴關係式一步一步計算同一個數列,可以確認第 10 項是 2045,和第一個表格相同。
第三個表格是等差數列型的例子(首項 5、公差 3、第 4 項=14),第四個表格是等比數列型的例子(首項 3、公比 2、第 4 項=24)。
用 Google 試算表計算的方法
| 首項 a1 | 1 |
| 係數 p | 2 |
| 常數 q | 3 |
| 要求的項編號 n | 10 |
| 特徵根 c = q/(1−p) | =B3/(1-B2) |
| 首項與特徵根的差 a1−c | =B1-B5 |
| 第 n 項 (a1−c)×p^(n−1)+c | =B6*B2^(B4-1)+B5 |
| 係數 p | 2 |
| 常數 q | 3 |
| 第 1 項 a1 | 1 |
| 第 2 項 | =B1*B3+B2 |
| 第 3 項 | =B1*B4+B2 |
| 第 4 項 | =B1*B5+B2 |
| 第 5 項 | =B1*B6+B2 |
| 第 6 項 | =B1*B7+B2 |
| 第 7 項 | =B1*B8+B2 |
| 第 8 項 | =B1*B9+B2 |
| 第 9 項 | =B1*B10+B2 |
| 第 10 項 | =B1*B11+B2 |
| 首項 a1 | 5 |
| 公差 q | 3 |
| 要求的項編號 n | 4 |
| 第 n 項 a1+(n−1)q | =B1+(B3-1)*B2 |
| 首項 a1 | 3 |
| 公比 p | 2 |
| 要求的項編號 n | 4 |
| 第 n 項 a1×p^(n−1) | =B1*B2^(B3-1) |
用 Python 計算的方法
from fractions import Fraction
first_term = Fraction(1) # 首項 a1(也可以用分數,例如 Fraction(1, 2))
coefficient = Fraction(2) # 係數 p(乘上 a_n 的數)
constant = Fraction(3) # 常數 q(加上的數)
term_number = 10 # 要求的項編號 n
# 依遞迴關係式依序計算第 1~10 項
terms = [first_term]
for _ in range(9):
terms.append(coefficient * terms[-1] + constant)
print("第 1~10 項:", ", ".join(str(t) for t in terms))
# 第 n 項(套用遞迴關係式 n-1 次)
nth_term = first_term
for _ in range(term_number - 1):
nth_term = coefficient * nth_term + constant
print(f"第 {term_number} 項:{nth_term}(小數:{float(nth_term)})")
# p 不是 1 時,也可以用特徵根 c = q/(1-p) 求一般項
if coefficient != 1:
fixed_point = constant / (1 - coefficient)
start_diff = first_term - fixed_point
print(f"特徵根 c:{fixed_point}")
print(f"一般項:a_n = ({start_diff})*({coefficient})^(n-1) + ({fixed_point})")
用 LaTeX 等數學式語言的寫法(可直接複製)
aₙ₊₁ = p·aₙ + q
a_{n+1} = p a_n + q
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>a</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub>
<mo>=</mo>
<mi>p</mi>
<msub><mi>a</mi><mi>n</mi></msub>
<mo>+</mo>
<mi>q</mi>
</mrow>
</math>
a_(n+1) = p a_n + q
RSolve[{a[n + 1] == p a[n] + q, a[1] == a1}, a[n], n]
rsolve({a(n+1) = p*a(n) + q, a(1) = a1}, a(n));
a(n+1) = p*a(n) + q
a_(n+1) = p a_n + q
c = q/(1 − p)
c = \dfrac{q}{1-p}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>c</mi>
<mo>=</mo>
<mfrac>
<mi>q</mi>
<mrow><mn>1</mn><mo>−</mo><mi>p</mi></mrow>
</mfrac>
</mrow>
</math>
c = q/(1-p)
c = q/(1 - p)
c := q/(1 - p);
c = q/(1 - p);
c = q/(1 − p)
aₙ₊₁ − c = p(aₙ − c)
a_{n+1} - c = p(a_n - c)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>a</mi><mrow><mi>n</mi><mo>+</mo><mn>1</mn></mrow></msub>
<mo>−</mo><mi>c</mi>
<mo>=</mo>
<mi>p</mi>
<mo>(</mo>
<msub><mi>a</mi><mi>n</mi></msub>
<mo>−</mo><mi>c</mi>
<mo>)</mo>
</mrow>
</math>
a_(n+1) - c = p(a_n - c)
a[n + 1] - c == p (a[n] - c)
a(n+1) - c = p*(a(n) - c);
a(n+1) - c = p*(a(n) - c)
a_(n+1) − c = p(a_n − c)
aₙ = (a₁ − c)·pⁿ⁻¹ + c
a_n = (a_1 - c)p^{n-1} + c
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>a</mi><mi>n</mi></msub>
<mo>=</mo>
<mo>(</mo>
<msub><mi>a</mi><mn>1</mn></msub>
<mo>−</mo><mi>c</mi>
<mo>)</mo>
<msup><mi>p</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msup>
<mo>+</mo>
<mi>c</mi>
</mrow>
</math>
a_n = (a_1 - c)p^(n-1) + c
a[n_] := (a1 - c) p^(n - 1) + c
a := n -> (a1 - c)*p^(n-1) + c;
a_n = (a1 - c)*p^(n-1) + c;
a_n = (a_1 − c)p^(n−1) + c
aₙ = a₁ + (n − 1)q
a_n = a_1 + (n-1)q
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>a</mi><mi>n</mi></msub>
<mo>=</mo>
<msub><mi>a</mi><mn>1</mn></msub>
<mo>+</mo>
<mo>(</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo>)</mo>
<mi>q</mi>
</mrow>
</math>
a_n = a_1 + (n-1)q
a[n_] := a1 + (n - 1) q
a := n -> a1 + (n-1)*q;
a_n = a1 + (n-1)*q;
a_n = a_1 + (n − 1)q
aₙ = a₁·pⁿ⁻¹
a_n = a_1 p^{n-1}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>a</mi><mi>n</mi></msub>
<mo>=</mo>
<msub><mi>a</mi><mn>1</mn></msub>
<msup><mi>p</mi><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msup>
</mrow>
</math>
a_n = a_1 p^(n-1)
a[n_] := a1 p^(n - 1)
a := n -> a1*p^(n-1);
a_n = a1*p^(n-1);
a_n = a_1 p^(n−1)
請 ChatGPT 幫忙計算的方法
你是數學(數列、遞迴關係式)的計算助理。請務必實際執行 Python 程式碼來進行下列計算,並只以執行結果的數值作為回答的依據(請不要用心算或猜測回答)。 針對首項 a_1 = 1、遞迴關係式 a_(n+1) = 2·a_n + 3 所定義的數列,請分別列出下列各項。 1. 特徵方程式 x = 2x + 3 的解(特徵根 c) 2. 一般項 a_n(附上用 c 變形成等比數列的計算過程) 3. 第 1~10 項的值,以及第 10 項的值 4. 這個數列是否收斂?(若收斂,也請求出極限值) 在 Python 中請使用標準函式庫的 fractions 模組精確計算,並列出計算時使用的公式,以及執行結果的數值。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權