欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python实现复合五点高斯公式计算(代码实例)

程序员文章站 2022-11-09 10:01:21
被积函数 算法分析 这里使用分段的方式,这里的节点做了变换之后记得对于结果记得要做类似的变换,来确保这个数值没有问题。 注意到,这里本来想用跟之前的节点数目更少的方法来做分析的时候,发现解方程,算...

被积函数

Python实现复合五点高斯公式计算(代码实例)

算法分析

这里使用分段的方式,这里的节点做了变换之后记得对于结果记得要做类似的变换,来确保这个数值没有问题。

注意到,这里本来想用跟之前的节点数目更少的方法来做分析的时候,发现解方程,算不出对应的系数ai值

会陷入开顿当中,或者是报错。

所以,这里就直接找了对应的数据做伸缩变换。直接求解。

代码

import numpy as np
from sympy import *


def t(begin, end):
    xs = np.array([-0.9061798, -0.5384693, 0, 0.5384693, 0.9061798]) * (end - begin) / 2 + (begin + end) / 2
    if point == 5:
        temp = [0.2369269, 0.4786287, 0.5688889, 0.4786287, 0.2369269]
        t = 0
        for i in range(point):
            t += (y.subs(x, xs[i]) * temp[i])
        return t * (end - begin) / 2
    return 0


def loss(begin=-1, end=1):
    t = sum([t(xl[i], xl[i + 1]) for i in range(n)])
    i = integrate(y, (x, begin, end))
    print('%.18f' % (i - t).evalf())


if __name__ == '__main__':
    x = symbols('x')
    point = 5
    n = 4
    xl = np.linspace(-1, 1, n + 1)
    y = 1 / (1 + x ** 2)
    loss()