Skip to main content

Классические ортогональные полиномы: Лежандра, Чебышёва, Лагерра, Эрмита и Якоби и их свойства

Project description

ortho_polys

Библиотека классических ортогональных полиномов для Python: Лежандра, Чебышёва, Лагерра, Эрмита и Якоби.

Описание

ortho_polys - это Python-библиотека, предоставляющая инструменты для работы с классическими ортогональными полиномами. Библиотека включает реализации полиномов Лежандра, Чебышёва (первого и второго рода), Лагерра, Эрмита и Якоби, а также методы для вычисления их значений, свойств и визуализации.

Ортогональные полиномы играют важную роль в математической физике, теории аппроксимации, численном анализе и других областях математики. Данная библиотека предоставляет удобный интерфейс для работы с этими полиномами, позволяя вычислять их значения, исследовать их свойства и визуализировать их поведение.

Установка

pip install ortho_polys

Или установка из исходного кода:

git clone https://github.com/username/ortho_polys.git
cd ortho_polys
pip install -e .

Зависимости

  • numpy
  • scipy
  • sympy
  • matplotlib

Использование

Полиномы Чебышёва первого рода

from ortho_polys.polynomials import ChebyshevFirstKind
import numpy as np
import matplotlib.pyplot as plt

# Создание полинома Чебышёва первого рода степени 5
cheb = ChebyshevFirstKind(5)

# Вычисление значения в точке
x = 0.5
value = cheb.evaluate(x)
print(f"T_5({x}) = {value}")

# Вычисление с помощью рекуррентной формулы
value_rec = cheb.recurrent(x)
print(f"T_5({x}) (рекуррентно) = {value_rec}")

# Нахождение корней
roots = cheb.roots()
print("Корни T_5(x):", roots)

# Построение графика
cheb.plot()
plt.show()

Полиномы Лежандра

from ortho_polys.polynomials import LegendrePolynomial
import numpy as np

# Создание полинома Лежандра степени 3
legendre = LegendrePolynomial(3)

# Вычисление значения в точке
x = 0.7
value = legendre.evaluate(x)
print(f"P_3({x}) = {value}")

# Формула Родрига (символьно)
rodrigues = legendre.rodrigues()
print("Формула Родрига для P_3(x):", rodrigues)

# Проверка ортогональности с другим полиномом
other = LegendrePolynomial(4)
ortho = legendre.orthogonal_with(other)
print(f"Интеграл P_3(x)·P_4(x) = {ortho}")

# Построение графика
legendre.plot()

Полиномы Якоби

from ortho_polys.polynomials import JacobiPolynomial

# Создание полинома Якоби степени 2 с параметрами alpha=1, beta=2
jacobi = JacobiPolynomial(2, 1, 2)

# Вычисление значения в точке
x = 0.3
value = jacobi.evaluate(x)
print(f"P_2^(1,2)({x}) = {value}")

# Формула Родрига (символьно)
rodrigues = jacobi.rodrigues()
print("Формула Родрига для P_2^(1,2)(x):", rodrigues)

# Построение графиков нескольких полиномов Якоби
jacobi.plot(n_max=3)

Полиномы Эрмита

from ortho_polys.polynomials import HermitePolynomial
import numpy as np

# Создание полинома Эрмита степени 4
hermite = HermitePolynomial(4)

# Вычисление значения в точке
x = 1.0
value = hermite.evaluate(x)
print(f"H_4({x}) = {value}")

# Проверка дифференциального уравнения
diff_eq = hermite.diff_eq()
print("Дифференциальное уравнение:", diff_eq)

# Построение графика
hermite.plot()

Полиномы Лагерра

from ortho_polys.polynomials import LaguerrePolynomial

# Создание обобщённого полинома Лагерра степени 3 с параметром alpha=0.5
laguerre = LaguerrePolynomial(3, 0.5)

# Вычисление значения в точке
x = 2.0
value = laguerre.evaluate(x)
print(f"L_3^0.5({x}) = {value}")

# Проверка ортогональности с другим полиномом
other = LaguerrePolynomial(2, 0.5)
ortho = laguerre.orthogonal_with(other)
print(f"Интеграл L_3^0.5(x)·L_2^0.5(x) = {ortho}")

# Построение графика
laguerre.plot()

Теоретические основы

Общие свойства ортогональных полиномов

Система полиномов {p_n(x)} называется ортогональной на интервале [a,b] с весовой функцией h(x), если:

∫[a,b] h(x)p_n(x)p_m(x)dx = 0 при n ≠ m

Основные свойства ортогональных полиномов:

  1. Рекуррентная формула: λ_n p̂_n+1(x) = (x - α)p̂_n(x) - λ_{n-1}p̂_{n-1}(x)
  2. Все корни ортогональных полиномов действительные, различные и расположены на интервале (a,b)
  3. Корни двух соседних ортогональных полиномов перемежаются

Полиномы Чебышёва

Первого рода (T_n)

  • Определение: T_n(x) = cos(n·arccos(x))
  • Весовая функция: h(x) = 1/√(1-x²)
  • Интервал ортогональности: [-1, 1]
  • Рекуррентная формула: T_{n+1}(x) = 2xT_n(x) - T_{n-1}(x)
  • Экстремальное свойство: среди всех многочленов степени n со старшим коэффициентом 1, T_n(x)/2^{n-1} наименее уклоняется от нуля на [-1, 1]

Второго рода (U_n)

  • Определение: U_n(x) = sin((n+1)·arccos(x))/sin(arccos(x))
  • Весовая функция: h(x) = √(1-x²)
  • Интервал ортогональности: [-1, 1]
  • Рекуррентная формула: U_{n+1}(x) = 2xU_n(x) - U_{n-1}(x)

Полиномы Лежандра (P_n)

  • Весовая функция: h(x) = 1
  • Интервал ортогональности: [-1, 1]
  • Формула Родрига: P_n(x) = (1/(2^n·n!))·d^n/dx^n[(x²-1)^n]
  • Рекуррентная формула: (n+1)P_{n+1}(x) = (2n+1)xP_n(x) - nP_{n-1}(x)
  • Дифференциальное уравнение: (1-x²)y'' - 2xy' + n(n+1)y = 0

Полиномы Якоби (P_n^(α,β))

  • Весовая функция: h(x) = (1-x)^α·(1+x)^β, α,β > -1
  • Интервал ортогональности: [-1, 1]
  • Формула Родрига: P_n^(α,β)(x) = ((-1)^n/(2^n·n!))·(1-x)^{-α}·(1+x)^{-β}·d^n/dx^n[(1-x)^{n+α}·(1+x)^{n+β}]
  • Частные случаи:
    • α = β = 0: полиномы Лежандра
    • α = β = -1/2: полиномы Чебышёва первого рода
    • α = β = 1/2: полиномы Чебышёва второго рода

Полиномы Эрмита (H_n)

  • Весовая функция: h(x) = e^{-x²}
  • Интервал ортогональности: (-∞, ∞)
  • Формула Родрига: H_n(x) = (-1)^n·e^{x²}·d^n/dx^n[e^{-x²}]
  • Рекуррентная формула: H_{n+1}(x) = 2xH_n(x) - 2nH_{n-1}(x)
  • Дифференциальное уравнение: y'' - 2xy' + 2ny = 0

Полиномы Лагерра (L_n^α)

  • Весовая функция: h(x) = x^α·e^{-x}, α > -1
  • Интервал ортогональности: [0, ∞)
  • Формула Родрига: L_n^α(x) = (1/n!)·x^{-α}·e^x·d^n/dx^n[e^{-x}·x^{n+α}]
  • Рекуррентная формула: (n+1)L_{n+1}^α(x) = (2n+1+α-x)L_n^α(x) - (n+α)L_{n-1}^α(x)
  • Дифференциальное уравнение: xy'' + (1+α-x)y' + ny = 0

Автор

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ortho_polys-0.1.2.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ortho_polys-0.1.2-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file ortho_polys-0.1.2.tar.gz.

File metadata

  • Download URL: ortho_polys-0.1.2.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for ortho_polys-0.1.2.tar.gz
Algorithm Hash digest
SHA256 09c095b55df71091400441196a591843413fd9d5a64d2552cd1486a9c9be48ee
MD5 43721c1a25e941d683d1a951aa24492f
BLAKE2b-256 ab1fc6d6496920d2ce41ce4010ebf64c2ed087b625e836e09db0f19f5e167710

See more details on using hashes here.

File details

Details for the file ortho_polys-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: ortho_polys-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for ortho_polys-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 80931dc51bb9595b45dbe83b153156f43fa4e45ef9606b7772f59dcd6a96d440
MD5 8aadba989b554b8338e2a6382f4791a1
BLAKE2b-256 34c8035f84d0f06bb0f61607b4a4c8d7fcb9aa75486b7fd2258fb27d2b4aff79

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page