(на примере С++)
Здравствуйте, товарищи! :-) Сегодня мы поговорим о матрицах. Для неведающих, что это такое даю справку: прямоугольная таблица чисел Avij, i = 1, 2, 3, ... , m; j = 1, 2, 3, ... , n сложенная с m рядов и n столбиков называется матрицей (по учебнику В.П.Дубовика) И я постараюсь дать алгоритмы некоторых действий с матрицами. Итак, сначала алгоритм нашего "обучения":
1.
Сложение матриц
2. Произведение матрицы на число
3. Вычитание матриц
4. Произведение матрицы на матрицу
Ну-с, начнем.
Сложение матриц
Сложение матриц возможно для одинаковых матриц (т.е. i(А)=i(B); j(A)=j(B)).
Приведем блок-схему:
Рис. 1
1.
Сначала Вы вводите матрицы A и B
2. Потом Вы задаете цикл: i=0, i<xa (xa = i матрицы A или B). Если
выполняется, то программа переходит к пункту 3; если нет, то заканчиваете
локальный алгоритм
3. Вы снова задаете цикл: l=0, l<ya (ya = j матрицы A или B). Если
выполняется, то программа переходит к пункту 4; если нет - 2
4. Матрица результата (например, С) равняется: C[i][l] = A[i][l] + B[i][l]
Пример:
int xa = 3, ya = 4;
for(int i=0;i<xa;i++)
{
for(int l=0;l<ya;l++)
{
C[i][l]
= A[i][l] + B[i][l];
}
}
Произведение матрицы на число
Рис. 2
1.
Сначала Вы вводите матрицу A и число k
2. Потом Вы задаете цикл: i=0, i<xa (xa = i матрицы A или B). Если
выполняется, то программа переходит к пункту 3; если нет, то заканчиваете
локальный алгоритм
3. Вы снова задаете цикл: l=0, l<ya (ya = j матрицы A или B). Если
выполняется, то программа переходит к пункту 4; если нет - 2
4. Матрица результата равняется: C[i][l] = A[i][l] * k
Пример:
int xa = 3, ya = 4;
for(int i=0;i<xa;i++)
{
for(int l=0;l<ya;l++)
{
C[i][l]
= A[i][l] * k;
}
}
Вычитание матриц
Вычитание матриц (A-B) производиться как сложение матрицы A и матрицы B
умноженной на -1 (A-B = A+(-1)B) (первые два алгоритма)
Произведение матрицы на матрицу
Произведение матрицы на матрицу вводится лишь для соответствующих матриц - ряды
мат. A равны столбикам мат. B(Aih Bhj). Блок-схема:
Рис. 3
1.
Сначала Вы вводите матрицы A и B
2. Потом Вы задаете цикл: i=0, i<ya (ya = j матрицы A). Если выполняется, то
программа переходит к пункту 3; если нет, то заканчиваете локальный алгоритм
3. Вы снова задаете цикл: l=0, l<xb (xb = i матрицы B). Если выполняется, то
программа переходит к пункту 4; если нет - 2
4. Зануляете результат
5. Вы задаете цикл: x=0, x<xa (xa = i матрицы A или j столбцов B)
6. s = s + A[i][x] * B[x][l]
7. Результирующая матрица C[i][l] = s
8. Программа переходит к пункту 3
Пример:
for(int i=0;i<ya;i++)
{
for(int l=0;l<xb;l++)
{
s = 0;
for(int x=0;x<xa;x++)
{
s = s + A[i][x] * B[x][l];
}
c[i][l] = s;
}
}
Вы можете прочитать об динамических массивах тут.
Про обратную матрицу - в следующий раз. Дерзайте!