Действия с матрицами

(на примере С++)

Здравствуйте, товарищи! :-) Сегодня мы поговорим о матрицах. Для неведающих, что это такое даю справку: прямоугольная таблица чисел 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;

}

}


Вы можете прочитать об динамических массивах тут. Про обратную матрицу - в следующий раз. Дерзайте!


НАЗАД

Hosted by uCoz