Матрицы и алгебраические действия над ними с точки зрения информатики - umotnas.ru o_O
Главная
Поиск по ключевым словам:
страница 1страница 2
Похожие работы
Название работы Кол-во страниц Размер
Матрицы и действия над ними 1 41.38kb.
Программа курса модуль I. Линейная алгебра Тема Матрицы и действия... 1 278.94kb.
Урок по рассказу Леонида Андреева «Ангелочек». Цели урока. Познакомить... 1 79.82kb.
Лекция № Матрицы и действия над ними 1 105.16kb.
Решение систем трех линейных уравнений. Матрицы и действия над ними 1 78.37kb.
Решение систем трех линейных уравнений. Матрицы и действия над ними 1 48.28kb.
План занятий по высшей математике 1 11.74kb.
План занятий по высшей математике 1 14.41kb.
А. А. Красилов роль истины для человека велика 1 316.44kb.
Задание №1 (а); (б) (выполнить действия) 1 85.13kb.
Нечеткие последовательности, нечеткие прямоугольные матрицы, нечеткие... 1 20.05kb.
Методические указания к курсу «Элементы дискретной математики и биоинформатики» 3 385.63kb.
Викторина для любознательных: «Занимательная биология» 1 9.92kb.

Матрицы и алгебраические действия над ними с точки зрения информатики - страница №2/2

Алгоритм


Элемент матрицы-результата, расположенный на I-й строке и J-м столбце, вычисляется так:

  1. Берем I-ю строку 1-й матрицы и J-й столбец 2-й матрицы (считая слева-направо и сверху-вниз). И вычисляем их скалярное произведение. То есть произведение 1-го элемента строки на 1-й элемент столбца плюс произведение 2-го элемента строки на 2-й элемент столбца и т.д. То есть результат есть сумма произведений элементов строки и элементов столбца с одинаковыми номерами.

  2. Количество элементов строки и столбца должно быть одинаково, иначе умножение этих матриц невозможно. То есть число строк 2-й матрицы должно равняться числу столбцов 1-й (K).

  3. Обозначим число строк 1-й матрицы: N, число столбцов 2-й: M. Матрица-результат будет иметь N строк и M столбцов. Чтобы вычислить все элементы матрицы-результата, нужно пробежать все значения I (от 1 до N) и J (от 1 до M).

  4. При вычислении суммы произведений нужна вспомогательная переменная. Назовем её Summa.

Листинг программы

Uses CRT;

Const Max=50;

Var AA,BB,CC: array [1..Max,1..Max] of Double;

{то есть место для матриц выделяем с запасом}



ii,jj,kk,nn,mm,ll : integer; Summa: double;

begin

writeln ('Программа умножает матрицу A на матрицу B');

write('Введите число строк 1-й матрицы - A (<=50)-> ');readln(NN);

write('Введите число столбцов 1-й матрицы - A (<=50)->');

readln(KK);

write('Введите число столбцов 2-й матрицы - B (<=50)-> ');

readln(MM);

{Вспомним, что число столбцов матрицы А равно числу строк матрицы В}



writeln('Введите 1-ю матрицу (A):');

for ii:=1 to nn do

for jj:=1 to kk do

begin

write('Введите A[',ii,',',jj,'] --> ');

readln(AA[ii,jj]);

end;
writeln('Введите 2-ю матрицу (B):');

for ii:=1 to kk do

for jj:=1 to mm do

begin write('Введите B[',ii,',',jj,'] --> '); readln(BB[ii,jj]);

end;
{Вычисляем элементы матрицы-результата}
for ii:=1 to nn do

for jj:=1 to mm do

begin

Summa:= 0;

for ll:= 1 to kk do

Summa:= Summa + AA[ii,ll]*BB[ll,jj];

CC[ii,jj] := Summa;

end;
{Выводим матрицу-результат:}

writeln('---- Результат: -----');

for ii:=1 to nn do

begin

for jj:=1 to mm do

write(CC[ii,jj]:8:2);

writeln;

end;

readln;

end.
---- Результат: ----

7 3 2 2 3 2 29 50

2 4 6 1 * 2 6 = 20 57

1 1 4 5 1 4 9 49

0 5

Для умножения матрицы на вектор используют следующую программу.
uses crt;

var A:array[1..50,1..50] of real;

b,Ab:array[1..50]of real;n,i,j:integer;

begin

clrscr; randomize;

write('Vvedite razmernost n=');

readln(n);

writeln('Matrica A:');

for i:=1 to n do

begin

for j:=1 to n do

begin

A[i,j]:=random(10)+random-3;

write(A[i,j]:6:2);

end;

writeln;

end;

writeln('Vector b:');

for i:=1 to n do

begin

if odd(i) then b[i]:=1/(i*i+2) {если нечетное}

else if not odd(i) then b[i]:=1/i; {если четное}

write(b[i]:6:2);

end;

writeln;

writeln('Vector Ab:');

for i:=1 to n do

begin

Ab[i]:=0;

for j:=1 to n do

Ab[i]:=Ab[i]+A[i,j]*b[j]; {произведение матрицы на вектор}

write(Ab[i]:6:2);

end;

readln

end.

§4. Использование специализированных математических

пакетов для работы с матрицами.

Итак, выше были рассмотрены программы которые реализуют действия над матрицами. Однако, одних программ для решения задач прикладного характера недостаточно. Ведь, не каждый из нас программист или обладатель программных компиляторов (как, то Турбо Паскаль или Си плюс). Но вот MS Excel или MathCAD найдется, если не у каждого, то у каждого второго точно. Я уже не говорю о всевозможных калькуляторах, которых в Интернете бесчисленное множество. Само собой не все программы показывают математический аппарат вычислений, а сразу выдают ответ. Но поверьте мне, что биологу или социологу и дела нет до расчетов им сразу необходим ответ.

В этом параграфе мы рассмотрим некоторые программные средства в которые встроен матричный аппарат.
4.1 Использование MathCAD при работе с матрицами.



  1. Для тех кто забыл, или не знает, напомним MathCAD является математическим редактором, позволяющим проводить разнообразные научные и инженерные расчеты, начиная от элементарной арифметики и заканчивая сложными реализациями численных методов.

  2. Так, с помощью данного математического редактора можно выполнять действия над матрицами.

  3. Для работы с матрицами, после запуска программы необходимо активизировать панель Матрицы, нажатием кнопки Панель векторов и матриц с панели инструментов Математические (см. рисунок), или из опций меню Вставить выбираем команду Матрица (сочетание клавиш Ctrl+M).

  4. После вызова команды Матрица (необходимо нажать на кнопку или набрать сочетание Ctrl+M). Далее на экране появиться диалоговое окно Вставить матрицу, в котором необходимо указать число строк и число столбцов.



  5. Таким образом, вводятся матрицы. Далее, применяя знаки алгебраических действий и клавишу ввода, можно обрабатывать данные математические элементы высшей алгебры. Программа выдает ответ сразу после нажатия равно.

  6. На нижнем рисунке приведены примеры сложения и умножения матриц, при этом программа сама указывает пользователю на ошибки (первый и третьи примеры Размерность матрицы задана неверно)







4.2 Встроенные функции MS Excel для умножения матриц.
В MS Excel умножение матриц реализуется с помощью функции МУМНОЖ (в английской версии MMULT). Данная функция имеет следующую структуру:

МУМНОЖ (массив1;массив2)

где массив1, массив2    — перемножаемые массивы.



Примечания.

  • Количество столбцов аргумента массив1 должно быть таким же, как количество сток аргумента массив2, и оба массива должны содержать только числа.

  • Массив1 и массив2 могут быть заданы как интервалы, массивы констант или ссылки.

  • Если хотя бы одна ячейка в аргументах пуста или содержит текст или если число столбцов в аргументе массив1 отличается от числа строк в аргументе массив2, то функция МУМНОЖ возвращает значение ошибки #ЗНАЧ!.

  • Массив a, который является произведением двух массивов b и c определяется следующим образом:

где I — номер строки, а j — номер столбца.



  • Формулы, которые возвращают массивы, должны быть введены как формулы массива.

Пример.

Чтобы этот пример проще было понять, скопируйте его на пустой лист.



Инструкции 

  1. Создайте пустую книгу или лист.

  2. Выделите пример в разделе справки. Не выделяйте заголовок строки или столбца.

Выделение примера в справке.



  1. Нажмите сочетание клавиш CTRL+C

  2. На листе выделите ячейку A1 и нажмите сочетание клавиш CTRL+V.

  3. Чтобы переключиться между просмотром результатов и просмотром формул, возвращающих эти результаты, нажмите сочетание клавиш CTRL+` (апостроф) или в меню Сервис укажите на пункт Зависимости формул и выберите режим Режим проверки формул.




A

B

Массив 1

Массив 1

1

3

7

2

Массив 2

Массив 2

2

0

0

2

Формула

Формула

=МУМНОЖ(A2:B3;A5:B6)













Примечание.  Формулу в этом примере необходимо ввести как формулу массива. После копирования этого примера на пустой лист выделите диапазон A8:B9, начиная с ячейки, содержащей формулу. Нажмите клавишу F2, а затем нажмите клавиши CTRL+SHIFT+ENTER. Если формула не будет введена как формула массива, единственное значение будет равно 2.

Ниже на рисунке представлен ещё один пример перемножения матриц:



В затененных областях у нас находятся искомые матрицы, а в выделенной прямоугольной зоне матрица результат.
Данный факт умножения матриц в MS Excel широко используется в экономике. С помощью матриц удобно записывать некоторые экономические зависимости.
Например, таблица распределения ресурсов по отдельным отраслям экономики (усл. ед.):

Ресурсы

Отрасли экономики

Промышленность

Сельское хозяйство

Электроэнергия

5,3

4,1

Трудовые ресурсы

2,8

2,1

Водные ресурсы

4,8

5,1

может быть записана в компактной форме в виде матрицы распределения ресурсов по отраслям:









||

5,3

4,1

||




A

=

||

2,8

2,1

||

.







||

4,8

5,1

||



В данной записи, например, матричный элемент а11 = 5,3 показывает, сколько электроэнергии употребляет промышленность, а элемент а22 = 2,1 - сколько трудовых ресурсов потребляет сельское хозяйство.

Рассмотрим несколько задач.

Задача 1.

Предприятие выпускает продукцию трех видов: P1, P2, P3 и использует сырье двух типов: S1 и S2. Нормы расхода сырья характеризуются матрицей:









||

2

3

||




A

=

||

5

2

||

,







||

1

4

||



где каждый элемент аij (i = 1,2,3; j = 1,2) показывает, сколько единиц сырья j-го типа расходуется на производство единицы продукции i-го вида. План выпуска продукции задан матрицей-строкой С = (100 80 130), стоимость единицы каждого типа сырья (ден. ед.) - матрицей столбцом:



B=

||

30

||




||

50

||




Решение. Затраты 1-го сырья составляют S1 = 2 х 100 + 5 х 80 + 1 х 130 = 730 ед. и 2-го - S2 = 3 х 100 + 2 х 80 + 4 х 130 = 980 ед., поэтому матрица-строка затрат сырья S может быть записана как произведение:


































||

2

3

||



















S

=

C

x

A

=

||

100

80

130

||

||

5

2

||

=

||

730

980

||

.


































||

1

4

||


















Тогда общая стоимость сырья Q = 730 х 30 + 980 х 50 = 70900 ден. ед. может быть записана в матричном виде: Q = S x B = (CA)B = (70900).

Общую стоимость сырья можно вычислить и в другом порядке: вначале вычислим матрицу стоимостей затрат сырья на единицу продукции, т.е. матрицу:




















||

2

3

||

||

30

||

=

||

210

||




R

=

A

x

B

=

||

5

2

||

||

50

||

=

||

250

||

,



















||

1

4

||













||

230

||



а затем общую стоимость сырья:




































||

210

||
















Q

=

C

x

R

=

||

100

80

130

||

||

250

||

=

||

70900

||

.


































||

230

||
















На этом примере мы убедились в выполнении ассоциативного закона произведения матриц: (СА)В = С(АВ).

Задача 2.

Предприятие производит продукцию трех видов и использует сырье двух типов. Нормы затрат сырья на единицу продукции каждого вида заданы матрицей:



A=

||

2

1

3

||




||

1

3

4

||

.

Стоимость единицы сырья каждого типа задана матрицей B = (10 15). Каковы общие затраты предприятия на производство 100 единиц продукции первого вида, 200 единиц продукции второго вида и 150 единиц продукции третьего вида?

Решение. Вычислим матрицу стоимостей затрат сырья на единицу продукции:































||

2

1

3

||




||

10

x

2

+

15

x

1

||




||

35

||




R

=

B

x

A

=

||

10

15

||

||

1

3

4

||

=

||

10

x

1

+

15

x

3

||

=

||

55

||

.

















































||

10

x

3

+

15

x

4

||

=

||

90

||




План выпуска продукции, очевидно, задан матрицей C = (100 200 150).

Общие затрата предприятия составляют:




































||

35

||


























































Q

=

C

x

R

=

||

100

200

150

||

||

55

||

=

||

100

x

35

+

200

x

55

+

150

x

90

||

=

||

28000

||

.


































||

90

||


























































Ответ: 28000.

4.3 Калькулятор для умножения матриц.
Ну, и пожалуй для самых ленивых, можно предложить калькулятор который производит умножение двух матриц. Причём, данная программа производит умножение двух матриц, каждая из которых может иметь размеры от 1х1 до 99х99. Данная программа является исполнительным файлом (.ехе) и поэтому не требует суперусловий от вашего компьютера или каких-либо дополнительных программных продуктов.

Обратите внимание, что первые две строки данного калькулятора описывают имена столбцов матриц, а первый столбец номера строк. Остается только задать число строк и столбцов первой и второй матриц, ввести в необходимые ячейки элементы матриц и получить ответ, который появляется автоматически.

Вот уж поистине рай для лентяев!

Заключение.

Пока сегодня и незаметно бурное развитие матричного аппарата, но это не отрицает того факта, что в недалеком будущем эти сложные математические элементы по праву займут место среди первых.

Расцвет трёхмерной анимации (и в частности 3D кино), развитие различных экономических отраслей на транскорпоративных уровнях, зарождение новых технических наук (кибертроника и робототехника) – всё это невозможно без изучения матричного анализа в купе с программированием.

Что касается транспорта (в частности наземного), то здесь, в связи с бурным развитием навигационной техники (координаты которых представляются массивами), мы станем очевидцами расцвета беспилотных автомобилей, что на мой взгляд должно сделать движение более безопасным.



Вам кажется это фантастикой? Но ведь когда-то в математике XIX века матрица Джеймса Сильвестра тоже была понятием из ряда вон выходящим. И несмотря на это его детище живёт и развивается до сих пор, помогая другим наукам.
Литература.



  1. Мак-Кракен Д. Дорн У., Численные методы и программи­рование на ФОРТРАНЕ, Москва, Мир, 1977.

  2. Блох А.Ш., Кузнецов А.Т., Вычислительная математика и программирование, Минск, Народная асвета, 1972.

  3. Пулькин С.П., Вычислительная математика, Москва, Просвещение, 1972.

  4. Левин М.Г., Программное обеспечение для решения задач численного анализа на СМ ЭВМ, Кишинев, Лумина, 1991.

  5. Зубов B.C., Программирование на языке Turbo Pascal, Москва, Филин, 1997.

  6. Марченко Л.А., Марченко А.И., Программирование в среде Turbo Pascal, Москва, Бином Универсал, Киев, Юниор, 1977.

  7. Выгодский М.Я., Справочник по высшей математике, Москва, Наука, 1972.

  8. Гутер Р.С., Овчинский Б.В., Резниковский П.Т., Програм­мирование и вычислительная математика, Москва, Наука, 1965.

  9. Мину М. Математическое программирование: Тео­рия и алгоритмы. М.: Наука, 1990.

  10. Ивановский Р.И. Компьютерные технологии в науке и образовании. Практика применения систем MathCAD Pro. Учеб. пособие. М.: Высшая школа, 2003.

Интернет-ресурсы


  1. Интернет-сайт издательского дома «Первое сентября»

www.1september.ru/

  1. Интернет-сайт «Фестиваль педагогических идей»

festival.1september.ru

  1. Интернет-портал:

allmath.ru

  1. Соросовский образовательный журнал:

journal.issep.rssi.ru/

Программное обеспечение

  1. Пакет компьютерной математики: MathCAD 14. Продукт компании MathSoft.

  2. Программа MS Excel входящая в пакет программ MS Office. Продукт компании Microsoft.

  3. Программный компилятор Турбо Паскаль версии 7.0. Продукт компании Borderland International.


<< предыдущая страница