ТАМБОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА
«Информационные процессы и управление»
Методическая разработка
для проведения лабораторного занятия №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 с
I. Организационно-методические рекомендации
По проведению занятия
Лабораторные занятия по дисциплине "Теория принятия решений" проводятся с целью углубления и закрепления теоретических знаний, полученных студентами на различных видах занятий и в процессе самостоятельного изучения учебного материала, приобретения ими навыков практической реализации математических методов принятия решений. По результатам лабораторных занятий студенты должны
знать:
- теоретический материал, на основе которого осуществлялось моделирование, а также суть формализованных в программах физических процессов;
- основные методы моделирования соответствующих процессов;
уметь:
- выполнять выбор и оценку влияния основных параметров на результат моделирования;
- анализировать и обобщать полученные результаты.
Выполнение лабораторной работы включает в себя три этапа: предварительную подготовку к лабораторному занятию, непосредственно занятие, отчетность по лабораторному занятию.
Занятие преследует цель показать связь теоретического материала с практикой и научить студентов применять теорию к решению практических задач.
Лабораторные работы построены таким образом, что они не предполагают знание студентами MATLAB. Каждая лабораторная работа начинается с краткого описания MATLAB, где студенту даются краткие сведения, необходимые для выполнения данной работы.
Подготовка к занятию
Накануне занятия студенты должны:
- ознакомится с руководством по данному лабораторному занятию;
- повторить лекционный материал и изучить предлагаемую литературу по данной теме;
- изучить порядок выполнения работы;
- подготовиться к ответу на контрольные вопросы.
Порядок проведения занятия
В вводной части занятия осуществляется прием учебной группы, дается связь с ранее изученным материалом, объявляются тема, цель, порядок и особенности проведения данного занятия, проверяется подготовленность учебной группы к занятию.
Далее студенты приступают к проведению исследований в соответствии с методикой. По всем неясным вопросам, касающимся лабораторного занятия, студенты должны обращаться к преподавателю, инженерно-техническому составу или инструктору компьютерного класса. Результаты исследований и выводы оформляются в виде отчета по лабораторному занятию. Отчет является рабочим документом студента и представляется ведущему преподавателю во время защиты. Далее производится защита отчетов по лабораторному занятию, а по окончанию - подведение итогов занятия.
Отчетность по занятию
По лабораторному занятию студенты должны получить зачет. Принцип отчетности индивидуальный и может проводиться устно или письменно после выполнения основной части занятия. При выставлении зачетной оценки учитываются: наличие, грамотность и аккуратность оформления бланка-отчета, качество выполнения лабораторной работы, результаты ответов на контрольные вопросы. Студенты, не получившие зачет и отсутствующие на данном лабораторном занятии, отчитываются по нему в личное время.
II. Содержание
Краткая характеристика 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))
x =
1.5414
После введения утверждения, т.е. нажатия клавиши Enter, ниже сразу выдается результат. Если результат нужно заблокировать, т.е. не надо выдавать на экран дисплея, то в конце утверждения нужно поставить знак «; » (точку с запятой). Предыдущее выражение можно представить и в иной форме:
>> a=(log10(100))^2;
>> b=sqrt(1+2.71828^3);
>> x=log(1+5*(a-0.2*pi)/b)
x =
1.5414
MATLAB имеет несколько встроенных переменных: pi, eps, inf, i и j. Переменная pi обозначает число , eps =2-52 =2.2204*10-16– погрешность для операций над числами с плавающей точкой, inf - бесконечность (
), i и j – мнимую единицу (i = j =
).
Когда аргумент слева не указан, результат выражения присваивается общей переменной ans.
>>3+4*i
ans=
3.0000+4.0000i
>> eps
ans =
2.2204e-016
Операторы отношения (табл. 1.2) используются в условных операторах, операторах цикла и т.п. при реализации алгоритмов поиска с использованием М-функций (подпрограммы-функции записываются в файлах с расширением.m).
Таблица 1.2
Название | Оператор | Пример |
Равно | == | x==y |
Не равно | ~= | x~=y |
Менее чем | < | x<y |
Более чем | > | x>y |
Менее чем или равно | <= | x<=y |
Более чем или равно | >= | x>=y |
Итак, программами в системе MATLAB являются М-файлы текстового формата, содержащие запись программ в виде программных кодов.
Входной язык MATLAB насчитывает всего 9 операторов, использующих 14 служебных слов. Соответствующие синтаксические конструкции приведены в табл. 1.3.
Таблица 1.3
№ | Формат оператора | Пояснение |
var = expr | Оператор присваивания. Вычисляет значения выражения expr и заносит результаты вычислений в переменную var | |
ifусловие_1 операторы_1 [elseifусловие_2 операторы_2 elseifусловие_3 операторы_3 ......... else операторы ] end | Условный оператор. Если справедливо условие_1, то выполняется группа операторы_1, если справедливо условие_2, то выполняется группа операторы_2,... Если все указанные условия оказываются ложными, то выполняются операторы, расположенные между else и end | |
switchexpr casevail операторы_1 caseval2 операторы_2 ......... [ othervise операторы] end | Переключатель по значению выражения expr. Если оно совпадает с величиной vail, то выполняется группа операторы_1, если оно совпадает с величиной val2, то выполняется группа операторы_2,... Если значение expr не совпадает ни с одной из перечисленных величин, то выполняются операторы, расположенные между othervise и end | |
forvar=el:[e2:]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 [yl,y2,...]=f4(xl,x2,...) | Заголовок функции (xl, х2,... - входные параметры; y, yl, у2,... -выходные параметры) | |
return | Досрочный выход из тела функции |
При написании программ-функций требуется, чтобы имя М-файла, в котором запоминается программа, обязательно совпадало с именем функции.
Все переменные, появляющиеся в теле функции, за исключением глобальных переменных (объявленных оператором global), входных и выходных параметров, считаются локальными. Они образуют локальное рабочее пространство и доступны только в теле породившей их функции, и никакие другие функции воспользоваться ими не могут.
Язык MATLAB не содержит оператора goto. В связи с этим в текстах m-файлов отсутствуют метки операторов. Для идентификации строк, в которых возникают аварийные ситуации, используются внутренние номера, присваиваемые системой автоматически.
Комментарии в М-файлах начинаются с символа %. Они могут располагаться с начала строки или находиться правее любого оператора.
Пример функции вычисления факториала:
%Функция вычисляет факториал числа n
function y=factn(n)
k=l;
for i=l:n
k=k*i;
end
y=k;
Для вычисления 5! достаточно набрать в текущей строке Command Window команду:
»k=factn(5)
k =
»
Из тела функции можно вызывать встроенные функции MATLAB или функции, созданные пользователем, например, имеем функцию, рассчитывающую значения параболы вида y=(x-1)2+1, и нужно построить ее график:
%Парабола
function y=Q(x)
y=(x-1).^2+1;
return
Ее можно вызвать из другой функции вида:
%Определние min функции Q(x) методом прямого сканирования
function [xmin,Qmin]=pr_scan(a,b,del)
...............
x=-2:0.1:5;
plot(x,Q(x)),grid
При построении функции Q(x) MATLAB использует массивы x и Q, поэтому в определении функции Q использована операция почленного возведения в степень (.^).
MATLAB располагает редактором М-файлов (Editor), который вызывается командой File | New | M-File (Файл | Создать | М-файл) — рис.2.
После этого в окне редактора можно создавать свой файл, пользоваться средствами его отладки и запуска. Для запуска файла его надо записать на диск командой Save as в позиции File главного меню редактора. Для отладки М-функций используются позиции меню Debug (см. рис.2). Здесь можно устанавливать точки останова программы и, наведением курсора на соответствующий идентификатор, просматривать его значение.
Строки, набираемые в окне редактора, автоматически нумеруются. Это позволяет идентифицировать сообщения об ошибках, выдаваемых в командное окно.
MATLAB включает в себя огромное количество готовых функций из различных областей знаний. Их можно посмотреть, освежив в памяти применение различных операторов. Вот некоторые каталоги:
general, elfun, lang, datatypes, iofun, graphics, ops, strfun, timefun, matfun, demos, graphics, datafun, uitools, doc, punct, arith.
Вызвать справку по любому из каталогов (например для каталога элементарных функций elfun) можно командой:
>> help elfun
Рис.2. Отображение редактора М-файлов