数值分析实验 实验2-3 龙贝格公式 python3实现

题目:

题目

代码:

import math

# 求积区间
a, b = 0, 1
# 区间二分的最大次数
n = 4
# 分点
x = []


# 要积的函数
def fx(xk):
    if xk == 0:
        return 1
    return math.sin(xk) / xk


# 梯形公式 x2 > x1
def trapezium(x1, x2):
    return (fx(x1) + fx(x2)) / 2 * (x2 - x1)


# 梯形公式结果集
# 存放t1,t2,t4,t8
tn_list = []
for i in range(n+1):
    subscript = int(math.pow(2, i))
    # 步长
    h = (b - a) / subscript
    x = [a+k*h for k in range(subscript+1)]
    tn = 0
    for j in range(subscript):
        tn += trapezium(x[j], x[j+1])
    tn_list.append(tn)

l1 = [4/3, 16/15, 64/63]
l2 = [1/3, 1/15, 1/63]

temp = 0
while temp != 3:
    temp += 1
    for i in range(len(tn_list) - 1):
        tn_list[i] = tn_list[i + 1] * l1[temp - 1] - tn_list[i] * l2[temp - 1]
    tn_list.pop()

print(tn_list)

运行结果:

运行结果

你可能感兴趣的:(数值分析实验)