【数值分析】python实现复化高斯积分

  • python代码
import pandas as pd
import numpy as np
import math

# 初始化表格
x1, k1 = np.array([[0], [2]])
x2, k2 = np.array([[0.5773502692], [1]])
x3, k3 = np.array([[0.7745966692, 0], 
                   [0.5555555556, 0.8888888889]])
x4, k4 = np.array([[0.8611363116, 0.3399810436], 
                   [0.3478548451, 0.6521451549]])
x5, k5 = np.array([[0.9061798459, 0.5384693101, 0],
                   [0.2369268851, 0.4786286705, 0.5688888889]])
x6, k6 = np.array([[0.9324695142, 0.6612093865, 0.2386191861],
                   [0.1713244924, 0.3607615730, 0.4679139346]])
x7, k7 = np.array([[0.9491079123, 0.7415311856, 0.4058451514, 0],
                   [0.1294849662, 0.2797053915, 0.3818300505, 0.4179591837]])
x8, k8 = np.array([[0.9602898565, 0.7966664774, 0.5255324099, 0.1834346425],
                   [0.1012285363, 0.2223810345, 0.3137066459, 0.3626837834]])
table = pd.DataFrame([[x1, k1], [x2, k2], [x3, k3], [x4, k4], [x5, k5], 
                      [x6, k6], [x7, k7], [x8, k8]],
                     columns=['Xk', 'Ak'],
                     index=[1, 2, 3, 4, 5, 6, 7, 8])

a = int(input("积分上界:"))
b = int(input("积分下界:"))
n = int(input("点数:"))

# 原函数
def f(x):
    return x**2 * np.cos(x)

x, k = table.iloc[n-1, [0, 1]]

I = 0
for i in range(0, math.ceil(n/2)):
    if x[i] != 0:
        I = I + (f(x[i])+f(-x[i])) * k[i]
    else:
        I = I + f(x[i]) * k[i]

I = I*(a-b)/2
print('\n' + "高斯积分计算结果" + str(I))
  • 测试结果
    在这里插入图片描述
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

From Star.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值