Exemple de code pour calculer les polynômes de Legendre en fortran par récurrence:
\begin{equation}
P_n = \frac{(2n-1)}{n}.x.P_{n-1}-(n-1).P_{n-2}
\end{equation}
avec $P_0=1$ et $P_1=x$
Code source:
program legendre_polynomialsimplicit noneinteger, parameter :: pr = selected_real_kind(15,3)integer :: i,j,ninteger :: nb_pl, nb_xreal(pr), dimension(:,:), allocatable :: plreal(pr) :: pl_n2, pl_n1real(pr) :: x, x_min, x_max, x_resolreal(pr) :: pi = dacos(-1.0d0)real(pr) :: cdrcdr = pi / 180.0!----------------------------------------------------------------------------------------!! User Inputsx_min = -1.0x_max = 1.0x_resol = 0.01nb_pl = 10nb_x = int((x_max-x_min)/x_resol) + 1allocate(pl(nb_pl,nb_x))!----------------------------------------------------------------------------------------!! Legendre Polynomialsx = x_mindo i = 1, nb_xpl(1,i) = 1.0pl(2,i) = xpl_n2 = pl(1,i)pl_n1 = pl(2,i)do j = 3 , nb_pln = j - 1pl(j,i) = ( 1.0 / n ) * ( ( 2.0 * n - 1.0 ) * x * pl_n1 - ( n - 1.0 ) * pl_n2 )pl_n2 = pl_n1pl_n1 = pl(j,i)end dox = x + x_resolend do!----------------------------------------------------------------------------------------!! Print resultsopen(1,file="legendre_polynomials.txt")x = x_mindo i = 1, nb_xwrite(1,*) x,(pl(j,i),j=1,nb_pl)x = x + x_resolend doclose(1)!----------------------------------------------------------------------------------------!deallocate(pl)end
Tracer avec python et matplotlib:

import matplotlib.pyplot as pltimport numpy as npdata = np.loadtxt("../../legendre_polynomials.txt")for i in [1,2,3,4,5,6]:plt.plot(data[:,0],data[:,i],label=str(i))plt.legend()plt.savefig('legendre_polynomials.png')plt.show()
Références
| Liens | Site |
|---|---|
| Polynôme de Legendre | wikipedia |
