numpy中高斯-勒让德正交的不同间隔

numpy中高斯-勒让德正交的不同间隔,第1张

numpy中高斯-勒让德正交的不同间隔

要更改间隔,请使用以下方法将x值从[-1,1]转换为[a,b]:

t = 0.5*(x + 1)*(b - a) + a

然后将正交公式缩放为(b-a)/ 2:

gauss = sum(w * f(t)) * 0.5*(b - a)

这是您的示例的修改版本:

import numpy as npfrom scipy import integrate# Define function and intervala = 0.0b = np.pi/2f = lambda x: np.cos(x)# Gauss-Legendre (default interval is [-1, 1])deg = 6x, w = np.polynomial.legendre.leggauss(deg)# Translate x values from the interval [-1, 1] to [a, b]t = 0.5*(x + 1)*(b - a) + agauss = sum(w * f(t)) * 0.5*(b - a)# For comparisonquad, quad_err = integrate.quad(f, a, b)print 'The QUADPACK solution: {0:.12} with error: {1:.12}'.format(quad, quad_err)print 'Gauss-Legendre solution: {0:.12}'.format(gauss)print 'Difference between QUADPACK and Gauss-Legendre: ', abs(gauss - quad)

它打印:

QUADPACK解决方案:1.0,错误:1.11022302463e-14高斯-勒根德雷解决方案:1.0QUADPACK和Gauss-Legendre之间的差异:4.62963001269e-14


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5663956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存