Python - полиномы Лежандра с использованием отношения рекурсии

Опубликовано: 17 Февраля, 2022

Многочлены Лежандра - это тип ортогональных многочленов, которые часто встречаются в науке и технике. Следовательно, их генерация имеет решающее значение для этих полей. Существуют различные способы вычисления полинома Лежандра, используя производящие функции, формулу Родригеса, рекуррентное соотношение, ортогонализацию Грама-Шмидта и т. Д. Один из самых простых, а также
один из наиболее точных методов - использование рекуррентного соотношения.

Здесь мы используем рекуррентное соотношение легендарных многочленов Бонне, т. Е. -

Его можно реализовать с помощью 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))
Output:
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

Previous
Demystify Autorun and Malwares
Next
Python | Numpy np.hermeval2d() method
Recommended Articles
Page :
Article Contributed By :
manasdogra57
@manasdogra57
Vote for difficulty
Article Tags :
  • Engineering Mathematics
  • Python
  • Python Programs
Report Issue
Python

РЕКОМЕНДУЕМЫЕ СТАТЬИ