Участник:KibAndrey/Ортогонализация Грама-Шмидта: различия между версиями
Amelie (обсуждение | вклад) |
Amelie (обсуждение | вклад) |
||
Строка 17: | Строка 17: | ||
== Математическое описание алгоритма == | == Математическое описание алгоритма == | ||
− | Исходные данные: <math>k</math> векторов <math>\ | + | Исходные данные: <math>k</math> векторов <math>\mathb{a_1},\mathb{a_2},...,\mathb{a_n}</math> длины <math>n</math> (<math>\alpha_{ij}</math>, <math>j=1,2,...,n</math>, — координаты вектора <math>\mathb{a_i}</math> ). |
Вычисляемые данные: | Вычисляемые данные: | ||
Строка 28: | Строка 28: | ||
:<math> | :<math> | ||
\begin{align} | \begin{align} | ||
− | b_{1} & =a_{1}, \\ | + | \mathb{b_{1}} & =\mathb{a_{1}}, \\ |
− | b_{2}& =a_{2}-proj_{b_1}a_{1}, \\ | + | \mathb{b_{2}}& =\mathb{a_{2}}-proj_{\mathb{b_1}}\mathb{a_{1}}, \\ |
& ...\\ | & ...\\ | ||
− | b_{i} & = a_{i}-\sum\limits_{j=1}^{i-1} proj_{b_j}a_{j},\\ | + | \mathb{b_{i}} & = \mathb{a_{i}}-\sum\limits_{j=1}^{i-1} proj_{\mathb{b_j}}\mathb{a_{j}},\\ |
& ...\\ | & ...\\ | ||
− | b_{n} & = a_{n}-\sum\limits_{j=1}^{n-1} proj_{b_j}a_{j},\\ | + | \mathb{b_{n}} & =\mathb{ a_{n}}-\sum\limits_{j=1}^{n-1} proj_{\mathb{b_j}}\mathb{a_{j}},\\ |
\end{align} | \end{align} | ||
</math> | </math> | ||
− | Здесь <math>proj_{b_j}a_{j}</math>, для <math>j=1,...,n-1</math> проекция вектора math>a_{j}</math> на направление вектора math>b_{j}</math>. | + | Здесь <math>proj_{\mathb{b_j}}\mathb{a_{j}}</math>, для <math>j=1,...,n-1</math> проекция вектора math>\mathb{a_{j}}</math> на направление вектора math>\mathb{b_{j}}</math>. |
Cуществует также модифицированная версия алгоритма, однако в данном описании разобран только классический алгоритм ортогонализации Грама-Шмидта. | Cуществует также модифицированная версия алгоритма, однако в данном описании разобран только классический алгоритм ортогонализации Грама-Шмидта. |
Версия 23:42, 18 сентября 2016
Ортогонализация Грама-Шмидта | |
Последовательный алгоритм | |
Последовательная сложность | [math]O(n^3)[/math] |
Объём входных данных | [math][/math] |
Объём выходных данных | [math][/math] |
Параллельный алгоритм | |
Высота ярусно-параллельной формы | [math][/math] |
Ширина ярусно-параллельной формы | [math][/math] |
Основные авторы описания: А.В.Кибанов, Т.З.Аджиева
Содержание
- 1 ЧАСТЬ. Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 ЧАСТЬ Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 ЧАСТЬ. Свойства и структура алгоритма
1.1 Общее описание алгоритма
1.2 Математическое описание алгоритма
Исходные данные: [math]k[/math] векторов [math]\mathb{a_1},\mathb{a_2},...,\mathb{a_n}[/math] длины [math]n[/math] ([math]\alpha_{ij}[/math], [math]j=1,2,...,n[/math], — координаты вектора [math]\mathb{a_i}[/math] ).
Вычисляемые данные:
[math]k[/math] ортогональных векторов [math]b_1,b_2,...,b_n[/math] длины [math]n[/math], причем [math]b_1=a_1[/math] либо
[math]k[/math] ортонормированных векторов [math]e_1,e_2,...,e_n[/math] длины [math]n[/math], причем [math]e_1=\frac{a_1}{|a_1|}[/math]
Формулы процесса ортогонализации:
- [math] \begin{align} \mathb{b_{1}} & =\mathb{a_{1}}, \\ \mathb{b_{2}}& =\mathb{a_{2}}-proj_{\mathb{b_1}}\mathb{a_{1}}, \\ & ...\\ \mathb{b_{i}} & = \mathb{a_{i}}-\sum\limits_{j=1}^{i-1} proj_{\mathb{b_j}}\mathb{a_{j}},\\ & ...\\ \mathb{b_{n}} & =\mathb{ a_{n}}-\sum\limits_{j=1}^{n-1} proj_{\mathb{b_j}}\mathb{a_{j}},\\ \end{align} [/math]
Здесь [math]proj_{\mathb{b_j}}\mathb{a_{j}}[/math], для [math]j=1,...,n-1[/math] проекция вектора math>\mathb{a_{j}}</math> на направление вектора math>\mathb{b_{j}}</math>.
Cуществует также модифицированная версия алгоритма, однако в данном описании разобран только классический алгоритм ортогонализации Грама-Шмидта.
1.3 Вычислительное ядро алгоритма
1.4 Макроструктура алгоритма
1.5 Схема реализации последовательного алгоритма
- [math] \begin{align} a_{1} & =b_{1}, \\ \beta_{ij} & = \frac{(a_{i},b_j)}{(b_j,b_j)}=-\frac{(a_i,b_j)}{|b_j|^2}, \quad i \in [2, n], \quad j \in [1, n] ,\\ \end{align} [/math]
1.6 Последовательная сложность алгоритма
1.7 Информационный граф
1.8 Ресурс параллелизма алгоритма
1.9 Входные и выходные данные алгоритма
1.10 Свойства алгоритма
2 ЧАСТЬ Программная реализация алгоритма
2.1 Особенности реализации последовательного алгоритма
2.2 Локальность данных и вычислений
2.3 Возможные способы и особенности параллельной реализации алгоритма
2.4 Масштабируемость алгоритма и его реализации
2.5 Динамические характеристики и эффективность реализации алгоритма
2.6 Выводы для классов архитектур
2.7 Существующие реализации алгоритма
3 Литература
[1] Википедия [Электронный ресурс]. Тема: Процесс_Грама_―_Шмидта – Электрон. дан. – URL [1] (дата обращения 18.09.2016)