Python等比数列
文章目录
- 等比数列
- 等差数列
- 斐波那契数列
等比数列
- 公比用q表示,
q
≠
0
q\ne0
q=0
n ∈ N ∗ n \in N^* n∈N∗
a 1 ≠ 0 a_1\ne0 a1=0,等比数列中每一项都不等于0 - 通项公式: a n = a 1 ⋅ q n − 1 a_n=a_1 \cdot q^{n-1} an=a1⋅qn−1
- 等比数列求和:
S n = n ⋅ a 1 ( q = 1 ) S_n = n \cdot a_1 (q=1) Sn=n⋅a1(q=1)
S n = a 1 ( 1 − q n ) 1 − q ( q ≠ 1 ) S_n = \frac{a_1(1-q^n)}{1-q} (q\ne1) Sn=1−qa1(1−qn)(q=1)
def conditions(a1, q, n):
assert a1 != 0
assert q != 0
assert isinstance(n, int)
assert n > 0
def a_n(a1, q, n):
conditions(a1, q, n)
return a1 * q ** (n - 1)
def s_n(a1, q, n):
conditions(a1, q, n)
if q == 1:
return n * a1
else:
return a1 * (1 - q ** n) / (1 - q)
if __name__ == '__main__':
print(a_n(1, 2, 10))
print(s_n(1, 2, 10))
等差数列
- 公差用d表示
n ∈ N ∗ n \in N^* n∈N∗ - 通项公式: a n = a 1 + ( n + 1 ) ∗ d a_n = a_1 + (n+1)*d an=a1+(n+1)∗d
- 等差数列求和: S n = n ⋅ a 1 + n ( n − 1 ) 2 d S_n = n \cdot a_1 + \frac{n(n-1)}{2}d Sn=n⋅a1+2n(n−1)d
def a_n(a1, d, n):
assert isinstance(n, int) and n > 0
return a1 + (n - 1) * d
def s_n(a1, d, n):
return (a1 + a_n(a1, d, n)) * n / 2
if __name__ == '__main__':
print(a_n(1, 1, 10))
print(s_n(1, 1, 10))
斐波那契数列
- 从第3项开始,每一项都等于前两项之和:1,1,2,3,5,8,13,21,34…
-
n
∈
N
∗
n \in N^*
n∈N∗
a 1 = 1 a 2 = 1 a_1=1 \\ a_2=1 a1=1a2=1
当 n ≥ 3 时 , a n = a n − 1 + a n − 2 当 n \ge 3 时, a_n=a_{n-1}+a_{n-2} 当n≥3时,an=an−1+an−2
def fibonacci(n):
assert isinstance(n, int) and n > 0
a = 1
b = 1
i = 1
while i < n:
a, b = b, a + b
i += 1
return a
if __name__ == '__main__':
for j in range(1, 10):
print('f(%d)=%d' % (j, fibonacci(j)))
f(1)=1
f(2)=1
f(3)=2
f(4)=3
f(5)=5
f(6)=8
f(7)=13
f(8)=21
f(9)=34