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.3.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.3-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ortho_polys-0.1.3.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.3.tar.gz
Algorithm Hash digest
SHA256 27aa041ad46081d7f0ad17f99c70984fcb35a3952b4e39e51b64210d3dc505e4
MD5 8fb386e253ebf0bdf1688316a3c3920b
BLAKE2b-256 e73b86624595aa6e6d9386e71cdee263a0551ccee9c4f80d5b1a34a85600b6c1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ortho_polys-0.1.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6002fd8f88544eb77994e16d72bd03d04427ad0fe4599ce74611ae5dcc84b20e
MD5 013781934dd666ad4201ebc446abbae6
BLAKE2b-256 0e5129fdacceb0e507b67e567ff589481dc5e91d75a546133c1f2e07b7f27ce3

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