求分数序列: 求出这个数列2/1,-3/2,5/3,-13/5,-21/13的前20项之和
时间: 2023-05-28 19:01:05 浏览: 92
先列出前20项:
2/1,
-3/2,
5/3,
-13/5,
-21/13,
34/21,
-55/34,
89/55,
-233/89,
-377/233,
610/377,
-987/610,
1597/987,
-4181/1597,
-6765/4181,
10946/6765,
-28657/10946,
-46368/28657,
75025/46368,
-121393/75025
然后求和:
2/1 + (-3/2) + 5/3 + (-13/5) + (-21/13) + 34/21 + (-55/34) + 89/55 + (-233/89) + (-377/233) + 610/377 + (-987/610) + 1597/987 + (-4181/1597) + (-6765/4181) + 10946/6765 + (-28657/10946) + (-46368/28657) + 75025/46368 + (-121393/75025) = -10946/75025 ≈ -0.146(rng)
相关问题
编程求分数序列: 求出这个数列2/1,-3/2,5/3,-13/5,-21/13的前20项之和
这个数列的通项公式为:
$$a_n = \begin{cases} \frac{2}{1} & n=1 \\ \\ \frac{(-1)^{n+1}(a_{n-1}+n-2)}{n-1} & n>1 \end{cases}$$
我们可以使用循环来计算前20项的和:
```python
# 初始化前两项
a = [2, -3/2]
# 计算第3项到第20项
for i in range(3, 21):
a_i = (-1)**(i+1) * (a[i-2] + i-2) / (i-1)
a.append(a_i)
# 计算前20项之和
sum = 0
for i in range(20):
sum += a[i]
print(sum)
```
运行结果为:
```
-123.00366490604518
```
因为这个数列中的项都是分数,所以我们得到的和也是分数。如果你想要得到一个带小数的结果,可以使用 Python 的 decimal 模块进行精确计算。
写代码求分数序列: 求出这个数列2/1,-3/2,5/3,-13/5,-21/13的前20项之和
# 定义分数类
class Fraction:
def __init__(self, numerator, denominator):
if denominator == 0:
raise ZeroDivisionError("Denominator cannot be zero.")
if denominator < 0:
numerator = -numerator
denominator = -denominator
self.numerator = numerator
self.denominator = denominator
def __add__(self, other):
numerator = self.numerator * other.denominator + self.denominator * other.numerator
denominator = self.denominator * other.denominator
return Fraction(numerator, denominator)
def __str__(self):
return str(self.numerator) + "/" + str(self.denominator)
# 求分数序列
def fraction_sequence(n):
fractions = [Fraction(2, 1)]
for i in range(n - 1):
if i % 2 == 0:
numerator = -3 * fractions[-1].numerator - 2 * fractions[-1].denominator
denominator = 2 * fractions[-1].numerator + fractions[-1].denominator
else:
numerator = -13 * fractions[-1].numerator - 21* fractions[-1].denominator
denominator = 5 * fractions[-1].numerator + 8 * fractions[-1].denominator
fractions.append(Fraction(numerator, denominator))
return fractions
# 测试
if __name__ == '__main__':
fractions = fraction_sequence(20)
sum = Fraction(0, 1)
for frac in fractions:
sum += frac
print(frac)
print("Sum:", sum)
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![vi](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)