27919

MATLAB

Книга

Информатика, кибернетика и программирование

Общие свойства и возможности рабочего стола MATLAB Получение справок (Getting Help) Рабочее пространство системы MATLAB Просмотр и редактирование массивов данных при помощи редактора Array Editor Пути доступа системы MATLAB Операции с файлами

Русский

2014-10-17

16.82 MB

22 чел.

ГОСУДАРСТВЕННЫЙ ИНЖЕНЕРНЫЙ УНИВЕРСИТЕТ АРМЕНИИ

MATLAB

УЧЕБНОЕ ПОСОБИЕ

Гаспарян Олег Николаевич

Д.т.н, с.н.с

2005

СОДЕРЖАНИЕ

Система математических расчетов MATLAB 

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

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

Получение справок (Getting Help) 

Рабочее пространство системы MATLAB 

Просмотр и редактирование массивов данных при помощи 

редактора Array Editor 

Пути доступа системы MATLAB 

Операции с файлами 

Дуальность (двойственность) команд и функций 

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

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

Решение систем линейных уравнений 

Степени матриц и матричные экспоненты 

Собственные значения и собственные векторы 

Полиномы и интерполяция 

Анализ данных и статистика 

Многомерные Массивы 

Создание Многомерных Массивов 

Организация и хранение данных 

Массивы структур 

Массивы ячеек 

Програмирование на MATLAB-е 

Типы данных 

Команды управления данными (Flow Control) 

Приложение 1.  Тематические направления системы MATLAB 

Приложение 2.   Команды общего назначения 

(General purpose commands) 

Приложение 3. Операторы и специальные символы 

Приложение 4. Элементарные математические функции 

                           (Elementary math functions). 127

Приложение 5.  Элементарные матрицы и операции над ними 

                           (Elementary matrices and matrix manipulation)

Приложение 6. - Матричные функции и линейная алгебра

(Matrix functions - numerical linear algebra) 

Приложение 7. Полиномы и интерполяция

       (Interpolation and polynomials) 

Приложение 8. Анализ данных и преобразование Фурье 

                           (Data analysis and Fourier transforms)

Приложение 9. Функции обработки символьных строк

(Character strings) 

Справочник по базовым функциям

системы MATLAB 

Система математических расчетов MATLAB

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

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

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

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

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

Система 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 (Командное окно)

1. Выполнение функций и ввод переменных

Приглашение к вводу команды (>>) в Command Window означает, что MATLAB готов к приему. При появлении приглашения >> вы можете ввести переменную или выполнить ко-манду. Например, для создания 3х3 матрицы А следует напечатать

                                              A = [1  2  3;  4  5  6;  7  8  10]

При нажатии клавиш Enter (или Return) после набора строки, MATLAB реагирует выводом следующей записи

A =

  2    3

  5    6

  8   10.

При этом переменная (матрица) запоминается в рабочем пространстве (workspace) MATLAB.

Внимание! Система MATLAB чувствительна к выбору регистра, т.е. MATLAB разли-чает переменные а и А ! При написании команды (функции) также не следует использо- вать заглавные буквы !

Для выполнения функций следует напечатать функцию включая все аргументы и нажать Enter. При этом MATLAB отобразит в командном окне результат. Например, напечатав  

                                                 magic(2)

получим

ans =

      3

  1.  2.

Если вы хотите ввести несколько командных строк без их немедленного выполнения, вос-пользуйтесь комбинациями Shift+Enter после ввода каждой строки. Последующее нажатие Enter приведет к выполнению всех введенных строк.

Приглашение K>> в командном окне означает, что MATLAB находится в режиме отладки (debug mode). Данный режим будет подробно рассмотрен в дальнейшем.

2. Вычисление выделенных функций и выражений (Evaluating a Selection)

Для вычисления выделенных выражений в командном окне следует нажать правую кнопку мыши и выбрать в контекстном меню опцию Evaluate Selection. Данная операция невозмо-жна если система MATLAB занята, например, выполняет М-файл.

3. Открытие выделения (Opening a Selection)

Для открытия М-файла некоторой функции следует выделить эту функцию в командном окне и выбрать в контекстном меню опцию Open Selection. Это приведет к открытию данно- го файла в окне Редактора/Отладчика (Editor/Debugger).

Внимание! Вы можете одновременно выполнять на MATLAB-е только одну функцию. Если MATLAB выполняет некоторую команду, то все последующие введенные команды запоминаются и выполняются только при окончании предыдущей !

4. Ввод нескольких функций в одну строку

Для ввода нескольких функций в одну командную строку, их нужно разделить точкой с запятой ( ; ). Например, запись трех следующих функций в одной командной строке 

format short;     x = (1:10)';     logs = [x log10(x)]

и нажатие Enter приведет к выполнению этих функций слева направо и к распечатке таблицы десятичных логарифмов в пределах от 1 до 10.

5. Ввод длинных функций

Если запись не помещается на одной строке, следует использовать три точки, (...) для обозначения того, что запись будет продолжена на следующей строке; нажать Enter для перехода к следующей строке, и затем продолжить ввод записи. Например,

s = 1/2 + 1/3/4 + 1/5/6 + 1/7 ...

/8 + 1/9/10 + 1/11/12;

Для записей с одинарными кавычками, такими как строки символов, кавычки следует ста-вить на каждой строке. Например, вводя следующую длинную строку

headers = ['Author Last Name, Author First Name,...

'Author Middle Initial’]

получим

headers =

Author Last Name, Author First Name, Author Middle Initial

Максимальное количество символов в одной строке равно 4096.

6. Окраска и выделение синтаксиса

Некоторые записи появляются в различных цветах с целью облегчить поиск элементов, таких, например, как парных сочетаний if/else. Имеются следующие основные варианты:

  •  При записи строки с начальной кавычкой, она окрашена в лиловый цвет. Когда вы закрываете кавычку, строка становится коричнево-красной.
  •  При написании ключевых слов, таких как зарезервированных для программирования (например, for, else, while и т.д.), а также троеточия (...), они окрашиваются в синий цвет.  Слова, записанные между зарезервированными приобретают структурирован-ный вид, т.е. имеют отступы, облегчающие чтение текста.
  •  Двойное нажатие на начальную или конечную скобку (например, обычную, квадрат-ную [ ], или фигурную { }) приводит к селекции (окрашиванию) всех символов между данной скобкой и ее парой. При введении конечной скобки происходит кратковремен-ное высвечивание соответствующей начальной. 
  •  При напечатании символа процента (%), который в системе  MATLAB  является приз-наком начала строки комментария (эти строки не выполняются), соответствующая строка окрашивается в зеленый цвет.
  •  При вводе команды обращения к операционной системе, которые начинаются с воск- лицательного знака (!), строка окрашивается в золотой цвет.
  •  Сообщения об ошибках имеют красный цвет.

Можно изменить приведенную стандартную окраску, введя соответствующие изменения в опции Preferences в меню рабочего стола File. Там же предусмотрена возможность выбора шрифта и размера символов.

7. Редактирование командной строки

Ниже приводятся некоторые свойства системы MATLAB, дающие экономию времени при вводе:

Свойства буффера обмена. При работе в командном окне целесообразно использовать опции Cut (Вырезать), Copy (Копировать), Paste (Вставить), Undo (Отмена последнего действия),  Redo (Повторение последнего действия) из меню Edit (Редактирование), или соответствующие кнопки инструментальной панели (см. рис. 2). Некоторые из этих опций доступны также из контекстного меню командного окна.

Свойства клавиши Tab (Табуляция). MATLAB автоматически завершает имя функции, переменной, названия файла или свойства дескриптора графического объекта (handle graphics property), если вы наберете соответствующие первые несколько букв и нажмете кла-вишу Tab. Если это однозначно определяемое имя, то оно будет автоматически завершено. Если же  данные буквы входят в название нескольких функций, то повторное нажатие клавиши Tab вызовет список  всех возможных функций. Например, напечатайте  cos  и наж- мите Tab. Система MATLAB не отреагирует, что означает наличие многих имен начинаю-щихся с cos. При повторном нажатии Tab MATLAB отобразит список всех имеющихся в на- личии подходящих функций:

                                                   cos cosh costfun

cos_tr cosint costs_march.

Вызов предыдущих строк. Используйте клавиши стрелок, табуляции и управления на кла-виатуре для повторного вызова, редактирования и повторного использования функций, кото-рые вы ввели ранее. Допустим, вы ввели по ошибке

rho = (1+ sqt(5))/2

При нажатии Enter MATLAB ответит:

Undefined function or variable 'sqt'.

(Неизвестная функция или переменная sqt),

поскольку вы неправильно ввели функцию sqrt (квадратный корень). Вместо того чтобы перепечатывать всю строку, можно нажать клавишу . Предыдущая строка будет повторно отображена. Используя  клавишу  можно привести курсор в требуемое положение и доба-вить недостающую букву r. Повторные нажатия клавиши  вызовут раннее введенные стро-ки. Все вводимые вами функции запоминаются в буфере обмена. При этом можно воспользо- ваться свойством «интеллектуального повторного вызова» (smart recall) для повторного вы-зова ранее введенных функций, которое заключается в том, что достаточно набрать только первые несколько символов из названия требуемой функции. Например, напечатав буквы plo и нажав клавишу  мы вызовем последнюю функцию, которая начинается с plo. Данное свойство чувствительно к выбору регистра.

Ниже приводится полный список клавиш, которые можно использовать в командном окне

 Клавиши

Клавиши управления

Результат операции

 

Ctrl+p

  Вызов предыдущей строки

 

Ctrl+n

  Вызов следующей строки.

 

Ctrl+b

  Переход на один символ назад.

 

Ctrl+f

  Переход на один символ вперед.

 Ctrl+ 

Ctrl+r

  Переход на одно слово направо.

 Ctrl+ 

Ctrl+l

  Переход на одно слово влево .

  Home

Ctrl+a

  Переход к началу строки.

  End

Ctrl+e

  Переход к концу строки.

  Esc

Ctrl+u

  Очистить строку.

  Delete

Ctrl+d

  Удалить символ после курсора.

  Backspace

Ctrl+h

  Удалить символ перед курсором.

 Ctrl+k

  Удалить от курсора до конца строки.

 Shift+home

Выделить до начала строки.

 Shift+end

Выделить до конца строки.

                               

8. Очистка командного окна

Для очистки командного окна следует выбрать опцию Clear Command Window из меню Edit. Эта операция не приводит к очистке рабочего пространства, а только удаляет все запи-си с экрана монитора. В дальнейшем вы можете использовать все свойства клавиш для пов-торного вызова введенных ранее функций.

Эквивалентная функция ! Для очистки командного окна можно воспользоваться функцией  clc . Подобно clc, функция home переносит приглашение к вводу системы MATLAB (>>) к  верхнему левому углу командного окна, но при этом содержимое всего окна не очищается и может быть прочитано стандарными приемами просмотра.

9. Подавление вывода результатов на экран

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

A = magic(100);

и нажатии Enter  MATLAB  создает в рабочем пространстве матрицу A размера 100х100, но не выводит ее на экран.

10. Разбиение экранного вывода на страницы

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

Клавиша

Действие

   Enter 

Переход к следующей строке

   Пробел

Переход к следующей странице

       q

Остановка вывода на экран

 

Постраничный вывод можно блокировать вводом функции more off.

11. Выбор формата и интервала между строками для числовых данных

По умолчанию, числовое данные в командном окне представляются как пятизначные чис-ла с фиксированной запятой. Воспользовавшись опцией Preferences в меню File можно изменить формат вывода этих данных. При этом формат вывода действует только на экран-ное представление чисел, а не на саму процедуру вычислений или запоминания данных в MATLAB-е.

Эквивалентная функция !  Для выбора формата выводимых на экран числовых данных можно воспользоваться функцией format. Данная функция имеет силу только в процессе текущего сеанса работы, то есть при выходе из  MATLAB-а ее действие аннулируется и вос-станавливается стандартное представление данных.

Примеры форматов данных. Ниже даны несколько примеров различных форматов двумер-ного вектора

x = [4/3 1.2345e–]

формат short e

1.3333e+000 1.2345e

формат short

1.3333 0.0000

формат +

++

Полное описание допустимых форматов дается в справках (Help) по данной функции. Допол-нительные возможности контроля вывода дают функции sprintf и fprintf .

Выбор интервала между строками. Воспользовавшись опцией Preferences в меню File мо-жно также контролировать промежуток между строками. Команда format compact подавля-ет пустые строки, что дает возможность обозрения большего количества информации в ко- мандном окне. Для возврата к пустым строкам, которые облегчают чтение и восприятие ин-формации на экране, нужно воспользоваться командой format loose.

12. Распечатка содержания командного окна

Для распечатки содержания всего командного окна следует выбрать Print из меню File. Для распечатки только части  текста нужно сперва выделить эту часть, и затем выбрать Print Selection в том же меню File.

13. Выполнение программ

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

Прерывание выполнения программы.  Вы можете прервать выполнение программы путем нажатия Ctrl+c или Ctrl+Break в любое время.

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

Открытие М-файла в окне Редактора/Отладчика. Для открытия М-файла следует выде-лить имя файла или функции в командном окне и затем, вызвав контекстное меню нажатием правой кнопки мыши, выбрать опцию Open Selection . Соответствующий М-файл будет открыт в окне Редактора/Отладчика (Editor/Debugger).

Анализ ошибок. Если при выполнении М-файла появляется сообщение об ошибке, то нужно подвести курсор к данному сообщению и нажать клавишу Enter. Произойдет открытие «нехорошего» M-файла в окне Редактора (Editor), причем файл будет «прокручен» до стро-ки, содержащей ошибку.

Сохранение сеанса работы. Для сохранения в памяти сеанса работы в системе MATLAB предусмотрена специальная функция diary (Дневник). Эта команда создает копию вашего сеанса работы в специальном файле на диске, включая все команды ввода и отклики системы MATLAB, но исключая графики. Вы можете затем просматривать и редактировать получен-ный текстовой файл используя любой текстовой редактор. Например, для создания на вашем диске файла, названного допустим sept2323 сентября»), который содержал бы все введен-ные вами в этот день функции и отклики системы MATLAB, следует ввестив командное окно функцию diary('sept23.out'). Для прекращения записи сеанса вводится : diary('off')

Примечание. В окне Command History (История Команд) содержится запись всех функций, выполненных в текущем и предыдущий сеансах.

Получение справок (Getting Help)

Система MATLAB обеспечивает исключительно широкие возможности для получения справок по всем командам и функциям. Однако, к сожалению, все это доступно только на ан-глийском языке и поэтому их использование может вызвать определенные затруднения у не-подготовленного потребителя. Среди важных и полезных команд, которые обеспечивают быстрый доступ к справкам можно выделить три: help, helpwin и lookfor.

     1. HELP. Оперативная справка, отображающая текст в командном окне.        

Команда help, сама по себе, выводит на экран (в командную строку) все тематические направления системы MATLAB. Каждое тематическое направление соответствует имени определенного каталога (директории) в MATLAB-е (см. Приложение 1).

Команда help(‘topic’) или help topic , где topic есть определенная директория (например, matlab\polyfun), выводит список всех функций в данном каталоге.

Команда help fun, где  funимя функции, выводит на экран справку по данной функции, как она записана в соответствующем М-файле.

2. HELPWIN. Обеспечивает те же функции, что и help, но справка выводится в Окно Просмотра Помощи (Help Browser) (см. рис. 1). 

3. LOOKFOR.  Осуществляет поиск в первой строке комментариев по всем М-файлам по заданному ключевому слову. Так, например, lookfor XYZ осуществляет поиск слова XYZ в первой строке текста справки (HELP text) во всех М-файлах на так называемом пути доступа  MATLAB (MATLABPATH). Для всех файлов где встречается это слово, команда lookfor выводит на экран названия файлов и первые строки комментариев.

Рабочее пространство системы MATLAB

Рабочее пространство (workspace) MATLAB-а состоит из множества переменных (назы-ваемых массивами (array),  созданных во время сеанса работы системы MATLAB и запом-ненных в памяти. Можно добавлять новые переменные в рабочее пространство путем ис-пользования функций, выполняющих М-файлы, загрузкой запомненных ранее рабочих про-странств, или же путем непосредственного ввода переменных. Так, например, если вы напе-чатаете в командном окне:

t = 0 : pi/4 : 2*pi;     y = sin(t);       z = 5;

то рабочее пространство будет содержать две переменные y и t, каждая из которых имеет девять значений, и одну скалярную переменную z. 

.

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

Для выполнения операций просмотра и изменения содержимого рабочего пространства удобно использовать Окно Просмотра Рабочего Пространства (ОПРП), хотя многие исполь-зуемые им функции также доступны и из командной строки, путем применения соответ-ствующих команд. Для открытия ОПРП следует проделать одно из следующих действий:

  •  Из меню View рабочего стола MATLAB выбрать Workspace.

     • В Окне Запуска (Launch Pad) нажать дважды на Workspace.

     •Ввести команду workspace из командной строки MATLAB-а.

При этом получаем следующее окно (для некоторого конкретного набора переменных):

Рис. 3. Общий вид Окна Просмотра Рабочего Пространства

Просмотр текущего рабочего пространства. ОПРП показывает имя каждой переменной, размерность ее массива, размер в байтах и ее класс. Иконка в поле Name перед именем каж-дой переменной указывает на ее класс (классы переменных будут рассмотрены позднее).

Эквивалентные функции ! Команда who выводит в командное окно список всех перемен-ных текущего рабочего пространства. Команда whos добавляет к списку переменных также информацию об их размерах и классе. Например, при вводе who система MATLAB отвечает:

Your variables are (вашими переменными являются):

A   M   S   v

а при вводе whos имеем:

Name   Size      Bytes          Class

                                                        A      4x4         128           double array

M       8x1        2368         cell array

S       1x1          398         struct array

v       5x9          90           char array

Grand total is 286 elements using 2984 bytes

где в последней строке указано общее число элементов и количество используемых байтов, и присутствуют следующие классы : double arrayмассив чисел удвоенной точности, cell arrayмассив ячеек, struct arrayмассив структур, char arrayмассив символов.

Сохранение текущего рабочего пространства. Рабочее пространство не сохраняется между отдельными сеансами работы системы MATLAB. Когда вы выходите из MATLAB-а, его рабочее пространство очищается. Вы можете сохранить все или часть переменных текущего рабочего пространства в так называемых MAT-файлах (MAT-file), которые являются специ-альными бинарными (двоичными) файлами данных. В дальнейшем вы можете загрузить запомненные MAT-файлы, как в течении того же сеанса, так и в  последующих сеансах, для повторного использования запомненных переменных.

Сохранение всех переменных. Для сохранения всех переменных рабочего простанства с ис-пользованием ОПРП следует:

1. Из меню File или контекстного меню выбрать Save Workspace As, или щелкнуть мышью по кнопке  инструментальной линейки ОПРП. Откроется диалоговое окно Save.

2. Задать местоположение и имя файла (File name). MATLAB автоматически добавит расширение .mat .

3.  Щелкнуть Save.

Переменные рабочего простанства при этом запомнятся в MAT-файле с выбранным вами именем. 

Сохранение части переменных. Для этого надо:

1. Выбрать переменную в ОПРП. Для выбора нескольких переменных следует использо-вать клавиши Shift или Ctrl.

  1.  Вызвать щелчком правой  кнопки контекстное меню и выбрать Save Selection As. Дальнейшие действия описаны выше.

Эквивалентные функции ! Для сохранения переменных рабочего пространства можно ис-пользовать команду save с указанием имени файла куда вы хотите запомнить данные. Напри-мер, команда save('june10') запоминает все переменные рабочего пространства в бинарном файле june10.mat. Если вы не задаете имя файла, рабочее простанство запоминается в специ- альном файле под названием matlab.mat в текущей рабочей директории. Вы можете задать какие переменные сохранять, а также формат запоминания данных, например ascii.  Так, ко-манда save 'june10' X Y  сохраняет в названном файле только переменные X Y .

Загрузка запомненного рабочего пространства. Для загрузки предварительно запомненно-нго рабочего пространства следует:

1. Щелкнуть на кнопку  загрузки данных на инструментальной линейке ОПРП, или щел-кнуть правой кнопкой на ОПРП и выбрать в контекстном меню опцию Import Data. Откро-ется диалоговое окно Open (Открыть).

2. Выбрать  MAT-файл, который вы хотите загрузить и щелкнуть Open. Переменные и их значения, запомненные ранее в данном MAT-файле, будут загружены в текущее рабочее пространство системы  MATLAB.

Эквивалентные функции ! Функция load предназначена для загрузки запомненного рабо-чего пространства. Например, команда load('june10') загружает в рабочее пространство все переменные из файла june10.mat.

Примечание.  Если в сохраненном MAT-файле june10 содержатся переменные обозначен-ные A, B, и C, то загрузка june10 помещает эти переменные в рабочее пространство. Если переменные с этими именами уже существуют в рабочем пространстве, то они заменяются новыми переменными из june10. 

Очистка переменных рабочего пространства. С помощью ОПРП вы можете удалить лю-бые переменные из  рабочего пространства. Для этого нужно:

1. Выбрать переменную в ОПРП (или несколько перменных с использованием клавиш Shift или Ctrl). Для выбора всех переменых нужно выбрать опцию Select All из меню Edit или контекстного меню.

2. Выполнить любое из перечисленных действий:

- Нажать клавишу Delete.

- Выбрать опцию Delete из меню Edit.

- Щелкнуть по кнопке  на инструментальной панели ОПРП.

- Выбрать опцию Delete Selection из контекстного меню.

3. Если появиться диалоговое окно подтверждения, щелкнуть Yes.

Для удаления сразу всех переменных нужно выбрать опцию Clear Workspace из меню Edit или контекстного меню ОПРП.

Эквивалентная функция ! Функция clear выполняет те же функции. Например, команда

clear A M

удаляет переменные  A и M из рабочего пространства, а команда clear без обозначения аргу-ментов удаляет все переменные. Наконец, команда clear all удаляет все переменные и функ- ции, т.е. полностью очищает рабочее пространство системы MATLAB

Просмотр основного (Base) рабочего пространства и рабочего пространства функций с использованием стека (Stack). При выполнении М-файлов MATLAB назначает (выделяет) каждому файлу (функции) свое собственное рабочее пространство, которое называется рабо-чим пространством функции и не совпадает с основными рабочим пространством системы  MATLAB. При редактировании исполняемых файлов вы можете переходить из основного рабочего пространства в рабочее пространство любой исполняемой функции при помощи  поля Stack в ОПРП. Данное поле активизируется только в режиме отладки (более подробно эта возможность будет расмотрена в дальнейшем).

Построение графиков переменных. Вы можете построить график  любой переменной из рабочего пространства. Для этого надо щелкнуть правой кнопкой мыши на переменную в ОПРП, которую вы хотите отобразить графически, и из появившегося контекстного меню выбрать опцию Graph Selection  и далее выбрать тип графика, который вы хотите построить. Соответствующий график появится в открывшемся специальном окне представления гра-фической информации (figure window). В дальнешем для краткости эти окна буде называть графическими окнами.

Просмотр и редактирование массивов данных при помощи

редактора Array Editor

Редактор Массива Данных (РМД) Array Editor предназначен для визуального просмотра и редактирования одно- и двумерных числовых массивов, символьных строк и ячеек сим-вольных строк.

Открытие РМД. Для вызова РМД из ОПРП следует:

1.  Выделить в ОПРП желаемую переменную или переменные обычным образом.

2. Щелкнуть по кнопке  в инструментальной линейке ОПРП или выбрать из контекст-ного меню опцию Open Selection . В случае одной перменной можно также ограничиться двойным щелчком по выбранной переменной. 

В результате появится следующее окно:

  Изменение значений                                   Изменение формата            

элементов массива                                      представления  данных              Изменение размерностей массива

 

Выбор различных переменных для просмотра 

Рис.4. Общий вид окна Редактора Массива Данных

 Повторение перечисленных выше шагов приведет к открытию дополнительных переменных в РМД. Доступ к каждой переменной осуществляется через ярлыки внизу окна РМД (см. рис. 4) или посредством меню Window.

Эквивалнтная функция ! Для просмотра содержания переменной рабочего пространства достаточно напечатать ее имя в командной строке. Так, например, при вводе в командной строке  переменной m (см. рис. 4) , MATLAB ответит

                                                m =

  2    3   13

 11  10     8

  7    6   12

 14  15     1

Для открытия РМД с требуемой переменной из командной строки MATLAB-а, можно вос-пользоваться функцией openvar  с соответствующей переменной в качестве аргумента. На-пример, при вводе openvar('m')  MATLAB откроет РМД с переменной m. 

Изменение значений элементов в РМД. Для изменения значений элементов в РМД нужно щелкнуть на ту ячейку таблицы, которую вы хотите изменить. Далее следует ввести новое значение элемента и нажать Enter или щелкнуть по другой ячейке; произойдет соответству-ющее изменение. Для изменения размерностей массива, следует напечатать новые значения для числа строк и столбцов в поле Size. Если вы увеличиваете размер, то новые строки и столбцы добавятся к концу таблицы и будут заполнены нулями. При уменьшении размера вы потеряете данные - MATLAB просто удалит последние строки и столбцы. 

Пути доступа системы MATLAB

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

 Внимание ! Если вы создаете свой собственный М-файл или модифицируете любой имею-щийся М-файл, поставленный с системой MATLAB, сохраняйте их в директории, которая не находится на пути $matlabroot/toolbox/matlab, где $matlabrootкорневая директория системы MATLAB на вашем компьютере. Если вы храните какие-либо свои файлы в дирек-тории $matlabroot/toolbox/matlab, они будут уничтожены при переустановке или установке новой версии MATLAB-а на вашем компьютере.

Суть концепции путей доступа. Все используемые вами файлы рассматриваются как нахо-дящиеся на путях доступа системы MATLAB. Когда вы включаете новую директорию в пути доступа, вы добавляете ее к имеющимся путям. Поддиректории (subdirectories) должны быть добавлены в пути доступа явным образом; они не включаются в пути доступа автоматически, при включении их родительских директорий. Пути доступа системы MATLAB хранятся в файле pathdef.m. Порядок расположения директорий на путях доступа имеет существенное значение. Система MATLAB ищет любой объект (переменную, функцию и т.д.), например, названный  foo, следующим образом. Если вы вводите foo в командной строке, то система MATLAB выполняет следующие действия:

1. Ищет  foo как переменную.

2. Проверяет, не является ли foo встроенной функцией.

3. Ищет в текущей директории файл названный foo.m.

4. Ищет по очереди во всех директориях на пути доступа MATLAB файл foo.m.

Хотя в действительности схема поиска является более сложной, эта упрощенная схема явля-ется достаточно точной для обычных М-файлов, с которыми имеет дело потребитель.

Порядок расположения директорий на путях доступа важен именно потому, что могут быть несколько файлов, имеющих одинаковое имя. Когда MATLAB ищет такую функцию, он вы-бирает только первую функцию, встретившуюся на путях доступа; остальные функции (фай-лы) оказываются в тени и не могут быть выполнены. Для того чтобы узнать какая функция выполняется, т.е. местоположение данной функции в файловой структуре, можно использо-вать команду which FileName, где  FileNameимя выбранной функции.

Просмотр  и изменение путей доступа. Для просмотра и изменения путей доступа системы MATLAB  предусмотрено диалоговое окно Set Path, а также ряд эквивалентных команд (фу-нкций), которые можно выполнить из командной строки. Для открытия указанного окна ну-жно выбрать опцию Set Path из меню File рабочего стола, или ввести команду pathtool из командной строки MATLABа.  Откроется следующее диалоговое окно

При нажатии на эти кнопки происходят изменения

в путях доступа текущего сеанса, но эти пути доступа

не сохраняются автоматически дл будущих сеансов     

Кнопки для изменения                                                                                 

путей доступа                                              Директории текущих путей доступа системы MATLAB

             

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

Рис. 5. Диалоговой окно Set Path для модификации путей доступа

На рис. 5 имеем следующие кнопки:

Add Folder…                   - Добавить директорию (папку).

Add with Subfolders…   - Добавить директорию с поддиректориями.

Move to Top                     - Перенести директорию в начало пути.

Move Up                           - Перенести директорию на один шаг вверх.

Remove                             - Удалить директорию.                 

Move Down                      - Перенести директорию на один шаг вниз.

Move to Bottom               - Перенести директорию в конец пути.

Default                             - Восстановить исходные пути доступа (по умолчанию).

Назначение данных кнопок ясно из их названий.

Операции с файлами

При операциях над файлами система MATLAB использует текущую директорию в качестве отправной точки. Любой файл, который вы хотите исполнить, должен находиться или в теку-щей директории (каталоге) или на пути доступа системы MATLAB. Аналогично, если вы хотите открыть какой-либо файл, начальной точкой диалогового окна Оpen всегда является текущая директория.

Поле текущей директории.  Быстрый путь просмотра или изменения текущей директории состоит в использовании поля Current Directory (Текущая Директория) в инструментальной панели рабочего стола 

Для изменения текущей директории из этого поля, нужно выполнить одно из следующих действий:

Впечатать в данное поле путь к новой текущей директории.

Щелкнуть на правой кнопке со стрелкой, что откроет список ранее использованных рабо-чих директорий, и выбрать из них желаемую. 

Щелкнуть на кнопку  (...)  (см. рис. 2) для выбора новой директории. 

Окно Просмотра Текущего Каталога (Current Directory Browser) . Для поиска, просмот-ра, открывания и ввода изменений в директориях системы MATLAB можно воспользоваться Окном Просмотра Текущего Каталога (ОПТК). Все основные функции данного окна можно также выполнить задавая соответствующие команды из командной строки системы  MATLAB. Если ОПТК не присутствует в рабочем столе MATLAB-а, то его можно открыть выбором опции Current Directory в меню View, или же введя команду filebrowser из коман-дного окна  (Command Window). При этом появится следующее окно

Данное поле позволяет произвести быстрый

просмотр и изменение директорий                 

                                                                    Щелкнув по кнопке «бинокль» можно исследовать содержимое

любого М-файла (операция поиска по заданным символам)

                  

Рис. 6. Окно просмотра текущего каталога

Двойной щелчок по любому выделенному файлу откроет его содержание в соответствующем окне Редактора/Отладчика. В нижней части ОПТК (см. рис. 6) показана часть справки (help) для выделенного файла.

Изменение текущей директории и просмотр ее содержания в ОПТК. Для изменения теку-щей директории из ОПТК можно воспользоваться полем Current Directory этого окна, со-вершенно аналогично тому, как это было описано выше.

Эквивалентные функции ! Команда dir выводит в командное окно все содержимое теку-щей директории или любой другой директории, заданной как аргумент функции dir. Кома-нда what действует аналогично, но выводит только те файлы, которые относятся к системе MATLAB. Команда which FileName, где  FileNameимя файла, выводит путь доступа к данному файлу.

ОПТК позволяет также произвести любые добавление директорий к путям доступа системы MATLAB, а также создавать, копировать, переименовывать директории и т.д. (см. Руковод-ство Пользователя).

Поиск и замена содержимого файлов. Из ОПТК можно осуществить поиск любой заданной строки символов в содержании файла. Если же файл открыт в окне Редактора/Отладчика, то можно также и заменить заданную строку на другую.

Поиск заданной строки в пределах файла (файлов). Для поиска заданной строки следует: 

1. Щелкнуть по кнопке    инструментальной панели ОПТК (рис. 6). Появится следующее диалоговое окно «Найти и Заменить» (Find & Replace):

 

2. Для нахождения всех случаев наличия требуемой строки в файлах следует:

 -  Впечатать строку в поле Find what.

 -  Выбрать директорию поиска в поле Look in, или просто непосредственно напечатать имя директории в данном поле.

 -  Ограничить поиск выбором опций Match case (Учитывать регистр) и  Whole word (Слово целиком).

 - Выбрать опцию Subdirectories (Поддиректории), если вы хотите также просматривать и файлы в поддиректориях.

.  Щелкнуть по кнопке Find.

Результат поиска при этом будет отображен в нижней части далогового окна Find & Replace как это показано на следующем рисунке. Этот результат включает название файла, номер со- ответствующей строки и содержимое данной строки.

                                                

Двойной щелчок по файлу приведет к

его открытию          

                                                                                                                          Кнопка закрытия окна

                Результаты предыдущих операций поиска                                                        результатов поиска   

доступны через эти ярлыки       

4. Для открытия любого из М-файлов в списке результатов поиска нужно выполнить одно из нижеприведенных действий:

 -  Дважды щелкнуть по файлу.

 -  Выделить файл и нажать клавишу Enter.

 -  Щелкнуть правой кнопкой по файлу и выбрать опцию Open из контекстного меню. 

Соответсвующий файл будет открыт в Редакторе/Отладчике, причем он будет «прокручен»  до той строки, которая содержит результат поиска.

5. Если вы до того проводили другой поиск (поиски), то все результаты предыдущих поисков будут доступны через «ярлыки» внизу текущего списка результатов поиска (см. рис.).

Замена заданной строки в пределах файла. После поиска заданной строки в пределах фай-ла, вы можете автоматически заменить эту строку на любую другую. Для этого надо: 

1. Открыть М-файл в окне Редактора/Отладчика системы MATLAB Editor. При этом нужно убедиться, что данный файл является текущим в окне Редактора/Отладчика.

2. Выбрать в поле Look in в диалоговом окне Find & Replace имя того файла, в котором вы хотите заменить строку. Кнопка Replace (Заменить) при этом активизируется.

3. Впечатать в поле Replace with текст, на который вы хотите заменить выбранную строку.

4. Щелкнуть Replace для замены строки символов в выбранной строке файла, или же щелк- нуть по кнопке Replace All, если вы хотите заменить все найденные совпадения в текущем файле.

Текст будет заменен.

5. Для сохранения изменений нужно выбрать опцию Save из меню File в окне Редактора/ От-ладчика.

Дуальность (двойственность) команд и функций

Команды системы MATLAB это выражения вида load или help. Многие команды допускают модификацию за счет определения операндов, например:

load August17.dat

help magic

type rank.

Альтернативный способ ввода подобных операндов в команды состоит в представлении их в виде символьных строк как аргументы функций.

load('August17.dat')

help('magic')

type('rank')

В этом состоит дуальность команд/функций системы MATLAB. Любая команда в форме

command argument

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

command('argument')

Преимущество функциональной формы записи проявляется когда символьный аргумент формируется машиной программно, из ряда разных кусков. Например, следующий пример загружает в рабочее пространство переменные из 31-го МАТ-файла под названиями  August1.dat, August2.dat, и т.д. 

                                               

for d = 1:31

             s = ['August'   int2str(d)   '.dat']

                                                           load(s)

end

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

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

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

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

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

A = pascal (3)

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

                                                              A =

1    1    1

  2    3

  3    6

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

B = magic(3)

                                                              B =

8    1    6

  5    7

  9    2

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

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

                                                             

C =

9      4

    8

    7. 

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

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

u = [3; 1; 4]

v = [2 0 -1]

                                                                      s = 7

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

                                                                u =

3

                                                                v =

2    0   –

                                                                s =

7

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

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

Error using ==> +

Matrix dimensions must agree.

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

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

x = v*u

                                                                x =

2

X = u*v

                                                                X =

6    0   -3

  0   -1

  0   -4

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

X = B'

X =

8   3   4

 5   9

 7   2

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

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

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

то

                                                               z' =      

1-2i

-4i

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

z.' =

1+2i

+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

  11    10     8

   7     6    12

  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

 0    11   8    0

 6     7   12   0

 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

   1     0

   0     1

                       

I = eye (3,5)

                                                           I =

1     0     0     0     0

   1     0     0     0

   0     1     0     0

I = eye (4,2)

                                                          I =

1       0

     1

     0

     0

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

Z = zeros(2,4)

                                                          

Z =

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

Аналогично, функция 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

.0593   -1.3362   0.8580   0.5711

-0.0956   0.7143   1.2540  -0.3999

-0.8323   1.6236   -1.5937   0.6900

Решение систем линейных уравнений

Одной из важнейших задач в технических приложениях и расчетах является задача решения систем линейных уравнений. В матричных обозначениях, данная задача может быть сформу-лирована следующим образом. При заданных двух матрицах A and B, существует ли такая единственная матрица X, что AX = B или XA = B?

Для наглядности рассмотрим одномерный пример. Имеет ли уравнение

7x = 21

единственное решение? Ответ, разумеется, да. Это уравнение имеет единственное решение   x = 3. Решение может быть легко получено обычным делением. 

x = 21/7 = 3

Решение при этом обычно не состоит в определении обратной величины от числа 7 (т.е. ве-личины 7-1 =  0.142857…), и последующим умножением числа 7-1 на число 21. Это было бы более трудоемко и, если число 7-1 представлено конечным числом цифр (разрядов), менее точно. Аналогичные рассуждения применимы и к системам линейных алгебраических уравнений с более чем одной неизвестной; MATLAB решает такие уравнения без вычисле-ния обратной матрицы. Хотя это и не является стандартным математическим обозначением, система MATLAB использует терминологию, связанную с обычным делением в одномерном случае, для описания общего случая решения совместной системы  нескольких линейных уравнений. Два символа деления / (косая черта (по английски - slash)) и \ (обратная косая че-рта (backslash)) используются в двух случаях, когда неизвестная матрица появляется слева или справа от матрицы коэффициентов: 

X = A\B обозначает решение матричного уравнения AX = B

X = B/A обозначает решение матричного уравнения XA = B.

Вы можете представлять себе это как процесс «деления» обеих частей уравнения  AX = B или XA = B на A. Матрица коэффициентов A всегда находится в «знаменателе».Условие сов-местимости размерностей для X = A\B требует чтобы две матрицы A и B имели одинаковое число строк. Решение X тогда имеет такое же число столбцов как и B, а число ее строк будет равно числу столбцов A. Для X = B/A, строки и столбцы меняются ролями. На практике, ли-нейные уравнения в виде AX = B встречаются более часто, чем в виде XA = B. Следователь-но, обратная наклонная черта \ используется более часто, чем прямая / . Поэтому, в остав-шейся части данного раздела мы ограничимся рассмотрением оператора \ ; соответствующие свойства оператора / можно вывести из тождества

(B/A)' = (A'\B')

В общем случае не требуется, чтобы матрица коэффициентов A была бы квадратной. Если A имеет размер mхn, то возможны три случая:

  1.  m = n  Квадратная система. Ищется точное решение.
  2.  m > n  Переопределенная система. Ищется решение методом наименьших квадратов.
  3.  m < n  Недоопределенная система. Находится базовое решение с самым большим 

                 числом m  ненулевых компонент.

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

         •Перестановки треугольных матриц

         •Симметричные, положительно определенные матрицы

         •Квадратные невырожденные матрицы

Прямоугольные, переопределенные системы

         •Прямоугольные, недоопределенные системы

Квадратные системы

Наиболее часто встречающейся ситуацией является квадратная матрица коэффициентов A и одномерный вектор-столбец b справа, т.е. Ax = b. Решение x = A\b имеет при этом тот же ра-змер, что и вектор b. Например,

x = A\u

                                                             

x =

10

-12

где матрица А  есть приведенная выше матрица Паскаля. Легко удостовериться, что A*x   в точности равно вектору u (численные значения этого вектора даны выше).

Если A и B являются квадратными и имеют одинаковый размер, то X = A\B имеет тот же ра-змер, например

X = A\B

X =

19   -3   -1

-17    4   13

    0    -6

Легко убедиться, что A*X  в точности равно B.

Оба этих примера имеют точное решение в виде целых чисел. Это связано с тем, что в каче-стве матрицы коэффициентов была выбрана матрица Паскаля pascal(3), чей детерминант равен единице. Далее будут рассмотрены примеры влияния ошибок округления, возникаю-щих в более реальных системах. 

Квадратная матрица A является сингулярной, если ее столбцы не являются линейно незави-симыми. Если A –сингулярна, то решение AX = B или не существует, или не является един-ственным. Оператор \ , A\B, выдает предупреждающее сообщение, если матрица A близка к сингулярной и сообщение об ошибке, если определено равенство нулю детерминанта матри-цы А.

Переопределенные системы

Переопределенные системы совместных линейных уравнений часто встречаются в задачах аппроксимации экспериментальных данных при помощи различных эмпирических кривых. Рассмотрим следующий гипотетический пример. Величина y измеряется при различных зна-чениях времени t,  что дает следующие результаты

t       y

.0   0.82

.3   0.72

.8   0.63

.1   0.60

.6   0.55

.3   0.50

Эти данные могут быть введены в MATLAB при помощи выражений:

t = [0 .3 .8 1.1 1.6 2.3]';

y = [0.82  0.72   0.63  0.60   0.55   0.50]';

Данные могут быть аппроксимированы при помощи убывающей экспоненциальной функ-ции.

y(t) = c1  + c2 e-t

 Это уравнение показывает, что вектор y может быть представлен в виде линейной комбина-ции двух векторов, один из которых является постоянным вектором, содержащим все едини-цы, а второй вектор имеет компоненты e-t. Неизвестные коэффициенты c1 и c2 могут быть найдены подгонкой кривых по методу наименьших квадратов, которая основана на миними-зации суммы квадратов отклонений экспериментальных данных от модели. Мы имеем шесть уравнений с двумя неизвестными, представленными 6х2 матрицей

E = [ones(size(t))   exp(-t)]

                                                  E =

1.0000    1.0000

.0000    0.7408

.0000    0.4493

.0000    0.3329

.0000    0.2019

.0000    0.1003

Решение методом наименьших квадратов находится при помощи оператора \ :

c = E\y

                                                                c =

0.4760

.3413

Иными словами, подгонка методом наименьших квадратов дает

y(t) = 0.476 + 0.3413 e-t

Следующие выражения оценивают модель при равномерно распределенных моментах време-ни (с шагом 0.1), а затем строят график вместе с результатами экспериментальных данных. 

                                                      T = (0 : 0.1 : 2.5)';

Y = [ones(size(T))   exp(-T)]*c;

                                                       plot(T, Y, '-', t, y, 'o')

Можно видеть, что значения E*c не совсем точно совпадают со значениями эксперименталь-ных данных y, но эти отклонения могут быть сравнимы с ошибками измерений.

Прямоугольная матрица A называется матрицей неполного ранга, если ее столбцы линейно-независимы. Если матрица  A имеет неполный ранг, то решение AX = B не является единст-венным. Оператор \  при этом выдает предупреждающее сообщение и определяет основное  решение, которое дает минимально возможное число ненулевых решений.

Недоопределенные системы

Недоопределенные системы линейных уравнений содержат больше неизвестных чем урав-нений. Когда они сопровождаются дополнительными ограничениями, то становятся сферой изучения линейного программирования. Сам по себе, оператор \  работает только с системой без ограничений. При этом решение никогда не бывает единственным. MATLAB находит ос-новное решение, которое содержит по меньшей мере m ненулевых компонент (где m  - число уравнений), но даже это решение может быть не единственным. Ниже приводится пример, где исходные данные генерируются случайным образом.

R = fix (10*rand(2,4))

                                                          R =

6  8  7  3

 5  4  1

b = fix (10*rand(2,1))

                                                           b =

1

Система уравнений  Rx = b содержит два уравнения с четырьмя неизвестными. Поскольку матрица коэффициентов R содержит небольшие по величине целые числа, целесообразно  представить решение в формате rational (в виде отношения двух целых чисел). Частное ре-шение представленное в указанном формате есть:

p = R\b

                                                                     p =

0

/7

-11/7

Одно из ненулевых решений есть p(2), потому что второй столбец матрицы R имеет наи-большую норму. Вторая ненулевая компонента есть p(4) поскольку четвертый столбец матрицы R становится доминирующим после исключение второго столбца (решение нахо-дится методом QR-факторизации с выбором опорного столбца).

Обратные матрицы и детерминанты

Если матрица А является квадратной и невырожденной, уравнения AX = I  и  XA = I имеют одинаковое решение X. Это решение называется матрицей обратной к A, обозначается через A-1  и вычисляется при помощи функции inv. Понятие детерминанта (определителя) матрицы полезно при теоретических выкладках и некоторых типах символьных вычислений, но его масштабирование и неизбежные ошибки округления делают его не столь привлекательным при числовых вычислениях. Тем не менее, если это требуется, функция det вычисляет определитель квадратной матрицы. Например,

A = pascal (3)

                                                              A =

1   1   1

 2   3

 3   6

d = det (A)

X = inv (A)

                                                                 d =

1

                                                                 X =

3   -3    1

-3    5    -2

 -2    1

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

B = magic(3)

                                                         B =

8   1   6

 5   7

 9   2

d = det(B)

X = inv(B)

                                                         d =

-360

                                                         X =

0.1472   -0.1444   0.0639

                                                           -0.0611   0.0222   0.1056

-0.0194   0.1889  -0.1028

Внимательное изучение элементов матрицы X, или использование формата rational , показы-вает, что они являются целыми числами, разделенными на 360.

Если матрица A является квадратной и несингулярной, то, пренебрегая ошибками округле-ния, выражение X = inv(A)*B теоретически означает то же, что и X = A\B , а Y = B*inv(A) теоретически есть то же, что и Y = B/A. Однако вычисления включающие операторы  \  и  /  более предпочтительны, поскольку требуют меньше рабочего времени, меньшей памяти и имеют лучшие свойства с точки зрения определения ошибок.

Псевдообратные матрицы

Прямоугольные матрицы не имеют детерминантов и обратных матриц. Для таких матриц по крайней мере одно из уравнений AX = I или XA = I не имеет решения. Частично данный про-бел восполняется так называемой псевдообратной матрицей Мура-Пенроуза, или просто псевдообратной матрицей, которая вычисляется при помощи функции pinv. На практике необходимость в этой операции встречается довольно редко. Желающие могут всегда обра-титься к соответствующим справочным пособиям. 

Степени матриц и матричные экспоненты

Положительные целые степени

Если А есть некоторая квадратная матрица, а р положительное целое число, то A^p эквива-лентно умножению A на себя р раз.

X = A^2

                                                         

X =

3    6    10

 14   25

  25   46

Отрицательные и дробные степени

Если А является квадратной и невырожденной, то A^(-p) эквивалентно умножению inv(A) на себя p раз.

Y = B^(-3)

                                                 Y =

0.0053   -0.0068   0.0018

-0.0034     0.0001  0.0036

-0.0016    0.0070    -0.0051

Дробные степени, например A^(2/3), также допускаются; результаты при этом зависят от ра-спределения собственных значений матрицы А.

Поэлементное возведение в степень

Оператор .^ (с точкой !) осуществляет поэлементное возведение в степень. Например, 

X = A.^2

                                                            A =

1    1    1

  4    9

  9  36

Вычисление корня квадратного из матрицы и матричной экспоненты

Для невырожденных квадратных матриц А функция sqrtm вычисляет главное значение квад-ратного корня , т.е. если X = sqrtm(A) , то X*X = A . Буква m в sqrtm  означает, что выпол-няется матричная операция. Это отличает данную функцию от sqrt(A), которая, подобно A.^(1/2) (обратите внимание на точку !), выполняет операцию извленчения корня поэлемен-тно. 

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

dx/dt = Ax

где x = x(t) есть векторная функция от t, а  A есть постоянная матрица не зависящая от t.

Решение данной системы может быть выражено в виде матричной экспоненты.

x(t) = Atx(0)

Функция expm(A) вычисляет матричную экспоненту. Рассмотрим пример системы диффере-нциальных уравнений со следующей 3х3 матрицей коэффициентов

                                                          A =

0    -6    -1

   2   -16

-5   20  -10

и начальными условиями x(0)

x0 = [ 1   1   1]’.

Использование матричной экспоненты для вычисления решения дифференциального уравне-ния в 101 точке с шагом 0.01 на интервале 0t1 записывается в виде

                                                                 X = [ ];

for t = 0 : 0.01 : 1

X = [X   expm(t*A)*x0];

                                                                end

Трехмерный график решения в фазовом пространстве может быть получен при помощи спе-циальной функции

plot3(X(1,:),  X(2,:),  X(3,:),  '-o')

Решение имеет вид спиральной функции сходящейся к началу координат (см. рис. ниже). Та-кое решение обусловлено комплексными собственными значениями матрицы коэффициен-тов А.

                 

Собственные значения и собственные векторы

Собственным значением и собственным вектором квадратной матрицы А называются ска-ляр λ  и вектор v, удовлетворяющие условию

Av  = λv

Диагональная декомпозиция

Имея диагональную матрицу Λ, составленную из собственных значений λ матрицы А и мат-рицу V , составленную из соответствующих собственных векторов v, можно записать

AV = VΛ

Если матрица V несингулярная, на основании данного выражения получаем спектральное разложение матрицы А

А = VΛV-1

Неплохой пример использования спектрального разложения дает рассмотренная выше мат-рица коэффициентов линейного дифференциального уравнения. Ввод выражения

lambda = eig(A)

дает следующий вектор-столбец собственных значений (два из них являются комплексно-сопряженными)

                                             lambda =

-3.0710

-2.4645 + 17.6008i

-2.4645 - 17.6008i

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

При двух выходных аргументах, функция eig вычисляет также собственные векторы и выда-ет собственные значения в виде диагональной матрицы

.

[V,D] = eig(A)

                             

V =

-0.8326     0.2003 - 0.1394i     0.2003 + 0.1394i

-0.3553   -0.2110 - 0.6447i    -0.2110 + 0.6447i

-0.4248                   -0.6930                   -0.6930

                             D =

-3.0710                    0                               0

              -2.4645+17.6008i                   0

                           0       -2.4645-17.6008i

Первый собственный вектор (первый столбец матрицы V) является действительным, а два других являются комплексно-сопряженными. Все три вектора являются нормализованными по длине, т.е. их Евклидова норма norm(v,2), равна единице.

Матрица V*D*inv(V), которая в более сжатой форме может быть записана как V*D/V, равна, в пределах погрешностей округления, матрице А. Аналогично, inv(V)*A*V, или V\A*V, рав-на, в пределах погрешностей округления, матрице D.

Дефектные матрицы

Некоторые матрицы не имеют спектрального разложения. Такие матрицы называются дефек-тными или не диагонализируемыми. Например, пусть матрица А имеет вид

                                                              A =

6    12    19

-9   -20   -33

   9     15

Для этой матрицы ввод [V, D] = eig(A) дает

                                           V =

-0.4741    -0.4082    -0.4082

.8127     0.8165      0.8165

-0.3386    -0.4082    -0.4082

                                           D =

-1.0000            0              0

            1.0000             0

                    0     1.0000

Здесь имеются два положительных единичных кратных собственных значений. Второй и третий столбцы матрицы V являются одинаковыми и поэтому полного набора линейно-неза-висимых собственных векторов не существует (и поэтому не существует обратная матрица V-1).

Сингулярное разложение матриц

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

Av = σu

ATu = σv

 Имея диагональную матрицу сингулярных чисел Σ и две ортогональные матрицы U и V, сформированные из соответствующих собственных векторов, можно записать

AV = U Σ

ATU = V Σ

Поскольку U и V являются ортогональными матрицами, это можно записать в виде сингуляр-ного разложения

A = U ΣVT

Полное сингулярное разложение матрицы А размера mхn включает  mхm матрицу U,  mхn матрицу Σ, и  nхn матрицу V. Другими словами, обе матрицы U и V являются квадратными , а матрица Σ имеет тот же размер, что и A. Если A имеет намного больше строк чем столб-цов, результирующая матрица U может быть достаточно большой, но большинство ее столб-цов умножаются на нули в Σ . В таких ситуациях может быть использована так называемая экономичная декомпозиция, которая сберегает как время так и память, за счет вывода матри-цы U размера mхn, матрицы Σ размера nхn и той же матрицы V.

Спектральное разложение является подходящим инструментом анализа матрицы, когда пос-ледняя осуществляет преобразование векторного пространства в себя, как это было в рас-смотренном выше примере дифференциальных уравнений. С другой стороны, сингулярное  разложение матриц удобно при отображении одного векторного пространства в другое, возможно с иной размерностью. Большинство систем совместных линейных уравнений отно-сятся ко второй категории. Если матрица А является квадратной, симметричной и поло-жительно-определенной, то ее спектральное и сингулярное разложения совпадают. Но при отклонении A от симметричной и положительно-определенной матрицы, разница между двумя разложениями возрастает. В частности, сингулярное разложение действительной мат-рицы всегда действительно, но спектральное разложение действительной несимметричной матрицы может быть и комплексным. 

Для матрицы

                                                         A =

9        4

      8

      7

полное сингулярное разложение задается в форме

[U,S,V] = svd(A)

и приводит к следующим результатам

                                           U =

-0.6105   0.7174    0.3355

-0.6646  -0.2336   -0.7098

-0.4308  -0.6563   0.6194

S =

14.9359    0

    5.1883

             0

V =

-0.6925      0.7214

-0.7214      -0.6925

Вы можете убедиться, что матрица U*S*V'  равна А с точностью до ошибок округления. Для этого примера экономичная декомпозиция дает незначительный эффект.

[U,S,V] = svd(A,0)

                                                      U =

-0.6105   0.7174

-0.6646   -0.2336

-0.4308   -0.6563

                                                        S =

14.9359    0

   5.1883

                                                        V =

-0.6925    0.7214

-0.7214   -0.6925

Как и в первом случае, матрица  U*S*V'  равна A с точностью до ошибок округления.

Полиномы и интерполяция

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

Полиномы и действия над ними

                                

Обзор полиномиальных функций

Функция

Описание

conv

Умножение полиномов.

 deconv

Деление полиномов.

 poly

Вычисление характеристического полинома матрицы или определение полинома с заданными корнями.

 polyder

Вычисление производных от полиномов.

 polyfit

Аппроксимация данных полиномом.

 polyval

Вычисление значений полиномов в заданных точках.

 polyvalm

Вычисление значений матричного полинома.

 residue

Разложение на простые дроби  (вычисление вычетов).

 roots

Вычисление корней полинома.

Представление полиномов

MATLAB представляет полиномы как векторы-строки, содержащие коэффициенты полино-мов по убывающим степеням. Например, рассмотрим следующее уравнение

p(x) = x3x

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

p = [1   0   -2   -5].

Корни полинома

Корни полинома вычисляются при помощи функци roots :

r = roots(p)

                                                        r =

2.0946

-1.0473 + 1.1359i

-1.0473 - 1.1359i

MATLAB запоминает вычисленные корни как вектор-столбец. Функция poly выполняет об-ратную роль, то есть по заданным корням полинома вычисляет значения его коэффициентов (обратите внимание на значение второго коэффициента, который в идеале равен нулю).

p2 = poly(r)

                                                         p2 =

1    8.8818e-16   -2   -5

Функции poly и roots являются взаимно-обратными функциями, с точностью до упорядоче- ния коэффициентов, масштабирования и ошибок округления.

Характеристические полиномы

Функция poly вычисляет также коэффициенты характеристического полинома матрицы:

A = [1.2   3   -0.9; 5   1.75   6; 9   0   1];

poly(A)

                                        ans =

1.0000   -3.9500   -1.8500   -163.2750

Корни данного полинома, вычисленные при помощи функции roots, являются собственными значениями (характеристическими числами) матрицы А. (При практических расчетах, для вычисления собственных значений матриц целесообразно вычислять их посредством функ-ции eig.)

Вычисление значений полинома

Функция polyval вычисляет значение полинома в заданных точках. Для вычисления p в точ-ке s = 5, следует записать 

polyval(p,5)

                                                             

ans =

110

Можно также вычислить значение матричного полинома. Так, вместо полинома Валлиса мо-жно записать:

p(X)  = X3 - 2XI

где X является квадратной матрицей, а I - единичной матрицей. Например, сформируем сле-дующую квадратную матрицу X 

X = [2  4  5; -1  0  3; 7  1  5];

и вычислим значение заданного выше полинома p(X) на данной матрице.

Y = polyvalm(p, X)

                                                     Y =

377   179   439

 81   136

 253   639

Умножение и деление полиномов

Для умножения и деления полиномов предназначены соответственно функции  conv  и  deconv. Рассмотрим полиномы