Богатырь Добрыня Никитич живет под Киевом вместе с матерью, вдовой Мамелфой Тимофеевной. Все любили Добрыню за его силу, добрый нрав и веселый характер.
Как-то в жаркий день отправился он к Пучай-реке искупаться, и там напал на него Змей Горыныч. Стали они биться. Отбил Добрыня одну голову Змею, и начал тот пощады просить. Пообещал Змей Горыныч, что больше не станет русских людей в плен брать. Поверил ему Добрыня и отпустил.
Однако Змей тут же полетел в Киев и похитил там племянницу князя Владимира по имени Забава Путятишна. Увидел это Добрыня и поскакал в Киев, где князь повелел ему отправиться на гору Сорочинскую и Забаву.
Узнала про это Мамелфа Тимофеевна, опечалилась, но виду не подала. Наутро велела она Добрыне вывести из стойла дедова коня Бурку и оседлать его. И дала сыну плетку-семихвостку.
Приехал Добрыня к змеиному логову, а там ползают змееныши. Стал Бурка их топтать, но их было много, обвили они ноги коню, тот сдвинуться не может. Тогда Добрыня ударил его меж ушей плеткой-семихвосткой, и у Бурки силы появились. Потоптал он всех змеенышей до последнего.
Тут и Змей Горыныч прилетел, и начался у них бой, который длился целых три дня и три ночи. И победил Добрыня врага. Еще три дня ждал богатырь, пока земля впитает всю кровь Змея, а потом отправился к пещерам змеиным. Освободил там множество народа, а среди них и Забаву. Посадил ее на коня и отправился в Киев.
Так русский богатырь освободил родную землю от страшного врага и выполнил волю своего князя.
Матрицы не очень сложны для понимания и использования. Более того, они нужны для написания быстрых преобразований и очень полезны для представления математических операций в компактной форме.
Матрица - это множество чисел, сгруппированных в колонки и столбцы. Здесь изображены две матрицы: Матрица А и Матрица В.
56_1.gif (1163 b)
Матрица А - это матрица 2х3 (то есть у нее две строки и три столбца), тогда как матрица В - это матрица 3х3. Мы можем получить доступ к элементу матрицы А, используя запись А[m,n], где m - это строка, а n - столбец. Элемент в верхнем углу матрицы А будет обозначаться А[0,0] и он равен единице.
Произведение операций над матрицами
Вы можете производить большинство операций над матрицами так же, как Вы оперируете и с нормальными числами. Например, Вы можете их складывать или вычитать, соответственно складывая или вычитая каждый из компонентов.
Для примера, рассмотрим сложение двух матриц размерностью 2х3 - матрицы А и матрицы С:
56_2.gif (650 b)
При сложении матриц А и С нужно складывать каждый из элементов m, n. Суммы элементов займут в результирующей матрице соответствующие места:
56_3.gif (896 b)
Мы также можем умножить матрицу на скаляр k. Например, чтобы умножить матрицу А на 3, мы должны умножить на 3 каждый ее элемент.
56_4.gif (725 b)
Теперь поговорим об умножении двух матриц. Эта операция немного отличается от умножения на скалярную величину. Вы должны запомнить несколько правил:
Количество столбцов в первой матрице (n) должно быть равно количеству строк во второй (также n). Это значит, что если размерность первой матрицы (m x n), то размерность второй матрицы должна быть (n x r). Два остальных измерения m и к могут быть любыми.
Произведение матриц не коммутативно, то есть А х В не равно В х А.
Умножение матрицы m x n на матрицу n x r может быть описано алгоритмически следующим образом:
Для каждой строки первой матрицы:
Умножить строку на столбец другой матрицы поэлементно. Сложить полученный результат;
Поместить результат в позицию [i,j] результирующей матрицы, где i - это строка первой матрицы, а j - столбец второй матрицы.
Для простоты посмотрите на рисунок:
56_5.gif (4629 b)
Мы можем это сделать намного проще, написав программу на Си. Давайте определим матрицу 3х3 и напишем функцию, умножающую матрицы. Ниже показан исходный код:
// общая структура матрицы
typedef struct matrix_typ
{
float elem[3][3]; // место для хранения матрицы
} matrix, *matrix_ptr;
void Mat_Mult3x3(matrix_ptr matrix_1, matrix_ptr matrix_2,
matrix_ptr result)
{
index i, j, k;
for(i=0; i < 3; j++)
{
for(j=0; j < 3; j++)
{
result[i][j] = 0; // инициализация элемента
for(k = 0; k < 3; k++)
{
result->elem[i][j] += matrix_1->elem[i][k]
* matrix_2->elem[k][j];
} // конец цикла по k
} // конец цикла по j
} // конец цикла по i
} // конец функции
Единичная матрица
Прежде чем закончить говорить о матрицах, скажем еще об одной вещи: о единичной матрице. Не углубляясь в математические термины, я хочу сказать, что нам нужна такая матрица, умножая на которую мы получали бы исходную матрицу.
Говоря попросту, нам нужно иметь матрицу размерностью
Поделитесь своими знаниями, ответьте на вопрос:
Системы счисления : 100111 в (2) - перевести в 4, 8, 10, 16 301 в (4) -2, 8, 10, 16 706 в (8) - 2, 4, 10, 16 f01 в (16) - 2, 4, 8, 10