交错数列函数
W = AlternatingSeries(a,n)把a解析成交错队列.
这个函数近似于交替序列中给定的实数.
结果以列表形式返回,每个元素都是有理数。
a是实数, n是队列长度.
1. 数学常数逼近
π/4 的莱布尼茨公式近似
AlternatingSeries(@pi/4,8)
#输出 :[33/32, -1/3, 1/5, -1/7, 1/9, -1/11, 1/13, -1/15]
ln(2) 的交错级数近似
AlternatingSeries(ln(2),7)
#输出: [75/86, -1/3, 1/5, -1/7, 1/9, -1/11, 1/13]
arctan(1) = π/4
AlternatingSeries(atan(1),6)
#输出: [101/97, -1/3, 1/5, -1/7, 1/9, -1/11]
2. 物理常数近似
ln(2) 的数值近似
AlternatingSeries(0.693147, 5)
#输出: [85/99, -1/3, 1/5, -1/7, 1/9]
π/4 的数值近似
AlternatingSeries(0.785398, 6)
#输出: [101/97, -1/3, 1/5, -1/7, 1/9, -1/11]
3. 工程应用
控制系统中的临界阻尼比
AlternatingSeries(0.5,5)
#输出: [2/3, -1/3, 1/5, -1/7, 1/9]
1/√2 近似值(信号处理中常见)
AlternatingSeries(0.7071,6)
#输出: [26/27, -1/3, 1/5, -1/7, 1/9, -1/11]
4. 金融数学
10%利率的某种表示
AlternatingSeries(0.1,4)
#输出: [35/93, -1/3, 1/5, -1/7]
5%利率的表示
AlternatingSeries(0.05,5)
#输出: [20/93, -1/3, 1/5, -1/7, 1/9]
5. 特殊值测试
零值
AlternatingSeries(0,5)
#输出: [16/97, -1/3, 1/5, -1/7, 1/9]
单位值
AlternatingSeries(1,5)
#输出: [113/97, -1/3, 1/5, -1/7, 1/9]
负单位值
AlternatingSeries(-1,5)
#输出: [-81/97, -1/3, 1/5, -1/7, 1/9]
6. 边界情况
接近1的值
AlternatingSeries(0.999,5)
#输出: [78/67, -1/3, 1/5, -1/7, 1/9]
接近0的值
AlternatingSeries(0.001,5)
#输出: [1/6, -1/3, 1/5, -1/7, 1/9]
# Copyright 2025 小塔立软件有限公司及其旗下网站:www.qikjik.com
# Licensed under the MIT License.
import sympy as sp
from fractions import Fraction
def qikjik_alternating_series(input_str):
"""
计算交错数列,并将其转换为有理数形式。
参数:
input_str: 输入的字符串表达式,可以是一个数或一个元组(起始点,项数)。
返回:
如果输入有效,则返回交错数列的有理数形式列表;否则返回错误信息。
"""
try:
# 将输入字符串转换为 SymPy 表达式
expr = sp.sympify(input_str)
# 如果输入是元组,解析起始点和项数
if isinstance(expr, tuple):
starting_point = sp.N(expr[0]) # 起始点
num_terms = expr[1] # 项数
else:
starting_point = sp.N(expr) # 默认起始点
num_terms = 10 # 默认项数
# 计算莱布尼茨级数的部分和
leibniz_series = [((-1) ** i) / (2 * i + 1) for i in range(int(num_terms))]
current_sum = sum(leibniz_series)
# 调整级数以匹配起始点
leibniz_series[0] += starting_point - current_sum
# 将级数中的浮点数转换为分数形式
fraction_list = [Fraction(str(number)).limit_denominator(100) for number in leibniz_series]
# 将分数转换为 SymPy 的有理数形式
rational_list = [sp.Rational(fraction.numerator, fraction.denominator) for fraction in fraction_list]
return rational_list
except Exception as e:
return f"错误: {e}"
def main():
"""
主函数,用于演示 alternating_series_calculate_leibniz 函数的使用。
"""
# 示范代码
input_examples = [
"0", # 默认起始点,默认项数 #结果: [23/96, -1/3, 1/5, -1/7, 1/9, -1/11, 1/13, -1/15, 1/17, -1/19]
"(1, 5)", # 起始点为 1,项数为 5 #结果: [113/97, -1/3, 1/5, -1/7, 1/9]
]
for input_str in input_examples:
print(f"输入: {input_str}")
result = qikjik_alternating_series(input_str)
print(f"结果: {result}")
print("-" * 40)
if __name__ == "__main__":
main()