Библиотека алгоритмов: различия между версиями
Перейти к навигации
Перейти к поиску
| [непроверенная версия] | [непроверенная версия] |
| Строка 25: | Строка 25: | ||
</algo></br> | </algo></br> | ||
На рисунках представлен результат для матрицы размером 5*5 и вектора длины 5</br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br> | На рисунках представлен результат для матрицы размером 5*5 и вектора длины 5</br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br></br> | ||
=='''ПЕРЕМНОЖЕНИЕ МАТРИЦ'''== | |||
[[Файл:2_XYprojection.jpg|мини|XY projection]] | |||
[[Файл:2_YZprojection.jpg|мини|YZ projection]] | |||
[[Файл:2_XZprojection.jpg|мини|XZ projection]] | |||
=====Ссылка на описание в энциклопедии AlgoWiki:===== | |||
[https://algowiki-project.org/ru/Перемножение_плотных_неособенных_матриц_(последовательный_вещественный_вариант) Перемножение плотных неособенных матриц]</br> | |||
=====Реализация алгоритма на Си:===== | |||
for ( int i=0; i<size_1_str;i++)</br> | |||
: for (int j=0; j<size_2_col;j++)</br> | |||
: {</br> | |||
:: matrix_out[i][j]=0; </br> | |||
:: for(int k=0; k<size_common;k++) </br> | |||
::: matrix_out[i][j]+=matrix_1[i][k]*matrix_2[k][j]; </br> | |||
: }</br> | |||
=====Описание алгоритма на Algolang:===== | |||
<algo></br> | |||
: <params></br> | |||
:: <param name="m" type="int" value="3"></param></br> | |||
:: <param name="n" type="int" value="3"></param></br> | |||
:: <param name="l" type="int" value="3"></param></br> | |||
: </params></br></br> | |||
: <block id="1" dims="3"></br> | |||
:: <arg name="i" val="1..m"></arg></br> | |||
:: <arg name="j" val="1..l"></arg></br> | |||
:: <arg name="k" val="1..n"></arg></br> | |||
:: <vertex condition="k<>1" type="3"></br> | |||
::: <in src="i,j,k-1"></in></br> | |||
:: </vertex></br> | |||
: </block></br> | |||
</algo></br> | |||
На рисунках представлено изображение графа алгоритма без входных и выходных данных для случая перемножения двух квадратных матриц порядка 3</br></br></br></br></br></br></br></br></br></br></br> | |||
=='''ПЕРЕМНОЖЕНИЕ МАТРИЦ'''== | =='''ПЕРЕМНОЖЕНИЕ МАТРИЦ'''== | ||
Версия от 22:13, 2 мая 2021
УМНОЖЕНИЕ МАТРИЦЫ НА ВЕКТОР



Ссылка на описание в энциклопедии AlgoWiki:
Умножение плотной неособенной матрицы на вектор
Реализация алгоритма на Си:
for(int i = 0; i < size; i++)
- for(int j = 0; j < size ; j++)
- vec_out[i] += matrix[i][j] * vec _in[j];
- vec_out[i] += matrix[i][j] * vec _in[j];
Описание алгоритма на Algolang:
<algo>
- <params>
- <param name="size" type="int" value="5"></param>
- <param name="size" type="int" value="5"></param>
- </params>
- <block dims="2">
- <arg name="i" val="0..size-1"></arg>
- <arg name="j" val="1..size"></arg>
- <vertex condition="" type="2">
- <in src="i,j-1"></in>
- <in src="i,j-1"></in>
- </vertex>
- <arg name="i" val="0..size-1"></arg>
- </block>
</algo>
На рисунках представлен результат для матрицы размером 5*5 и вектора длины 5
ПЕРЕМНОЖЕНИЕ МАТРИЦ



Ссылка на описание в энциклопедии AlgoWiki:
Перемножение плотных неособенных матриц
Реализация алгоритма на Си:
for ( int i=0; i<size_1_str;i++)
- for (int j=0; j<size_2_col;j++)
- {
- matrix_out[i][j]=0;
- for(int k=0; k<size_common;k++)
- matrix_out[i][j]+=matrix_1[i][k]*matrix_2[k][j];
- matrix_out[i][j]+=matrix_1[i][k]*matrix_2[k][j];
- matrix_out[i][j]=0;
- }
Описание алгоритма на Algolang:
<algo>
- <params>
- <param name="m" type="int" value="3"></param>
- <param name="n" type="int" value="3"></param>
- <param name="l" type="int" value="3"></param>
- <param name="m" type="int" value="3"></param>
- </params>
- <block id="1" dims="3">
- <arg name="i" val="1..m"></arg>
- <arg name="j" val="1..l"></arg>
- <arg name="k" val="1..n"></arg>
- <vertex condition="k<>1" type="3">
- <in src="i,j,k-1"></in>
- <in src="i,j,k-1"></in>
- </vertex>
- <arg name="i" val="1..m"></arg>
- </block>
</algo>
На рисунках представлено изображение графа алгоритма без входных и выходных данных для случая перемножения двух квадратных матриц порядка 3
ПЕРЕМНОЖЕНИЕ МАТРИЦ



Ссылка на описание в энциклопедии AlgoWiki:
Перемножение плотных неособенных матриц
Реализация алгоритма на Си:
for ( int i=0; i<size_1_str;i++)
- for (int j=0; j<size_2_col;j++)
- {
- matrix_out[i][j]=0;
- for(int k=0; k<size_common;k++)
- matrix_out[i][j]+=matrix_1[i][k]*matrix_2[k][j];
- matrix_out[i][j]+=matrix_1[i][k]*matrix_2[k][j];
- matrix_out[i][j]=0;
- }
Описание алгоритма на Algolang:
<algo>
- <params>
- <param name="m" type="int" value="3"></param>
- <param name="n" type="int" value="3"></param>
- <param name="l" type="int" value="3"></param>
- <param name="m" type="int" value="3"></param>
- </params>
- <block id="1" dims="3">
- <arg name="i" val="1..m"></arg>
- <arg name="j" val="1..l"></arg>
- <arg name="k" val="1..n"></arg>
- <vertex condition="k<>1" type="3">
- <in src="i,j,k-1"></in>
- <in src="i,j,k-1"></in>
- </vertex>
- <arg name="i" val="1..m"></arg>
- </block>
</algo>
На рисунках представлено изображение графа алгоритма без входных и выходных данных для случая перемножения двух квадратных матриц порядка 3