
Методичка - ТАУ и МАТЛАБ
.pdf
- 17 -
4 оконца навигатора |
|
Оконце просмотра |
|
Добавление выделенного до- |
Справки |
|
выделенного доку- |
|
кумента в форточку Избранное |
|
|
|
|
|
Оконце |
Назначение |
Содержа- |
Содержание справочной |
ние |
документации по средсвам |
(Contents) |
Матлаба |
Термины |
Алфавитный перечень |
(Indeks) |
терминов (статьи для них – |
|
в форточке просмотра) – |
|
блочный вывод по заглав- |
|
ной букве термина. |
Поиск |
Поиск справочного мате- |
(Serch) |
риала по 4 типам заданий. |
Избранное |
Создание и хранение Под- |
(Favorites) |
борки выбранных справоч- |
|
ных материалов. |
Переход к предыдущему или к следующему Документам
Переход к предыдущей или к следующей Страницам
1.1.2. Командное окно
Окно просмотра |
|
Техописание: |
|
Просмотр |
Симулинк - библиотеки |
|
Help |
|
папок |
|
|
|
|
|
|
|
|
Назначение команд меню “Файл” |
|
|
1 |
Открыть: редактор/отладчик для М-файла, графическое |
|
|
|
окно для рисунка, окно новой Симулинк – модели, окно |
1 |
|
|
|
|
|
создания графического интерфейса. |
|
2 |
|
|
|
|
2 |
Открыть любой файл Матлаба. |
|
3 |
|
||
|
3 |
Закрыть командное окно. |
|
|
|
4 |
Импорт данных. |
4 |
|
||
|
5 |
Вызов окна сохранения МАТ-файла Рабочей области |
|
|
|
||
5 |
|
|
|
|
6 |
Вызов окна сохранения и добавления в каталог маршру- |
|
|
|
|
та доступа к М-файлу. |
6 |
|
|
|
|
7 |
Установка системных свойств Матлаба. |
|
|
|
||
|
|
||
7 |
|
8 |
Установка настроек вывода на печать |
|
|
9 |
Печать выделенного фрагмента |
8 |
|
||
|
10 |
Вызов разрабатываемых файлов (любого или всех вме- |
|
|
|
||
|
|
||
9 |
|
|
сте) |
|
|
11 |
Выход из Матлаба |
10 |
|
||
|
|
|
|
|
Рис. 1.3. Командное окно и меню “Файл” |
||
11 |

- 18 -
Оно появляется на экране (рис.1.3) при вызове пакета с приглашением обратиться к справочной информации Mathlab help. Окно обеспечивает:
•вызов всех других окон Матлаба,
•пользовательскую настройку общих свойств Матлаба через меню «Файл – Свойства»,
•суперкалькуляционные вычисления в поле окна посредством операторов и функций Матлаба,
•создание рабочих областей сеанса работы и его текстовый протокол («дневник сессии»).
Внимание! Вычисления в окне носят односеансовый характер и не запоминаются: в окне не предусмотрено запоминание файла с вычислениями!
В окне можно только запомнить: имена используемых переменных, их типы и массивы значений (в виде рабочих областей) и текстовый дневник сеанса (именуемого в Матлабе сессией).
Чтобы получить возможность запоминания вычислений с результатами и их многократного вызова, необходимо вычисления копировать в специально создаваемый для этого М - файл в окне редактора – отладчика М –файлов.
Типы данных в Матлабе – рис.1.4.Применяемые форматы числовых данных – на рис 1.5.
МАССИВ (ARRAY)
|
символьный |
|
ЧИСЛОВОЙ |
|
ячеек |
|
структур |
|
|
|
функциональных |
||
|
( char) |
|
( NUMERIC ) |
|
( cell ) |
|
( structure ) |
|
|
|
|
манипуляторов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
( function handle) |
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
пользовательских классов |
ява - классов |
||||||
|
|
|
|
|
|
|
( user class ) |
|
( java class ) |
|
|||
целых чисел со знаком и |
|
чисел одинарной точности |
|
чисел двойной точности |
|||||||||
без знака 8-, 16- и 32-битовых |
|
|
|
|
( single ) |
|
( double ) |
( int8, uint8 / int16, uint16 / int32, uint32)
двумерных разреженных матриц двойной точности
( sparse )
Рис.1.4. Типы данных ( массивов) в Матлабе 6
Свойства Матлаба как вычислительной системы установлены по умолчанию, но их можно изменить для окон Рабочего пространства через панель «Preferences», вызываемую через меню «Файл – Свойства». Панель состоит из двух областей (рис.1.4): левой белого цвета с деревом настраиваемых объектов Матлаба и правой серой с окнами ввода значений настроечных параметров. Вид правой области меняется в зависимости от выделенного для настройки объекта (на рис.1.4 выделенный объект – Командное окно).
Форматы устанавливаемых чисел: пример
[1]
|
1 |
|
|
|
|
1 |
Короткий (по умолчанию) с фикси- |
||||
2 |
|
|
рованной точкой, 5 знаков: 0.3894 (для |
||
|
|
|
|
sin 0.4) |
|
3 |
|
|
|||
|
2 |
Длинный с фиксированной точкой, 15 |
|||
|
|
|
|||
|
4 |
|
|
знаков: 0.38941834230865 |
|
|
5 |
|
3 |
Короткий экспоненциальный, 5 зна- |
|
|
|
ков мантиссы, 2 - порядка: 3.1616е+00 |
|||
|
6 |
|
|
||
|
|
(для числа π) |
|||
|
7 |
|
|
|
|
|
4 |
Длинный экспоненциальный, 15 зна- |
|||
8 |
|
|
ков мантиссы, 3 - порядка: |
||
|
|
3.16159265358979е+000 |
|||
|
9 |
|
|
||
|
|
5 |
Короткий с фиксированной точкой, 6 |
||
|
|
||||
|
10 |
|
|
знаков: 0.38942 |
|
|
11 |
|
6 |
Длинный с фиксированной точкой, 16 |
|
12 |
|
|
знаков: 0.389418342308651 |
||
|
7 |
Шестнадцатиричное число: |
|||
|
|
|
|||
|
|
|
|
400921fb54442d18 |
|
|
|
|
8 |
Комерческий: 3.14 (рубли. копейки) |
|
|
|
|
9 |
Плюс : + для положительного числа, - |
|
|
|
|
|
для отрицательного, пробел – для нуля |
|
|
|
|
10 |
368/945 (для sin 0.4), 355/113 (для числа |
|
Рис.1.5. Панель Свойства с вводом настро- |
|
π), отношение двух наименьших целых |
|||
|
чисел |
||||
ек для Командного окна. |
11 |
Отсутствие пробела между строками |
|||
12 |
Наличие пробела между строками |
||||
|
|
|

- 18 -
Диапазон используемых в Матлабе чисел чисел: 10 –308 …10 +308 . Специальные числа:
-inf – бесконечность,
-Pi – число π,
-NaN – для результата, не представимого в виде числа, например, 0/0 или 0 . inf.
1.1.3. Окно Редактора – Отладчика М-файлов (рис.1.6)
Номера строк |
|
Имя М-файла; кнопка |
М-файла |
|
вывода файла в окно |
|
|
|
Рис.1.6. Окно Редактора – Отладчика
Редактор/отладчик предназначен для создания и отладки М-файлов. Он поддерживает следующие операции от кнопок окна (Кнопка окна – слева направо на рис.1.6 ):
•создание нового М-файла (Новый),
•открытие существующего М-файла (Открыть) ,
•сохранение М-файла на диске (Сохранить),
•удаление фрагмента (Вырезать),
•копирование фрагмента (Копировать),
•вставка фрагмента (Вставка),
•печать М-файла (Печать),
•текущая помощь (О программе),
•установить/удалить точку прерывания (при отладке М-файла) – (Установить/Снять контрольную точ-
ку),
•удалить все точки прерывания (при завершении отладки М-файла) – (Снять все контрольные точки),
•пошаговую трассировку М-файла с заходом в вызываемые М-файлы (Заходить в блоки),
•пошаговую трассировку М-файла без захода в вызываемые М-файлы (Пошаговое выполнение),
•продолжить выполнение программы без трассировки (Продолжить),
•завершить отладку (Окончить отладку).
При написании М-файла в окне осуществляется синтаксический контроль его программы с цветовым выделением синтаксических объектов:
-ключевые слова языка программирования (function, for, end и т.п.) — синий цвет;
-операторы, константы и переменные — черный цвет;
-комментарии после знака «%» — зеленый цвет;
-символьные переменные (в апострофах) — зеленый цвет;
-синтаксические ошибки — красный цвет.
М-файлы бывают двух типов: сценарии и функции.
Файл-сценарий, именуемый также Script-файлом, является просто записью серии команд без входных и выходных параметров. Он имеет следующую структуру.
%Основной комментарий %Дополнительный комментарий Тело файла с любыми выражениями
Важны следующие свойства файлов-сценариев:

-19 -
•они не имеют входных и выходных аргументов;
•работают с данными из рабочей области;
•в процессе выполнения не компилируются;
•представляют собой зафиксированную в виде файла последовательность операций, полностью аналогичную той, что используется в сессии при работе в командном окне.
Основным комментарием является первая строка текстовых комментариев, а дополнительным — последующие строки. Основной комментарий выводится привыполнении команд lookfor и help имя_каталога. Полный комментарий выводится при выполнении команды help Имя_файла.
М-файл- функция является типичным объектом языка программирования системы Матлаб. Одновременно он является полноценным модулем с точки зрения структурного программирования, поскольку содержит входные
ивыходные параметры и использует аппарат локальных переменных. Структура такого модуля с одним выходным параметром выглядит следующим образом:
function vаг = f_name(Список_параметров) %Основной комментарий %Дополнительный комментарий Тело файла с любыми выражениями vаг=выражение
М-файл функции имеет следующие свойства:
•он начинается с объявления function, после которого указывается имя переменной var — выходного параметра, имя самой функции и список ее входных параметров;
•функция выдает значение и может использоваться в виде name(Список_параметров) в математических выражениях;
•все переменные, имеющиеся в теле файла-функции, являются локальными, то есть действуют только в пределах тела функции;
•файл-функция является самостоятельным программным модулем, который общается с другими модулями через свои входные и выходные параметры;
•правила вывода комментариев те же, что у файлов-сценариев;
•файл-функция служит средством расширения системы Матлаб;
•при обнаружении файла-функции он компилируется и затем исполняется, а созданные машинные коды хранятся в рабочей области системы Матлаб.
Последняя конструкция vаг = выражение вводится, если требуется, чтобы функция выдавала результат вычислений.
Приведенная форма файла-функции характерна для функции с одним выходным параметром. Если выходных параметров больше, то они указываются в квадратных скобках после слова function. При этом структура модуля имеет следующий вид:
function [vаг1,vаг2,...] = f_namе(Список_параметров) %Основной комментарий %Дополнительный комментарий Тело файла с любыми выражениями var1-выражение
Такая функция во многом напоминает процедуру. Ее нельзя слепо использовать непосредственно в математических выражениях, поскольку она выдает не единственный результат, а множество результатов — по числу выходных параметров. Если функция, имеющая несколько выходных параметров, входит в состав математического выражения, для вычислений в выражении будет использован первый из выходных параметров Это зачастую ведет к ошибкам в вычислениях. Поэтому, как отмечалось, данная функция используется как отдельный элемент программ в виде
[varl,var2, …] = namе(Список_параметров)
После такого вызова выходные переменные varl, var2, … становятся определенными и их можно использовать в последующих математических выражениях и иных сегментах программы Если функция используется в виде f_namе(Список_параметров), то выдается значение только для первого выходного параметра — переменной varl.
При отладке выражений и программ в окне Редактора - отладчика СООБЩЕНИЯ ОБ ОШИБКАХ ВЫ-
ДАЮТСЯ В КОМАНДНОЕ ОКНО МАТЛАБА.
1.2.Правила вычислений в командном окне.
1.Работа с системой в режиме прямых вычислений носит диалоговый характер и происходит по правилу «задал выражение, получи ответ».
2.Пользователь набирает на клавиатуре вычисляемое выражение, редактирует его (если нужно) в командной строке и завершает ввод нажатием клавиши Enter. Для указания текущего места ввода и вычисления используется символ
>>на пустой строке. В предшествующих месту ввода строках редактирование выражений и вычисления невозмож-
ны.

-20 -
3.Данные вводятся с помощью строчного редактора (встроенного в Матлаб (по умолчанию) или внешнего, выбираемого пользователем).
4.Знаком присваивания является привычный математикам знак равенства = , а не комбинированный знак :=, как во многих других математических системах.
5.Правила записи матрицы, вектора и скаляра: большимы буквами (например, А) обозначаются матрицы, малыми (а) – векторы и скаляры. Векторные функции (выдающие значения в виде вектора) обозначаются большими буквами ( F(x) ), скалярные функции (их значение – скаляр – действительное число) обозначаются малыми буквами (f(x)).
6.Комплексное или мнимое число определяется по наличию в его составе констант i или j, которым присваивает-
ся значение sqrt(-1) = √-1. Комплексное число можно вводить одним из следующих способов: 5+3i; 5+3*I; 5+3j; 5+3*j или 5+3*sqrt(-1) – разные виды одного и того же числа.
7.Значения аргумента функции в виде выражения присваивания вводятся раньше выражения функции и отделяются от него точкой с запятой (см. пп.11-13). Аргумент в виде одного числа можно вставлять в окаймлении круглых скобок непосредственно в выражение функции. Правильный ввод простейшего вычисляемого выражений : y = sin (0.35) Enter или sin (0.35) Enter. Если аргументов несколько, то они отделяются запятыми. Если вычисляемых функций несколько в од-
ном месте ввода, то они отделяются запятыми.
8.Арифметические операции для массивов отличаются от матричных операций наличием точки перед знаком операции: А.*Б (умножение массивов – массивы должны иметь одинаковое количество чисел или один из них должен
быть числом), А./Б (деление), А.\Б (левое деление), А.^Б (возведение в степень). Точка перед «+» и «-» не ставит-
ся!
9. Встроенные функции (например sin) записываются строчными буквами и их аргументы указываются в круглых скобках (см. табл.1.1 [1]). Если аргументов несколько, то они отделяются запятыми.
Таблица 1.2 Элементарные функции в Матлабе
(Большими буквами обозначены массивы, малыми – элемент массива или число)
Вид |
Что вычисляет |
Вид |
Что вычисляет |
|
abs(X) |
Абс.значения для действ. и комплексных |
angle(Z) |
Аргументы комплексных чисел в радиа- |
|
|
аргументов, ASCII-коды вместо симво- |
|
нах в пределах от -π до +π |
|
|
лов и пробелов для строковых |
|
|
|
real(Z), imag(Z) |
Действ. и мнимую части компл. чисел |
conj(Z) |
Комл.соряженные числа для чисел Z |
|
cplxpair(Z), |
Сортировка комплексных чисел по |
ceil(X) |
Округляет действ.Х до ближайшего це- |
|
cplxpair(Z,tol), |
разным правилам |
fix(X) |
лого ≥Х |
|
cplxpair(Z[],dim), |
|
floor(X) |
Удаляет дробную часть числа. |
|
cplxpair(Z,tol,dim) |
|
round(X) |
Округляет действ.Х до ближайшего це- |
|
|
|
|
лого ≤Х |
|
|
|
|
Округляет действ.Х до ближайшего це- |
|
|
|
|
лого . |
|
mod(X,Y) |
Вычисляет остаток от деления х на у; по |
sign(X) |
|
1, х >0, |
|
определению mod(x,o)=x. |
sign(Z) |
Для действ. чисел: sign(x)= |
0, х =0, |
rem(X,Y) |
Вычисляет остаток от деления х на у; по |
|
|
-1, х<0. |
|
определению mod(x,o)=NaN |
|
Для компл.. чисел: sign(z) = z/abs(z) |
|
factor(n) |
Выдает все простые множители числа n |
primes(n) |
Выдает все простые числа в диапазоне от 0 |
|
|
|
|
до n |
|
gcd(m,n), |
Функции наибольшего общего делителя |
icm(m,n), |
Вычисляет наименьшее общее кратное |
|
[g,c,d]= gcd(m,n), |
|
icm(A,B) |
чисел m и n или – пар чисел в массивах |
|
gcd(A,B), |
|
|
А и В |
|
[G,C,D]= gcd(A,B) |
|
|
|
|
[N,D]=rat(X), |
Функции представления результата в ви- |
perms(v) |
Формирует матрицу из всех перестано- |
|
rat(X), |
де рационального числа или цепной дро- |
|
вок элементов вектора v {сам вектор яв- |
|
rat(X,tol), |
би |
|
ляется одной из строк этой матрицы) |
|
S= rat(X), |
|
|
|
|
S= rat(X,k) |
|
|
|
|
sqrt(Z) |
Вычисляет квадратный корень |
log(X) |
Натуральный логарифм (по основанию |
|
|
|
|
е ) |
|
exp(Z) |
е в степени, показатели которой - значе- |
expm(X) |
матричная экспонента - е в степени, по- |
|
|
ния элементов массива Z |
|
казатель которой - матрца |
|
pov2(Z), |
Степень числа 2. |
nextpov2(n) |
Вычисляет p = nextpov2(n), что 2.^p ≥n (n- |
|
pov2([M,P]) |
V = pov2(Z) = 2.^Z (компл. или действ.), |
nextpov2(v) |
число) |
|
|
X = pov2([M,P]) = M.*(2,^P), (действ.). |
|
Вычисляет p = nextpov2(v), 2.^p ≥length(v) |
|
|
|
|
(v – вектор) |
|
log2(Z) |
Логарифм чисел массива Z по основанию 2. |
log10(Z) |
Десятичный логарифм чисел иассива Z. |
|
[M,P]=log2(X) |
Вычисляет массив М мантисс m и массив Р |
|
|
|
|
целочисленных показателей степени р таких. |
|
|
|
|
что любой х = m х 2р |
|
|
|
sin(Z), sinh(Z) |
Тригонометрич. и гиперболич.синусы |
сsс(Z), сsсh(Z) |
Тригонометрич. и гиперблич.косекансы |
|
asin(Z), asinh(Z) |
Тригонометрич. и гиперболич.арксинусы |
aсsс(Z), aсsсh(Z) |
Тригонометрич. и гиперболич. арккосе- |
|
|
|
|
кансы |
|
cos(Z), cos h(Z) |
Тригонометрич. и гиперболич.косинусы |
acos(Z),acosh(Z) |
Тригонометрич. и гиперболич. арккоси- |
|
|
|
|
нусы |
|
sec(Z), sech(Z) |
Тригонометрич. и гиперболич.секансы |
asec(Z), asech(Z) |
Тригонометрич. и гиперболич. арксе- |
|
|
|
|
кансы |
|
tan(Z), tanh(Z) |
Тригонометрич. и гиперболич.тангенсы |
atan(Z), atanh(Z) |
Тригонометрич. и гиперболич. арктан- |
∞

- 21 -
|
|
|
|
|
генсы |
|
atan2(Y,X) |
|
arctg(y/x), x>0, - <y< + |
cot(Z),coth(Z) |
Тригонометрич. и гиперболич. котан- |
|
|
atan2(Y,X)= |
π -arctg(y/|x|), x<0,0≤у< |
|
генсы |
|
|
|
-π+arctg(|y/x|), x<0,- ≤у<0 |
|
|
|
acot(Z),coth(Z) |
Тригонометрический и гиперблический |
[TH,R] = |
Преобразует декартовые координаты |
|
|
|
арккотангенсы |
=cart2pol(X,Y) |
(х,у) в полярные(ТН,R);угол ТН–в рад. |
|
|
|
|
|
[TH,R,Z] = |
Преобразует 3-мерные декартовые ко- |
|
|
|
|
=cart2pol(X,Y,Z) |
ординаты (х,у,z) в цилиндрические |
|
|
|
|
|
(ТН,R,z); угол ТН–в рад. |
|
[AZ,EL,R] = |
Преобразование 3-мерных декартовых |
[X,Y] = |
Преобразование полярных и цилиндри- |
|
|
=cart2sph(X,Y,Z) |
координат в сферические; углы AZ и EL |
= pol2cart(TH,R) |
ческих координат в декартовы |
|
|
|
– в радианах |
|
[X,Y,Z] = |
|
|
|
|
|
= pol2cart(TH,R,Z) |
|
|
[X,Y,Z] = |
Преобразование сферических координат |
|
|
|
|
=sph2cart(AZ,EL,R) |
в декартовы |
|
|
|
10.Для изменения формата вывода результата вычисления необходимо до нажатия клавиши Enter установить нужный формат через меню «Файл – Свойства» (см. рис.1.3 и 1.5).
11.Для блокировки вывода результата некоторого выражения (ввиду промежуточного характера ) после него надо установить знак ; (точка с запятой): если блокировка отсутствует, то Матлаб выдаст результат расчета по части выражения до неустановленного знака и сообщение об ошибке, а остальную часть вычисляемого выражения игнорирует (см. рис.1.6В).
» x=[0.5 0.7 1]; Y=sin(x) Y =
501/1045 947/1470 1327/1577
x=[0.5 0.7 1] Y=sin(x)
??? x=[0.5 0.7 1] Y
|
Missing operator, comma, or semicolon.
|
» x=[0.5 0.7 1;1 3 12; 0.8 0.1 3];Y=sin(x) |
Б |
|||
А |
|||||
Y = |
|
|
|
||
|
|
|
|||
|
0.4794 |
0.6442 |
0.8415 |
|
|
|
0.8415 |
0.1411 |
-0.5366 |
|
В0.7174 0.0998 0.1411
Рис.1.6. Правильная запись вычисления функции на одномерном векторном (А) и многомерном (Б) матричном массивах аргумента и неправильная (В)(пропуск точки с запятой перед Y)
12.Если не указана переменная для значения результата вычислений, то MATLAB назначает такую переменную с именем ans.
13.Результат вычислений выводится в строках вывода (без знака »).
14.Для вычисления функции на одномерном или многомерном матричных массивах значений аргумента необходимо выполнить действия согласно рис.1.6.
Ввекторе (одномерном массиве) значения заключены в квадратные скобки и отделяются друг от дру-
га пробелом (рис.1.6А); в матрице (многомерном массиве) значения заключены тоже в квадратные скобки, причем, строки отделяются точкой с запятой (порядок следования строк: левая выше правой), а значения в каждой строке отделяются аналогично вектору (рис.1.6Б).
15. Если значения аргумента вычисляемой функции являются членами отрезка арифметической прогрессии с заданной разностью (шагом), то для записи аргумента применяется оператор «двоеточие :» – см. рис.1.7. При разности, равной единице, ее запись в операторе можно опускать (см.рис.1.7Б).
» x=1:2.5:16.5;Y=sin(x) Y =
0.8415 -0.3508 -0.2794 0.7985 -1.0000 0.8038 -0.2879
» x=1:10;Y=sin(x) Y =
Columns 1 through 7
0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 Columns 8 through 10
0.9894 0.4121 -0.5440 x=[1:2.5:11.5;2:6];Y=sin(x) Y =
1327/1577 -851/2426 -1109/3969 1161/1454 -102108/102109 401/441 441/3125 -445/588 -677/706 -1109/3969
А
Б
В
Рис.1.7. Правильная запись вычисления функции на одномерном массиве аргумента
ввиде отрезка арифметической прогрессии ( с разностями 2,5 (рис.1.7А) и 1 (рис.1.7Б))
ив виде 2-строчной матрицы с теми же разностями (рис.1.7В)
14.Для правильной записи значений матрицы аргумента, когда ее строки являются отрезками арифметических прогрессий, необходимо руководствоваться правилами 11 и 12 одновременно.
15.Комментарии записываются в отдельную строку, помечаемую знаком проценты (%)в первом знакоместе строки (см. рис.1.8 А).
16.Разбиение строки с длинным выражением или комментарием на две производится установкой курсо-

- 22 -
ра перед переносимой на создаваемую вторую строку частью выражения и нажатием клавиш Shift + Enter (см. рис.1.8Б – двукратное разбиение выражения х = [23 45 67 45] на три строки).
17. Соединение двух строк в одну в программе или в выражении производится установкой курсора в начало второй строки и нажатием клавиш Shift + Backspace (рис.1.8В – соединение двух строк с выражениями 67
и 45] ).
А |
|
|
Б |
|
|
|
|
|
В |
|
x=[0.5 |
0.7 1];Y=sin(x) |
|
|
|
|
|
|
|
|
|
» x=[23 45 |
|
|
|
» x=[23 45 |
||||||
% Коментарии размещаются в отдельных строках |
|
|
|
|
||||||
|
67 |
|
|
|
|
|
67 45] |
|||
Y = |
|
|
|
|
|
|
||||
|
45] |
|
|
|
|
|
x = |
|||
0.4794 0.6442 0.8415 |
|
|
|
|
|
|
||||
|
x = |
|
|
|
|
23 45 67 45 |
||||
|
|
|
23 |
45 |
67 |
45 |
|
|
|
Рис.1.8. Ввод комментария в вычисляемое выражение или программу (А), разбиение первой строки на три (Б), объединение 3-й и 2-й строк (В).
18.Вычисляемое выражение сразу после завершения вычисления можно ввести вновь в текущее место ввода нажатием кнопки «стрелка вверх» ↑ (для изменения величин аргументов или коррекции выражения) . Повторное нажатие кнопки ↑ заменит предшествующие условия на условия, им предшествующие: этот процесс можно повторять многократно, добиваясь вызова в место ввода все более ранних вычислительных условий.
Ранее вычислявшееся выражения можно быстро вставить в место ввода путем выделения его левой кнопкой мышки (кнопка далее отпускается) и небольшого протягивания его вниз повторно нажатой левой кнопкой: Матлаб сам вставит выделенное выражение.
19.Ранее примененную функцию можно вставить в командное окно через копирование её из окна Протокола команд (Command History), в котором все, ранее использованные команды и функции сохраняются до тех пор, пока расчетчик не удалит их.
20.При выполнении вычислений со множеством функций целесообразно перечни всех функций Матлаба
ифункций оптимизации поместить в оконце Избранное Хелп-окна Матлаба для оперативного копирования в Командное окно и уточнения их свойств, найдя соответствующие разделы Справки в оконце Содержание путем цепочки следующих выделений (с заключительным в каждой цепочке нажатием кнопки Добавить в Из-
бранное).
• Для перечня Категорий функций: Contents-Matlab-Reference-гиперссылка Function by Category.
• Для алфавитного перечня функций Матлаба: Contents-Matlab-Reference-гиперссылка Alphabetcal
List of Function.
•Для перечня Категорий функций оптимизации: Contents-Optimization Toolbox-Reference-
гиперссылка Function by Category.
•Для алфавитного перечня функций оптимизации: Contents-Optimization Toolbox-Reference-
гиперссылка Function Reference (Alphabetcal).
21. Чтобы сохранить данные вычислений в окне управления (выражения, программы, результаты или их части) для повторного вызова и работы, необходимо:
•выделить данные ,
•скопировать их в буфер,
•вызвать редактор-отладчик М-файлов через меню «Файл-Создать-М-файл»,
•вставить скопированные данные в открывшийся новый М-файл и сохранить его через меню редактора «Файл-Сохранить как».
22. Для продолжения вычислительной работы в окне управления с данными, сохраненными по правилам п.20, необходимо через меню «Файл-Открыть» открыть требуемый файл, выделить в нем требуемые для работы фрагменты, скопировать их в буфер и вставить в текущее место ввода окна управления.

-23 -
2.Решение задач оптимизации в Матлабе
2.1.Общие этапы решения
•Оптимизационные расчеты выполняются в командном окне Матлаба.
•Вначале расчета исходные данные, условия, оптимизационные функции и операторы вводятся в поле командного окна вручную или посредством копирования из Хелп-справок Матлаба (для оперативного досту-
па справки с нужными функциями целесообразно поместить в оконце «Избранное» на весь период расчетов) или окна Протокол команд (Command History).
•После выполнения расчетов выделенные места в файле сессии командного окна (или весь файл) копируются, вставляются в новый М – файл в окне Редактора – Отладчика и сохраняются командой Сохранить как.
•При необходимости продолжения расчетов сохраненный файл сессии вызывается в окно РедактораОтладчика из Командного окна кнопкой (командой меню) Открыть, требуемая функция или фрагмент файла копируются и вставляются в место ввода командного окна.
2.2. Функции оптимизации
Виды функций (представлена только одна функция fminbnd), примеры их правильной записи в Командном окне и взаимодействие Командного окна с окном Редактора-Отладчика при применении той или иной функции представлены в табл.2.1 [Хелп Матлаба 6,5].
ПРИМЕЧАНИЯ К ТАБЛ.2.1.
1. Примеры вычисления с функцией fminbnd в Командном окне Матлаба.
Минимизируемые функции:
y := x4 e2x2 |
− 2x − 5 sin(x) − 2 , |
0 ≤ х ≤ 2 , |
(2.1) |
|
y := x4 e2 x2P1 |
−2 xP2 −5 (sinx( ))P3 −2 , |
0 ≤ х ≤ 2 . |
(2.2) |
1.1. Аргумент fun в функции fminbnd(fun,…) строковый – выражение минимизируемой функции у (2.1) через ее аргумент х в апострофах .
a=fminbnd('x.^4.*exp(2.*x.^2)-2.*x-5.*sin(x)-2',0,2) |
|
a = |
|
0.7078 |
А |
>> [x,fval,exitflag,output]=fminbnd('x.^4.*exp(2.*x.^2)-2.*x-5.*sin(x)-
2',0,2,optimset('Display','iter', 'Maxiter',7, 'TolX',1e-006)) |
|
|
|||||
Func-count |
x |
f(x) |
Procedure |
|
|
|
|
1 |
0.763932 |
-5.89243 |
initial |
|
|
||
2 |
1.23607 |
40.3795 |
golden |
|
|
||
Г |
|
||||||
3 |
0.472136 |
-5.14062 |
golden |
|
|||
4 |
0.627818 |
-5.8508 |
parabolic |
|
|
||
5 |
0.706361 |
-5.98279 |
parabolic |
|
|
||
6 |
0.702281 |
-5.98209 |
parabolic |
|
|
||
7 |
0.70735 |
-5.98283 |
parabolic |
|
|
||
Exiting: Maximum number of iterations has been exceeded |
|
|
|||||
|
- increase MaxIter option. |
|
|
||||
|
Current function value: -5.982835 |
|
|
||||
x = |
0.7073 |
|
|
|
|
|
|
fval =-5.9828 |
|
|
|
|
|
||
exitflag = |
0 |
|
|
|
|
|
|
output = iterations: 7 funcCount: 7 |
|
|
>> [x,fval,exitflag,output]=fminbnd('x.^4.*exp(2.*x.^2)-2.*x-5.*sin(x)- 2',0,2,optimset('Display','iter','Maxiter',15,'TolX',1e-006))
|
|
|
|
Д |
|
Func-count x |
f(x) |
Procedure |
|||
1 |
0.763932 |
-5.89243 |
initial |
|
|
2 |
1.23607 |
40.3795 |
golden |
|
|
3 |
0.472136 |
-5.14062 |
golden |
|
|
4 |
0.627818 |
-5.8508 |
parabolic |
|
|
5 |
0.706361 |
-5.98279 |
parabolic |
|
|
6 |
0.702281 |
-5.98209 |
parabolic |
|
|
7 |
0.70735 |
-5.98283 |
parabolic |
|
|
8 |
0.707824 |
-5.98284 |
parabolic |
|
|
9 |
0.707811 |
-5.98284 |
parabolic |
|
|
10 |
0.70781 |
-5.98284 |
parabolic |
|
|
11 |
0.70781 |
-5.98284 |
parabolic |
|
|
12 |
0.70781 |
-5.98284 |
parabolic |
|
|
Optimization terminated successfully:
the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-006
x =0.7078 fval =-5.9828 exitflag = 1
output = iterations: 12 funcCount: 12 algorithm: 'golden section search,
parabolic interpolation'
>> a=fminbnd('x.^4.*exp(2.*x.^2)-2.*x-5.*sin(x)-
2',0,2,optimset('Display','iter')) |
|
||||
Б |
|||||
Func-count x |
f(x) |
Procedure |
|||
1 |
0.763932 |
-5.89243 |
initial |
|
|
2 |
1.23607 |
40.3795 |
golden |
|
|
3 |
0.472136 |
-5.14062 |
golden |
|
|
4 |
0.627818 |
-5.8508 |
parabolic |
|
|
5 |
0.706361 |
-5.98279 |
parabolic |
|
|
6 |
0.702281 |
-5.98209 |
parabolic |
|
|
7 |
0.70735 |
-5.98283 |
parabolic |
|
|
8 |
0.707824 |
-5.98284 |
parabolic |
|
|
9 |
0.707791 |
-5.98284 |
parabolic |
|
|
10 |
0.707857 |
-5.98284 |
parabolic |
|
Optimization terminated successfully:
the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004
a=
0.7078
>> a=fminbnd('x.^4.*exp(2.*x.^2)-2.*x-5.*sin(x)- 2',0,2,optimset('Display','iter','Maxiter',7,'TolX',1e-
006)) |
|
|
|
|
|
|
|
В |
|
Func-count x |
f(x) |
Procedure |
|
|
|
||||
1 |
0.763932 |
-5.89243 |
initial |
|
2 |
1.23607 |
40.3795 |
golden |
|
3 |
0.472136 |
-5.14062 |
golden |
|
4 |
0.627818 |
-5.8508 |
parabolic |
|
5 |
0.706361 |
-5.98279 |
parabolic |
|
6 |
0.702281 |
-5.98209 |
parabolic |
|
7 |
0.70735 |
-5.98283 |
parabolic |
|
Exiting: Maximum number of iterations has been exceeded - increase MaxIter option.
Current function value: -5.982835
a=
0.7073
Рис.2.1. Вычисления минимума функции (2.1) различными видами функций fminbnd (табл.2.1, поз.1 в командном окне, когда fun – строковое выражение минимизируемой функции у.
А – вид 1. Б – вид 2, options № 5. В – вид 2, options №№ 5, 20 и 28. Г – вид 6 c options из рис.В. Д - вид 6 c

- 24 -
уставкой options Maxiter =15, увеличенной по сравнению с рис. Г в 2 раза.
1.2. Аргумент fun в функции fminbnd(fun,…) вида 3 – имя М-файла 'f_pr1’в апострофах минимизируемой функции (2.2), оформленного согласно рис.2.2Б и нижеследующих правил.
>> a=fminbnd('f_pr1',0,2,[],2,4,3.5)
y =
-0.5420 А y =
1.0420e+003
y=
-2.2954
y = -2.3621
y=
-2.3922
y=
-2.3997
y = -2.4013
y=
-2.4014
y = -2.4015
y = -2.4015
y=
-2.4015
a=
0.5745
Б
>>a=fminbnd('f_pr1',0,2,optimset('Display','iter'),2,4,3.5)
y =-0.5420 |
|
|
|
|
|
|
|
|
B |
||
Func-count x |
|
f(x) |
Procedure |
||
1 |
0.763932 |
|
-0.542038 |
initial |
|
y =1.0420e+003 |
|
|
|
|
|
2 |
1.23607 |
1042.03 |
golden |
|
|
y =-2.2954 |
|
|
|
|
|
3 |
0.472136 |
|
-2.29536 |
golden |
|
y = |
-2.3621 |
|
|
|
|
4 |
0.616992 |
|
-2.36208 |
parabolic |
|
y =-2.3922 |
|
|
|
|
|
5 |
0.549795 |
|
-2.3922 |
parabolic |
|
y =-2.3997 |
|
|
|
|
|
6 |
0.56424 |
-2.39974 |
parabolic |
|
|
y = |
-2.4013 |
|
|
|
|
7 |
0.571204 |
|
-2.40128 |
parabolic |
|
y =-2.4014 |
|
|
|
|
|
8 |
0.57562 |
-2.40145 |
parabolic |
|
|
y =-2.4015 |
|
|
|
|
|
9 |
0.574567 |
|
-2.40147 |
parabolic |
|
y = |
-2.4015 |
|
|
|
|
10 |
0.574504 |
|
-2.40147 |
parabolic |
|
y = |
-2.4015 |
|
|
|
|
11 |
0.574471 |
|
-2.40147 |
parabolic |
|
Optimization terminated successfully:
the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004
a=
0.5745
Рис.2.2. Вычисления минимума функции (2.2) функцией fminbnd 3-го вида (табл.2.1) в командном окне , когда fun – имя М-файла 'f_pr1’в апострофах минимизируемой функции (2.2), оформленного согласно вида (Б) с добавлением и запоминанием маршрута доступа к файлу в каталог маршрутов Матлаба.
А– Р1, Р2,Р3 равны соответственно 2; 4 и 3,5 с options по умолчанию. В – с options № 5.
2.3.Порядок оформления функции y(x,P1,P2,P3) в виде М-файла с параметрами для минимизации функциями Матлаба
1.Создайте новый М-файл в окне Редактора-Отладчика, наберите выражение заданной функции с параметрами (Внимание: имена параметров – с заглавной буквы!) согласно рис. 2.2Б и сохраните
файл в вашей папке командой «Сохранить как» с именем, предлагаемым Матлабом.
2. Вызовите Окно просмотра Маршрута командой через меню Файл – Установка маршрута (Set Path).
2.1.Кнопкой Добавить Маршрут вызовите окно Обзор папок. Выделите папку, содержащую М- файл, и нажмите ОК: маршрут доступа к папке появится в оконце маршрутов.
2.2. Запомните маршрут кнопкой Сохранить (Save).
- 25 -
Таблица 2.1 Виды оптимизирующих функций Матлаба 6,5
|
Функция Матлаба. |
|
Варианты применения |
|
|
|
|
Аргументы оптимизирующей функции. |
|
|||
• |
Тип оптимизации |
|
|
|
|
|
|
|
|
Пример вычисления в Командном окне |
|
|
• |
Математическая мо- |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|||
дель |
Алгоритм |
|
|
|
|
|
|
|
|
|
|
|
• |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
2 |
|
|
|
|
|
3 |
|
1. fminbnd. |
|
1. x = fminbnd(fun,x1,x2) – вычисляет х, доставляющий ло- |
• |
в качестве аргумента fun может быть: |
|
|||||||
|
Минимизация |
ска- |
кальный минимум функции f(x), причем аргумент fun = |
а) выражение минимизируемой функции в апострофах (‘f(x)’ для функции y = f(x)) через |
||||||||
• |
fun(f(x)). |
|
|
|
|
|
ее аргумент (для несложных выражений; апострофы указывают на строковый тип аргумента |
|||||
ляр-ной функций |
одной |
2. x = fminbnd(fun,x1,x2,options) – то же, что функция 1 (ф.1) при |
fun); |
|
|
|
||||||
ска-лярной действитель- |
б) имя М-файла этой функции в апострофах ‘fИмя’ (для сложных выражений (в частности, |
|||||||||||
наличии управляющих параметров, введенных расчетчиком в структуру па- |
не умещающихся в одной строке Командного окна) для конструкции М-файла вида: |
|
||||||||||
ной переменной в задан- |
раметров options (см. табл.2.2) функцией Матлаба: при вводе параметров |
function y = fИмя(x,P1,P2,…) |
|
|||||||||
ном |
интервале послед- |
вместо |
options |
должно |
стоять |
выражение |
y = f (x,P1,P2,…) ; |
|
|
|||
ней. |
|
|
optimset(‘Парам1’,знач1,’Парам2’,знач2, и т.д.), где Прам1 – имя пара- |
при условии, что путь к этому М-файлу сохранен и добавлен в Каталог маршрутов Матлаба – см. |
||||||||
|
min f(х ), |
|
метра 1, а знач1 – значение параметра1,которое может быть числом или |
п.1 Примечаний); |
|
|
||||||
• |
|
строковой переменной, причем в последнем случае оно заключается в |
в) манипулятор функции @fИмя, если она определена в виде М-файла (как в п.б)); |
|||||||||
|
х |
|
апострофы . |
|
|
|
|
|
г) строчный объект inline(‘f(x)’). |
|
||
|
где х1 <х < х2. |
3. x = fminbnd(fun,x1,x2,options,зP1,зP2,...) - то же, что ф.2 при |
• |
хl, х2 – нижнее и верхнее численные значения пределов интервала поиска минимума. |
||||||||
|
Золотое сечение |
• |
options – |
структура управляющих параметров минимизации, |
значения |
|||||||
• |
наличии параметров Р1, Р2 и т.д., которые присутствуют в выражении аргу- |
которых (строковые и численные) при отличии их от параметров по умол- |
||||||||||
плюс параболическая |
мента fun (fun(f(x,P1,P2…)). |
|
|
|
|
|||||||
Если применяются уставки «по умолчанию», то вместо options вставляют- |
чанию вводятся |
функцией optimset, подставляемой вместо options, один |
||||||||||
интерполяция. |
|
ся пустые парные квадратные скобки [ ]. |
|
|
|
из 6 вариантов которой (типовый) имеет следующий вид: |
|
|||||
|
|
|
4. [x,fval] = fminbnd(...) – вычисляет и выдает: значение х, миними- |
options = optimset('param1',value1,'param2',value2,...), причем, в апострофах вставля- |
||||||||
|
|
|
ются имена параметров, а их значения вводятся в позиции value1,value2 и т.д.. Другие |
|||||||||
|
|
|
зирующее функцию f(x) и величину минимума f (x), причем, fminbnd(...) – |
варианты функции optimset – в табл.2.3.Полный перечень параметров – в |
||||||||
|
|
|
любая из функций 1-3. |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
табл. 2.2. Назначение параметров и значения их численных установок – в |
|||
|
|
|
5. [x,fval,exitflag] = fminbnd(...) – |
вычисляет и выдает: зна- |
табл.2.2. В данной функции используютя только параметры 5-й, 19-й, 20- |
|||||||
|
|
|
чение х, мини-мизирующее функцию f(x), |
величину мини- |
й и 28-й: Display, MaxFunEvals, MaxIter и TolX. |
|
||||||
|
|
|
мума f(x) и величину флага окончания (exitflag ) вычисления |
Параметры структуры options. |
|
|||||||
|
|
|
минимума функцией fminbnd : |
|
|
|
Display - ‘off’- не показывает результата; ’iter’ – показывает выходные данные оптимизации |
|||||
|
|
|
>0 – решение x найдено, |
|
|
|
|
для каждой итерации; ‘final’ – показывает только результат оптимизации – вектор х; ‘notify’ (по |
||||
|
|
|
0 – количество оценок минимизируемой функции f(x) дос- |
умолчанию) – выдает сообщение только в случае, если функция не может найти решение.. |
||||||||
|
|
|
тигло предела, |
|
|
|
|
MaxFunEvals – максимально допустимое число оценок минимизируемой |
||||
|
|
|
<0 – решение x не найдено. |
|
|
|
функции. |
|
|
|||
|
|
|
6. [x,fval,exitflag,output] = fminbnd(...) – |
|
|
MaxIter – максимально допустимое число итераций. |
|
|||||
|
|
|
вычисляет и выдает: |
TolX – погрешность окончания процесса минимизации. |
|
|||||||
|
|
|
значение х, минимизирующее функцию f(x), величину |
минимума f(x), вели- |
• |
P1, P2, …– имена входных параметрических переменных (зP1, зP2, … - |
||||||
|
|
|
чину флага окончания exitflag |
и выходную структуру output, |
поля которой |
их |
значения), |
присутствующих в выражении минимизируемой |
функции |
|||
|
|
|
содержат информацию о процессе минимизации: |
|
|
f(x,P1,P2…) в аргументе fun в виде Заглавной буквы с номером-числом. |
||||||
|
|
|
output.algorithm – примененый алгоритм, |
|
|
|
||||||
|
|
|
output.funcCount – количество оценок функции, |
|
|
• Примеры вычисления – п.1 Примечаний к табл.2.1. |
|
|||||
|
|
|
output.iterations – количество выполненных итераций. |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|