Программный пакет матлаб. MATLAB: инструмент будущего или дорогая игрушка

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


КАФЕДРА

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

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

для проведения лабораторного занятия №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.

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

Это значит, что – один из мощнейших на сегодняшний день пакетов обработки данных. Название расшифровывается как Matrix Laboratory. Матричная Лаборатория, если по-русски. Возможности программы покрывают практически все области математики. Так, пользуясь матлабом, Вы сможете:

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

Помимо всего этого возможности MATLAB позволяют визуализировать данные вплоть до построения трехмерных графиков и создания анимированных роликов.

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

MATLAB как язык программирования


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


Основной рабочий файл программы – М-файл. Это бесконечный текстовый файл, и именно в нем происходит непосредственно программирование вычислений. Кстати, пусть Вас не пугает это слово – для того, чтобы работать в MATLAB, вовсе не нужно быть профессиональным программистом.

М-файлы делятся на

  • М-сценарии. М-сценарий – самый простой тип M-файла, у которого отсутствуют входные и выходные аргументы. Данный файл используется для автоматизации многократно повторяемых вычислений.
  • M-функции. М-функции – это М-файлы, допускающие наличие входных и выходных аргументов.

Для того чтобы наглядно показать, как происходит работа в MATLAB, приведем ниже пример создания функции в матлабе. Данная функция будет вычислять среднее значение вектора.
f unction y = average (x)
% AVERAGE Среднее значение элементов вектора.
% AVERAGE(X), где X - вектор. Вычисляет среднее значение элементов вектора.
% Если входной аргумент не является вектором, генерируется ошибка.
= size(x);
if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))
error("Входной массив должен быть вектором’)
end
y =sum(x)/length(x); % Собственно вычисление

Строка определения функции сообщает системе MATLAB, что файл является М-функцией, а также определяет список входных аргументов. Так, строка определения функции average имеет вид:
function y = average(x)
Где:

  1. function - ключевое слово, определяющее М-функцию;
  2. y - выходной аргумент;
  3. average - имя функции;
  4. x - входной аргумент.

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

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

Недостатки работы с MATLAB


Какие есть трудности в работе с MATLAB? Трудность, пожалуй, всего одна. Но фундаментальная. Чтобы полностью раскрыть возможности MATLAB и с легкостью решать встающие перед Вами задачи, придется попотеть и сначала разобраться с самим матлабом (как создать файл, как создать функцию и др.). А это не так просто, ибо мощность и широкие возможности требуют жертв.

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

И напоследок. Если Вы не знаете, почему все в Вашей жизни пошло так, а не иначе, спросите об этом у матлаба. Просто наберите в командной строке “why” (почему). Он ответит. Попробуйте!

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

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

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

Переменные в MATLAB:

Существует несколько типов переменных, вот самые основные из них:

  • logical (true – 1, false – 0)
  • char – символьная строка
  • numeric – массивы чисел с плавающей запятой
  • int : int8 (массив 8-разрядных целых чисел со знаком, 1 байт на одно число), также есть int16, int32, int64
  • single – массив чисел с плавающей запятой одинарной точности (4 байта на одно число)
  • double – массив чисел с плавающей запятой двойной точности (16 знаков)
  • structure – структурированный массив полей для хранения данных с именами

Имя переменной :
длина — до 63 символов;
не должно совпадать с именами функций и процедур;
должно начинаться с буквы;
может содержать буквы, цифры, знак подчёркивания;
различаются большие и маленькие буквы.

Задать переменную очень легко:

Еще например:

>> a=2;b=4;a+b ans = 6

Как видите, Matlab сам выводит результат операции с 2 переменными.

Массивы:

Начнем с задания одномерных массивов:

Задание в командной строке: x = или x =
Задание отдельных элементов: х(3) = 3
Длину массива можно найти командой: length (x)

Переходим к двумерным массивам:

Задание в командной строке: x =

ans = 1 2 3 4 5 6 7 8

Задание отдельных элементов: х(2,3) = 7
Обращение к отдельной р-ой строке массива: у = [р,:]
Обращение к к-ому столбцу массива: у = [:,к]
Команда В=А(:,:) обращается ко всем элементам матрицы, т.е. создаёт копию матрицы А.

Также следует знать о стандартных матрицах:

  • zeros(n,m) — матрица из нулей размера nxm
  • ones(n,m) – матрица из единиц размера nxm
  • rand(n,m) – матрица случайных чисел размера nxm
  • eye(n,m) – матрица из единиц на главной диагонали размера nxm

Операторы:

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

  • Арифметические операторы (арифметические выражения, вычисления)
  • Операторы отношения (сравнение аргументов)
  • Логические операторы (логические выражения)

Уровни приоритета арифметических операторов:

  1. Поэлементное транспонирование (.’), поэлементное возведение в степень (.*), сопряжение матрицы (‘), возведение матрицы в степень(^)
  2. Унарный плюс(+) и унарный минус (-)
  3. Поэлементное умножение массивов(.*), правое деление массивов (./) и левое (.\), умножение матриц (*), решение систем линейных уравнений операции (/) и (\)
  4. Сложение (+) и вычитание массивов (-)
  5. Оператор (:)

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

Операторы отношения:

  • > - больше - функция gt()
  • >= - больше или равно - функция ge()
  • == - равно - функция eg()
  • ~= - не равно - функция ne()

Их приоритет ниже арифметических, но выше логических операторов.

Логические операторы:

  • & - массив: 1- для каждого местоположения, в котором оба элемента имеют значение true (отличны от нуля) и 0 – для всех остальных элементов; функция and()
  • | - массив: 1- для каждого местоположения, в котором хотя бы один элемент имеет значение true (отличен от нуля) и 0 – для всех остальных элементов; функция or()
  • ~ - логическое отрицание для каждого элемента входного массива, А; функция not()
  • xor - массив: 1- для каждого местоположения, в котором только один элемент имеет значение true (отличен от нуля) и 0 – для всех остальных элементов
A = ; B = ; A&B = 01001 A|B = 11101 ~A = 10010 xor(A,B)=10100

Простые примеры:

Задание матрицы 3 на 4 рандомными числами:

>> rand (3,4) ans = 0.8147 0.9134 0.2785 0.9649 0.9058 0.6324 0.5469 0.1576 0.1270 0.0975 0.9575 0.9706 >> x = x = 1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 17 >> det (x) ans = 0 >> x = X1 = 1 2 4 5 6 7 >> x = X2 = 1 2 4 5 6 7 >> x1*x2 ans = 11 14 18 29 38 51 41 54 73

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

Введение

MATLAB (сокращение от англ. «Matrix Laboratory» ) - пакет прикладных программ для решения задач технических вычислений и одноимённый язык программирования, используемый в этом пакете. MATLAB ® используется более чем 1 000 000 инженерными и научными работниками, он работает на большинстве современных операционных систем.

MATLAB как язык программирования был разработан Кливом Моулером в конце 1970-х годов, когда он был деканом факультета компьютерных наук в Университете Нью-Мексико . Целью разработки служила задача дать студентам факультета возможность использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана . Вскоре новый язык распространился среди других университетов и был с большим интересом встречен учёными, работающими в области прикладной математики. До сих пор в Интернете можно найти версию 1982 года , написанную на Фортране, распространяемую с открытым исходным кодом . Инженер Джон Литтл (англ. John N . (Jack ) Little ) познакомился с этим языком во время визита Клива Моулера в Стэнфордский университет в 1983 году . Поняв, что новый язык обладает большим коммерческим потенциалом, он объединился с Кливом Моулером и Стивом Бангертом (англ. Steve Bangert ). Совместными усилиями они переписали MATLAB на C и основали в 1984 компанию The MathWorks для дальнейшего развития. Эти переписанные на С библиотеки долгое время были известны под именем JACKPAC. Первоначально MATLAB предназначался для проектирования систем управления (основная специальность Джона Литтла), но быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался и в образовании, в частности, для преподавания линейной алгебры и численных методов .

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

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

Основной особенностью языка MATLAB являются его широкие возможности по работе с матрицами, которые создатели языка выразили в лозунге «думай векторно»

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

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

    Многочленыиинтерполяция-корнимногочленов, операции над многочленами и ихдифференцирование, интерполяция иэкстраполяциякривыхи другие.

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

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

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

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

    Целочисленная арифметика - выполнение операций целочисленной арифметики в среде MATLAB.

1. Базовые сведения

1.1. Рабочая среда MatLab

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

Рабочая среда MatLab 6.х содержит следующие элементы:

    панель инструментов с кнопками и раскрывающимся списком;

    окно с вкладкамиLaunch Pad иWorkspace , из которого можно получить доступ к различным модулям ToolBox и к содержимому рабочей среды;

    окно с вкладками Command History иCurrent Directory , предназначенное для просмотра и повторного вызова ранее введенных команд, а также для установки текущего каталога;

    командное окно, в котором находится приглашение к вводу » и мигающий вертикальный курсор;

    строку состояния.

Если в рабочей среде MatLab 6.х отсутствуют некоторые окна, приведенные на рисунке, то следует в меню View выбрать соответствующие пункты: Command Window , Command History , Current Directory , Workspase , Launch Pad .

Команды следует набирать в командном окне. Символ », обозначающий приглашение к вводу командной строки, набирать не нужно. Для просмотра рабочей области удобно использовать полосы скроллинга или клавиши Home ,End , для перемещения влево или вправо, иPageUp ,PageDown для перемещения вверх или вниз. Если вдруг после перемещения по рабочей области командного окна пропала командная строка с мигающим курсором, просто нажмитеEnter .

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

1.2. Простейшие вычисления

Наберите в командной строке 1+2и нажмитеEnter . В результате в командном окне MatLab отображается следующее:

Рис. 2 Графическое представление метода главных компонент

Что сделала программа MatLab? Сначала она вычислила сумму 1+2, затем записала результат в специальную переменнуюansи вывела ее значение, равное3, в командное окно. Ниже ответа расположена командная строка с мигающим курсором, обозначающая, что MatLab готов к дальнейшим вычислениям. Можно набирать в командной строке новые выражения и находить их значения. Если требуется продолжить работу с предыдущим выражением, например, вычислить(1+2)/4.5, то проще всего воспользоваться уже имеющимся результатом, который хранится в переменнойans. Наберитеans/4.5(при вводе десятичных дробей используется точка) и нажмитеEnter , получается

Рис. 3 Графическое представление метода главных компонент

1.3. Эхо команд

Выполнение каждой команды в MatLab сопровождается эхом. В приведенном выше примере - это ответ ans = 0.6667. Часто эхо затрудняет восприятие работы программы и тогда его можно отключить. Для этого команда должна завершаться символом точка с запятой. Например

Рис. 4 Пример ввода функции ScoresPCA

1.4. Сохранение рабочей среды. Mat файлы

Самый простой способ сохранить все значения переменных - использовать в меню File пунктSave Workspase As . При этом появляется диалоговое окноSave Workspase Variables , в котором следует указать каталог и имя файла. По умолчанию предлагается сохранить файл в подкаталогеworkосновного каталога MatLab. Программа сохранит результаты работы в файле с расширениемmat. Теперь можно закрыть MatLab. В следующем сеансе работы для восстановления значений переменных следует открыть этот сохраненный файл при помощи подпунктаOpen менюFile . Теперь все переменные, определенные в прошлом сеансе, опять стали доступными. Их можно использовать во вновь вводимых командах.

Пакет MatLab был создан компанией Math Works более десяти лет назад. Работа сотен ученых и программистов направлена на постоянное расширение его возможностей и совершенствование заложенных алгоритмов. В настоящее время MatLab является мощным и универсальным средством решения задач, возникающих в различных областях человеческой деятельности.
Рабочая среда MatLab 6.x,MatLab 7 имеет удобный интерфейс для доступа ко многим вспомогательным элементам MatLab.
При запуске MatLab 6.x на экране появляется рабочая среда, изображенная на рис. 1.

Рис. 1. Рабочая среда пакета MatLab 6.x

Данный урок изучает основы работы (введение) в matlab.

Рабочая среда содержит следующие элементы:

Меню;
- панель инструментов с кнопками и раскрывающимся списком;
- окно с вкладками Launch Pad и Workspace, из которого можно получить простой доступ к различным модулям ТооlBох и к содержимому рабочей среды;
- окно с вкладками Command History и Current Directory, предназначенное для просмотра и повторного вызова ранее введенных команд, а также для установки текущего каталога;
- командное окно Command Window с командной строкой, в которой находится мигающий курсор;
- строку состояния.

Все команды, описанные в этой лабораторной работе, следует набирать в командной строке. Сам символ », обозначающий приглашение командной строки, приведенный в примерах, набирать не нужно. Для просмотра рабочей области удобно использовать полосы скроллинга или клавиши , для перемещения влево или вправо и , Для перемещения вверх или вниз. Про использование клавиш , , , будет сказано дополнительно. Если вдруг после перемещения по рабочей области командного окна пропала командная строка с мигающим курсором, просто нажмите .
Важно запомнить, что набор любой команды или выражения должен заканчиваться нажатием на клавишу для того, чтобы программа MatLab выполнила эту команду или вычислила выражение.

Замечание 1

Если в рабочей среде MatLab 6.x отсутствуют некоторые описанные окна, то следует в меню View выбрать соответствующие пункты: Command Window, Command History, Current Directory, Workspace, Launch Pad.

2.1. Арифметические вычисления

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

2.1.1. Простейшие вычисления

Наберите в командной строке 1+2 и нажмите . В результате в командном окне MatLab отображается следующее:

» 1+2
ans =
3
» |

Что сделала программа MatLab? Сначала она вычислила сумму 1+2, затем записала результат в специальную переменную ans и вывела ее значение, равное 3, в командное окно. Ниже ответа расположена командная строка с мигающим курсором, обозначающая, что MatLab готова к дальнейшим вычислениям. Можно набирать в командной строке новые выражения и находить их значения.

Если требуется продолжить работу с предыдущим выражением, например, вычислить (1+2)/4.5, то проще всего воспользоваться уже имеющимся результатом, который хранится в переменной ans. Наберите в командной строке ans/4.5 (при вводе десятичных дробей используется точка) и нажмите , получается:

» ans/4.5
ans =
0.6667
» |

Замечание 2

Вид, в котором выводится результаты вычислений, зависит от формата вывода, установленного в MatLab. Далее объяснено, как задать основные форматы вывода.

2.1.2. Форматы вывода результата вычислений

Требуемый формат вывода результата определяется пользователем из меню MatLab. Выберите в меню File пункт Preferences. На экране появится диалоговое окно Preferences. Для установки формата вывода следует убедиться, что в списке левой панели выбран пункт Command Window . Задание формата производится из раскрывающегося списка Numeric format панели Text display.
Разберем пока только наиболее часто используемые форматы. Выберите short в раскрывающемся списке Numeric format в MatLab 6.x. Закройте диалоговое окно, нажав кнопку ОК. Сейчас установлен короткий формат с плавающей точкой short для вывода результатов вычислений, при котором на экране отображаются только четыре цифры после десятичной точки. Наберите в командной строке 100/3 и нажмите .
Результат выводится в формате short:

» 100/3
ans =
33.3333

Этот формат вывода сохранится для всех последующих вычислений, если только не будет установлен другой формат. Заметьте, что в MatLab возможна ситуация, когда при отображении слишком большого или малого числа результат не укладывается в формат short. Вычислите 100000/3, результат выводится в экспоненциальной форме:

» 100000/3
ans =
З.ЗЗЗЗе+004

То же самое произойдет и при нахождении 1/3000:

» 1/3000
ans =
З.ЗЗЗЗе-004

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

В предыдущем примере пакет MatLab вывел результат вычислений в экспоненциальной форме. Запись 3.3333е-004 обозначает 3.3333*10-4 или 0.00033333. Аналогично можно набирать числа в выражениях. Например, проще набрать 10е9 или l.0e10, чем 1000000000, а результат будет тот же самый. Пробел между цифрами и символом е при вводе не допускается, т.к. это приведет к сообщению об ошибке:

» 10 е9
??? 10 е9

Если требуется получить результат вычислений более точно, то следует выбрать в раскрывающемся списке long . Результат будет отображаться в длинном формате с плавающей точкой long с четырнадцатью цифрами после десятичной точки. Форматы short e и long e предназначены для вывода результата в экспоненциальной форме с четырьмя и пятнадцатью цифрами после десятичной точки соответственно. Информацию о форматах можно получить, набрав в командной строке команду help с аргументом format:

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

Задавать формат вывода можно непосредственно из командной строки при помощи команды format. Например, для установки длинного с плавающей точкой формата вывода результатов вычислений следует ввести команду format long e в командной строке:

» format long e
» 1.25/3.11
ans =
4.019292604501608е-001

Обратите внимание, что команда help format выводит на экран название форматов прописными буквами. Однако команда, которую надо ввести, состоит из строчных букв. К этой особенности встроенной справки help надо привыкнуть. MatLab различает прописные и строчные буквы. Попытка набора команды прописными буквами приведет к ошибке:

» FORMAT LONG E
??? FORMAT LONG.
Missing operator, comma, or semi-colon.

Для более удобного восприятия результата MatLab выводит результат вычислений через строку после вычисляемого выражения. Однако иногда бывает удобно разместить больше строк на экране, для чего следует выбрать переключатель compact (File, Numeric display) из раскрывающегося списка. Добавление пустых строк обеспечивается выбором loose из раскрывающегося списка Numeric display .

Замечание 3

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

2.2. Использование элементарных функций

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

Введите в командной строке это выражение в соответствии с правилами MatLab и нажмите :

» ехр(-2.5)*lоg(11.3)^0.3-sqrt((sin(2.45*pi)+cos(3.78*pi)}/tan(3.3))

Ответ выводится в командное окно:

ans =
-3.2105

При вводе выражения использованы встроенные функции MatLab для вычисления экспоненты, натурального логарифма, квадратного корня и тригонометрических функций. Какие встроенные элементарные функции можно использовать и как их вызывать? Наберите в командной строке команду help eifun, при этом в командное окно выводится список всех встроенных элементарных функций с их кратким описанием. Аргументы функций заключаются в круглые скобки, имена функций набираются строчными буквами. Для ввода числа л достаточно набрать pi в командной строке.

Арифметические операции в MatLab выполняются в обычном порядке, свойственном большинству языков программирования:

Возведение в степень ^;
- умножение и деление *, /;
- сложение и вычитание +, -.

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

то необязательно его снова набирать в командной строке. Можно воспользоваться тем, что MatLab запоминает все вводимые команды. Для повторного занесения их в командную строку служат клавиши , . Вычислите данное выражение, проделав следующие шаги.

1. Нажмите клавишу <­>, при этом в командной строке появится введенное ранее выражение.
2. Внесите в него необходимые изменения, заменив знак минус на плюс и квадратный корень на возведение в квадрат (для перемещения по строке с выражением служат клавиши , , , ).
3. Вычислите измененное выражение, нажав .

Получается

»ехр(-2.5)*log(11.3)^0.3+((sin(2.45*pi)+cos(3.78*pi))/tan(3.3))^2
ans =
121.2446

Если необходимо получить более точный результат, то следует выполнить команду format long e, затем нажимать клавишу <­> до тех пор, пока в командной строке не появится требуемое выражения, и вычислить его, нажав .

» format long e
» exp(-2.5)*log(11.3)^0.3+((sin.(2.45*pi)+cos(3.78*pi))/tan(3.3))^2
ans =
1.212446016556763e+002

Вывести результат последнего найденного выражения в другом формате можно без повторного вычисления. Следует изменить формат командой short, а затем посмотреть значение переменной ans, набрав ее в командной строке и нажав :

» format short
» ans
ans =
121.2446

В рабочей среде MatLab 6.x для вызова ранее введенных команд имеется удобное средство - окно Command History с историей команд. История команд содержит время и дату каждого сеанса работы с MatLab 6.x. Для активизации окна Command History необходимо выбрать вкладку с одноименным названием. Текущая команда в окне изображена на синем фоне. Если щелкнуть на какой-либо команде в окне левой кнопкой мыши, то данная команда становится текущей. Для ее выполнения в MatLab надо применить двойной щелчок мыши или выбрать строку с командой при помощи клавиш , и нажать клавишу . Лишнюю команду можно убрать из окна. Для этого ее надо сделать текущей и удалить при помощи клавиши . Можно выделить несколько идущих подряд команд при помощи комбинации клавиш +, + и выполнить их при помощи или удалить клавишей . Выделение последовательно идущих команд можно производить левой кнопкой мыши с одновременным удерживанием клавиши . Если команды не идут одна за другой, то для их выделения следует использовать левую кнопку мыши с удерживанием клавиши .

При щелчке правой кнопкой мыши по области окна Command History появляется всплывающее меню. Выбор пункта Сору приводит к копированию команды в буфер Windows. При помощи Evaluate Selection можно выполнить отмеченную группу команд. Для удаления текущей команды предназначен пункт Delete Selection. Д ля удаления всех команд до текущей - Delete to Selection, для удаления всех команд - Delete Entire History.

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

» 1/0
Warning: Divide by zero.
ans =
Inf

При делении нуля на нуль получается NaN (не число) и также выдается предупреждение:

» 0/0
Warning: Divide by zero.
ans =
NaN

При вычислении, например sqrt(-1), никакой ошибки или предупреждения не возникает. MatLab автоматически переходит в область комплексных чисел:

»sqrt(-1.0)
ans =
0 + l.0000i

Как узнать, какие встроенные элементарные функции можно использовать и как их вызывать? Наберите в командной строке команду help eifun , при этом в командное окно выводится список всех встроенных элементарных функций с их кратким описанием.