Язык программирования Matlab. MATLAB: инструмент будущего или дорогая игрушка Встроенные математические функции

Сейчас возможности системы значительно превосходят возможности первоначальной версии матричной лаборатории Matrix Laboratory. Нынешний MATLAB, детище фирмы The MathWorks, Inc., – это высокоэффективный язык инженерных и научных вычислений. Он поддерживает математические вычисления, визуализацию научной графики и программирование с использованием легко осваиваемого операционного окружения. Наиболее известные области применения системы MATLAB:

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

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

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

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

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

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

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

Версия MATLAB 6.1 - это предпоследнее достижение разработчиков (последнее - MATLAB 6.5).

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

Операционная среда системы MATLAB 6.1. Операционная среда системы MATLAB 6.1 - это множество интерфейсов, которые поддерживают связь этой системы с внешним миром через диалог с пользователем через командную строку, редактор М-файлов, взаимодействие с внешними системами Microsoft Word, Excel и др.

После запуска программы MATLAB на дисплее компьютера появляется её главное окно, содержащее меню , инструментальную линейку с кнопками и клиентскую часть окна со знаком приглашения . Это окно принято называть командным окном системы MATLAB (рис. 1).

Меню Файл (рис. 2) объединяет обычные функции: Правка отвечает за изменение содержания Окна команд (отмена, повтор, вырезать, копировать, вставить, выбрать всё, удалить и др.) и за очистку некоторых окон MATLAB; меню Вид – за оформление Рабочего стола; меню Web – запускает Web-страницы из Internet; меню Окно – работает с редактором/отладчиком М-файлов (закрывает все М-файлы, делает текущим один из них); меню Помощь – работает со справочной документацией и демонстрациями.


Особого рассмотрения заслуживает опция Предпочтения ... (выбор характеристик), которая при выборе открывает окно, включающее слева дерево объектов (рис. 3), а справа их возможные характеристики.

Инструментальная панель командного окна системы MATLAB позволяет обеспечить простой доступ к операциям над М-файлами: создание нового М-файла; открытие существующего М-файла; удаление фрагмента; копирование фрагмента; вставка фрагмента; восстановление только выполненной операции и др.

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

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

Итак, были подвергнуты разбору структурные части командного окна MATLAB. Но кроме них существуют ещё несколько элементов MATLAB, которые помогают при работе:

Команды - окно, содержащее по порядку введённые ранее команды в Окне команд («история команд»).

Рабочая область – это область памяти MATLAB, в которой размещены переменные системы. Содержимое этой области можно просмотреть из командной строки с помощью команд who (выводит только имена переменных) и whos (выводит информацию о размерах массивов и типе переменной) или в отдельном окне под тем же названием. В нём можно выполнить следующие операции: загрузить файл данных, сохранить Рабочую область как (команды позволяют открыть и сохранить содержимое рабочей области в двоичном MAT-файле), удалить выбранные переменные; открыть выбранные переменные (где можно изменить их значение). Кроме этого в меню Правка можно очистить как Окно команд и Историю команд, так и Рабочую область (или выполнить команду в Окне команд: clear ).

Для сохранения и запуска Рабочей области можно использовать команды load и save.

Пример.

Saving to: matlab.mat

>> save my.mat

>> load my.mat

>> save my2

>> load my2

Текущий каталог – окно, являющееся своеобразным «проводником» по каталогам MATLAB.

Запустить Редактор – окно, отражающее дерево структурных элементов MATLAB и других установленных вместе с ним программных средств, которые можно запускать двойным левым щелчком мыши. Например, это окно может выглядеть, как показано на рис 9.

Редактор/отладчик М-файлов – один из важнейших структурных частей MATLAB, который может быть открыт выбором соответствующей опции в главном меню, на инструментальной панели или вызван из командной строки командой edit или edit <имя М-файла> и позволяющий создавать и редактировать М-файлы.

Редактор/отладчик поддерживает следующие операции: создание нового М-файла; открытие существующего М-файла; сохранение М-файла на диске; удаление фрагмента; копирование фрагмента; вставка фрагмента; помощь; установить/удалить контрольную точку; продолжить выполнение и др.

GUIDE – графический интерфейс пользователя, в котором происходит создание законченных приложений.

Интерактивный сеанс работы. М-файлы . Интерактивный режим – это пользовательский режим ввода с клавиатуры команд и выражений, в результате выполнения которых получаются необходимые числовые результаты, которые можно легко и быстро визуализировать встроенными графическими средствами пакета MATLAB. Но использование этого режима для создания и сохранения конкретной программы невозможно. Поэтому создатели MATLAB кроме Окна команд, в котором реализован интерактивный режим, выделили специальные файлы, содержащие коды языка MATLAB, и назвали M-файлами (*.m). Для создания M-файла используется текстовый редактор (редактор/отладчик М-файлов).

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

Раскройте меню File основного окна MatLab и в пункте New выберите подпункт M-file. Новый файл открывается в окне редактора M -файлов (рис. 10). Запишем в файл программу вычисления среднего арифметического пере-

менных a и b, затем сохраним с именем fun1.m. Сравните способы решения задачи, представленные в таблице.

Размещено на http://www.allbest.ru/

Введение

Название пакета Matlab является сокращением от английского Matrix Laboratory (что означает матричная лаборатория ). Этим же термином (то есть Matlab) называют и язык программирования, используемый для составления программных кодов. Как известно, программный код может компилироваться или интерпретироваться . В первом случае получаем исполнительный (машинный) код, который выполняется центральным процессором. При интерпретации происходит преобразование в промежуточный код, который выполняется непосредственно системой-интерпретатором. Скомпилированный код обычно выполняется быстрее, чем интерпретируемый код. Вместе с тем интерпретируемые языки программирования, как правило, более демократичны в плане синтаксиса. Программный код Matlab интерпретируется. Однако это никак не ставит под сомнение вычислительные возможности Matlab. Основой для реализации разных типов данных в Matlab являются матрицы , что объясняет многие особенности среды (и языка программирования) Matlab. К матрицам мы будем достаточно часто апеллировать по ходу изложения материала книги.

Значительная часть функциональных возможностей приложения Matlab реализована через пакеты инструментов (английский термин toolbox ). Это коллекции функций и других утилит, предназначенных для решения узко специальных задач. Большинство пакетов имеют узкую, специфическую направленность. Приложение Matlab предназначено (в первую очередь) для выполнения числовых расчетов и визуализации получаемых результатов. Пакет содержит огромное число утилит для выполнения самых разных операций и позволяет создавать собственные полнофункциональные программные коды. Вместе с тем в Matlab могут выполняться и символьные расчеты. Этой цели служит встроенная в Matlab среда MuPAD. Таким образом, пользователю Matlab предоставляются широкие возможности не только в области числовых, но и символьных расчетов.

1. Простые вычисления

Под простыми, или пошаговыми, подразумевают вычисления, обычно выполняемые в командном окне приложения Matlab. Соответствующая инструкция или команда вводится в командном окне и затем выполняется. На рисунке 1 показано, как может выглядеть рабочее окно приложения Matlab при запуске. Интерес в данном случае представляет внутреннее окно (обычно в центре рабочего окна приложения) с названием Command Window - командное окно. В этом окне можно заметить индикатор строки ввода (в виде двойной стрелки >> ). Для ввода команды курсор необходимо переместить после индикатора строки ввода и ввести инструкцию для выполнения. Другими словами, в строку ввода командного окна необходимо ввести выражение и, нажав клавишу «Enter», запустить процесс вычисления этого выражения. Результат вычислений отображается внизу, под выполняемой командой. По умолчанию результат заносится в системную переменную «ans».

Рисунок 1

На рисунке 2 приведен пример вычисления нескольких арифметических выражений. В данном случае приведены результаты вычисления выражений 1+2*3 и (5^2-4)/7 соответственно. В первом случае, как и ожидалось, получаем в качестве результата значение 7, во втором - значение 3.

Рисунок 2

В качестве основных арифметических операторов в Matlab используются: оператор «+» для вычисления суммы, оператор «-» для вычисления разности, оператор «*» для вычисления произведения, оператор «/» для вычисления частного и оператор «^» для возведения в степень.

В общем смысле переменная - это область памяти, к которой можно обращаться по имени для получения значения, записанного в этой области, а также его изменения. В строго типизированных языках программирования (таких, как С++, Java или Pascal) для использования переменной необходимо предварительно ее объявить, указав при этом, к какому типу она относится. В Matlab ничего подобного делать не нужно. Переменной сразу можно присваивать значение. В качестве оператора присваивания используется знак равенства «=». Имя переменной, которой присваивается значение, указывается слева от оператора присваивания, а присваиваемое переменной значение справа от оператора присваивания. Значение, присваиваемое переменной, если речь идет о скалярных величинах, может быть числом или выражением, содержащим другие переменные. При этом необходимо, чтобы этим переменным ранее уже было присвоено значение. Пример использования скалярных переменных в пошаговых вычислениях приведен в рабочем документе на рисунке 3.

Рисунок 3

Первой командой x=0.5*sin(0.1) присваивается значение переменной «x». При этом использована встроенная функция Matlab «sin()» для вычисления синуса. Присвоенное в результате этой переменной значение отображается внизу под строкой ввода в формате:

«переменная =

значение»

Аналогично следующей командой y=0.3*cos(0.2) значение присваивается переменной «y». Здесь «cos()» - встроенная функция Matlab для вычисления косинуса. Обращаем также внимание читателя, что в качестве десятичного разделителя при вводе действительных чисел с дробной десятичной частью используется точка.

Наконец, командой z=(x^2+y^2)^(1/3) значение присваивается переменной «z». В выражение, определяющее значение переменной «z», входят переменные «x» и «y». Однако поскольку предварительно этим переменным были присвоены значения, ошибки не возникает и значение переменной «z» присваивается корректно.

Есть две базовые операции, которые достаточно полезны, особенно при большем объеме вычислений. Во-первых, в некоторых случаях нужно узнать, какие переменные рабочего пространства уже используются, и, во-вторых, иногда приходится, образно выражаясь, "удалять переменные с игрового поля" - то есть освобождать память, выделенную под эти переменные. Первая операция выполняется с помощью инструкции «whos». Если ввести в командную строку эту инструкцию и нажать клавишу «Enter», будет выведен список доступных в рабочем пространстве переменных с описанием их некоторых атрибутов.

Рисунок 4

В данном случае список состоит из четырех переменных: трех объявленных переменных пользователя «x», «y» и «z», и системной переменной «ans». Очистка пространства переменных осуществляется с помощью инструкции «clear», после которой, через пробел, указываются имена удаляемых переменных. На рисунке 5 представлен результат выполнения команды «clear x y», после которой выполнена команда «whos» для проверки списка переменных рабочего пространства.

Рисунок 5

Поскольку командой «clear x y» переменные «x» и «y» из рабочего пространства удалены, в списке переменных остались только переменная «z» и системная переменная «ans». Хотя значение переменной «z» присваивается на основе значений переменных «x» и «y», их удаление из рабочего пространства (или изменение их значения) назначение переменной «z» никак не влияет. Для удаления из рабочего пространства всех переменных используют инструкцию «clear» без указания переменных.

В предыдущих примерах использовались скалярные величины. С точки зрения основополагающей идеологии и технической реализации, скаляры в Matlab являются скорее экзотикой, чем обычным явлением. Дело в том, что в Matlab базовым типом данных являются матрицы (или массивы). В этом отношении скаляр "с точки зрения Matlab" (если можно так выразиться) является матрицей размера 1х Как известно, массивы можно индексировать, то есть для доступа к элементу массива указывается имя массива и его индекс (или индексы). Индексы указываются после имени матрицы (массива) в круглых скобках и разделяются запятыми. К скалярной переменной можно обращаться как по имени, так и указав индексы - в данном случае это (1,1). Пример обращения к скалярной величине в обычном режиме и с помощью пары единичных индексов показан на рисунке 6.

Командой «MyVar=10» переменной «MyVar» присваивается значение «10». Обращаться к переменной можно как по имени «MyVar», так и в режиме обращения к элементу матрицы «MyVar(1,1)». В обоих случаях в качестве результата возвращается значение скалярной переменной «MyVar».

Поскольку все переменные в Matlab априори рассматриваются как матрицы, никаких особых инструкций при объявлении матриц выполнять не нужно, за исключением того, что для матрицы необходимо задать значения ее элементов. Делается это достаточно просто. Список элементов матрицы заключается в квадратные скобки, списки значений элементов строки разделяются запятыми или пробелами, а списки значений разных столбцов разделяются точкой с запятой. Например, командой «A=» задается вектор-строка (матрица размеров 1х3) с элементами «1», «2» и «3» соответственно.

Рисунок 6

Командой «B=» задается вектор-столбец (матрица размеров 3х1) с элементами «4», «5» и «6». Наконец, командой «C=» задается матрица размерами 3х2 (3 строки и 2 столбца). Примеры выполнения этих команд приведены в документе на рисунке 7.

Рисунок 7

К элементам матрицы можно обращаться в обычном режиме, указав два индекса (номер строки и номер столбца, на пересечении которых находится элемент). Существует также способ обращения по обобщенному индексу . Обобщенный индекс элемента матрицы определяется как его порядковый номер, если отсчет начинать с верхнего левого элемента сверху вниз и от левого столбика к правому. Так, если матрица «X» имеет размеры «n» на «m», то к элементу с индексами «i» и «j» можно обратиться либо как «X(i,j)», либо как «X(n*(j-1)+i)». Хотя второй способ индексирования элементов может показаться несколько запутанным, он соответствует техническому способу индексации элементов матрицы в памяти, поэтому вычисления в таком случае выполняются быстрее. На рисунке 8 приведен фрагмент документа, в котором в различном режиме выполняется обращение к элементам матрицы «C», определенной ранее. В частности, командой «C(1)» получаем значение элемента «C(1,1)» (значение1). Инструкция «C(5)» является ссылкой на элемент «C(2,2)», значение которого равно «4».

Рисунок 8

2. Арифметические операции

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

Таблица 1 Основные арифметические операторы Matlab.

Оператор

Описание

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

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

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

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

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

Оператор левостороннего деления. Бинарный оператор. Операндами

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

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

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

Оператор поэлементного левостороннего деления. Бинарный оператор. Операндами являются матрицы одинакового размера. Результатом является матрица того же размера. Выполняется деление элементов матрицы - второго операнда на соответствующие элементы матрицы - первого операнда.

Оператор вычисления сопряженной матрицы. Унарный оператор. Результатом является матрица, сопряженная к матрице-оператору.

Оператор транспонирования. Унарный оператор. Результатом является матрица, транспонированная к матрице-операнду.

Оператор поэлементного возведения в степень. Бинарный оператор.

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

Приведенные операторы практически полностью перекрывают весь спектр возможных операций, которые приходится выполнять с матрицами. Некоторые примеры использования арифметических операторов с матричными операндами приведены в табл. 2. Матрицы «A» и «B» при этом инициализированы в документе следующими командами (жирным шрифтом выделен ввод пользователя):

>> A=

>> B=[-1,1;3,-2]

Таблица 2 Примеры выполнения арифметических операций с матрицами.

Описание

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

Вычисляется по правилам вычисления матриц в линейной алгебре.

Деление матриц.

Матрица A умножается на матрицу, обратную к матрице B.

Левостороннее умножение матриц.

Матрица, обратная к матрице A, умножается на матрицу B.

Поэлементное деление матриц.

Элементы матрицы A делятся на соответствующие элементы матрицы B.

Левостороннее поэлементное деление.

Элементы матрицы B делятся на соответствующие элементы матрицы A.

Поэлементное умножение матриц.

Элементы матрицы A умножаются на соответствующие элементы матрицы B.

Сумма матриц.

Вычисляется по правилам вычисления суммы матриц в линейной алгебре (складываются соответствующие элементы матриц A и B).

Разность матриц.

Вычисляется по правилам расчета разности двух матриц (от элементов матрицы A вычитаются соответствующие элементы матрицы B).

Транспонирование матрицы.

Результатом является матрица, транспонированная к матрице A.

Рисунок 9

Рисунок 10

Однако арифметические операторы далеко не единственные операторы, используемые при вычислениях.

3. Логические операторы и операторы сравнения

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

Обычно под логическими значениями подразумевают тип данных, переменные которого могут принимать два значения - истина и ложь («true» и «false» соответственно). В Matlab любое числовое значение, отличное от нуля, интерпретируется как истина (или «true»), а ненулевые значения интерпретируются как ложь (или «false»). Фактически, это есть правило перевода числовых значений в логические значения. Обратное преобразование выполняется по следующему правилу: логическое значение истина (или «true») преобразуется в числовое значение «1», а логическое значение ложь (или «false») преобразуется в числовое значение «0».

Если некоторой переменной присвоить в качестве значения «true» или «false», отображаемым будет соответственно значение «1» или «0».

Операндами для операторов сравнения выступают числовые значения. Это бинарные операторы. Если оба операнда - скаляры, сравнение выполняется по правилам сравнения чисел. При истинном соотношении возвращается значение «1», при ложном - значение «0». Если операндами являются матрицы одинаковых рангов, сравниваются соответствующие элементы матриц (по правилам сравнения числовых значений). Результатом является "логическая матрица": ее элементы равны 1 или 0 в зависимости от результата сравнения соответствующих элементов исходных матриц. Если одним операндом является скаляр, а другим - матрица, то выполняется сравнение каждого элемента матрицы со скаляром. Операторы сравнения перечислены в таблице 3. бинарный программирование компилирование

Таблица 3 Операторы сравнения Matlab.

Оператор

Описание

Оператор проверки на предмет равенства.

Оператор проверки значений операндов на предмет неравенства.

Оператор проверки того, что значение первого операнда больше значения второго операнда.

Оператор проверки того, что значение первого операнда меньше значения второго операнда.

Оператор проверки того, что значение первого операнда не меньше значения второго операнда.

Оператор проверки того, что значение первого операнда не больше значения второго операнда.

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

Таблица 4 Логические операторы Matlab.

Как в операциях сравнения, так и в логических операциях для элементов матриц или скаляров (в зависимости от типа операндов) возвращаются значения «0» (ложь) и «1» (истина).

4. Комплексные числа

В Matlab можно использовать не только действительные, но и комплексные числа. Ввод комплексных чисел в рабочей области выполняется в соответствии с правилами представления комплексных чисел. В качестве мнимой единицы можно использовать, на выбор, переменные «i» или «j», без какого бы то ни было предварительного объявления. Однако если переменной «i» или «j» присвоить числовое значение, соответствующую переменную в качестве мнимой единицы задействовать не получится.

>> z=1+2i

>> z+j

>> (2-4i)*(1+z)

12.0000 - 4.0000i

>> i * z

При вводе комплексного значения между мнимой частью и мнимой единицей оператор умножения можно не ставить. По умолчанию для отображения мнимой единицы используется символ «i» (хотя может вводиться как «j»). Существует ряд функций, облегчающих работу с комплексными числами. Среди них имеет смысл выделить функции «real()» и «imag()» для вычисления действительной и мнимой частей комплексного числа соответственно, функцию «conj()» для вычисления комплексно сопряженного числа, а также функцию «complex()», принимающую два аргумента (действительная и мнимая части), на основании которых создается комплексное число.

>> complex(3,-2)

3.0000 - 2.0000i

>> conj(ans)

3.0000 + 2.0000i

>> real(ans)

>> imag (2-4 i )

Комплексными могут быть не только скалярные величины, но и матрицы.

Рисунок 11

5. Оператор создания интервала значений

Достаточно популярным и часто используемым в Matlab является оператор "двоеточие", то есть «:». Существует несколько вариантов его использования. Рассмотрим самые общие. Для создания вектора-строки со значениями, равно распределенными в некотором интервале, оператор используют в следующем формате: «нижняя граница диапазона, оператор (то есть «:») и верхняя граница диапазона» - например: «x=a:b». При этом создается вектор-строка (для приведенной команды вектор записывается в переменную «x»). Первый элемент вектора равен нижней границе указанного диапазона (значение «a»). Шаг дискретности изменения значений элементов вектора равен единице. Значение последнего элемента определяется верхней границей указанного диапазона (в данном случае «b»). Так, командой «x=1:10» создается вектор-строка со значениями «1, 2, 3 и т.д. до 10» включительно (жирным шрифтом выделен ввод пользователя):

>> x=1:10

1 2 3 4 5 6 7 8 9 10

Рисунок 12

Если нужно создать вектор-строку с последовательностью значений и шагом дискретности, отличным от единицы, используют тот же оператор "двоеточие" (то есть «:»), но в несколько ином формате: «указывается нижняя граница диапазона значений, оператор "двоеточие", шаг дискретности, снова оператор "двоеточие", и верхняя граница диапазона» - например: «y=a:m:b». Формируется вектор-строка с первым значением - нижней границей диапазона (для приведенной команды это «a»). Каждый следующий элемент получается прибавлением к предыдущему величины, указанной в качеств шага дискретности (в данном случае «m»). Значения элементов сформированного массива не превышают верхнюю границу диапазона (то есть «b»). Пример такого использования оператора "двоеточие" приведен ниже (отрывок кода из рабочей области, жирным выделен ввод пользователя):

>> y=1:0.7:10

Columns 1 through 8

0000 7000 2.4000 3.1000 3.8000 4.5000 5.2000 5.9000

Columns 9 through 13

6.6000 7.3000 8.0000 8.7000 9.4000

Рисунок 13

В данном случае создается вектор-строка y со значениями от 1 до 10 с шагом дискретности 0.7 - значения 0, 7, 2.4 и т.д. до 9.4 включительно (следующее гипотетическое значение в последовательности 10.1 превышает верхнюю границу диапазона 10, поэтому в формируемый вектор оно не входит). Сообщения «Columns 1 through 8» и «Columns 9 through 13» появляются автоматически как следствие того, что результат выполнения команды «y=1:0.7:10» в одну строку не помещается, поэтому выполняется перенос части вектора-результата в следующую строку. Данные сообщения призваны облегчить процесс индексной идентификации элементов.

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

Например, если оператор "двоеточие" используется в формате «A(i:j,k)»,

то в качестве результата возвращается вектор-столбец, который формируется из элементов матрицы «A», находящихся в «k-м» столбце с «i-й» по «j-ю» строку включительно. Ссылка в формате «A(:,k)» возвращает в качестве значения весь «k-й» столбец матрицы «A».

Можно использовать оператор "двоеточие" при указании сразу двух индексов. Например, командой «A(i:j,m:n)» возвращается подматрица, состоящая их строк с «i-й» по «j-ю» и одновременно столбцов с «m-го» по «n-й».

Рассмотрим некоторые примеры использования оператора "двоеточие".

В частности, исходная матрица «A» вводится командой:

A=

В следующих командах оператор "двоеточие" используется для извлечения подматриц из исходной матрицы «A»:

>> A(1:3,2)

>> A(3,2:4)

>> A(3:4,1:2)

Например, командой «A(1:3,2)» возвращается вектор-столбец, составленный из элементов с первой по третью строку во втором столбце матрицы «A». Командой «A(3,2:4)» возвращается вектор-строка, который составлен из элементов третьей строки со второго по четвертый столбец включительно матрицы «A». Наконец, командой «A(3:4,1:2)» возвращается подматрица матрицы «A», верхний левый элемент которой имеет индексы «(3,1)», а правый нижний элемент имеет индексы «(4,2)».

6. Встроенные математические функции

В Matlab по умолчанию доступно достаточно большое количество встроенных функций. Ядро их составляют математические функции, которые на практике используются сравнительно часто. Некоторые из них перечислены в таблице 5.

Таблица 5 Некоторые математические функции Matlab.

Описание

Модуль числа (в том числе и комплексного), указанного аргументом функции.

Арккосинус для числа, указанного аргументом функции.

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

Арккотангенс числа, указанного аргументом функции.

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

Арккосеканс числа, указанного аргументом функции.

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

Арксеканс числа, указанного аргументом функции.

Арксеканс аргумента функции. Результат представлен в градусах.

Арксеканс гиперболический от числа, указанного аргументом функции.

Арксинус от числа, указанного аргументом функции.

Арксинус аргумента функции. Результат представлен в градусах.

Арксинус гиперболический от числа, указанного аргументом функции.

Арктангенс от числа, переданного аргументом функции.

У функции два аргумента (например, atan(y,x)). В качестве результата возвращается направление (угол в диапазоне значений от -р до р) на точку с соответствующими координатами (в данном случае, точка с координатами (y,x)). Если аргументы комплексные, их мнимые части игнорируются.

Арктангенс аргумента функции. Результат представлен в градусах.

Арктангенс гиперболический от числа, переданного аргументом функции.

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

Косинус от числа, переданного аргументом функции.

Косинус аргумента функции, указанного в градусах.

Косинус гиперболический от числа, переданного аргументом функции.

Котангенс от числа, переданного аргументом функции.

Котангенс аргумента функции, указанного в градусах.

Котангенс гиперболический от числа, переданного аргументом функции.

Косеканс от числа, переданного аргументом функции.

Косеканс аргумента функции, указанного в градусах

Косеканс гиперболический от числа, переданного аргументом функции.

Экспонента: показательная функция с основанием-константой Эйлера и показателем степени, определяемым аргументом функции.

Командой вида expm1(x) с повышенной точностью вычисляется значение exp(x)-

Функцией возвращается вектор-строка с простыми множителями числа (с учетом их кратности), указанного аргументом функции.

Функция для вычисления факториала числа, указанного аргументом функции.

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

Функция округления аргумента до ближайшего целого значения, которое не превышает аргумент, - округление в направлении минус бесконечности.

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

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

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

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

Натуральный логарифм от числа, указанного аргументом функции.

Логарифм по основанию 10 от числа, указанного аргументом функции.

Командой вида log1p(x) с повышенной точностью вычисляется значение log(1+x).

Логарифм по основанию 2 от числа, указанного аргументом функции.

Функцией возвращается остаток от деления значения первого аргумента функции на значение второго аргумента. Целая часть отделения определяется функцией froor().

Функцией в качестве значения возвращаются биномиальные коэффициенты. Если функция вызвана в формате nchoosek (n,k), то в качестве результата возвращается значение: ,

Функцией в качестве значения возвращается ближайшее целое число - степень двойки, которое не меньше модуля аргумента функции.

Командой nthroot(x,n) в качестве значения возвращается корень порядка n (второй аргумент) из действительного числа или элементов действительного массива x (первый аргумент).

Функция может вызываться с одним или двумя аргументами. Если у функции один аргумент (массив) и функция вызывается в формате pow2(x), то в качестве результата возвращается массив степеней двойки, показатели степени определяются массивом x. Если функция вызывается с двумя аргументами в формате pow2 (x,y), то результатом является x.*2.^y.

У функции два аргумента. Если аргументы скалярные, в качестве результата возвращается значение первого аргумента, возведенное в степень, определяемую вторым аргументом. В более общем случае в качестве результата выполнения команды power (A,B) возвращается "A.^B".

Функцией генерируется список простых чисел. Количество чисел указывается аргументом функции.

Функцией возвращается остаток от деления значения первого аргумента функции на значение второго аргумента. Целая часть отделения определяется функцией fix().

Функция округления аргумента до ближайшего целого значения.

Секанс от числа, указанного аргументом функции.

Секанс аргумента функции, указанного в градусах.

Знак числа, указанного аргументом функции (для положительных чисел - единица, для отрицательных чисел - минус единица, для нуля - ноль).

Синус от числа, указанного аргументом функции.

Синус аргумента функции, указанного в градусах.

Корень квадратный из числа, указанного аргументом функции.

Описание

Тангенс от числа, указанного аргументом функции.

Тангенс аргумента функции, указанного в градусах.

Хотя большинство из представленных выше функций с математической точки зрения определены для скалярных величин, обычно они могут применяться и для аргументов-матриц. В этом случае действие функционального оператора применяется к каждому из элементов матрицы. Например, если переменная «A» является матрицей с элементами «A(i,j)», то в результате выполнения команды «exp(A)» получим матрицу того же ранга, а ее элементы вычисляются как «exp(A(i,j))». В некоторых случаях такой подход неприемлем. Существуют так называемые матричные функции, аргументами которых по определению являются матрицы (в основном квадратные). Результат этих функций вычисляется по алгоритмам, разработанным специально для матриц. Так, в Matlab есть встроенные матричные функции для экспоненты, логарифма и квадратного корня. Это соответственно функции «expm()», «logm()» и «sqrtm()». Например, если «A» - квадратная матрица, то функцией «expm(A)» вычисляется матричная экспонента. По определению это ряд:

Результатом является матрица, которая вычисляется, как правило, на основе собственных чисел и собственных векторов матрицы «A». Матричный логарифм для аргумента-матрицы «A», вычисляемый инструкцией «logm(A)», представляет собой матрицу такую, что матричная экспонента от нее равна матрице «A». Другими словами, по определению если «B=logm(A)», то «expm(B)=A», и функция «logm()» является обратной к функции «expm()». Аналогично, в результате извлечения квадратного корня из матрицы «A» с помощью функции «sqrtm()» получаем матрицу, которая, будучи возведенной в квадрат, дает матрицу «A». Например, если «B=sqrtm(A)», то «B*B=A».

В Matlab также широко представлены специальные функции, некоторые их них приведены в таблице 6.

Таблица 6. Некоторые специальные математические функции Matlab.

Описание

Функция Эйри.

Функция Бесселя третьего рода (функция Ханкеля).

Командой besseli(n,x) возвращается модифицированная функция Бесселя первого рода (индекса n).

Командой besselj(n,x) возвращается функция Бесселя первого рода (индекса n), которая является одним из решений уравнения Бесселя.

Командой besselk(n,x) возвращается модифицированная функция Бесселя второго рода (индекса n), которая является одним из решений модифицированного уравнения Бесселя. Для целых индексов соответствующее выражение рассчитывается как лимит.

Командой besselj(n,x) возвращается функция Бесселя второго рода (индекса n), которая является одним из решений уравнения Бесселя. Для целых индексов соответствующее выражение рассчитывается как лимит.

Бета-функция Эйлера.

Неполная бета-функция Эйлера.

Логарифм натуральный от бета-функции Эйлера. Аргументами передаются аргументы бета-функции.

Эллиптическая функция Якоби. Если функция вызывается с двумя аргументами в формате ellipj(u,m), в качестве результата возвращаются значения (вектор) для функций sn (u ) , cn (u ) и dn (u ).

Функция для вычисления полного эллиптического интеграла первого и второго рода (вектор значений).

Функция ошибок.

Функция ошибок (остаточная).

Функция ошибок (остаточная нормированная).

Обратная функция к функции ошибок erf().

Обратная функция к функции ошибок erfc().

Интегральная экспонента.

Гамма-функция Эйлера.

Неполная гамма-функция.

Логарифм натуральный от гамма-функции Эйлера. Аргументом функции передается аргумент гамма-функции.

Функция для вычисления присоединенных полиномов Лежандра. В результате вызова функции в формате legendre(n,x) возвращается вектор-столбец значений присоединенных полиномов Лежандра m () Pn x для m = 0,1,2,...,n

Пси-полигамная функция.

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

7. Формат вывода числовых данных

В некоторых случаях приходится изменять способ, которым данные с результатом выполнения команд пользователя выводятся на экран. В первую очередь отметим, что можно вообще не отображать результат выполнения команды в командном окне. Для этого достаточно соответствующую команду закончить точкой с запятой (то есть «;»). В этом случае после нажатия клавиши «Enter» команда выполняется, но результат ее выполнения в командном окне не отображается. Такой режим особенно удобен в тех случаях, когда нужно выполнять громоздкие промежуточные расчеты, которые, с одной стороны, необходимы для получения конечного результата, а с другой - загромождают рабочее пространство. Поэтому разумный выход из такой ситуации - скрыть результат выполнения команды. Числовой формат вывода в явном виде задается с помощью инструкции «format». В команде определения формата вывода после ключевого слова «format» указывается применяемый формат. Допустимые форматы, с кратким их описанием, перечислены в таблице 7.

Таблица 7 Числовые форматы.

Описание

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

Числовой формат, при котором после десятичной точки отображается 7, 14 и 15 цифр в зависимости от типа числовых данных (формат данных с фиксированной точкой).

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

Числовой формат отображения с мантиссой и показателем степени (формат данных с плавающей точкой), при котором после десятичной точки отображается 7, 14 и 15 цифр в зависимости от типа числовых данных.

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

В зависимости от значения, для отображения применяется либо формат с плавающей точкой, либо с фиксированной точкой. После десятичной запятой отображается 7, 14 или 15 цифр.

Инженерный формат с четырьмя отображаемыми цифрами после десятичной точки и показателем степени, кратным трем.

Инженерный формат с 7, 14 или 15 отображаемыми цифрами после десятичной точки и показателем степени, кратным трем.

Формат, при котором для положительных чисел отображается знак +, для отрицательных отображается знак -, а для нуля отображается пробел.

Финансовый формат, при котором после десятичной точки отображается две цифры.

Отображение чисел в шестнадцатеричной системе счисления.

Отображение чисел в виде рациональной дроби.

Режим отображения результатов вычислений в компактной форме, с уменьшенными интервалами между строками.

Режим отображения результатов вычислений с увеличенными интервалами между строками. Используется по умолчанию.

Ниже приведен пример отображения числа р в разных форматах (в командах использована встроенная константа «Matlab pi»):

>> pi

>> format long

>> pi

3.141592653589793

>> format long e

>> pi

3.141592653589793e+000

>> format long eng

>> pi

3.14159265358979e+000

>> format bank

>> pi

>> format rat

>> pi

>> format +

>> pi

Рисунок 14

Настройки формата вывода влияют только на способ отображения числовых значений, но никак не точность их представления. Поэтому главным критерием при выборе способа вывода данных может быть вопрос удобства. Есть одна функция, которая хотя напрямую и не относится к определению формата вывода числовых данных, ее использование значительно облегчает процесс взаимодействия пользователя с системой. Это функция «clc», которая позволяет очистить рабочее пространство от команд ввода и результатов их выполнения.

Практическая часть

1. Создать вектор-строку: начальный элемент равен - р, конечный р, шаг равен 0. Транспонировать строку в столбец.

2. Создать три вектор-строки из 5 элементов fi = , где n = 5 для х = 2, 3, 4. Объединить эти строки в матрицу А (3 Ч 5).

3.Создать три вектор-столбца из 5 элементов арифметической прогрессии. Элемент арифметической прогрессии рассчитывается по формуле:

где «аn-1» - предыдущий элемент; «аn» - последующий.

Пять элементов вектора формируются, начиная с задания первого элемента «а» и c использованием шага арифметической прогрессии «d» для задания последующих элементов:

Для первого вектор-столбца: a = 2; d = 1:

Для второго вектор-столбца: a = 7; d = 2:

Для третьего вектор-столбца: a = 10; d =-2:

4. Объединить эти вектор-столбцы в матрицу В (5 Ч 3).

5. Транспонировать матрицу В и объединить с матрицей А в матрицу М(6 Ч 5).

6. Из матрицы A убрать вторую строку.

7. У матрицы В обнулить третью строку и убрать две последние строки.

8. Создать матрицу Н(2 Ч 2) путем выделения первых двух строк и столбцов матрицы М.

9. Создать с помощью функции repmat матрицу, состоящую из 2 Ч 3 матриц Н.

10. Создать матрицы размерностью 3 Ч 3:

C - единиц:

F - равномерно распределенных случайных чисел:

E - нормально-распределенных случайных чисел:

11. Найти минимальный элемент в матрице равномерно-распределенных чисел размерностью 3 Ч 5, используя функцию «reshape».

1. Построить на отрезке [-1,-0.3]с шагом 0.005 графики огибающих функций.

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

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

Время - 0 4 7 9 10 11 12 13 13.5 14 14.5 15 16 17 18 20 22.

Температура 10 мая - 14 15 14 16 18 17 20 22 24 28 25 20 16 13 13 14 13. Температура 11 мая - 12 13 13 14 16 18 20 20 25 25 25 20 16 12 12 11 10.

Оформить графики заголовком "All temperature", по оси «Х» подписать "Time"; по оси «У» `Temperature"; в легенде - "10 may", "11 may" и разместить ее в нижнем левом углу.

3.Построить 3-хмерные графики функции:

z (x ,y ) = 4 sin(2рx ) cos(5рy )(1 - x 2 )y (1 ?y )

на прямоугольной области «x [?1], y » с шагом 0.05 всеми способами, рассмотренными в лабораторной работе, размещая их в отдельных областях на одном окне. Названия функций, применяемых для построения графиков, включить в заголовки этих графиков.

Размещено на Allbest.ru

...

ТАМБОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ


КАФЕДРА

«Информационные процессы и управление»

Методическая разработка

для проведения лабораторного занятия №1

по дисциплине "Теория принятия решений"

Наименование дисциплины

наименование темы

Тема: Исследование методов одномерной оптимизации

Цель работы:

Изучение методов одномерной оптимизации и способов их алгоритмической реализации в среде многофункциональной интегрированной системы автоматизации математических и научно-технических расчетов MATLAB 7.1;

Сравнительная оценка по объему вычислительных затрат методов: прямого сканирования, дихотомии, «золотого сечения» и метода Фибоначчи.

Литература:

1. Аоки М. Введение в методы оптимизации. М.: Наука, 1977. 444 с.

2. Батищев Д.И. Методы оптимального проектирования. М.: «Радио и связь», 1984. 248 с.

3. Бодров В.И., Лазарева Т.Я., Мартемьянов Ю.Ф. Математические методы принятия решений: Учеб. пособие. Тамбов: Изд-во Тамб. гос. тех. ун-та, 2004. 124 с.

4. Полак Э. Численные методы оптимизации. М.: Мир, 1997. 376 с.

5. Химмельблау Д. Прикладное нелинейное программирование. М.: Мир, 1975. 534 с.

6. Юдин Д.Б. Вычислительные методы теории принятия решений. М.: Наука, 1989. 316 с.

7. Кетков Ю. Л., Кетков А. Ю., Шульц М. М. MATLAB 7: программирование, численные методы. - СПб.: БХВ-Петербург, 2005. - 752 с

По проведению занятия

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

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

Основные методы моделирования соответствующих процессов;

Выполнять выбор и оценку влияния основных параметров на результат моделирования;

Анализировать и обобщать полученные результаты.

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

Занятие преследует цель показать связь теоретического материала с практикой и научить студентов применять теорию к решению практических задач.

Лабораторные работы построены таким образом, что они не предполагают знание студентами MATLAB. Каждая лабораторная работа начинается с краткого описания MATLAB, где студенту даются краткие сведения, необходимые для выполнения данной работы.

Подготовка к занятию

Накануне занятия студенты должны:

Ознакомится с руководством по данному лабораторному занятию;

Повторить лекционный материал и изучить предлагаемую литературу по данной теме;

Изучить порядок выполнения работы;

Подготовиться к ответу на контрольные вопросы.

Порядок проведения занятия

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

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

Отчетность по занятию

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

Краткая характеристика MATLAB

Система MATLAB (Matrix Laboratory) состоит из большого количества специальных программ, позволяющих решать широкий спектр математических и технических задач из разных областей науки. Главный ее элемент – это ядро системы MATLAB. В дополнение к нему система содержит около 80-ти различных комплектов команд (т.н. "Toolboxes"), соответствующие различным разделам математики, математической физики, проектирования, связи, экономики и т.д. В данной работе используются базовые средства программирования MATLAB: М-файлы – функции, встроенные функции, операторы, команды и т.п.

Рис.1. Рабочий стол системы

На рис.1 представлен рабочий стол системы. Строка меню (File, Edit, и т.д.) во многом схожа с аналогичной строкой редактора Microsoft Word. Расположенный ниже ряд иконок также выполняют те же операции, что и в редакторе Word (за исключением 3-х последних). Рабочий стол системы состоит их нескольких окон, состав которых можно менять с помощью команд меню Desktop. На рис.1 в верхнем окне слева приводится содержимое рабочего пространства Workspace , куда помещены описания всех констант и функций, введенных пользователем в процессе работы. В нижнем окне Command History приводится последовательность выполненных команд. Размеры окон регулируются перетаскиванием границы с помощью мыши. Главное окно рабочего стола – Command Window (командное окно). В командном окне после знака ">>" набирается командная строка, которая выполняется после нажатия клавиши "Enter ".

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

Формат числа задается меню File (рис.1) в разделе Preferences с помощью функции Numeric Format. Наиболее часто используемыми из 12-ти возможных являются форматы Short и Long – краткая и длинная форматы чисел.

Одними изосновных понятий MATLAB являются переменные и утверждения .

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

>>переменная=выражение

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

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

Таблица 1.1

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

>> x=log(1+5*((log10(100))^2-0.2*pi)/sqrt(1+2.71828^3))

После введения утверждения, т.е. нажатия клавиши Enter, ниже сразу выдается результат. Если результат нужно заблокировать, т.е. не надо выдавать на экран дисплея, то в конце утверждения нужно поставить знак « ; » (точку с запятой). Предыдущее выражение можно представить и в иной форме:

>> a=(log10(100))^2;

>> b=sqrt(1+2.71828^3);

>> x=log(1+5*(a-0.2*pi)/b)

MATLAB имеет несколько встроенных переменных: pi, eps, inf, i и j. Переменная pi обозначает число , eps =2 -52 =2.2204*10 -16 – погрешность для операций над числами с плавающей точкой, inf - бесконечность (), i и j – мнимую единицу (i = j = ).

Когда аргумент слева не указан, результат выражения присваивается общей переменной ans.

Операторы отношения (табл. 1.2) используются в условных операторах, операторах цикла и т.п. при реализации алгоритмов поиска с использованием М-функций (подпрограммы-функции записываются в файлах с расширением.m).

Таблица 1.2

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

Входной язык MATLAB насчитывает всего 9 операторов, использующих 14 служебных слов. Соответствующие синтаксические конструкции приведены в табл. 1.3.

Таблица 1.3

Формат оператора Пояснение
var = expr Оператор присваивания. Вычисляет значения выражения expr и заносит результаты вычислений в переменную var
ifусловие_1 операторы_1 end Условный оператор. Если справедливо условие_1, то выполняется группа операторы_1, если справедливо условие_2, то выполняется группа операторы_2, ... Если все указанные условия оказываются ложными, то выполняются операторы, расположенные между else и end
switchexpr casevail операторы_1 caseval2 операторы_2 . . . . . . . . . [ othervise операторы] end Переключатель по значению выражения expr. Если оно совпадает с величиной vail , то выполняется группа операторы_1, если оно совпадает с величиной val2, то выполняется группа операторы_2, ... Если значение expr не совпадает ни с одной из перечисленных величин, то выполняются операторы, расположенные между othervise и end
forvar=el:e3 операторы end Цикл типа арифметической прогрессии, в котором переменная var при каждом повторении тела цикла изменяется от начального значения el с шагом е2 до конечного значения еЗ
whileусловие операторы end Цикл с предусловием, повторяющийся до тех пор, пока истинно указанное условие
try операторы_1 catch операторы 2 end Попытка выполнить группу операторы_1. При условии, что в результате их выполнения возникает исключительная ситуация, управление передается группе операторы_2 (обработка сбойных ситуаций). Если ошибка не возникла, то группа операторы_2 не выполняется
break Досрочный выход из управляющих конструкций типа for , while, switch, try - catch
function f1 function f2 (x1,х2, . . .) function y=f3(xl,x2,...) function =f4(xl,x2,. . .) Заголовок функции (xl, х2, ... - входные параметры; y, yl, у2, ... -выходные параметры)
return Досрочный выход из тела функции

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

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

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

Несмотря на достаточно высокую популярность языка MATLAB , большинство разработчиков с трудом представляет, как его синтаксис, так и возможности. Всё дело в том, что язык напрямую связан с популярным программным продуктом, стоимость которого может достигать потрясающих воображение значений. Итак, главный вопрос: так ли хорош непосредственно язык Matlab? И может ли он быть полезен именно вам.

Использование

Начнём не со стандартного экскурса в историю и обсуждения плюсов и минусов языка, а с программной среды MATLAB/Simulink - единственного места, где герой этого текста может быть полезен. Просто представьте себе графический редактор, в котором вы сможете реализовать любую свою задумку, не имея за плечами нескольких лет опыта и соответствующего образования. И создав один раз схему взаимодействия инструментов, получить качественный скрипт для многократного использования.

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

Что касается цены, то в верхней границы почти нет, а вот нижняя находится в район 99$. Чтобы урвать столь мощный продукт за относительно небольшие деньги, вам необходимо быть студентом ВУЗа. И конечно же вы получите довольно ограниченный продукт.

Особенности языка

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

Недостатки:

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

    Узконаправленный. Нет никакой больше программной платформы, где бы MATLAB был полезен.

    Дороговизна ПО. Если вы не студент - либо готовьтесь опустошить карманы или перейти границу закона. И даже если студент - цена приличная.

    Невысокий спрос. Несмотря на большой интерес к MATLAB практически во всех сферах, фактически и легально его используют лишь немногие.

Достоинства:

    Язык легок для изучения, обладает простым и понятным синтаксисом.

    Огромные возможности. Но это скорее преимущество всего продукта в целом.

    Частые обновления, как правило заметные положительные преобразования происходят не реже пары раз в год.

    Программная среда позволяет преобразовывать его в “быстрый” код на С, С++.

Целевая аудитория

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

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

Литература

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

А у вас есть опыт работы с MATLAB? И какой?

Для тех, кто хочет стать программистом - .

Обзор возможностей

MatLab от англ. Matrix Laboratory - одновременно и пакет прикладных программ для решения задач инженерно-технических вычислений, и одноимённыйязык программирования, используемый в этом пакете.

MаtLab адаптирован для использования на большинстве современных операционных систем, включая Linux, Mac OS, Solaris и Microsoft Windows.

MATLAB как язык программирования был разработан Кливом Моулером (англ. Cleve Moler) в конце 1970-х годов. Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Позднее Моулер в сотрудничестве с Дж. Литтлом и С. Бангертом переписали MATLAB на C и основали в 1984 компаниюThe MathWorks для дальнейшего развития. Первоначально MATLAB предназначался для проектирования систем управления, но быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался и в образовании, в частности, для преподавания линейной алгебры и численных методов.

Современный MatLab - это интерактивная система, в которой основным элементом данных является массив. Это позволяет программно реализовывать численные методы, в которых интенсивно используются действия над матрицами и векторами, в несколько раз быстрее, чем при написании аналогичных программ на «скалярных» языках программирования подобных С, C++, Fortran и проч.

Важным преимуществом MatLab является открытость кода функций, что даёт возможность опытным пользователям изменять код, совершенствуя его или адаптируя под свои задачи. Как язык программирования MatLab сочетает в себе простоту Fortran и гибкость С, хотя с формальной точки зрения MatLab является интерпретатором. Следует отметить, что API MatLab реализует связь с программами, написанными на С и Fortran, что позволяет вызывать функции MatLab из С\Fortran кода и наоборот.

MatLab обладает широкими возможностями визуализации 2-х и 3-хмерных данных. Графические функции высокого уровня и графический интерфейс позволяют сократить до минимума усилия пользователей, при том обеспечивая качественное изображение. Имеется и доступ к низкоуровневым функциям для «продвинутых» пользователей, что ещё больше расширяет графические возможности системы.



Статьи по теме: