Участник:Rpu6/Алгоритм построения точного решения нерегулярно вырождающегося эллиптического дифференциального уравнения

Материал из Алговики
Версия от 22:48, 14 октября 2017; Rpu6 (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Автор описания: Д. П. Емельянов.

Свойства и структура алгоритма

Общее описание алгоритма

Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей[1]. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.

Алгоритм решает следующую задачу:

[math]\displaystyle{ \begin{cases} y^2u''_{yy}+u''_{xx}+c(y)u'_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\ u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|\lt +\infty. \end{cases} }[/math]

Функции [math]\displaystyle{ a(y), c(y) }[/math] полагаем аналитическими в круге [math]\displaystyle{ |y|\lt R }[/math], где [math]\displaystyle{ R\gt b }[/math]. Кроме того, [math]\displaystyle{ c(y), a(y) \ge 0 }[/math] в [math]\displaystyle{ [0,b] }[/math], [math]\displaystyle{ c(0)=0 }[/math].

Математическое описание алгоритма

1. Приблизим функцию [math]\displaystyle{ f(x,y) }[/math] конечными суммами ряда Фурье по [math]\displaystyle{ x }[/math]:

[math]\displaystyle{ f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx. }[/math]
[math]\displaystyle{ f_k(y)=4\int\limits_0^1f(x,y)\sin \pi kx\,dx. }[/math]

Для интеграла следует использовать квадратурную формулу.

2. Приблизим функции [math]\displaystyle{ f_k(y),a(y),c(y) }[/math] полиномами:

[math]\displaystyle{ a(y)=\sum_{n=0}^{N}a_ny^n, c(y)=\sum_{n=1}^{N}c_ny^n, f_k(y)=\sum_{n=0}^{N}f_{kn}y^n. }[/math]

Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра.

3. Введём в рассмотрение числа:

[math]\displaystyle{ \lambda_k=\pi^2k^2+a_0, k = \overline{1,K}, }[/math]
[math]\displaystyle{ r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}. }[/math]

4. Построим функции:

[math]\displaystyle{ \eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n, }[/math]
[math]\displaystyle{ \begin{matrix} \eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+ \sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\ \varphi_{kn}=\frac{ \sum_{l=1}^na_l\varphi_{k,n-1}- \sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1} }{n(n-1)+2nr_k+nc_1} ,n= \overline{1,N},\\ \eta_{k,0}=\frac{f_{k,0}}{-\pi^2k^2-a_0}, \varphi_{k,0}=1, \varphi_k(y)=-\frac{\eta_k(b)}{\stackrel{\circ}{\varphi}_k(b)}\stackrel{\circ}{\varphi}_k(y). \end{matrix} }[/math]

5. Построим приближение к решению:

[math]\displaystyle{ u(x,y)=\sum_{k=1}^{K}\left(\left(\frac{y}{b}\right)^{r_k}\varphi_k(y)+\eta_k(y)\right)\sin \pi kx. }[/math]

За счёт выбора [math]\displaystyle{ K }[/math] и [math]\displaystyle{ N }[/math] можно добиться той или иной точности.

Вычислительное ядро алгоритма

Макроструктура алгоритма

Схема реализации последовательного алгоритма

Последовательная сложность алгоритма

Информационный граф

Ресурс параллелизма алгоритма

Входные и выходные данные алгоритма

Свойства алгоритма

Программная реализация алгоритма

Особенности реализации последовательного алгоритма

Локальность данных и вычислений

Возможные способы и особенности параллельной реализации алгоритма

Масштабируемость алгоритма и его реализации

Динамические характеристики и эффективность реализации алгоритма

Выводы для классов архитектур

Существующие реализации алгоритма

Литература

<references \>

  1. ↑ Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.