Python实现复合五点高斯公式计算(代码实例)
程序员文章站
2022-11-09 10:01:21
被积函数
算法分析
这里使用分段的方式,这里的节点做了变换之后记得对于结果记得要做类似的变换,来确保这个数值没有问题。
注意到,这里本来想用跟之前的节点数目更少的方法来做分析的时候,发现解方程,算...
被积函数
算法分析
这里使用分段的方式,这里的节点做了变换之后记得对于结果记得要做类似的变换,来确保这个数值没有问题。
注意到,这里本来想用跟之前的节点数目更少的方法来做分析的时候,发现解方程,算不出对应的系数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()