复合五点高斯公式计算(Python实现)
生活随笔
收集整理的這篇文章主要介紹了
复合五点高斯公式计算(Python实现)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
被積函數(shù)
y=11+x2y=11+x2
x∈[?1,1]x∈[?1,1]
算法分析
這里使用分段的方式,這里的節(jié)點(diǎn)做了變換之后記得對(duì)于結(jié)果記得要做類似的變換,來(lái)確保這個(gè)數(shù)值沒(méi)有問(wèn)題。
注意到,這里本來(lái)想用跟之前的節(jié)點(diǎn)數(shù)目更少的方法來(lái)做分析的時(shí)候,發(fā)現(xiàn)解方程,算不出對(duì)應(yīng)的系數(shù)Ai值。
會(huì)陷入開(kāi)頓當(dāng)中,或者是報(bào)錯(cuò)。
所以,這里就直接找了對(duì)應(yīng)的數(shù)據(jù)做伸縮變換。直接求解。
代碼
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) / 2if point == 5:temp = [0.2369269, 0.4786287, 0.5688889, 0.4786287, 0.2369269]T = 0for i in range(point):T += (Y.subs(x, xs[i]) * temp[i])return T * (end - begin) / 2return 0def 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 = 5n = 4xl = np.linspace(-1, 1, n + 1)Y = 1 / (1 + x ** 2)loss()總結(jié)
以上是生活随笔為你收集整理的复合五点高斯公式计算(Python实现)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Sympy含pi等表达式转浮点数形式
- 下一篇: websocket python爬虫_p