ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.05.2019
Просмотров: 683
Скачиваний: 6
6
Отметим, что вне зависимости от локализации версии MS Word, все
элементы, добавляемые при подключении шаблона m-book.dot, имеют ан-
глоязычные названия.
Наберем в документе какую-нибудь команду MATLAB, к примеру
f = sin(3/4*pi)*exp(-1)
поместим курсор в набранную строку и выберем в меню Notebook пункт
Define Input Cell.
Обратите внимание, что стиль набранного текста изме-
нился на Input, сам текст заключен в квадратные скобки, а цвет шрифта из-
менился на зеленый:
Образовалась так называемая ячейка ввода (Input Cell). Для выполне-
ния команды MATLAB, содержащейся в ячейке ввода, следует убедиться,
что данная ячейка является текущей, то есть в ней находится курсор, и вы-
брать в меню Notebook пункт Evaluate Cell. Ниже ячейки ввода в документе
появляется ячейка вывода с результатом в привычном для пользователя
MATLAB виде
7
Абзацы ячейки вывода имеют стиль Output, начало и конец ячейки
ограничены квадратными скобками, а цвет шрифта синий.
Группировка ячеек
Решение задачи линейной оптимизации о составлении рациона, может
быть наглядно продемонстрировано в М-книге. Сначала приведем условия
задачи и вспомогательную таблицу, а затем наберем операторы файл-про-
граммы ration в тексте документа. Каждый оператор следует заключить в
ячейку ввода, выбирая в меню Notebook пункт Define Input Cell либо ис-
пользуя комбинацию клавиш <Alt>+<D>.
Несколько команд, выполняемых последовательно, лучше заключить
в группу ячеек ввода (Cell Group). Выделим ячейки, подлежащие объеди-
нению в группу (в данном случае это все наши ячейки) и в меню Notebook
выберем пункт Group Cells. Команды образовавшейся группы выполня-
ются из пункта Evaluate Cell меню Notebook или Evaluate Cells всплываю-
щего меню. Сочетание клавиш <Alt>+<Enter> также приводит к активиза-
ции команд группы. В результате содержимое М-книги дополняется ячей-
кой вывода с решением задачи линейного программирования. Итоговый ре-
зультат приведен в файле example.doc. Его содержимое приведено ниже:
=========================================================
Пример создания М-книги
Решим классическую задачу линейного программирования о состав-
лении рациона питания. Имеются три продукта П1, П2, П3 разной цены,
каждый из которых содержит определенное количество питательных ингре-
диентов И1, И2, И3, И4 (таблица 1). Известно, что в день требуется: И1 – не
менее 250, И2 – не менее 60, И3 – не менее 100 и И4 – не менее 220. Требу-
ется минимизировать затраты на приобретение продуктов. Очевидно, что
количество приобретаемых продуктов не может быть отрицательным.
Т а б л и ц а 1 – Питательность и цена продуктов
П1
П2
П3
И1
4
6
15
И2
2
2
0
И3
5
3
4
И4
7
3
12
Цена
44
35
100
Запишем целевую функцию, матрицу A, векторы b и lb ограничений
в соответствии с требованиями Optimization Toolbox, обозначив искомые
количества продуктов через
1
x
,
2
x
и
3
x
соответственно. Поскольку линей-
ные ограничения содержат "меньше или равно", а количество ингредиентов
8
в рационе не должно быть менее заданных величин, то следует изменить
знаки обеих частей системы.
1
2
3
44
35
100
T
f x
x
x
x
=
⋅ +
⋅ +
⋅
,
4
6
15
2
2
0
5
3
4
7
3
12
A
−
−
−
−
−
=
−
−
−
−
−
−
,
250
60
100
220
b
−
−
=
−
−
,
0
0
0
0
lb
=
.
Решение задачи осуществим в файле Microsoft Word используя
команды Matlab.
% Задание матрицы и вектора правой части системы
неравенств
A = [4 6 15
2 2 0
5 3 4
7 3 12];
A = -A;
b = [250; 60; 100; 220];
b = -b;
% Определение коэффициентов целевой функции
f = [44; 35; 100];
% Задание ограничений снизу на переменные
lb = [0; 0; 0];
% Решение и вывод результата в командное окно
x = linprog(f, A, b, [ ], [ ], lb)
Optimization terminated.
x =
13.2143
16.7857
6.4286
=========================================================
Создание группы ячеек имеет ряд особенностей. Группа не должна со-
держать текст и другие объекты MS Word или ячейки вывода. Текст, разде-
ляющий ячейки перед их объединением, помещается после группы. Ячейки
вывода пропадают, но зато соответствующие им ячейки ввода добавляются
в группу.
Продолжим работу над М-книгой, создадим группу ячеек ввода с ко-
мандами, обеспечивающими отображение круговой диаграммы получен-
ного решения, и выполним ее. Соответствующая ячейка вывода содержит
область графического окна с диаграммой. Важно понимать, что рисунок в
9
ячейке вывода, заключенной в большие квадратные скобки, является объек-
том MS Word. Данное обстоятельство позволяет обращаться с ним, как с
обычным рисунком, внедряемым в документ.
М-книга может содержать сколь угодно много групп ячеек ввода и от-
вечающих им ячеек вывода. Ячейки вывода можно перемещать в произволь-
ное место документа, выделив их и перетащив при помощи мыши как обыч-
ные абзацы документа MS Word. Повторное выполнение команд, находя-
щихся в соответствующих ячейках ввода, не нарушит расположения ячеек.
Работа с М-книгой большого объема становится проще, если преду-
смотреть разбиение ее на разделы (Calc Zone). Выделенный фрагмент книги
выносится в отдельный раздел выбором пункта Define Calc Zone меню
Notebook.
Выполнение команд всех ячеек или групп ячеек ввода раздела произ-
водится при помощи пункта Evaluate Calc Zone, а сразу всей М-книги –
Evaluate М-book. Ошибка в командах ячеек ввода, возникающая в процессе
выполнения всей М-книги, приводит к останову вычислений. Для автомати-
ческого перехода к выполнению следующей ячейки необходимо установить
флаг Stop evaluating on error в диалоговом окне Notebook Options, появля-
ющемся при выборе одноименного пункта в меню Notebook.
Переменные различных разделов являются общими, к примеру, если
в ячейке одного раздела переменной х было присвоено некоторое значение,
то х можно использовать и в остальных разделах. Все переменные М-книги
–
глобальные. Более того, если в редакторе MS Word открыто несколько М-
книг, то их переменные определены в одной рабочей среде.
Открытие М-книги в MS Word не приводит к автоматическому выпол-
нению содержимого ячеек ввода. Часто требуется инициализировать неко-
10
торые переменные без вмешательства пользователя. Команды ячеек, имею-
щих стиль Autolnit, запускаются сразу после открытия М-книги. Полезно
включить в первую такую ячейку команду clear для очистки рабочей среды.
Для установки стиля Autolnit служит пункт Define Autoinit Cell меню
Notebook.
Содержимое ячейки или группы можно выполнить циклически, для
чего следует выделить нужные ячейки или сделать текущей группу и вы-
брать в меню Notebook пункт Evaluate Loop, или нажать <Alt>+<L>. По-
явившееся диалоговое окно Evaluate Loop позволяет установить число по-
второв в поле Stop After и выбрать скорость кнопками Slower и Faster.
Управление М-книгой
Разработчик М-книги имеет возможность изменять вид ячеек вывода
как с текстовой, так и графической информацией. Меню Notebook содержит
пункт Notebook Options, выбор которого приводит к появлению одноимен-
ного диалогового окна
Панель Numeric Format содержит раскрывающийся список для вы-
бора формата и переключатели Loose и Compact для добавления промежу-
точных пустых строк при отображении числовых значений в ячейках вы-
вода.
Панель Figure Options предназначена для управления видом графи-
ческих результатов, помещаемых в ячейки вывода. Установленный флаг
Embed Figures in M-book
обеспечивает размещение графиков в ячейках вы-
вода, а сброшенный – приводит к визуализации результатов в отдельных
графических окнах. Размер и единицы измерения графиков, помещаемых в