В общем виде обращение к функции

ОГЛАВЛЕНИЕ

Предисловие…………………………………………………….4

Глава 1. Краткие основы работы в MATLAB……………..5

1.1. Интерфейс. ………………………………………………………….5

1.2. Редактирование М-файлов ……………………………………8

1.3. Построение графиков……………………………………………12

1.4. Построение поверхности………………………………………13

1.5. Операции с матрицами. ……………………………………….14

1.6. Нелинейные уравнения и системы…………………………...15

1.7. Интегрирование…………………………………………………...16

Решение обыкновенных дифференциальных

уравнений и систем………………………………………18

1.9. Поиск экстремума функции одной переменной…………...21

1.10. Поиск экстремума функции нескольких переменной…..21

Глава 2. Одномерная оптимизация с

применением пакета MATLAB …………………..23

2.1. Метод сканирования……………………………………………...23

2.2. Метод чисел Фибоначчи…………………………………………29

2.3. Метод локализации экстремума……………………………...35

2.4. Метод обратного половинного шага………………………..43

2.5. Метод золотого сечения………………………………………..51

Глава 3. Двухмерная оптимизация с

применением пакета MATLAB……………………57

3.1. Метод сканирования……………………………………………...57

3.2. Метод Гаусса-Зейделя …………………………………………..61

3.3. Метод пробных движений ……………………………………..67

Предисловие

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

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

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

Глава 1. Краткие основы работы в MATLAB

Интерфейс.

В общем виде обращение к функции - student2.ru
После запуска МАТЛАБ на экране появляется основное окно приложения (рис.1.1.). Оно содержит меню, панель инструментов и рабочую область (Commаnd Window).

Рис. 1.1. Интерфейс. Основное окно.

В рабочей области находится знак >> после которого расположен курсор. Эту строку называют командной строкой. В нее с клавиатуры вводятся команды. Нажатие Enter заставит выполнить команду и вывести результат в том же окне. (см. рис. 1.1.)

Так как текст в окне по мере работы смещается (уступает место новым командам и выводимым данным) то для просмотра выехавшей за окно части текста используют полосы прокрутки или клавиши Page Up, Page Down.

Клавиши ↑ и ↓ позволяют вернуть в командную строку ранее введенные команды или другую входную информацию (она вся обязательно автоматически хранится и всегда доступна). Кнопка ↑ помещает в командную строку предыдущую команду, а если еще раз ее нажать то еще предыдущую и так далее. Кнопка ↓ выводит команды (ранее набранные) в обратном порядке.

Видимая часть информации (то есть то что поместилось в окне) называется зоной просмотра, а командная строка зоной редактирования.

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

Если команда заканчивается ; то результат ее выполнения не отображается в командной строке. Иначе, то есть если строка не заканчивается на ; то результат сразу же после нажатия на Enter выводится в окне ниже этой команды. (см. выше на рис. 1.1)

Значения всех переменных, вычисленные в течение работы, сохраняются в специальной области памяти, называемой Workspace. (см. выше на рис. 1.1)

Определения всех переменных и функций и их последние перед закрытием программы значения можно сохранить на диск в файл с расширением .mat но само содержание Command Window при выключении МАТЛАБа не сохраняется никаким способом.

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

Для строк символов необходимо текст помещать в ‘одинарные кавычки’. Для сложения строк символов используется операция strcat, как показано на рис.1.1.

В главном меню (см. рис.1.1) следует обратить внимание на команду Desktop (настройка среды МАТЛАБ). При нажатии раскроется список, содержащий Desktop Layout который предлагает на выбор:

· Default устанавливает настройку принятую по умолчанию, то есть открывает окна Command Window, Workspace, Command History, Current Directory.

· Command Window Only открывает только окно Command Window.

· History and Command Window открывает соответствующие окна.

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

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

Как выгладит содержимое М-файла, см. рис.1.3.

Числовые переменные могут быть с плавающей точкой (тогда указывается порядок, например 6.4713e+003) или с фиксированной точкой (например 81.5000).

Текстовые комментарии начинаются со знака % (см.рис.1.2).

Все функции разделяются на встроенные и определенные пользователем. Встроенные, например, это y=sin(x); y=atan(x); y=exp(x); y=log(x) натуральный логарифм, а вот y=log10(x) десятичный логарифм, y=fix(x) округление до ближайшего целого в сторону нуля, y=floor(x) округление до ближайшего целого в сторону отрицательной бесконечности, y=ceil(x) округление до ближайшего целого в сторону положительной бесконечности, y=round(x) обычное округление

Массив задается так: ИМЯ_МАССИВА = НАИМЕНЬШ_ЭЛ-Т_МАСС : ШАГ_ИЗМЕН_ЭЛ-ТА_МАСС : НАИБОЛЬШ_ЭЛ-Т_МАСС ; (см. рис.1.2).

Обращение к элементу массива y=x_mas(2); где в скобках указывается порядковый номер (индекс) элемента массива (см. рис.1.2).

Редактирование М-файлов

«File»—«New»--«M-file» позволяет открыть окно Editor то есть Редактор М-файлов. В этом окне напечатать текст программы, которая должна быть выполнена, когда имя этого М-файла будет указано в командной строке в Command Window. Иначе можно запустить командой “Debug”—“Run” в меню редактора.

В общем виде обращение к функции - student2.ru
Рис. 1.2. Математические операции.

В общем виде обращение к функции - student2.ru
рис. 1.3. описание функции в М-файле

В общем виде обращение к функции - student2.ru
Сохранение File—Save при этом откроется окно в котором надо будет указать где и под каким именем хо тите сохранить этот М-файл. Имя сохраняемого файла должно совпадать с именем описанной в нем функции

Рис. 1.4. Сохранение М-файла

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

Если какие-то М-файлы уже созданы ранее то их можно посмотреть командой File—Open и выбрать тот который нужен.

При написании программы можно писать комментарии начиная их со знака %. (см.рис.1.3).

Function y=f(x)

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

%значение, или от вектора аргумента и возвращает вектор, каждый %элемент которого вычислен от соответствующего элемента вектора %аргумента

y=(x+2).*(x-4); %поэтому перед знаком *умножения стоит .точка .*

%если не ставить ;точку с запятой в конце строки то произойдет вывод на %экран

end

символьная переменная в М-файле:

str=’P I Pupkin’

ее символьное содержимое заключается в кавычки.

Ввод:

xleft=input('введите левую границу интервала поиска ');

Вывод:

disp('ВВОД ИСХОДНЫХ ДАННЫХ края диапазона поиска, точность по аргументу ИЛИ по функции ');

disp(string);

В общем виде обращение к функции

[n1, n2, …, n10]=funName(v1, v2, …, v4)

Где в квадратных скобках необязательный список возвращаемых значений (то есть имена переменных которым будут присвоены соответствующие значения). Если их не указывать то МАТЛАБ сам создаст какие-то переменные и присвоит им эти значения.

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

В М-файле описание функции начинается с слова function как в примере

function [x,y,xleft1,xright1,nn]=ZolS1()

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

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

[x,y,xleft1,xright1,nn]=ZolS1();

Построение графиков

% подготовка к построению графика

h=0.1;

x1=xleft:h:xright; % создан массив точек для графика

y1=f(x1); % создан массив точек для графика

plot(x1,y1,’k-‘);

grid on; % покрыт сеткой

title('y=(x+2)(x-4)'); % подпись наверху

xlabel('X'); % подпись к оси

ylabel('Y');

text(x,y,’\leftarrow Minimum’);%подпись Minimum к стрелке влево,

%которая будет указывать на точку с координатами x,y.

zeroMas=x1*0;

hold on; %обеспечивает построение нового графика в том же окне

plot(masx,masy,’r.’); % график построен

legend(‘plot with minimal step’,’plot with your step’,0);

hold on;

plot(x1,zeroMas,’k-‘,zeroMas,y1,’k-‘); % построены оси

результат этих действий смотри ниже на рис.1.5.

В результате обращения к функции plot(x,y) будет создано окно с именем Figure 1 (так обычно по умолчанию) в котором будет построен график функции У от Х если заранее заданы массив Х и соответствующий ему массив значений функции У.

Тип линии указывается в кавычках plot(x1,y1,'k-');

‘k-‘ Черная сплошная линия.

‘r.’ Круглые красные маркеры без линии.

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

В общем виде обращение к функции - student2.ru

Рис. 1.5. Пример построения графика

Построение поверхности

Обеспечивается следующим текстом программы (см. рис. 1.6)

% подготовка к построению графика

masx=xleft:hx:xright;

masy=yleft:hy:yright;

masz=fz_xy2(masx,masy); построены массивы координат для точек

%графика

mesh(masx,masy,masz); %построена сеточная поверхность

grid on;

title(‘z=-sqrt(256-x.^2-y.^2)’);

xlabel(‘X’);

ylabel(‘Y’);

zlabel(‘Z’);

text(x,y,z,’\leftarrow Minimum’);

legend(‘z(i,j)=-sqrt(256-x(i)*x(i)-y(j)*y(j))’,0);

где команда mesh(masx,masy,masz); строит сеточную поверхность .

В общем виде обращение к функции - student2.ru

Рис. 1.6. Пример построения поверхности

Операции с матрицами.

Пусть даны две матрицы. (Если не даны, зададим их. Пусть

A=[1 2 3; 5 67 89; 34 21 5];

B=[3 4 5; 54 32 12; 6 7 8];

Тогда имеем две матрицы 3х3 элемента).

Транспонировать матрицу можно так

A_transp=A’; где знак ’ обеспечивает транспонирование матрицы А.

Умножение матриц выполняется так

C_res_mult=A*B; где C_res_mult результат умножения матриц.

Обратная матрица находится так

А_obr=A^(-1);

Или так: A_obr=inv(A);

Поэлементное сложение матриц C=A+B;

Определитель D=det(A);

Решение системы линейных уравнений, где А матрица системы, столбец b столбец свободных членов, столбец х столбец неизвестных:

x=linsolve(A,b);

Наши рекомендации