Поэлементарные операции над матрицами в системе MATLAB

 

 

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОЙ РАБОТЕ

 

по дисциплине: «Информатика»

на тему: Поэлементарные операции над матрицами в системе MATLAB

 

 

 

 

 

 

 

 

Оценка курсовой работы____________________

Принял: __________________ Дата ___________

 

 

 

 

 

 

 

 

 

 

Содержание

 

Введение………………………………………………………………………3

Рабочий стол системы MATLAB….………………………………………...6

Действия над матрицами……………………………………………………..9

Элементарные матрицы  и операции над ними……………………………..16

Список использованной литературы………………………………………..19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение.

Система MATLAB (сокращение от MATrix LABoratory -  МАТричная Лаборатория) разработана фирмой The MathWorks, Inc. (США, г.Нейтик, шт. Массачусетс) и является интерактивной системой для выполнения инженерных и научных расчетов, которая  ориентирована на работу с массивами данных. Система использует математический сопроцессор и допускает обращения к программам, написанным на языках Fortran, C и C++.

Наиболее известные  области применения системы MATLAB:

• математика и вычисления;

• разработка алгоритмов;

• вычислительный эксперимент, имитационное моделирование;

• анализ данных, исследование и визуализация результатов;

• научная и инженерная графика;

• разработка приложений, включая графический интерфейс

                  пользователя.

MATLAB – это интерактивная система, основным объектом которой является массив, для которого не требуется указывать размерность явно. Это позволяет решать многие вычислительные задачи, связанные с векторно-матричными формулировками, существенно сокращая время, необходимое для программирования на скалярных языках типа Fortran или C. Будучи ориентированной на работу с реальными данными, эта система выполняет все вычисления в арифметике с плавающей точкой, в отличие от систем компьютерной алгебры.

 

 

 

 

 

 

Система MATLAB – это одновременно и операционная среда и язык программирования. Одна из наиболее сильных сторон системы состоит в том, что на языке MATLAB могут быть написаны программы для многократного использования. Пользователь может сам написать специализированные функции и программы, которые оформляются в виде М-файлов. По мере увеличения количества созданных программ возникают проблемы их классификации и тогда можно попытаться собрать родственные функции в специальные папки. Это приводит к концепции пакетов прикладных программ (Application Toolboxes или просто Toolboxes), которые представляют собой коллекции М-файлов для решения определенной задачи или проблемы.

В действительности Toolboxes – это  нечто большое, чем просто набор  полезных функций; часто это результат  работы многих исследователей по всему миру, которые объединяются в группы по самым различным интересам, начиная от нейтронных сетей, дифференциальных уравнений в частных производных, статистики и размытых множеств до проектирования робастных систем управления, теории сигналов, идентификации, а также моделирования линейных и нелинейных динамических систем с помощью исключительно эффективного пакета SIMULINK. Именно поэтому пакеты прикладных программ MATLAB Application Toolboxes, входящие в состав семейства продуктов MATLAB, позволяют находиться на уровне самых современных мировых достижений в разных областях науки и техники.

 

 

 

 

 

 

 

 

Вызов и выход из MATLAB

 

 Вызов MATLAB-а. Для вызова системы MATLAB требуется двойное нажатие на иконку в рабочем столе Windows. При инсталляции MATLAB-а стартовой директорией по умолчанию  является $matlabroot\work, где $matlabroot есть директория, где установлены файлы системы MATLAB.

При вызове, система MATLAB автоматически  выполняет главный М-файл (master M-file)  matlabrc.m., и файл  startup.m (есди последний существует). Файл matlabrc.m, которые расположен в директории local, зарезервирован фирмой The MathWorks, а в многопользовательских системах может быть использован также системным менеджером. Файл startup.m предназначен для задания ряда стартовых опций (возможностей) по усмотрению пользователя. Вы можете изменить исходные пути доступа (см. далее), ввести заранее определенные переменные в рабочее пространство, изменить текущую директорию и т.д. Стартовый файл startup.m следует ввести в директорию $matlabroot\toolbox\local (более подробно с данным вопросом можно ознакомиться в справочных пособиях по MATLAB-у).

 

Выход из MATLAB-а. Для окончания сеанса работы с MATLAB следует выбрать опцию Exit MATLAB (Выход из MATLAB) в меню File на рабочем столе MATLAB-а, или напечатать quit  (Выход) в командном окне Command Window.

При выходе, MATLAB выполняет  специальный  файл finish.m, относящийся к типу сценариев (см. далее) , если только данный файл существует в текущей директории или где-либо на пути доступа системы MATLAB. Файл finish.m создается пользователем. Он должен содержать функции или операции, которые пользователь желает автоматически выполнить при выходе из системы MATLAB, например, такие как сохранение рабочего пространства или вызов диалогового окна, запрашивающего подтверждения выхода. В указанной выше директории $matlabroot\toolbox\local имеются два файла, которые пользователь может использовать в качества образца при создании своего файла finish.m:

•finishsav.m – Включает функцию save, что приводит к автоматическому запоминанию рабо-чего пространства при выходе из MATLAB-а.

•finishdlg.m – Выводит на экран подтверждающее диалоговое окно, которое позволяет аннулировать выход.

 

 

 

 

 

 

Рабочий стол (desktop) системы MATLAB

 

Рабочий стол системы MATLAB содержит следующие инструментальные окна, часть из которых не появляется при начальном запуске:

• Command Window (Командное Окно) – Выполняет все функции и команды системы

              MATLAB.

• Command History (История Команд) – Просмотр функций, введенных ранее в

             Command Window, их копирование и выполнение.

• Launch Pad (Окно Запуска) – Запускает все инструменты и обеспечивает доступ ко

               всем пакетам системы MATLAB .

• Current Directory Browser (Окно Просмотра Текущего Каталога) – Просмотр файлов

               MATLAB, а также сопутствующих файлов, а также выполнение таких операций 

               над файлами, как поиск и  открытие файлов.

• Help Browser (Окно Просмотра Помощи) – Поиск и просмотр документации по всем

               функциям и средствам системы  MATLAB.

• Workspace Browser (Окно Просмотра Рабочего Пространства) – Просмотр и изменение

               содержания рабочего пространства (workspace) системы MATLAB.

• Array Editor (Редактор Массивов Данных) – Просмотр содержимого массивов данных,

               записанных в виде таблицы  и редактирование данных.

 • Editor/Debugger (Редактор/Отладчик) – Для создания, редактирования и отладки

              М-файлов, т.е. файлов, содержащих  функции системы MATLAB.

Общий вид рабочего окна MATLAB представлен ниже (рис.1). Каждое из перечисленных окон может быть выведено из конфигурации рабочего стола  нажатием кнопки со стрелкой в верхнем правом углу окна (см. рис. 1). Обратная операция, то есть ввод в общую конфигурацию, осуществляется выбором опции Dock в меню View соответствующего окна. Можно также изменить конфигурацию рабочего стола путем перемещения любого откры-того окна в новое положение. Для этого нужно просто нажать левой клавишей мыши на выбранное название окна (Title Bar) и «перетащить» его в желаемое положение.

Для восстановления стандартной  конфигурации рабочего стола MATLAB необходимо выбрать опцию Default (По Умолчанию) в подменю Desktop Layout (План Рабочего Стола) в меню View (Вид) любого открытого окна системы. Все окна MATLAB содержат также контекстное меню (context menu), которое вызывается нажатием правой кнопки мыши и содержит наиболее часто применяемые опции (функции), связанные с данным окном.

Таким образом. в системе MATLAB имеется возможность изменения вида рабочего стола путем открытия, закрытия, перемещения или изменения размеров каждого из индивидуаль-ных окон.

 

 

Просмотр продуктов                                                            Просмотр или             Кнопка для

и демонстрационных        Вызов                                         изменение текущей   вывода окна из состава

роликов                              помощи       Ввод функций      директории                 рабочего стола  Закрытие окна

 

      Просмотр и вызов           Переход к рабочему               Нажатием левой клавиши мыши и перемещением

 введенных ранее команд      пространству (Workspace)     можно  изменять границы окон

                                                 и  к окну текущего каталога

 

 

 

Рис. 1. Общий  вид рабочего стола системы MATLAB

Общие свойства и возможности рабочего стола MATLAB

 

Ниже приводится вид  инструментальной панели системы MATLAB и указано назначение основных кнопок.

 

Создать новый

   М-файл            Копировать                Создать новую модельSimulink          

                                                                                                               Просмотр или изменение


               Открыть файл                    Undo                                                                     текущего каталогаю


                                                                                                                Выбор использованных ранее        


                 Вырезать Вставить        Redo           Вызов Помощи (Help)               каталогов                    


                       Всплывающее окно указателя,                                                     Просмотр с целью изменения                                                             

                           описывающее кнопку                                                                     текущего каталога  

    Undo – отмена последнего действия;  Redo – повторение последнего действия.

 

Рис. 2. Инструментальная линейка (Toolbar) рабочего стола

 

 

Command Window (Командное окно)

 

 

 

 

 

 

 

 

 

 

 

 

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

 

Матрица является двумерным  массивом действительных или комплексных  чисел. Линейная алгебра и теория матриц определяют множество операций над матрицами, которые непосредственно поддерживаются (т.е. выполняются как стандартные операции) в MATLAB-е. В частности, сюда входят все элементарные действия над матрицами, решение систем линейных уравнений, нахождение собственных значений и векторов, а также сингулярных чисел и т.д. Ниже кратко рассмотрены действия над матрицами в системе MATLAB.

 

 

Формирование  матриц в системе MATLAB

 

В дальнейшем для удобства будем считать термины матрица и массив эквивалентными. Более точно, матрица есть двумерный прямоугольный массив из действительных или комплексных чисел, который характеризует некоторое линейное преобразование. В MATLAB-е имеется множество встроенных функций, которые формируют (генерируют) различные типы матриц. Воспользуемся двумя из них для формирования пары матриц размера 3-by-3, которые будут использоваться в дальнейшем в качестве примеров. Первый пример представляет симметричную матрицу Паскаля. Если ввести команду

 

A = pascal (3)

 

то система ответит

 

                                                               A =

1    1    1

1    2    3

1    3    6

 

Второй пример представляет несимметричную матрицу, известную  под названием «волшебный квадрат» (magic square):

 

B = magic(3)

 

                                                               B =

8    1    6

3    5    7

4    9    2

 

 

Еще один пример использования стандартной матрицы представляет собой прямоугольную   3х2 матрицу случайных целых чисел:

 

C = fix(10*rand(3,2))

                                                             

                                                              C =

9      4

2      8

6      7.

 Здесь функция rand(3,2) генерирует 3х2 матрицу равномерно распределенных случайных чисел в диапазоне от 0 до 1, а функция fix осуществляет округление путем отбрасывания дробной части.

Вектор-столбец есть матрица размера mх1 matrix, вектор-строка – матрица размера 1х n , а скаляр есть матрица размера 1х1. Объединение отдельных чисел в массивы осуществляется при помощи квадратных скобок, причем отдельные строки разделяются точкой с запятой, а переменные в каждой строке – запятой или пробелом (число пробелов может быть любым). Выражения

u = [3; 1; 4]

 

v = [2 0 -1]

 

s = 7

 

дают вектор-столбец u , вектор-строку v и скаляр s (эти векторы также будут использоваться в дальнейшем при решении примеров):

 

                                                                 u =

3

1

4

 

                                                                 v =

 

2    0   –1

 

                                                                 s =

 

7

 

 

 

 

 

Сложение и вычитание  матриц

 

Сложение и вычитание матриц определяется как и для массивов, то есть поэлементно. Эти операции требуют чтобы обе матрицы имели одинаковую размерность, или одна из них была скаляром (в последнем случае MATLAB прибавляет (или вычитывает) данный скаляр из всех  элементов матрицы). Если размерности матриц не совпадают, в командное окно выдается сообщение об ошибке (красным цветом)

 

Error using ==> +

Matrix dimensions must agree.

 

Векторное произведение и транспонирование матриц

 

Вектор-строка и вектор-столбец  могут быть перемножены в любом порядке (оператор умножения * расположен на верхнем регистре клавиши с цифрой 8). Результатом будет или скаляр (внутреннее произведение) или матрица (внешнее произведение). Для приведенных выше векторов v и u имеем :

x = v*u

                                                                 x =

2

 

 

X = u*v

                                                                 X =

6    0   -3

2    0   -1

8    0   -4

Для действительных матриц, операция транспонирования меняет взаимное местоположение элементов aij aji, симметричных относительно главной диагонали. Для обозначения транспонирования MATLAB использует одиночную кавычку (апостроф) (‘). Для нашей симметричной матрицы Паскаля A’ = A. Однако матрица В не является симметричной и поэтому:

X = B'

 

                                                               X =

8   3   4

1   5   9

6   7   2

 

Транспонирование превращает вектор-строку в вектор-столбец и  наоборот. Если x и y оба являются действительными векторами, то произведение x*y не определено, но оба произведения x'*y и y'*x дают один и тот же скаляр. Это соотношение используется так часто, что имеет три различных имени: скалярное произведение, внутреннее произведение  и точечное произведение.

Для комплексного вектора или матрицы, z, величина z' обозначат комплексно-сопряженное  транспонирование. В MATLAB-е предусмотрены также поэлементные операции над элементами массивов. Признаком поэлементных операций служит точка после обозначения переменной. Так, транспонирование элементов матрицы z как массива чисел обозначается z.', по аналогии с другими операциями на массивами чисел. Например, если

 

z = [1+2i  3+4i]

 

то

                                                                z' =     

1-2i

3-4i

 

 

тогда как  z.' есть

 

                                                               z.' =

1+2i

3+4i

 

Для комплексных векторов, два скалярных произведения x'*y и y'*x комплексно сопряжены, а скалярное произведение x'*x  комплексного вектора с самим собой есть действительное число.

 

Произведение матриц

 

Для произведения двух совместимых А и В матриц в MATLAB–е достаточно записать в командной строке С = А*В . MATLAB самостоятельно проверит совместимость размерностей матриц и выдаст результат.  Если матрицы несовместимы, выдается сообщение об ошибке:

 

Error using ==> *

Inner matrix dimensions must agree.

 

 

 

Индексирование (Subscripts)

 

Для краткого рассмотрения некоторых основных понятий, связанных  с индексированием двумерных  массивов (матриц), введем «волшебную»  матрицу 4-го порядка:

 

F = magic(4)

                                                          F =

16     2     3    13

5    11    10     8

9     7     6    12

4    14    15     1

 

Элемент в i-ой строке и j-ом столбце матрицы F обозначается через F (i,j). Например, F (4,2) есть число в четвертой строке и втором столбце. Для нашего волшебного квадрата, F(4,2) есть 14. Таким образом, можно вычислить сумму элементов четвертого столбца матрицы F, напечатав

 

F (1,4) + F (2,4) + F (3,4) + F (4,4)

 

Это дает ответ 

                                                              ans =

34

 

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

Имеется также возможность  обращения к  элементам матрицы  при помощи одного индекса, F(k). Это обычный способ обращения к элементам векторов (строк или столбцов). Но в MATLAB-е такой способ индексирования можно применить и к двумерным (в общем случае – многомерным) матрицам, так как система MATLAB хранит все многомерные массивы чи-сел в виде одного длинного вектора-столбца, сформированного из столбцов исходной матрицы. Так, для нашего волшебного квадрата, F (8) есть другой способ обращения к начини 14 хранящемуся в F (4,2).

Если вы попытаетесь  использовать элемент, находящийся  вне размеров матрицы, это приведет к сообщению об ошибке

 

t = F (4,5)

Index exceeds matrix dimensions

(Индекс превышает размерность матрицы)

 

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

 

X = A;

X(4,5) = 17

 

                                                         X =

16   3   2   13   0

5   0    11   8    0

9   6     7   12   0

4   15   14    1  17

Двоеточие (Colon)

 

Двоеточие, : , является одним из наиболее важных операторов MATLAB-а. Оно встречается в нескольких разных формах. Выражение 1:10 есть вектор-строка, содержащий целевые числа от 1 до 10:

1  2  3  4  5  6  7  8  9  10

Чтобы получить неединичное  приращение, нужно задать приращение. Например,

100 : -7 : 50

есть

100  93   86   79   72   65   58   51

а

0 : pi/4 : pi

есть

 

0   0.7854  1.5708  2.3562   3.1416

 

Индексы, содержащие двоеточия, допускают обращение к частям матриц. Так, выражение

 

F (1:k, j)

 

дает первые k элементов j-го столбца матрицы F. То есть,

 

sum(F (1:4, 4))

 

вычисляет, как и в  примере выше, сумму элементов 4-го столбца. Но есть еще лучший путь. Двоеточие  само по себе означает обращение ко всем элементам строки или столбца матрицы, а зарезервированное слово end есть обращение к последним строке или столбцу матрицы (в случае векторов-строк или столбцов слово end есть обращение к последнему элементу вектора). Значит,

sum(F (:, end))

 

вычисляет сумму элементов  последнего столбца матрицы F . Ответ: ans = 34. Почему магическая сумма для волшебного квадрата 4 х 4 равна 34 ? Дело в том, что если целые числа от 1 до 16 (число элементов матрицы размера 4 х 4) упорядочены в четыре группы с равными суммами элементов, эта сумма должна быть равна

 

sum(1:16)/4

 

что, конечно, дает ans = 34.

 

 

 

Единичная матрица, нулевая матрицы и матрица из единиц.

Двумерные массивы  случайных чисел

 

Единичная матрица, то есть матрица имеющая единицы на главной  диагонали и нулевые остальные  элементы, в MATLAB-е обозначается eye, причем eye(n) есть единичная квадратная матрица размера nxn, eye(m,n) - прямоугольная единичная матрица размера mxn, а  eye(size(A)) есть единичная матрица, имеющая размерность матрицы A. Например,

 

I = eye(3)

 

                                                            I =

1     0     0

0     1     0

0     0     1

 

                       

I = eye (3,5)

 

                                                            I =

1     0     0     0     0

0     1     0     0     0

0     0     1     0     0

 

 

I = eye (4,2)

                                                           I =

1       0

0       1

0       0

0       0

 

Нулевая матрица, то есть матрица состоящая из нулей (массив нулей), в MATLAB-е обозначается zeros, причем zeros (n) есть нулевая квадратная матрица размера nxn, zeros (m,n) - прямоугольная нулевая матрица размера mxn, а  zeros (size(A)) есть нулевая матрица имеющая размерность матрицы A.

Z = zeros(2,4)

                                                          

                                                             Z =

0  0  0  0

0  0  0  0

 

Наконец, матрица состоящая из единиц (массив единиц), в MATLAB-е обозначается ones, причем ones (n) есть квадратный массив единиц размера nxn, ones (m,n) – прямоугольный массив единиц размера mxn, а  ones (size(A)) есть массив единиц, имеющий размерность матрицы A.

S = 5*ones(3, 3)

 

                                                               S =

5   5   5

5   5   5

5   5   5

 

Аналогично, функция rand дает возможность сформировать соответствующие массивы случайных чисел в диапазоне от 0 до 1, распределенных по равномерному закону, а функция randn – по нормальному закону.

 

N = fix(10*rand(1,10))

                                                       N =

4  9  4  4  8  5  2  6  8  0

 

R = randn(4,4)

            

R =

1.0668  0.2944  -0.6918   -1.4410

0.0593   -1.3362   0.8580   0.5711

-0.0956   0.7143   1.2540  -0.3999

-0.8323   1.6236   -1.5937   0.6900

 

 

 

Список использованной литературы

 

  1. В.Г.Потемкин "Справочник по MATLAB" Работа с разреженными матрицами
  2. Гильберт А.. «Как работать с матрицами»
  3. Matlab R2007 с нуля! Brian R. Hunt, Ronald L.Lipsman, Jonathan M.Rosenber
  4. MATLAB.»Учебное пособие».Гаспарян Олег Николаевич

 




Поэлементарные операции над матрицами в системе MATLAB