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.