Saturday, July 19, 2025

HP 71B and HP Prime Python: Gaussian Quadrature

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.



HP 71B and HP Prime Python: Gaussian Quadrature

HP 71B and HP Prime Python: Gaussian Quadrature A Very Brief Introduction This is a top-level overview of the Gaussian Quadrature m...