HP 71B and HP Prime Python: Gaussian Quadrature
A Very Brief Introduction
This is a top-level overview of the Gaussian Quadrature method. For more details, please check out the Sources section.
The design of GQ is to calculate:
∫( f(x) dx, -1, 1) ≈ Σ( wi * f(xi), i = 1, n)
Where do xi and wi come from?
* The xi values come from find the roots of the polynomials P’(x)= 0
* Pn’(x) are the derivatives of the Legendre polynomials Pn(x)
* After getting the roots, xi, the weights, w are calculated by the formula:
wi = 2 / ((1 -xi)^2 * Pn’(xi)^2)
Weights and Points of orders 3 and 5:
Among 3 points:
Roots (x) come from the derivative of the Legendre polynomial of the 3rd order.
Pn’(x) = 3/2 * (5*x^2 – 1)
Point xi |
Weight wi |
-√(3/5) ≈ -0.7745 9669 2 = -√0.6 |
5/9 |
0 |
8/9 |
√(3/5) ≈ 0.7745 9669 2 = √0.6 |
5/9 |
Among 5 points:
Roots (x) come from the derivative of the Legendre polynomial of the 5th order.
Pn’(x) = 15/8 * (21*x^4 – 14*x^2 + 1)
Point xi |
Weight wi |
-0.90617 98459 |
0.23692 68851 |
-0.53846 93101 |
0.47862 86705 |
0 |
128/225 ≈ 0.56888 88889 |
0.53846 93101 |
0.47862 86705 |
0.90617 98459 |
0.23692 68851 |
We can fit any interval [a, b] by this conversion:
∫( f(x) dx, a, b) = (b – a) / 2 * ∫( f( (b – a) / 2* x + (b + a) / 2 dx, -1, 1)
= (b – a) / 2 * Σ( wi * f( (b – a) / 2 * xi + (b + a) / 2 ), i = 1, n)
However, the programs on this blog entry will focus on the basic version of the Gaussian Quadrature.
The Code
The following code works with the following integrals:
∫( f(x) dx, -1, 1) ≈ Σ( wi * f(xi), i = 1, n)
HP 71B Basic
HP 71B: GQ3 (Gaussian Quadrature – 3 Point: Integrals from -1 to 1)
10 DEF FNF(X) = insert function of X here
15 S = 0
20 RADIANS
25 FOR I = 1 TO 3
30 READ X, W
31 DATA -SQR(0.6),5/9
32 DATA 0,8/9
33 DATA SQR(0.6),5/9
40 S = S + W * FNF(X)
55 NEXT I
50 DISP “ INTEGRAL= ”; S
HP 71B: GQ5 (Gaussian Quadrature – 5 Point: Integrals from -1 to 1)
10 DEF FNF(X) = insert function of X here
15 S = 0
20 RADIANS
25 FOR I = 1 TO 5
30 READ X, W
31 DATA -.9061798459, .2369268851
32 DATA -.5384693101, .4786286705
33 DATA 0, 128/255
34 DATA .5384693101, .4786286705
35 DATA .9061798459, .2369268851
40 S = S + W * FNF(X)
45 NEXT I
50 DISP “ INTEGRAL= ”; S
Integral Test: ∫( f(x) dx, -1, 1) ≈ Σ( wi * f(xi), i = 1, n)
Function f(x) |
Actual (approx) |
Gaussian 3 point (GQ3) |
Gaussian 5 point (GQ5) |
(x-3)*(x+4)*(x-5) |
352/3 ≈ 117.333333333 |
117.333333333 |
117.333333334 |
-x^2 + 9*x + 10 |
58/3 ≈ 19.33333333 |
19.3333333334 |
19.3333333333 |
1.5 * cos(x) |
2.524412954 |
2.52450532159 |
2.52441295561 |
exp(-x) |
2.350402387 |
2.35033692868 |
2.35040238646 |
exp(sin(x)) |
2.283194521 |
2.28303911433 |
2.28319665353 |
sin(x) |
0 |
0 |
0 |
1/(x - 2) |
-1.09861228867 |
-1.09803921569 |
-1.09860924181 |
HP Prime Python App
HP Prime Python: gq3.py
# Gaussian Quadrature 3 point
from math import *
def f(x):
# insert Function here
return 1/(x-2)
s=0
x=[-sqrt(0.6),0,sqrt(0.6)]
w=[5/9,8/9,5/9]
for i in range(3):
s=s+w[i]*f(x[i])
print("Integral: ",s)
HP Prime Python: gq5.py
# Gaussian Quadrature 5 point
from math import *
def f(x):
# insert Function here
return sin(x)
s=0
x=[0,-.5384693101056831,.5384693101056831,-.9061798459386640, .9061798459386640]
w=[.5688888888889,.4786286704993665,.4786286704993665,.2369268850561891,.2369268850561891]
for i in range(5):
s=s+w[i]*f(x[i])
print("Integral: ",s)
Function f(x) |
Actual (approx) |
Gaussian 3 point (GQ3) |
Gaussian 5 point (GQ5) |
(x-3)*(x+4)*(x-5) |
352/3 ≈ 117.333333333 |
117.333333333 |
117.333333333 |
-x^2 + 9*x + 10 |
58/3 ≈ 19.33333333 |
19.3333333333 |
19.3333333334 |
1.5 * cos(x) |
2.524412954 |
2.52450532159038 |
2.52441295561081 |
exp(-x) |
2.350402387 |
2.35033692868001 |
2.35040238646284 |
exp(sin(x)) |
2.283194521 |
2.2830391143268 |
2.28319665352905 |
sin(x) |
0 |
0.0 |
0.0 |
1/(x - 2) |
-1.09861228867 |
-1.09803921568627 |
-1.09860924181248 |
Sources
Kamermans, Mike “Pomax”. “Gaussian Quadrature Weights and Abscissae” https://pomax.github.io/bezierinfo/legendre-gauss.html 2011. Retrieved January 19, 2025.
Wikipedia. “Gauss-Legendre quadrature” https://en.wikipedia.org/wiki/Gauss%E2%80%93Legendre_quadrature Last edited January 19, 2025. Retrieved January 19, 2025.
Wikipedia. “Legendre Polynomials” https://en.wikipedia.org/wiki/Legendre_polynomials Last edited December 4, 2024. Retrieved January 19, 2025.
When
it comes to evaluating integrals numerically, is Gaussian Quadrature
better than Simpson’s Method?
Eddie
All original content copyright, © 2011-2025. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.
The content on this blog is 100% generated by humans. The author does not use AI engines and never will.