Python - полиномы Лежандра с использованием отношения рекурсии
Многочлены Лежандра - это тип ортогональных многочленов, которые часто встречаются в науке и технике. Следовательно, их генерация имеет решающее значение для этих полей. Существуют различные способы вычисления полинома Лежандра, используя производящие функции, формулу Родригеса, рекуррентное соотношение, ортогонализацию Грама-Шмидта и т. Д. Один из самых простых, а также
один из наиболее точных методов - использование рекуррентного соотношения.
Здесь мы используем рекуррентное соотношение легендарных многочленов Бонне, т. Е. -
Его можно реализовать с помощью Python, выполнив следующие действия:
Мы определяем многочлены Лежандра как функцию с именем P (n, x), где n называется порядком многочлена, а x - точкой вычисления. Базовые случаи: если n равно 0, то значение полинома всегда равно 1, и это x, когда порядок равен 1. Это начальные значения, необходимые для рекуррентного отношения.
Для других значений n функция определяется рекурсивно, непосредственно из повторения Боннета. Таким образом, P (n, x) возвращает значения полинома Лежандра методом рекурсии (функция, эффективно определенная с другими базовыми случаями той же самой функции).
Below is the Python implementation –
# Legendre polynomial def P(n, x): if (n = = 0 ): return 1 # P0 = 1 elif (n = = 1 ): return x # P1 = x else : return ((( 2 * n) - 1 ) * x * P(n - 1 , x) - (n - 1 ) * P(n - 2 , x)) / float (n) # Suppose, we want to find the value of # 3rd order legendre polynomial at x = 5 # We can display the value by-- # Driver program n = 3 X = 5 print ( "The value of the polynomial at given point is:" , P(n, X)) |
The value of the polynomial at given point is: 305.0
We can now also plot the Legendre polynomials (say from 1st order to 4th order) using matplotlib.
import matplotlib # This is for use in webbrowser, can be ignored. matplotlib.use( "Agg" ) import matplotlib.pyplot as plt import numpy as np # Creating an array of x values x = np.linspace( - 1 , 1 , 200 ) # for which polynomial values are evaluated and plotted for i in range ( 1 , 5 ): # Labelling according to order plt.plot(x, P(i, x), label = "P" + str (i)) plt.legend(loc = "best" ) plt.xlabel( "X" ) plt.ylabel( "Pn" ) plt.show() |
Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.
To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course