<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rpu6</id>
	<title>Алговики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rpu6"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Rpu6"/>
	<updated>2026-10-22T17:52:57Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=24092</id>
		<title>Участник:Rpu6/Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=24092"/>
		<updated>2017-11-20T22:24:04Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(KN\mathrm{max}(K, N))&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(\mathrm{max}(K, N^2))&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(KN)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;KN + 2N&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=2\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра, Чебышёва, или той же тригонометрической системы функций. Можно использовать интерполяционные полиномы.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции &amp;lt;math&amp;gt;\eta_k(y),\varphi_k(y)&amp;lt;/math&amp;gt;, они будут использованы при построении приближения к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-l}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм решения задачи можно разделить на три крупные части примерно одинаковой вычислительной сложности:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Разложение заданной функции &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; в ряд Фурье, разложение её коэффициентов Фурье в ряды Тейлора, разложение заданных функций &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; в ряды Тейлора.&lt;br /&gt;
На этом этапе известные сеточные функции скалярно умножаются на тригонометрические функции или полиномы Лежандра. В первом случае коэффициент является скалярным произведением,&lt;br /&gt;
во втором - линейной комбинацией соответствующих коэффициентов полиномов Лежандра, помноженных на отвечающие данному полиному скалярные произведения.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Построение коэффициентов ряда Тейлора для функций &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt; с последующим построением самих функций.&lt;br /&gt;
Используются формулы этапа 4 пункта 1.2.&amp;lt;br&amp;gt;&lt;br /&gt;
3. По построенным функциям &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt; строится решение задачи &amp;lt;math&amp;gt;u(x,y)&amp;lt;/math&amp;gt; (формула этапа 5 пункта 1.2).&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Макроструктура этого алгоритма фактически совпадает с его вычислительным ядром (см. пункт 1.3).&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм принимает на вход сеточные функции &amp;lt;math&amp;gt;f(x_i, y_j), a(y_j), c(y_j); x_i = \frac{i}{K}, y_j = \frac{j}{N}; i = \overline{0,K-1}, j=\overline{0,N-1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
f_k(y_j) = \frac{2}{K}\sum_{l=1}^K f(x_l, y_j) sin (\pi kx_l), k=\overline{1,K},\\&lt;br /&gt;
f_{kn} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} f_k(y_l) L_m(y_l), n=\overline{0,N-1},\\&lt;br /&gt;
a_{n} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} a(y_l) L_m(y_l),\\&lt;br /&gt;
c_{n} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} c(y_l) L_m(y_l).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Тут &amp;lt;math&amp;gt;\mathrm{coeff}_n&amp;lt;/math&amp;gt; - коэффициент при n-й степени y в полиноме-аргументе (подразумевается, что алгоритм их знает), &amp;lt;math&amp;gt;L_m&amp;lt;/math&amp;gt; - нормированный полином Лежандра степени m.&amp;lt;br&amp;gt;&lt;br /&gt;
Формулы для вычислений на других шагах алгоритма изложены в пункте 1.2. Достаточно заметить, что при все функции вычисляются в узлах заданной сетки, суммирование можно вести, запоминая &amp;lt;math&amp;gt;y^{n-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
с предыдущего шага, вычисляется лишь &amp;lt;math&amp;gt;y^{n-1}y&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Будем оценивать количество операций умножения вещественных чисел. Произведём оценку отдельно для каждого шага алгоритма.&amp;lt;br&amp;gt;&lt;br /&gt;
1. &amp;lt;math&amp;gt;(K + 1)KN&amp;lt;/math&amp;gt; умножение для вычисления всех &amp;lt;math&amp;gt;f_k(y_j)&amp;lt;/math&amp;gt; (N возникает в силу необходимости вычислять функцию в каждой точке сетки по y),&lt;br /&gt;
&amp;lt;math&amp;gt;((N + 1)N + 1)K&amp;lt;/math&amp;gt; операций для вычисления &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; (считаем, что значения гармоник и полиномов Лежандра известны заранее,&lt;br /&gt;
учитываем равенство некоторых скалярных произведений при вычислении),&lt;br /&gt;
&amp;lt;math&amp;gt;2((N + 1)N + 1)&amp;lt;/math&amp;gt; операций для вычисления &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
2. Для вычисления n-го коэффициента требуется &amp;lt;math&amp;gt;5 + 3(n-1)&amp;lt;/math&amp;gt; операций, для вычисления всех коэффициентов -&lt;br /&gt;
&amp;lt;math&amp;gt;\sum_{n=1}^{N-1} (5 + 3(n-1))=5(N-1) + 3\frac{N-2}{2}(N-1)=(N-1)(5 + 1,5 (N-2))&amp;lt;/math&amp;gt;, суммирование &amp;lt;math&amp;gt;\stackrel{\circ}{\varphi}_k(b)&amp;lt;/math&amp;gt; требует &amp;lt;math&amp;gt;2N&amp;lt;/math&amp;gt; операций,&lt;br /&gt;
коррекция &amp;lt;math&amp;gt;\varphi_k(y_j)&amp;lt;/math&amp;gt; требует &amp;lt;math&amp;gt;N + 2&amp;lt;/math&amp;gt; операции, построение самих функций - &amp;lt;math&amp;gt;N(2N)=2N^2&amp;lt;/math&amp;gt; операций. Это всё нужно проделать &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; раз.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Вычисление значения функции в узле сетки стоит &amp;lt;math&amp;gt;3K&amp;lt;/math&amp;gt; операций умножения. Это нужно проделать в &amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt; узлах.&amp;lt;br&amp;gt;&lt;br /&gt;
Выделим главный член асимптотики по всем шагам: &amp;lt;math&amp;gt;K^2N + KN^2 + 3,5KN^2 + 3K^2N=O(KN\mathrm{max}(K,N)).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Если положить &amp;lt;math&amp;gt;K=N&amp;lt;/math&amp;gt;, то сложность алгоритма имеет порядок &amp;lt;math&amp;gt;O(N^3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Приведём информационные графы для каждой части алгоритма отдельно (иначе граф чрезмерно громоздкий).&amp;lt;br&amp;gt;&lt;br /&gt;
1. Построение коэффициентов &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; по функции &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; (тут и далее K = N = 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:F-T-f.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
2. Построение коэффициентов &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt; осуществляется по общей схеме.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:T-g.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
3. Построение коэффициентов &amp;lt;math&amp;gt;\eta_{kn}, \varphi_{kn}&amp;lt;/math&amp;gt; при фиксированном k.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:T-phi-eta.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
4. Построение самих функций &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:S-phi-eta.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
5. Построение решения в некоторой точке &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:S-u.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Макроструктуру всего алгоритма можно описать следующим графом:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Regularization-General-Graph.png|600px]]&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Будем оценивать параллельную сложность алгоритма в терминах блоков из пункта 1.7.&lt;br /&gt;
Предполагаем для простоты, что любые данные, помеченные промежуточными на общем графе, доступны с любой параллельной ветви&lt;br /&gt;
(для обеспечения этого в программе потребуется синхронизация на промежуточных этапах с обменом информацией).&lt;br /&gt;
Длинные операции суммирования считаем выполняемыми последовательно (без параллелизма). На практике это имеет смысл в силу малой сложности суммы.&lt;br /&gt;
Распараллеливание только замедлит программу за счёт обмена данными.&amp;lt;br&amp;gt;&lt;br /&gt;
Итак, в первом блоке операций каждый коэффициент Фурье в каждой точке может быть вычислен независимо от других. Числа &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; также вычисляются независимо при различных K и N.&lt;br /&gt;
В этом случае параллельная сложность - &amp;lt;math&amp;gt;O(\mathrm{max}(K,N))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Допустив суммирование сдваиванием, получим &amp;lt;math&amp;gt;O(\log_2 \mathrm{max}(K,N))&amp;lt;/math&amp;gt;. Параллелизм по K и N - массовый, в случае суммирования сдваиванием имеем дополнительно скошенный параллелизм.&amp;lt;br&amp;gt;&lt;br /&gt;
Вычисление &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt; не зависит от &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt;, его можно выполнить параллельно (конечный параллелизм). Сами же вычисления за счёт массового параллелизма по N упрощаются&lt;br /&gt;
до параллельной сложности &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Третий блок, как видно из общего графа, допускает массовый параллелизм по K. Однако, внутренние вычисления, как видно из третьего графа, весьма запутанные и не допускают координатного параллелизма&lt;br /&gt;
(достаточно заметить в формулах, что каждый следующий n+1-й коэффициент требует знания всех предыдущих для вычисления). В этом случае параллельная сложность - &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
С использованием скошенного параллелизма можно потенциально сократить параллельную сложность до &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;, если все коэффициенты будут считаться параллельно.&lt;br /&gt;
Но в этом случае после вычисления каждого следующего коэффициента, необходимо передать его в параллельные ветви, вычисляющие другие (со старшими номерами).&lt;br /&gt;
Это на практике потребует существенных временных расходов на передачу данных и синхронизацию.&amp;lt;br&amp;gt;&lt;br /&gt;
Вычисление же &amp;lt;math&amp;gt;\eta_k(y), \stackrel{\circ}{\varphi}_k(y)&amp;lt;/math&amp;gt; независимо в каждой точке y и при каждом индексе k. Массовый параллелизм. Параллельная сложность - &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;.&lt;br /&gt;
Коррекция &amp;lt;math&amp;gt;\stackrel{\circ}{\varphi}_k(y)&amp;lt;/math&amp;gt; при этом имеет параллельную сложность &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
И, наконец, вычисление решение можно вести независимо в каждой точке (массовый параллелизм). Параллельная сложность - &amp;lt;math&amp;gt;O(K)&amp;lt;/math&amp;gt;, в случае суммирования сдваиванием - &amp;lt;math&amp;gt;O(\log_2 K)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Итоговая параллельная сложность алгоритма: &amp;lt;math&amp;gt;O(\mathrm{max}(K, N^2))&amp;lt;/math&amp;gt;. Использование суммирования сдваиванием и указанного подхода в третьем блоке позволяют уменьшить параллельную сложность до&lt;br /&gt;
&amp;lt;math&amp;gt;O(\mathrm{max}(\log_2 K, N))&amp;lt;/math&amp;gt;.&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
На вход алгоритм получает заданные на сетке функции &amp;lt;math&amp;gt;f(x,y), a(y), c(y)&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;(K+2)N&amp;lt;/math&amp;gt; вещественных чисел).&lt;br /&gt;
На выходе у алгоритма заданное на сетке решение &amp;lt;math&amp;gt;u(x,y)&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt; вещественных чисел). Используется сетка, объявленная в пункте 1.5.&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
[[File:Regularization-Graphic-K=P.PNG|мини|1. График времени работы для слабой масштабируемости]]&lt;br /&gt;
[[File:Regularization-Graphic-K=const,T.PNG|мини|2. График времени работы для сильной масштабируемости]]&lt;br /&gt;
[[File:Regularization-Graphic-K=const,E.PNG|мини|3. График эффективности распараллеливания для сильной масштабируемости]]&lt;br /&gt;
Будем рассматривать масштабируемость реализации алгоритма при некоторых ограничениях. Опираясь на пункт 1.8, заметим, что на шагах алгоритма 1 и 3 характер параллелизма по N имеет тот же характер, что и по K.&lt;br /&gt;
Кроме того, на шаге 2, как было замечено, без использования затратных в организации методов распараллеливания, параллельная сложность по N равна &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt; и не может быть уменьшена.&lt;br /&gt;
Руководствуясь этими аргументами, положим во всех текстах &amp;lt;math&amp;gt;N=const=2048&amp;lt;/math&amp;gt; и исследуем ресурс параллелизма по K.&amp;lt;br&amp;gt;&lt;br /&gt;
Все результаты запусков были получены на суперкомпьютере «Ломоносов»&amp;lt;ref&amp;gt;https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%BC%D0%BE%D0%BD%D0%BE%D1%81%D0%BE%D0%B2_(%D1%81%D1%83%D0%BF%D0%B5%D1%80%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80)&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;http://users.parallel.ru/wiki/pages/22-config&amp;lt;/ref&amp;gt; (ссылка на технические характеристики в литературе).&lt;br /&gt;
Отметим следующие свойства, которые должны следовать из свойств алгоритма:&amp;lt;br&amp;gt;&lt;br /&gt;
1. При P &amp;lt; K (P - количество процессоров) имеет место сильная масштабируемость. Действительно, не изменяя K, мы можем увеличить количество процессоров P (P &amp;lt; K).&lt;br /&gt;
В этом случае производительность должна пропорционально сократиться (см. пункт 1.8).&amp;lt;br&amp;gt;&lt;br /&gt;
2. При P = K имеет место слабая масштабируемость, ибо при P &amp;gt; K не удастся равномерно загрузить все узлы работой и некоторые узлы будут бездействовать, однако,&lt;br /&gt;
в случае повышения K, вы вновь сможем увеличить количество процессоров так, что время работы программы на этапах 1 и 2 останется неизменным,&lt;br /&gt;
а на этапе 3 увеличится пропорционально первой степени K, но не второй.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Алгоритм требует в некоторые моменты времени производить синхронизацию и обмены данными по принципу «все со всеми». Это вызовет существенную эксплуатацию среды коммуникации, что приведёт к ухудшению&lt;br /&gt;
эффективности распараллеливания при большом числе процессоров.&amp;lt;br&amp;gt;&lt;br /&gt;
Обозначенные факты подтверждаются результатами запусков.&lt;br /&gt;
На первом графике видно, что при равномерном увеличении P и K время работы программы остаётся примерно неизменным на этапах 1 и 2 и линейно растёт на этапе 3.&lt;br /&gt;
Но, при P &amp;gt; 128 ситуация резко ухудшается и время работы начинает возрастать (при увеличении количества процессоров с 256 до 1024 время работы на первом этапе возросло в 6 раз, до этого почти не менялось).&lt;br /&gt;
Это объясняется возросшими накладными расходами на обеспечение межпроцессорного взаимодействия.&lt;br /&gt;
Второй график демонстрирует зависимость времени выполнения от количества процессоров. График характерен для сильной масштабируемости: при P &amp;lt; 256 время убывает по P как гипербола.&lt;br /&gt;
Этот же факт нашёл отражение в графике эффективности распараллеливания: при тех же P эффективность распараллеливания в целом не опускается ниже 0,65, в среднем держится на уровне 0,8.&lt;br /&gt;
Резкое падение эффективности реализации третьего шага в начале обусловлено появлением обмена данными при переходе от 1 процессора к двум. На долю третьего этапа выпадает существенная доля обмена данными.&lt;br /&gt;
При P &amp;gt; 256 эффективность начинает быстро убывать, но стабилизируется на уровне 0,15. Выигрыш по времени по прежнему есть, но уже не такой существенный.&lt;br /&gt;
При исследовании сильной масштабируемости параметр K был зафиксирован равным 1024.&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Данный алгоритм основан на методе С. А. Ломова построения точных решений. Не известно о существовании его реализаций.&lt;br /&gt;
В целом, дифференциальные уравнения с вырождениями представляют весьма мало изученную область математики.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=24091</id>
		<title>Участник:Rpu6/Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=24091"/>
		<updated>2017-11-20T20:43:21Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(KN\mathrm{max}(K, N))&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(\mathrm{max}(K, N^2))&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(KN)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;KN + 2N&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=2\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции &amp;lt;math&amp;gt;\eta_k(y),\varphi_k(y)&amp;lt;/math&amp;gt;, они будут использованы при построении приближения к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-l}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм решения задачи можно разделить на три крупные части примерно одинаковой вычислительной сложности:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Разложение заданной функции &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; в ряд Фурье, разложение её коэффициентов Фурье в ряды Тейлора, разложение заданных функций &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; в ряды Тейлора.&lt;br /&gt;
На этом этапе известные сеточные функции скалярно умножаются на тригонометрические функции или полиномы Лежандра. В первом случае коэффициент является скалярным произведением,&lt;br /&gt;
во втором - линейной комбинацией соответствующих коэффициентов полиномов Лежандра, помноженных на отвечающие данному полиному скалярные произведения.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Построение коэффициентов ряда Тейлора для функций &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt; с последующим построением самих функций.&lt;br /&gt;
Используются формулы этапа 4 пункта 1.2.&amp;lt;br&amp;gt;&lt;br /&gt;
3. По построенным функциям &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt; строится решение задачи &amp;lt;math&amp;gt;u(x,y)&amp;lt;/math&amp;gt; (формула этапа 5 пункта 1.2).&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Макроструктура этого алгоритма фактически совпадает с его вычислительным ядром (см. пункт 1.3).&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм принимает на вход сеточные функции &amp;lt;math&amp;gt;f(x_i, y_j), a(y_j), c(y_j); x_i = \frac{i}{K}, y_j = \frac{j}{N}; i = \overline{0,K-1}, j=\overline{0,N-1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
f_k(y_j) = \frac{2}{K}\sum_{l=1}^K f(x_l, y_j) sin (\pi kx_l), k=\overline{1,K},\\&lt;br /&gt;
f_{kn} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} f_k(y_l) L_m(y_l), n=\overline{0,N-1},\\&lt;br /&gt;
a_{n} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} a(y_l) L_m(y_l),\\&lt;br /&gt;
c_{n} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} c(y_l) L_m(y_l).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Тут &amp;lt;math&amp;gt;\mathrm{coeff}_n&amp;lt;/math&amp;gt; - коэффициент при n-й степени y в полиноме-аргументе (подразумевается, что алгоритм их знает), &amp;lt;math&amp;gt;L_m&amp;lt;/math&amp;gt; - нормированный полином Лежандра степени m.&amp;lt;br&amp;gt;&lt;br /&gt;
Формулы для вычислений на других шагах алгоритма изложены в пункте 1.2. Достаточно заметить, что при все функции вычисляются в узлах заданной сетки, суммирование можно вести, запоминая &amp;lt;math&amp;gt;y^{n-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
с предыдущего шага, вычисляется лишь &amp;lt;math&amp;gt;y^{n-1}y&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Будем оценивать количество операций умножения вещественных чисел. Произведём оценку отдельно для каждого шага алгоритма.&amp;lt;br&amp;gt;&lt;br /&gt;
1. &amp;lt;math&amp;gt;(K + 1)KN&amp;lt;/math&amp;gt; умножение для вычисления всех &amp;lt;math&amp;gt;f_k(y_j)&amp;lt;/math&amp;gt; (N возникает в силу необходимости вычислять функцию в каждой точке сетки по y),&lt;br /&gt;
&amp;lt;math&amp;gt;((N + 1)N + 1)K&amp;lt;/math&amp;gt; операций для вычисления &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; (считаем, что значения гармоник и полиномов Лежандра известны заранее,&lt;br /&gt;
учитываем равенство некоторых скалярных произведений при вычислении),&lt;br /&gt;
&amp;lt;math&amp;gt;2((N + 1)N + 1)&amp;lt;/math&amp;gt; операций для вычисления &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
2. Для вычисления n-го коэффициента требуется &amp;lt;math&amp;gt;5 + 3(n-1)&amp;lt;/math&amp;gt; операций, для вычисления всех коэффициентов -&lt;br /&gt;
&amp;lt;math&amp;gt;\sum_{n=1}^{N-1} (5 + 3(n-1))=5(N-1) + 3\frac{N-2}{2}(N-1)=(N-1)(5 + 1,5 (N-2))&amp;lt;/math&amp;gt;, суммирование &amp;lt;math&amp;gt;\stackrel{\circ}{\varphi}_k(b)&amp;lt;/math&amp;gt; требует &amp;lt;math&amp;gt;2N&amp;lt;/math&amp;gt; операций,&lt;br /&gt;
коррекция &amp;lt;math&amp;gt;\varphi_k(y_j)&amp;lt;/math&amp;gt; требует &amp;lt;math&amp;gt;N + 2&amp;lt;/math&amp;gt; операции, построение самих функций - &amp;lt;math&amp;gt;N(2N)=2N^2&amp;lt;/math&amp;gt; операций. Это всё нужно проделать &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; раз.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Вычисление значения функции в узле сетки стоит &amp;lt;math&amp;gt;3K&amp;lt;/math&amp;gt; операций умножения. Это нужно проделать в &amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt; узлах.&amp;lt;br&amp;gt;&lt;br /&gt;
Выделим главный член асимптотики по всем шагам: &amp;lt;math&amp;gt;K^2N + KN^2 + 3,5KN^2 + 3K^2N=O(KN\mathrm{max}(K,N)).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Если положить &amp;lt;math&amp;gt;K=N&amp;lt;/math&amp;gt;, то сложность алгоритма имеет порядок &amp;lt;math&amp;gt;O(N^3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Приведём информационные графы для каждой части алгоритма отдельно (иначе граф чрезмерно громоздкий).&amp;lt;br&amp;gt;&lt;br /&gt;
1. Построение коэффициентов &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; по функции &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; (тут и далее K = N = 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:F-T-f.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
2. Построение коэффициентов &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt; осуществляется по общей схеме.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:T-g.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
3. Построение коэффициентов &amp;lt;math&amp;gt;\eta_{kn}, \varphi_{kn}&amp;lt;/math&amp;gt; при фиксированном k.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:T-phi-eta.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
4. Построение самих функций &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:S-phi-eta.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
5. Построение решения в некоторой точке &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:S-u.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Макроструктуру всего алгоритма можно описать следующим графом:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Regularization-General-Graph.png|600px]]&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Будем оценивать параллельную сложность алгоритма в терминах блоков из пункта 1.7.&lt;br /&gt;
Предполагаем для простоты, что любые данные, помеченные промежуточными на общем графе, доступны с любой параллельной ветви&lt;br /&gt;
(для обеспечения этого в программе потребуется синхронизация на промежуточных этапах с обменом информацией).&lt;br /&gt;
Длинные операции суммирования считаем выполняемыми последовательно (без параллелизма). На практике это имеет смысл в силу малой сложности суммы.&lt;br /&gt;
Распараллеливание только замедлит программу за счёт обмена данными.&amp;lt;br&amp;gt;&lt;br /&gt;
Итак, в первом блоке операций каждый коэффициент Фурье в каждой точке может быть вычислен независимо от других. Числа &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; также вычисляются независимо при различных K и N.&lt;br /&gt;
В этом случае параллельная сложность - &amp;lt;math&amp;gt;O(\mathrm{max}(K,N))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Допустив суммирование сдваиванием, получим &amp;lt;math&amp;gt;O(\log_2 \mathrm{max}(K,N))&amp;lt;/math&amp;gt;. Параллелизм по K и N - массовый, в случае суммирования сдваиванием имеем дополнительно скошенный параллелизм.&amp;lt;br&amp;gt;&lt;br /&gt;
Вычисление &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt; не зависит от &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt;, его можно выполнить параллельно (конечный параллелизм). Сами же вычисления за счёт массового параллелизма по N упрощаются&lt;br /&gt;
до параллельной сложности &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Третий блок, как видно из общего графа, допускает массовый параллелизм по K. Однако, внутренние вычисления, как видно из третьего графа, весьма запутанные и не допускают координатного параллелизма&lt;br /&gt;
(достаточно заметить в формулах, что каждый следующий n+1-й коэффициент требует знания всех предыдущих для вычисления). В этом случае параллельная сложность - &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
С использованием скошенного параллелизма можно потенциально сократить параллельную сложность до &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;, если все коэффициенты будут считаться параллельно.&lt;br /&gt;
Но в этом случае после вычисления каждого следующего коэффициента, необходимо передать его в параллельные ветви, вычисляющие другие (со старшими номерами).&lt;br /&gt;
Это на практике потребует существенных временных расходов на передачу данных и синхронизацию.&amp;lt;br&amp;gt;&lt;br /&gt;
Вычисление же &amp;lt;math&amp;gt;\eta_k(y), \stackrel{\circ}{\varphi}_k(y)&amp;lt;/math&amp;gt; независимо в каждой точке y и при каждом индексе k. Массовый параллелизм. Параллельная сложность - &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;.&lt;br /&gt;
Коррекция &amp;lt;math&amp;gt;\stackrel{\circ}{\varphi}_k(y)&amp;lt;/math&amp;gt; при этом имеет параллельную сложность &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
И, наконец, вычисление решение можно вести независимо в каждой точке (массовый параллелизм). Параллельная сложность - &amp;lt;math&amp;gt;O(K)&amp;lt;/math&amp;gt;, в случае суммирования сдваиванием - &amp;lt;math&amp;gt;O(\log_2 K)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Итоговая параллельная сложность алгоритма: &amp;lt;math&amp;gt;O(\mathrm{max}(K, N^2))&amp;lt;/math&amp;gt;. Использование суммирования сдваиванием и указанного подхода в третьем блоке позволяют уменьшить параллельную сложность до&lt;br /&gt;
&amp;lt;math&amp;gt;O(\mathrm{max}(\log_2 K, N))&amp;lt;/math&amp;gt;.&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
На вход алгоритм получает заданные на сетке функции &amp;lt;math&amp;gt;f(x,y), a(y), c(y)&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;(K+2)N&amp;lt;/math&amp;gt; вещественных чисел).&lt;br /&gt;
На выходе у алгоритма заданное на сетке решение &amp;lt;math&amp;gt;u(x,y)&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt; вещественных чисел). Используется сетка, объявленная в пункте 1.5.&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Данный алгоритм основан на методе С. А. Ломова построения точных решений. Не известно о существовании его реализаций.&lt;br /&gt;
В целом, дифференциальные уравнения с вырождениями представляют весьма мало изученную область математики.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=24033</id>
		<title>Участник:Rpu6/Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=24033"/>
		<updated>2017-11-19T10:50:26Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(KN\mathrm{max}(K, N))&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(\mathrm{max}(K, N^2))&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(KN)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;KN + 2N&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=2\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции &amp;lt;math&amp;gt;\eta_k(y),\varphi_k(y)&amp;lt;/math&amp;gt;, они будут использованы при построении приближения к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-l}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм решения задачи можно разделить на три крупные части примерно одинаковой вычислительной сложности:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Разложение заданной функции &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; в ряд Фурье, разложение её коэффициентов Фурье в ряды Тейлора, разложение заданных функций &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; в ряды Тейлора.&lt;br /&gt;
На этом этапе известные сеточные функции скалярно умножаются на тригонометрические функции или полиномы Лежандра. В первом случае коэффициент является скалярным произведением,&lt;br /&gt;
во втором - линейной комбинацией соответствующих коэффициентов полиномов Лежандра, помноженных на отвечающие данному полиному скалярные произведения.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Построение коэффициентов ряда Тейлора для функций &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt; с последующим построением самих функций.&lt;br /&gt;
Используются формулы этапа 4 пункта 1.2.&amp;lt;br&amp;gt;&lt;br /&gt;
3. По построенным функциям &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt; строится решение задачи &amp;lt;math&amp;gt;u(x,y)&amp;lt;/math&amp;gt; (формула этапа 5 пункта 1.2).&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Макроструктура этого алгоритма фактически совпадает с его вычислительным ядром (см. пункт 1.3).&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм принимает на вход сеточные функции &amp;lt;math&amp;gt;f(x_i, y_j), a(y_j), c(y_j); x_i = \frac{i}{K}, y_j = \frac{j}{N}; i = \overline{0,K-1}, j=\overline{0,N-1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
f_k(y_j) = \frac{2}{K}\sum_{l=1}^K f(x_l, y_j) sin (\pi kx_l), k=\overline{1,K},\\&lt;br /&gt;
f_{kn} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} f_k(y_l) L_m(y_l), n=\overline{0,N-1},\\&lt;br /&gt;
a_{n} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} a(y_l) L_m(y_l),\\&lt;br /&gt;
c_{n} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} c(y_l) L_m(y_l).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Тут &amp;lt;math&amp;gt;\mathrm{coeff}_n&amp;lt;/math&amp;gt; - коэффициент при n-й степени y в полиноме-аргументе (подразумевается, что алгоритм их знает), &amp;lt;math&amp;gt;L_m&amp;lt;/math&amp;gt; - нормированный полином Лежандра степени m.&amp;lt;br&amp;gt;&lt;br /&gt;
Формулы для вычислений на других шагах алгоритма изложены в пункте 1.2. Достаточно заметить, что при все функции вычисляются в узлах заданной сетки, суммирование можно вести, запоминая &amp;lt;math&amp;gt;y^{n-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
с предыдущего шага, вычисляется лишь &amp;lt;math&amp;gt;y^{n-1}y&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Будем оценивать количество операций умножения вещественных чисел. Произведём оценку отдельно для каждого шага алгоритма.&amp;lt;br&amp;gt;&lt;br /&gt;
1. &amp;lt;math&amp;gt;(K + 1)KN&amp;lt;/math&amp;gt; умножение для вычисления всех &amp;lt;math&amp;gt;f_k(y_j)&amp;lt;/math&amp;gt; (N возникает в силу необходимости вычислять функцию в каждой точке сетки по y),&lt;br /&gt;
&amp;lt;math&amp;gt;((N + 1)N + 1)K&amp;lt;/math&amp;gt; операций для вычисления &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; (считаем, что значения гармоник и полиномов Лежандра известны заранее,&lt;br /&gt;
учитываем равенство некоторых скалярных произведений при вычислении),&lt;br /&gt;
&amp;lt;math&amp;gt;2((N + 1)N + 1)&amp;lt;/math&amp;gt; операций для вычисления &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
2. Для вычисления n-го коэффициента требуется &amp;lt;math&amp;gt;5 + 3(n-1)&amp;lt;/math&amp;gt; операций, для вычисления всех коэффициентов -&lt;br /&gt;
&amp;lt;math&amp;gt;\sum_{n=1}^{N-1} (5 + 3(n-1))=5(N-1) + 3\frac{N-2}{2}(N-1)=(N-1)(5 + 1,5 (N-2))&amp;lt;/math&amp;gt;, суммирование &amp;lt;math&amp;gt;\stackrel{\circ}{\varphi}_k(b)&amp;lt;/math&amp;gt; требует &amp;lt;math&amp;gt;2N&amp;lt;/math&amp;gt; операций,&lt;br /&gt;
коррекция &amp;lt;math&amp;gt;\varphi_k(y_j)&amp;lt;/math&amp;gt; требует &amp;lt;math&amp;gt;N + 2&amp;lt;/math&amp;gt; операции, построение самих функций - &amp;lt;math&amp;gt;N(2N)=2N^2&amp;lt;/math&amp;gt; операций. Это всё нужно проделать &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; раз.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Вычисление значения функции в узле сетки стоит &amp;lt;math&amp;gt;3K&amp;lt;/math&amp;gt; операций умножения. Это нужно проделать в &amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt; узлах.&amp;lt;br&amp;gt;&lt;br /&gt;
Выделим главный член асимптотики по всем шагам: &amp;lt;math&amp;gt;K^2N + KN^2 + 3,5KN^2 + 3K^2N=O(KN\mathrm{max}(K,N)).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Если положить &amp;lt;math&amp;gt;K=N&amp;lt;/math&amp;gt;, то сложность алгоритма имеет порядок &amp;lt;math&amp;gt;O(N^3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Приведём информационные графы для каждой части алгоритма отдельно (иначе граф чрезмерно громоздкий).&amp;lt;br&amp;gt;&lt;br /&gt;
1. Построение коэффициентов &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; по функции &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; (тут и далее K = N = 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:F-T-f.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
2. Построение коэффициентов &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt; осуществляется по общей схеме.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:T-g.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
3. Построение коэффициентов &amp;lt;math&amp;gt;\eta_{kn}, \varphi_{kn}&amp;lt;/math&amp;gt; при фиксированном k.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:T-phi-eta.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
4. Построение самих функций &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:S-phi-eta.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
5. Построение решения в некоторой точке &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:S-u.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Макроструктуру всего алгоритма можно описать следующим графом:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Regularization-General-Graph.png|600px]]&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Будем оценивать параллельную сложность алгоритма в терминах блоков из пункта 1.7.&lt;br /&gt;
Предполагаем для простоты, что любые данные, помеченные промежуточными на общем графе, доступны с любой параллельной ветви&lt;br /&gt;
(для обеспечения этого в программе потребуется синхронизация на промежуточных этапах с обменом информацией).&lt;br /&gt;
Длинные операции суммирования считаем выполняемыми последовательно (без параллелизма). На практике это имеет смысл в силу малой сложности суммы.&lt;br /&gt;
Распараллеливание только замедлит программу за счёт обмена данными.&amp;lt;br&amp;gt;&lt;br /&gt;
Итак, в первом блоке операций каждый коэффициент Фурье в каждой точке может быть вычислен независимо от других. Числа &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; также вычисляются независимо при различных K и N.&lt;br /&gt;
В этом случае параллельная сложность - &amp;lt;math&amp;gt;O(\mathrm{max}(K,N))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Допустив суммирование сдваиванием, получим &amp;lt;math&amp;gt;O(\log_2 \mathrm{max}(K,N))&amp;lt;/math&amp;gt;. Параллелизм по K и N - массовый, в случае суммирования сдваиванием имеем дополнительно скошенный параллелизм.&amp;lt;br&amp;gt;&lt;br /&gt;
Вычисление &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt; не зависит от &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt;, его можно выполнить параллельно (конечный параллелизм). Сами же вычисления за счёт массового параллелизма по N упрощаются&lt;br /&gt;
до параллельной сложности &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Третий блок, как видно из общего графа, допускает массовый параллелизм по K. Однако, внутренние вычисления, как видно из третьего графа, весьма запутанные и не допускают координатного параллелизма&lt;br /&gt;
(достаточно заметить в формулах, что каждый следующий n+1-й коэффициент требует знания всех предыдущих для вычисления). В этом случае параллельная сложность - &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
С использованием скошенного параллелизма можно потенциально сократить параллельную сложность до &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;, если все коэффициенты будут считаться параллельно.&lt;br /&gt;
Но в этом случае после вычисления каждого следующего коэффициента, необходимо передать его в параллельные ветви, вычисляющие другие (со старшими номерами).&lt;br /&gt;
Это на практике потребует существенных временных расходов на передачу данных и синхронизацию.&amp;lt;br&amp;gt;&lt;br /&gt;
Вычисление же &amp;lt;math&amp;gt;\eta_k(y), \stackrel{\circ}{\varphi}_k(y)&amp;lt;/math&amp;gt; независимо в каждой точке y и при каждом индексе k. Массовый параллелизм. Параллельная сложность - &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;.&lt;br /&gt;
Коррекция &amp;lt;math&amp;gt;\stackrel{\circ}{\varphi}_k(y)&amp;lt;/math&amp;gt; при этом имеет параллельную сложность &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
И, наконец, вычисление решение можно вести независимо в каждой точке (массовый параллелизм). Параллельная сложность - &amp;lt;math&amp;gt;O(K)&amp;lt;/math&amp;gt;, в случае суммирования сдваиванием - &amp;lt;math&amp;gt;O(\log_2 K)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Итоговая параллельная сложность алгоритма: &amp;lt;math&amp;gt;O(\mathrm{max}(K, N^2))&amp;lt;/math&amp;gt;. Использование суммирования сдваиванием и указанного подхода в третьем блоке позволяют уменьшить параллельную сложность до&lt;br /&gt;
&amp;lt;math&amp;gt;O(\mathrm{max}(\log_2 K, N))&amp;lt;/math&amp;gt;.&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
На вход алгоритм получает заданные на сетке функции &amp;lt;math&amp;gt;f(x,y), a(y), c(y)&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;(K+2)N&amp;lt;/math&amp;gt; вещественных чисел).&lt;br /&gt;
На выходе у алгоритма заданное на сетке решение &amp;lt;math&amp;gt;u(x,y)&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt; вещественных чисел). Используется сетка, объявленная в пункте 1.5.&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
Данный алгоритм основан методе С. А. Ломова построения точных решений. Автору не известно о существовании его реализаций.&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Regularization-General-Graph.png&amp;diff=24032</id>
		<title>Файл:Regularization-General-Graph.png</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Regularization-General-Graph.png&amp;diff=24032"/>
		<updated>2017-11-19T10:44:27Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:F-T-f.png&amp;diff=24031</id>
		<title>Файл:F-T-f.png</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:F-T-f.png&amp;diff=24031"/>
		<updated>2017-11-19T10:42:46Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=24029</id>
		<title>Участник:Rpu6/Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=24029"/>
		<updated>2017-11-18T22:01:09Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(KN\mathrm{max}(K, N))&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;O(\mathrm{max}(K, N^2))&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;O(KN)&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;KN + 2N&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=2\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции &amp;lt;math&amp;gt;\eta_k(y),\varphi_k(y)&amp;lt;/math&amp;gt;, они будут использованы при построении приближения к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-l}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм решения задачи можно разделить на три крупные части примерно одинаковой вычислительной сложности:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Разложение заданной функции &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; в ряд Фурье, разложение её коэффициентов Фурье в ряды Тейлора, разложение заданных функций &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; в ряды Тейлора.&lt;br /&gt;
На этом этапе известные сеточные функции скалярно умножаются на тригонометрические функции или полиномы Лежандра. В первом случае коэффициент является скалярным произведением,&lt;br /&gt;
во втором - линейной комбинацией соответствующих коэффициентов полиномов Лежандра, помноженных на отвечающие данному полиному скалярные произведения.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Построение коэффициентов ряда Тейлора для функций &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt; с последующим построением самих функций.&lt;br /&gt;
Используются формулы этапа 4 пункта 1.2.&amp;lt;br&amp;gt;&lt;br /&gt;
3. По построенным функциям &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt; строится решение задачи &amp;lt;math&amp;gt;u(x,y)&amp;lt;/math&amp;gt; (формула этапа 5 пункта 1.2).&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Макроструктура этого алгоритма фактически совпадает с его вычислительным ядром (см. пункт 1.3).&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм принимает на вход сеточные функции &amp;lt;math&amp;gt;f(x_i, y_j), a(y_j), c(y_j); x_i = \frac{i}{K}, y_j = \frac{j}{N}; i = \overline{0,K-1}, j=\overline{0,N-1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
f_k(y_j) = \frac{2}{K}\sum_{l=1}^K f(x_l, y_j) sin (\pi kx_l), k=\overline{1,K},\\&lt;br /&gt;
f_{kn} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} f_k(y_l) L_m(y_l), n=\overline{0,N-1},\\&lt;br /&gt;
a_{n} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} a(y_l) L_m(y_l),\\&lt;br /&gt;
c_{n} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} c(y_l) L_m(y_l).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Тут &amp;lt;math&amp;gt;\mathrm{coeff}_n&amp;lt;/math&amp;gt; - коэффициент при n-й степени y в полиноме-аргументе (подразумевается, что алгоритм их знает), &amp;lt;math&amp;gt;L_m&amp;lt;/math&amp;gt; - нормированный полином Лежандра степени m.&amp;lt;br&amp;gt;&lt;br /&gt;
Формулы для вычислений на других шагах алгоритма изложены в пункте 1.2. Достаточно заметить, что при все функции вычисляются в узлах заданной сетки, суммирование можно вести, запоминая &amp;lt;math&amp;gt;y^{n-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
с предыдущего шага, вычисляется лишь &amp;lt;math&amp;gt;y^{n-1}y&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Будем оценивать количество операций умножения вещественных чисел. Произведём оценку отдельно для каждого шага алгоритма.&amp;lt;br&amp;gt;&lt;br /&gt;
1. &amp;lt;math&amp;gt;(K + 1)KN&amp;lt;/math&amp;gt; умножение для вычисления всех &amp;lt;math&amp;gt;f_k(y_j)&amp;lt;/math&amp;gt; (N возникает в силу необходимости вычислять функцию в каждой точке сетки по y),&lt;br /&gt;
&amp;lt;math&amp;gt;((N + 1)N + 1)K&amp;lt;/math&amp;gt; операций для вычисления &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; (считаем, что значения гармоник и полиномов Лежандра известны заранее,&lt;br /&gt;
учитываем равенство некоторых скалярных произведений при вычислении),&lt;br /&gt;
&amp;lt;math&amp;gt;2((N + 1)N + 1)&amp;lt;/math&amp;gt; операций для вычисления &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
2. Для вычисления n-го коэффициента требуется &amp;lt;math&amp;gt;5 + 3(n-1)&amp;lt;/math&amp;gt; операций, для вычисления всех коэффициентов -&lt;br /&gt;
&amp;lt;math&amp;gt;\sum_{n=1}^{N-1} (5 + 3(n-1))=5(N-1) + 3\frac{N-2}{2}(N-1)=(N-1)(5 + 1,5 (N-2))&amp;lt;/math&amp;gt;, суммирование &amp;lt;math&amp;gt;\stackrel{\circ}{\varphi}_k(b)&amp;lt;/math&amp;gt; требует &amp;lt;math&amp;gt;2N&amp;lt;/math&amp;gt; операций,&lt;br /&gt;
коррекция &amp;lt;math&amp;gt;\varphi_k(y_j)&amp;lt;/math&amp;gt; требует &amp;lt;math&amp;gt;N + 2&amp;lt;/math&amp;gt; операции, построение самих функций - &amp;lt;math&amp;gt;N(2N)=2N^2&amp;lt;/math&amp;gt; операций. Это всё нужно проделать &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; раз.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Вычисление значения функции в узле сетки стоит &amp;lt;math&amp;gt;3K&amp;lt;/math&amp;gt; операций умножения. Это нужно проделать в &amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt; узлах.&amp;lt;br&amp;gt;&lt;br /&gt;
Выделим главный член асимптотики по всем шагам: &amp;lt;math&amp;gt;K^2N + KN^2 + 3,5KN^2 + 3K^2N=O(KN\mathrm{max}(K,N)).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Если положить &amp;lt;math&amp;gt;K=N&amp;lt;/math&amp;gt;, то сложность алгоритма имеет порядок &amp;lt;math&amp;gt;O(N^3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
Приведём информационные графы для каждой части алгоритма отдельно (иначе граф чрезмерно громоздкий).&amp;lt;br&amp;gt;&lt;br /&gt;
1. Построение коэффициентов &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; по функции &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; (тут и далее K = N = 3).&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:F-T-f.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
2. Построение коэффициентов &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt; осуществляется по общей схеме.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:T-g.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
3. Построение коэффициентов &amp;lt;math&amp;gt;\eta_{kn}, \varphi_{kn}&amp;lt;/math&amp;gt; при фиксированном k.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:T-phi-eta.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
4. Построение самих функций &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:S-phi-eta.png|400px]]&amp;lt;br&amp;gt;&lt;br /&gt;
5. Построение решения в некоторой точке &amp;lt;math&amp;gt;(x,y)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:S-u.png|500px]]&amp;lt;br&amp;gt;&lt;br /&gt;
Макроструктуру всего алгоритма можно описать следующим графом:&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Regularization-General-Graph.png|600px]]&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
Будем оценивать параллельную сложность алгоритма в терминах блоков из пункта 1.7.&lt;br /&gt;
Предполагаем для простоты, что любые данные, помеченные промежуточными на общем графе, доступны с любой параллельной ветви&lt;br /&gt;
(для обеспечения этого в программе потребуется синхронизация на промежуточных этапах с обменом информацией).&lt;br /&gt;
Длинные операции суммирования считаем выполняемыми последовательно (без параллелизма). На практике это имеет смысл в силу малой сложности суммы.&lt;br /&gt;
Распараллеливание только замедлит программу за счёт обмена данными.&amp;lt;br&amp;gt;&lt;br /&gt;
Итак, в первом блоке операций каждый коэффициент Фурье в каждой точке может быть вычислен независимо от других. Числа &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; также вычисляются независимо при различных K и N.&lt;br /&gt;
В этом случае параллельная сложность - &amp;lt;math&amp;gt;O(\mathrm{max}(K,N))&amp;lt;/math&amp;gt;.&lt;br /&gt;
Допустив суммирование сдваиванием, получим &amp;lt;math&amp;gt;O(\log_2 \mathrm{max}(K,N))&amp;lt;/math&amp;gt;. Параллелизм по K и N - массовый, в случае суммирования сдваиванием имеем дополнительно скошенный параллелизм.&amp;lt;br&amp;gt;&lt;br /&gt;
Вычисление &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt; не зависит от &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt;, его можно выполнить параллельно (конечный параллелизм). Сами же вычисления за счёт массового параллелизма по N упрощаются&lt;br /&gt;
до параллельной сложности &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Третий блок, как видно из общего графа, допускает массовый параллелизм по K. Однако, внутренние вычисления, как видно из третьего графа, весьма запутанные и не допускают координатного параллелизма&lt;br /&gt;
(достаточно заметить в формулах, что каждый следующий n+1-й коэффициент требует знания всех предыдущих для вычисления). В этом случае параллельная сложность - &amp;lt;math&amp;gt;O(N^2)&amp;lt;/math&amp;gt;.&lt;br /&gt;
С использованием скошенного параллелизма можно потенциально сократить параллельную сложность до &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;, если все коэффициенты будут считаться параллельно.&lt;br /&gt;
Но в этом случае после вычисления каждого следующего коэффициента, необходимо передать его в параллельные ветви, вычисляющие другие (со старшими номерами).&lt;br /&gt;
Это на практике потребует существенных временных расходов на передачу данных и синхронизацию.&amp;lt;br&amp;gt;&lt;br /&gt;
Вычисление же &amp;lt;math&amp;gt;\eta_k(y), \stackrel{\circ}{\varphi}_k(y)&amp;lt;/math&amp;gt; независимо в каждой точке y и при каждом индексе k. Массовый параллелизм. Параллельная сложность - &amp;lt;math&amp;gt;O(N)&amp;lt;/math&amp;gt;.&lt;br /&gt;
Коррекция &amp;lt;math&amp;gt;\stackrel{\circ}{\varphi}_k(y)&amp;lt;/math&amp;gt; при этом имеет параллельную сложность &amp;lt;math&amp;gt;O(1)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
И, наконец, вычисление решение можно вести независимо в каждой точке (массовый параллелизм). Параллельная сложность - &amp;lt;math&amp;gt;O(K)&amp;lt;/math&amp;gt;, в случае суммирования сдваиванием - &amp;lt;math&amp;gt;O(\log_2 K)&amp;lt;/math&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Итоговая параллельная сложность алгоритма: &amp;lt;math&amp;gt;O(\mathrm{max}(K, N^2))&amp;lt;/math&amp;gt;. Использование суммирования сдваиванием и указанного подхода в третьем блоке позволяют уменьшить параллельную сложность до&lt;br /&gt;
&amp;lt;math&amp;gt;O(\mathrm{max}(\log_2 K, N))&amp;lt;/math&amp;gt;.&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
На вход алгоритм получает заданные на сетке функции &amp;lt;math&amp;gt;f(x,y), a(y), c(y)&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;(K+2)N&amp;lt;/math&amp;gt; вещественных чисел).&lt;br /&gt;
На выходе у алгоритма заданное на сетке решение &amp;lt;math&amp;gt;u(x,y)&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt; вещественных чисел). Используется сетка, объявленная в пункте 1.5.&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=23954</id>
		<title>Участник:Rpu6/Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=23954"/>
		<updated>2017-11-14T22:08:03Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{algorithm&lt;br /&gt;
| name              = Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения&lt;br /&gt;
| serial_complexity = &amp;lt;math&amp;gt;O(KN\mathrm{max}(K, N))&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_height         = &amp;lt;math&amp;gt;?&amp;lt;/math&amp;gt;&lt;br /&gt;
| pf_width          = &amp;lt;math&amp;gt;?&amp;lt;/math&amp;gt;&lt;br /&gt;
| input_data        = &amp;lt;math&amp;gt;KN + 2N&amp;lt;/math&amp;gt;&lt;br /&gt;
| output_data       = &amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=2\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции &amp;lt;math&amp;gt;\eta_k(y),\varphi_k(y)&amp;lt;/math&amp;gt;, они будут использованы при построении приближения к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-l}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм решения задачи можно разделить на три крупные части примерно одинаковой вычислительной сложности:&amp;lt;br&amp;gt;&lt;br /&gt;
1. Разложение заданной функции &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; в ряд Фурье, разложение её коэффициентов Фурье в ряды Тейлора, разложение заданных функций &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; в ряды Тейлора.&lt;br /&gt;
На этом этапе известные сеточные функции скалярно умножаются на тригонометрические функции или полиномы Лежандра. В первом случае коэффициент является скалярным произведением,&lt;br /&gt;
во втором - линейной комбинацией соответствующих коэффициентов полиномов Лежандра, помноженных на отвечающие данному полиному скалярные произведения.&amp;lt;br&amp;gt;&lt;br /&gt;
2. Построение коэффициентов ряда Тейлора для функций &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt; с последующим построением самих функций.&lt;br /&gt;
Используются формулы этапа 4 пункта 1.2.&amp;lt;br&amp;gt;&lt;br /&gt;
3. По построенным функциям &amp;lt;math&amp;gt;\eta_k(y), \varphi_k(y)&amp;lt;/math&amp;gt; строится решение задачи &amp;lt;math&amp;gt;u(x,y)&amp;lt;/math&amp;gt; (формула этапа 5 пункта 1.2).&lt;br /&gt;
&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Макроструктура этого алгоритма фактически совпадает с его вычислительным ядром (см. пункт 1.3).&lt;br /&gt;
&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм принимает на вход сеточные функции &amp;lt;math&amp;gt;f(x_i, y_j), a(y_j), c(y_j); x_i = \frac{i}{K}, y_j = \frac{j}{N}; i = \overline{0,K-1}, j=\overline{0,N-1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
f_k(y_j) = \frac{2}{K}\sum_{l=1}^K f(x_l, y_j) sin (\pi kx_l), k=\overline{1,K},\\&lt;br /&gt;
f_{kn} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} f_k(y_l) L_m(y_l), n=\overline{0,N-1},\\&lt;br /&gt;
a_{n} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} a(y_l) L_m(y_l),\\&lt;br /&gt;
c_{n} = \sum_{m=0}^{N-1} (\mathrm{coeff}_n L_m) \frac{2}{N} \sum_{l=0}^{N-1} c(y_l) L_m(y_l).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Тут &amp;lt;math&amp;gt;\mathrm{coeff}_n&amp;lt;/math&amp;gt; - коэффициент при n-й степени y в полиноме-аргументе (подразумевается, что алгоритм их знает), &amp;lt;math&amp;gt;L_m&amp;lt;/math&amp;gt; - нормированный полином Лежандра степени m.&amp;lt;br&amp;gt;&lt;br /&gt;
Формулы для вычислений на других шагах алгоритма изложены в пункте 1.2. Достаточно заметить, что при все функции вычисляются в узлах заданной сетки, суммирование можно вести, запоминая &amp;lt;math&amp;gt;y^{n-1}&amp;lt;/math&amp;gt;&lt;br /&gt;
с предыдущего шага, вычисляется лишь &amp;lt;math&amp;gt;y^{n-1}y&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Будем оценивать количество операций умножения вещественных чисел. Произведём оценку отдельно для каждого шага алгоритма.&amp;lt;br&amp;gt;&lt;br /&gt;
1. &amp;lt;math&amp;gt;(K + 1)N&amp;lt;/math&amp;gt; умножение для вычисления &amp;lt;math&amp;gt;f_k(y_j)&amp;lt;/math&amp;gt; (N возникает в силу необходимости вычислять функцию в каждой точке сетки по y),&lt;br /&gt;
&amp;lt;math&amp;gt;((N + 1)N + 1)K&amp;lt;/math&amp;gt; операций для вычисления &amp;lt;math&amp;gt;f_{kn}&amp;lt;/math&amp;gt; (считаем, что значения гармоник и полиномов Лежандра известны заранее),&lt;br /&gt;
&amp;lt;math&amp;gt;2((N + 1)N + 1)&amp;lt;/math&amp;gt; операций для вычисления &amp;lt;math&amp;gt;a_n, c_n&amp;lt;/math&amp;gt;.&lt;br /&gt;
2. Для вычисления n-го коэффициента требуется &amp;lt;math&amp;gt;5 + 3(n-1)&amp;lt;/math&amp;gt; операций, для вычисления всех коэффициентов -&lt;br /&gt;
&amp;lt;math&amp;gt;\sum_{n=1}^{N-1} (5 + 3(n-1))=5(N-1) + 3\frac{N-2}{2}(N-1)=(N-1)(5 + 1,5 (N-2))&amp;lt;/math&amp;gt;, суммирование &amp;lt;math&amp;gt;\stackrel{\circ}{\varphi}_k(b)&amp;lt;/math&amp;gt; требует &amp;lt;math&amp;gt;2N&amp;lt;/math&amp;gt; операций,&lt;br /&gt;
коррекция &amp;lt;math&amp;gt;\varphi_k(y_j)&amp;lt;/math&amp;gt; требует &amp;lt;math&amp;gt;N + 2&amp;lt;/math&amp;gt; операции, построение самих функций - &amp;lt;math&amp;gt;N(2N)=2N^2&amp;lt;/math&amp;gt; операций. Это всё нужно проделать &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; раз.&amp;lt;br&amp;gt;&lt;br /&gt;
3. Вычисление значения функции в узле сетки стоит &amp;lt;math&amp;gt;3K&amp;lt;/math&amp;gt; операций умножения. Это нужно проделать в &amp;lt;math&amp;gt;KN&amp;lt;/math&amp;gt; узлах.&amp;lt;br&amp;gt;&lt;br /&gt;
Выделим главный член асимптотики по всем шагам: &amp;lt;math&amp;gt;KN^2 + 3,5KN^2 + 3K^2N=O(KN\mathrm{max}(K,N)).&amp;lt;/math&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Если положить &amp;lt;math&amp;gt;K=N&amp;lt;/math&amp;gt;, то сложность алгоритма имеет порядок &amp;lt;math&amp;gt;O(N^3)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=23708</id>
		<title>Участник:Rpu6/Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=23708"/>
		<updated>2017-11-01T15:43:14Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=4\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции &amp;lt;math&amp;gt;\eta_k(y),\varphi_k(y)&amp;lt;/math&amp;gt;, они будут использованы при построении приближения к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-1}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=23707</id>
		<title>Участник:Rpu6/Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=23707"/>
		<updated>2017-11-01T15:42:01Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=4\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции &amp;lt;math&amp;gt;\eta_k(y),\varphi_k(y)&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-1}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=23704</id>
		<title>Участник:Rpu6/Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=23704"/>
		<updated>2017-11-01T10:43:25Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=4\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции (они потребуются для построения приближённого решения):&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-1}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=22984</id>
		<title>Участник:Rpu6/Алгоритм построения приближённого решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%B1%D0%BB%D0%B8%D0%B6%D1%91%D0%BD%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=22984"/>
		<updated>2017-10-14T22:56:48Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: Новая страница: «Автор описания: Д. П. Емельянов.  = Свойства и структура алгоритма =  == Общее…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=4\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции:&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-1}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=22983</id>
		<title>Участник:Rpu6/Алгоритм построения точного решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=22983"/>
		<updated>2017-10-14T22:48:40Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=4\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лежандра.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции:&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-1}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=22982</id>
		<title>Участник:Rpu6/Алгоритм построения точного решения нерегулярно вырождающегося эллиптического дифференциального уравнения</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Rpu6/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F_%D1%82%D0%BE%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D1%80%D0%B5%D1%88%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B5%D1%80%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D0%BE_%D0%B2%D1%8B%D1%80%D0%BE%D0%B6%D0%B4%D0%B0%D1%8E%D1%89%D0%B5%D0%B3%D0%BE%D1%81%D1%8F_%D1%8D%D0%BB%D0%BB%D0%B8%D0%BF%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B4%D0%B8%D1%84%D1%84%D0%B5%D1%80%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=22982"/>
		<updated>2017-10-14T22:14:31Z</updated>

		<summary type="html">&lt;p&gt;Rpu6: Новая страница: «Автор описания: Д. П. Емельянов.  = Свойства и структура алгоритма =  == Общее…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор описания: [[Участник:Rpu6|Д. П. Емельянов]].&lt;br /&gt;
&lt;br /&gt;
= Свойства и структура алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Общее описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Алгоритм позволяет построить приближения к точному решению эллиптического дифференциального уравнения с нерегулярным вырождением и аналитическими коэффициентами в прямоугольнике. Точные формулы решения уравнения и их строгое обоснование получены с использованием метода спектрального выделения особенностей&amp;lt;ref&amp;gt;Ломов С. А., Ломов И. С. Основы математической теории пограничного слоя. М.: Издательство Московского университета, 2011. – 456 с.&amp;lt;/ref&amp;gt;. Решение строится в виде ряда. Погрешность алгоритма заключается в замене рядов на конечные суммы.&lt;br /&gt;
&lt;br /&gt;
Алгоритм решает следующую задачу:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}&lt;br /&gt;
	y^2u&#039;&#039;_{yy}+u&#039;&#039;_{xx}+c(y)u&#039;_y-a(y)u=f(x,y),(x,y)\in(0,1)\times(0,b), \\&lt;br /&gt;
	u(0,y)=u(1,y)=u(x,b)=0,|u(x,0)|&amp;lt;+\infty.&lt;br /&gt;
\end{cases}&amp;lt;/math&amp;gt;&lt;br /&gt;
Функции &amp;lt;math&amp;gt;a(y), c(y)&amp;lt;/math&amp;gt; полагаем аналитическими в круге &amp;lt;math&amp;gt;|y|\lt R&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;R\gt b&amp;lt;/math&amp;gt;. Кроме того, &amp;lt;math&amp;gt;c(y), a(y) \ge 0&amp;lt;/math&amp;gt; в &amp;lt;math&amp;gt;[0,b]&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c(0)=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Математическое описание алгоритма ==&lt;br /&gt;
&lt;br /&gt;
1. Приблизим функцию &amp;lt;math&amp;gt;f(x,y)&amp;lt;/math&amp;gt; конечными суммами ряда Фурье по &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x,y)=\sum_{k=1}^{K}f_k(y)\sin \pi kx.&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f_k(y)=4\int\limits_0^1f(x,y)\sin \pi kx\,dx.&amp;lt;/math&amp;gt;&lt;br /&gt;
Для интеграла следует использовать квадратурную формулу.&lt;br /&gt;
&lt;br /&gt;
2. Приблизим функции &amp;lt;math&amp;gt;f_k(y),a(y),c(y)&amp;lt;/math&amp;gt; полиномами:&lt;br /&gt;
:&amp;lt;math&amp;gt;a(y)=\sum_{n=0}^{N}a_ny^n,&lt;br /&gt;
c(y)=\sum_{n=1}^{N}c_ny^n,&lt;br /&gt;
f_k(y)=\sum_{n=0}^{N}f_{kn}y^n.&amp;lt;/math&amp;gt;&lt;br /&gt;
Разложение можно проводить по аналогии с разложением в ряд Фурье, но с использованием полиномов Лагранжа.&lt;br /&gt;
&lt;br /&gt;
3. Введём в рассмотрение числа:&lt;br /&gt;
:&amp;lt;math&amp;gt;\lambda_k=\pi^2k^2+a_0, k = \overline{1,K},&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;r_k=\frac{1-c_1 + \sqrt{(c_1-1)^2+4\lambda_k}}{2}, k = \overline{1,K}.&amp;lt;/math&amp;gt;&lt;br /&gt;
4. Построим функции:&lt;br /&gt;
:&amp;lt;math&amp;gt;\eta_k(y)=\sum_{n=0}^{N}\eta_{kn}y^n, \stackrel{\circ}{\varphi}_k(y)=\sum_{n=0}^{N}\varphi_{kn}y^n,&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{matrix}&lt;br /&gt;
\eta_{kn}=\frac{f_{kn}-\sum_{l=2}^{n+1}c_l(n+1-l)\eta_{k,n+1-l}+&lt;br /&gt;
\sum_{l=1}^{n}a_l\eta_{k,n-l}}{n(n-1)+nc_1-\pi^2k^2-a_0},n = \overline{1,N},\\&lt;br /&gt;
\varphi_{kn}=\frac{&lt;br /&gt;
\sum_{l=1}^na_l\varphi_{k,n-1}-&lt;br /&gt;
\sum_{l=2}^{n+1}(n-l+1+r_k)c_l\varphi_{k,n-l+1}&lt;br /&gt;
}{n(n-1)+2nr_k+nc_1}&lt;br /&gt;
,n= \overline{1,N},\\&lt;br /&gt;
\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).&lt;br /&gt;
\end{matrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5. Построим приближение к решению:&lt;br /&gt;
:&amp;lt;math&amp;gt;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.&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За счёт выбора &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; и &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; можно добиться той или иной точности.&lt;br /&gt;
&lt;br /&gt;
== Вычислительное ядро алгоритма ==&lt;br /&gt;
== Макроструктура алгоритма ==&lt;br /&gt;
== Схема реализации последовательного алгоритма ==&lt;br /&gt;
== Последовательная сложность алгоритма ==&lt;br /&gt;
== Информационный граф ==&lt;br /&gt;
== Ресурс параллелизма алгоритма ==&lt;br /&gt;
== Входные и выходные данные алгоритма ==&lt;br /&gt;
== Свойства алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Программная реализация алгоритма =&lt;br /&gt;
&lt;br /&gt;
== Особенности реализации последовательного алгоритма ==&lt;br /&gt;
== Локальность данных и вычислений ==&lt;br /&gt;
== Возможные способы и особенности параллельной реализации алгоритма ==&lt;br /&gt;
== Масштабируемость алгоритма и его реализации ==&lt;br /&gt;
== Динамические характеристики и эффективность реализации алгоритма ==&lt;br /&gt;
== Выводы для классов архитектур ==&lt;br /&gt;
== Существующие реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references \&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rpu6</name></author>
	</entry>
</feed>