5. информационные технологии

реклама
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ
ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Т.Е. Мамонова
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
Рекомендовано в качестве учебного пособия
Редакционно-издательским советом
Томского политехнического университета
Издательство
Томского политехнического университета
2012
УДК 681.3 (075.8)
ББК 32.973.2я73
М22
Мамонова Т.Е.
Информационные технологии. Организация информациМ22 онных процессов. Технология компьютерного моделирования:
учебное пособие / Т.Е. Мамонова; Томский политехнический
университет. – Томск: Изд-во Томского политехнического университета, 2011. – 278 с.
В пособии в краткой форме изложены теоретические вопросы курса
«Информационные технологии» в том числе основные определения, инструментарий и этапы развития информационных технологий. Выделены важнейшие положения по организации информационных процессов и технологии компьютерного моделирования. Представлены общие сведения, история
развития и элементарные способы работы в математических пакетах
MathCAD и MatLab. По каждой теме представлены вопросы для контроля
знаний, включен справочный материал.
Пособие подготовлено на кафедре интегрированных компьютерных систем управления, соответствует программе дисциплины и предназначено для
студентов ИДО, обучающихся по направлению 220700 «Автоматизация технологических процессов и производств».
УДК 681.3 (075.8)
ББК 32.973.2я73
Рецензенты
Доктор технических наук,
профессор кафедры интегрированных компьютерных
систем управления ИК
А.М. Малышенко
Кандидат технических наук,
доцент кафедры интегрированных компьютерных
систем управления ИК
В.Н. Шкляр
© ФГБОУ ВПО НИ ТПУ, 2012
© Мамонова Т.Е., 2012
© Обложка. Издательство Томского политехнического университета, 2012
2
ОГЛАВЛЕНИЕ
ОГЛАВЛЕНИЕ ............................................................................................................................................. 3
ВВЕДЕНИЕ .................................................................................................................................................. 5
1 ПОНЯТИЕ ИНФОРМАЦИОННОЙ ТЕХНОЛОГИИ ........................................................................ 6
1.1 СОДЕРЖАНИЕ ИНФОРМАЦИОННОЙ ТЕХНОЛОГИИ ............................................................................. 6
1.1.1 Определение информационной технологии ................................................................................. 6
1.1.2 Инструментарий информационной технологии ........................................................................ 8
1.1.3 Информационная технология и информационная система ...................................................... 9
1.2 ЭТАПЫ РАЗВИТИЯ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ................................................................... 10
1.3. ОСОБЕННОСТИ НОВЫХ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ .......................................................... 12
1.4. ПРОБЛЕМЫ ИСПОЛЬЗОВАНИЯ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ .............................................. 13
1.5. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ ....................................................................................................... 14
2. ВИДЫ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ............................................................................. 15
2.1. КЛАССИФИКАЦИЯ ВИДОВ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ...................................................... 15
2.2. ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ ОБРАБОТКИ ДАННЫХ .............................................................. 20
2.3. ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ УПРАВЛЕНИЯ ........................................................................... 22
2.4. АВТОМАТИЗАЦИЯ ОФИСНОЙ ДЕЯТЕЛЬНОСТИ................................................................................. 25
2.5. ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ ПОДДЕРЖКИ ПРИНЯТИЯ РЕШЕНИЙ ....................................... 30
2.6. ЭКСПЕРТНЫЕ СИСТЕМЫ ................................................................................................................... 34
2.6.1. Типы экспертных систем .......................................................................................................... 35
2.6.2. Виды знаний................................................................................................................................. 36
2.6.3. Способы формализованного представления знаний в БЗ........................................................ 37
2.6.4. Области применения ЭС ............................................................................................................ 39
2.7. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ ....................................................................................................... 41
3. ОСНОВНЫЕ ЭЛЕМЕНТЫ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ....................................... 42
3.1. ИНТЕРНЕТ И ЕГО ВОЗМОЖНОСТИ ..................................................................................................... 42
3.2. ЭЛЕКТРОННЫЕ ТАБЛИЦЫ ................................................................................................................. 46
3.3. ПОСТАНОВКА И РЕШЕНИЕ ЗАДАЧ ..................................................................................................... 48
3.4. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ ....................................................................................................... 51
4. ОРГАНИЗАЦИЯ ИНФОРМАЦИОННЫХ ПРОЦЕССОВ ................................................... 52
4.1. МОДЕЛИ ИНФОРМАЦИОННЫХ ПРОЦЕССОВ ПЕРЕДАЧИ, ОБРАБОТКИ И НАКОПЛЕНИЯ ДАННЫХ 52
4.1.1. Обобщенная схема технологического процесса обработки информации ............................. 52
4.1.2. Сбор и регистрация информации .............................................................................................. 53
4.1.3. Передача информации ................................................................................................................ 56
4.1.4. Обработка информации ............................................................................................................ 58
4.1.5. Хранение и накопление информации ......................................................................................... 60
4.2. СИСТЕМНЫЙ ПОДХОД К РЕШЕНИЮ ФУНКЦИОНАЛЬНЫХ ЗАДАЧ И К ОРГАНИЗАЦИИ
ИНФОРМАЦИОННЫХ ПРОЦЕССОВ ........................................................................................................... 63
4.3. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ ....................................................................................................... 66
5. ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ .......................................................................................... 66
В РАЗЛИЧНЫХ ОБЛАСТЯХ ДЕЯТЕЛЬНОСТИ................................................................................ 66
5.1. ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ В СИСТЕМАХ ОРГАНИЗАЦИОННОГО УПРАВЛЕНИЯ ............. 66
5.1.1. ЭВМ при выборе решений в области технологии, организации, планирования и управления
производством ...................................................................................................................................... 66
5.1.2. Возможности использования новых информационных технологий в системах
организационного управления .............................................................................................................. 68
5.2. ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ В ОБУЧЕНИИ ........................................................................... 71
5.3. АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ НАУЧНЫХ ИССЛЕДОВАНИЙ.................................................. 74
3
5.4. СИСТЕМЫ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ .............................................................. 75
5.5. ГЕОИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ ...................................................................... 77
5.6. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ ....................................................................................................... 79
6. ТЕХНОЛОГИИ КОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ ...................................................... 80
6.1. ПОНЯТИЕ О КОМПЬЮТЕРНОМ МАТЕМАТИЧЕСКОМ МОДЕЛИРОВАНИИ ....................................... 80
6.1.1. Общие сведения о компьютерном математическом моделировании .................................. 80
6.1.2. Классификация математических моделей............................................................................... 81
6.2. ЭТАПЫ, ЦЕЛИ И СРЕДСТВА КОМПЬЮТЕРНОГО МАТЕМАТИЧЕСКОГО МОДЕЛИРОВАНИЯ ........... 82
6.2.1. Моделирования случайных процессов ....................................................................................... 85
6.2.2. Особенности имитационного моделирования производственных систем .......................... 87
6.3. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ ....................................................................................................... 88
7. ТЕХНОЛОГИИ СОЗДАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ......................................... 89
7.1. ОБЩАЯ ХАРАКТЕРИСТИКА ТЕХНОЛОГИИ СОЗДАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ............. 89
7.2. СОВРЕМЕННЫЕ МЕТОДЫ И СРЕДСТВА РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ............... 93
7.2.1. Современные методы разработки ПО ..................................................................................... 93
7.2.2. Инструментарий технологии программирования .................................................................. 98
7.2.3. Средства для создания приложений ......................................................................................... 99
7.2.4. CASE-технологии ...................................................................................................................... 101
7.3. ЯЗЫКИ И СИСТЕМЫ ПРОГРАММИРОВАНИЯ ................................................................................... 103
7.3.1. Развитие языков программирования ...................................................................................... 103
7.3.2. Современные системы программирования ............................................................................ 107
7.4. АРХИТЕКТУРА ПРОГРАММНЫХ СИСТЕМ........................................................................................ 109
7.5. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ ..................................................................................................... 111
8. КОМПЬЮТЕРНАЯ МАТЕМАТИКА И МАТЕМАТИЧЕСКИЕ ПАКЕТЫ ............................ 112
8.1. МАТЕМАТИЧЕСКИЙ ПАКЕТ MATHCAD ......................................................................................... 112
8.1.1. Основные возможности .......................................................................................................... 113
8.1.2. Сравнительная характеристика ............................................................................................ 114
8.1.3. Расширение функциональности .............................................................................................. 117
8.1.4. Взаимодействие с другими программами .............................................................................. 118
8.1.5. История версий ......................................................................................................................... 119
8.1.6. Развитие .................................................................................................................................... 129
8.1.7. Установка математического пакета MathCAD .................................................................. 129
8.1.8. Задачи математического анализа в MathCAD ...................................................................... 135
8.1.8. Задачи линейной алебры в MathCAD ....................................................................................... 141
8.1.9. Программирование в пакете MathCAD .................................................................................. 147
8.1.9.1. Безмодульное программирование в пакете MathCAD ................................................. 147
8.1.9.2. Программные операторы MathCAD .............................................................................. 151
8.2. МАТЕМАТИЧЕСКИЙ ПАКЕТ MATLAB ............................................................................................. 157
8.2.1. История ..................................................................................................................................... 158
8.2.2. Язык MATLAB ........................................................................................................................... 158
8.2.3. Применение................................................................................................................................ 160
Математика и вычисления ................................................................................................................ 160
8.2.4. Наборы инструментов ............................................................................................................ 163
8.2.5. Возможности систем MATLAB .............................................................................................. 164
8.2.6. Расширяемость системы ........................................................................................................ 174
8.2.7. Установка и файловая система MATLAB .............................................................................. 175
8.2.8. Запуск MATLAB и работа в режиме диалога ........................................................................ 184
8.2.9. Новый и старый облик системы MATLAB 6.0 ....................................................................... 187
8.2.9. Основные объекты MATLAB ................................................................................................... 194
8.2.10. Основы графической визуализации вычислений ................................................................... 205
8.2.11. Операции с векторами и матрицами ................................................................................... 234
8.2.12. Программирование в MatLab ................................................................................................. 247
8.2.12.2. Двойственность операторов, команд и функций ........................................................ 251
8.2.12.3. М-файлы сценариев и функций.................................................................................... 253
4
8.2.12.4. Обработка ошибок ......................................................................................................... 260
8.2.12.5. Функции с переменным числом аргументов............................................................... 262
8.12.2.6. Комментарии .................................................................................................................. 265
8.12.2.7. Особенности выполнения m-файлов функций ........................................................... 265
8.12.2.8. Создание Р-кодов........................................................................................................... 266
8.12.2.9. Управляющие структуры .............................................................................................. 267
8.2.13. Simulink for Windows ............................................................................................................... 275
8.3. ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ ..................................................................................................... 277
СПИСОК ЛИТЕРАТУРЫ ....................................................................................................................... 278
ВВЕДЕНИЕ
Данное учебное пособие предназначено для изучения курса «Информационные технологии» для студентов ИДО, обучающихся по классической форме обучения (КЗФ) и с использованием дистанционных
образовательных технологий (ДОТ) направления 220700 «Автоматизация технологических процессов и производств». В данном пособии
представлены материалы, которые могут использоваться при выполнении лабораторных работ, а также сдачи экзамена и зачёта по дисциплине «Информационные технологии».
В этом пособии рассматриваются основные понятия и определения
информационных технологий, приведен материалы для изучения основных принципов организации информационных процессов, а также
технологию компьютерного моделирования., привелдены практические
примеры, при решении которых студент подготовится к сдаче экзамена
и зачёта по дисцииплине «Информационные технологии». Также в дан5
ном пособии представлены примеры выполнения практических задач
в математических пакетах MathCAD и MatLab.
Весь материал разбит на разделы, в первом из которых раскрыты
основные понятия, основные определения и этапы развития информационных технологий (ИТ). Во втором разделе представлены основные
виды ИТ. В третьем разделе кратко описаны основные элементы ИТ,
такие как Интернет и базы данных. Четвёртый раздел посвящён оранизации информационных процессов, таким как обработк данных, их хранение, передача и др. Пятый раздел посвящён раскрытию ИТ в областях
человеческой деятельности. В шестом разделе представлены основные
определения компьютерного моделирования, в том числе математического и имитационного, а также этапы разработки модели и особенности. В седьмом разделе описана технология создания программного
обеспечения (ПО) ЭВМ, этапы и методы создания ПО. Последний раздел посвящён основам компьютерной математики, а именно таким математическим пакетам, как MathCAD и MatLab.
1 ПОНЯТИЕ ИНФОРМАЦИОННОЙ ТЕХНОЛОГИИ
1.1 Содержание информационной технологии
1.1.1 Определение информационной технологии
Технология при переводе с греческого (techne) означает искусство,
мастерство, умение, а это не что иное, как процессы.
Под процессом следует понимать определенную совокупность действий, направленных нa достижение поставленной цели. Процесс должен определяться выбранной человеком стратегией и реализоваться
с помощью совокупности различных средств и методов.
Под технологией материального производства понимают совокупность средств и методов обработки, изготовления, изменения состояния, свойств, формы сырья или материала. Технология изменяет качество или первоначальное состояние материи в целях получения продукта.
6
Информация является одним из ценнейших ресурсов общества,
наряду с такими традиционными материальными видами ресурсов, как
нефть, газ, полезные ископаемые и др., а значит, процесс ее переработки
по аналогии с процессами переработки материальных ресурсов можно
воспринимать как технологию. Тогда справедливо следующее определение.
Информационная технология (ИТ) – совокупность средств и методов сбора, обработки и передачи данных (первичной информации) для
получения информации нового качества о состоянии объекта, процесса
или явления (информационного продукта).
Цель информационной технологии – производство информации для
ее анализа человеком и принятия на его основе решения по выполнению
какого-либо действия.
Практическое приложение методов и средств обработки данных
может быть различным, поэтому целесообразно выделить глобальную
базовые и конкретные информационные технологии.
Глобальная информационная технология включает модели методы
и средства, формализующие и позволяющие использовать информационные ресурсы общества.
Базовая информационная технология предназначена для определенной области применения (производство, научные исследования,
обучение и т.д.).
Конкретные информационные технологии реализуют обработку
данных при решении функциональных задач пользователей (например,
задачи учета, планирования, анализа).
Как и все технологии, информационные технологии находятся
в постоянном развитии и совершенствовании. Этому способствуют появление новых технических средств, разработка новых концепции, методов организации данных, их передачи, хранения и обработки, форм
взаимодействия пользователей с техническими и другими компонентами информационно-вычислительных систем.
Расширение круга лиц, имеющих доступ к информационновычислительным ресурсам систем обработки данных, а также использование вычислительных сетей, объединяющих территориально удаленных друг от друга пользователей, особо остро ставят проблему обеспечения надежности данных и защиты их от несанкционированного доступа. В связи с этим современные информационные технологии базируются на концепции использования специальных аппаратных и программных средств, обеспечивающих защиту информации.
Следующим шагом в совершенствовании информационных технологий, используемых в организационно-экономическом управлении, яв7
ляется расширение сферы применения баз знаний и соответствующих
им систем искусственного интеллекта.
База знаний – важнейший элемент экспертной системы, создаваемой на рабочем месте специалиста управления. Она выступает в роли
накопителя знаний в конкретной области профессиональной деятельности и помощника при проведении анализа экономической ситуации
в процессе выработки и принятия управленческого решения.
Информационные технологии в сфере организационно-экономического
управления в настоящее время развиваются по следующим основным
направлениям:
1) активизация роли специалистов управления (непрофессионалов
в области вычислительной техники) в подготовке и решении задач экономического управления;
2) совершенствование систем интеллектуального интерфейса конечных пользователей различных уровней;
3) объединение информационно-вычислительных ресурсов с помощью вычислительных сетей различных уровней (от ЛВС, объединяющих пользователей в рамках одного подразделения организации до
глобальных);
4) разработка комплексных мер обеспечения защиты информации
(технических, организационных, программных, правовых и т.п.) от несанкционированного доступа.
1.1.2 Инструментарий информационной технологии
Техническими средствами производства информации являются аппаратное, программное и математическое обеспечение процесса. Выделим отдельно из этих средств программные продукты и назовем их инструментарием, а для большей четкости можно его конкретизировать,
назвав программным инструментарием информационной технологии.
Инструментарий информационной технологии – один или несколько взаимосвязанных программных продуктов для определенного
типа компьютера, технология работы в котором позволяет достичь поставленную пользователем цель.
В качестве инструментария можно использовать следующие распространенные виды программных продуктов для персонального компьютера: текстовый процессор (редактор), настольные издательские системы, электронные таблицы, системы управления базами данных,
электронные записные книжки, электронные календари информационные системы функционального назначения (финансовые, бухгалтерские,
для маркетинга и пр.), экспертные системы и т.д.
8
1.1.3 Информационная технология и информационная система
Информационная технология тесно связана с информационными
системами, которые являются для нее основной средой. На первый
взгляд может показаться, что определения информационной технологии
и системы очень похожи между собой.
Информационная технология является процессом, состоящим из
четко регламентированных правил выполнения операций, действий,
этапов разной степени сложности над данными, хранящимися в компьютерах. Основная цель информационной технологии – в результате целенаправленных действий по переработке первичной информации получить необходимую для пользователя информацию.
Информационная система представляет собой человекокомпьютерную систему обработки информации. Информационная система является средой, составляющими элементами которой является компьютеры, компьютерные сети, программные продукты, базы данных, люди,
различного рода технические и программные средства, связи и т.д. Основная цель информационной системы – организация хранения и передачи
информации.
Реализация функций информационной системы невозможна без
знания ориентированной на нее информационной технологии, Информационная технология может существовать и вне сферы информационной системы
Пример 1. Информационная технология работы в среде текстового
процессора Microsoft Word, который не является информационной системой.
Таким образом, информационная технология является более емким
понятием, отражающим современное представление о процессах преобразования информации в информационном обществе. В умелом сочетании двух информационных технологий – управленческой и компьютерной – залог успешной работы информационной системы.
Обобщая все вышесказанное, введем несколько более узкие определения информационной системы и технологии, реализованные средствами компьютерной техники.
Информационная технология – совокупность четко определенных
целенаправленных действий персонала по переработке информации на
компьютере.
Информационная система – человеко-компьютерная система для
поддержки принятия решений и производства информационных продуктов, использующая компьютерную информационную технологию.
9
1.2 Этапы развития информационных технологий
Существует несколько точек зрения на развитие информационных
технологий с использованием компьютеров, которые определяются различными признаками деления.
Общим для всех изложенных ниже подходов является то, что с появлением персонального компьютера начался новый этап развития информационной технологии. Основной целью становится удовлетворение персональных информационных потребностей человека как в профессиональной сфере, так и в бытовой.
I. По признаку – вид задач и процессов обработки информации –
выделяются два этапа:
1-й этап (60–70-е гг.) – обработка данных в вычислительных центрах в режиме коллективного пользования. Основным направлением
развития информационной технологии являлась автоматизация операционных рутинных действий человека.
2-й этап (с 80-х гг.) – создание информационных технологий,
направленных на решение стратегических задач.
II. По признаку – проблемы, стоящие на пути информатизации
общества – выделяются четыре этапа:
1-й этап (до конца 60-х гг.) характеризуется проблемой обработки
больших объемов данных в условиях ограниченных возможностей аппаратных средств.
2-й этап (до конца 70-х гг.) связывается с распространением ЭВМ
серии IBM/360. Проблема этого этапа – отставание программного обеспечения от уровня развития аппаратных средств.
3-й этап (с начала 80-х гг.) – компьютер становится инструментом
непрофессионального пользователя, а информационные системы –
средством поддержки принятия его решений. Проблемы – максимальное удовлетворение потребностей пользователя и создание соответствующего интерфейса работы в компьютерной среде.
4-й этап (с начала 90-х гг.) создание современной технологии межорганизационных связей и информационных систем. Проблемы того этапа
весьма многочисленны. Наиболее существенными из них являются:
1) выработка соглашений и установление стандартов, протоколов
компьютерной связи;
2) организация доступа к стратегической информации;
3) организация защиты и безопасности информации.
III. По признаку – преимущество, которое приносит компьютерная технология – выделяются три этапа:
10
1-й этап (с начала 60-х гг.) характеризуется довольно эффективной
обработкой информации при выполнении рутинных операций с ориентацией на централизованное коллективное использование ресурсов вычислительных центров. Основным критерием оценки эффективности
создаваемых информационных систем была разница между затраченными на разработку и сэкономленными в результате внедрения средствами.
2-й этап (с середины 70-х гг.) связан с появлением персональных
компьютеров. Изменился подход к созданию информационных систем –
ориентация смещается в сторону индивидуального пользователя для
поддержки принимаемых им решений.
3-й этап (с начала 90-х гг.) связан с понятием анализа стратегических преимуществ в бизнесе и основан на достижениях телекоммуникационной технологии распределенной обработки информации. Информационные системы имеют своей целью не просто увеличение эффективности обработки данных и помощь управленцу. Соответствующие
информационные технологии должны помочь организации выстоять в
конкурентной борьбе и получить преимущество.
IV. По признаку – виды инструментария технологии – выделяются
пять этапов:
1-й этап (до второй половины XIX в.) – «ручная» информационная
технология, инструментарий которой составляли: перо, чернильница,
книга. Коммуникации осуществлялись ручным способом путем переправки через почту писем, пакетов, депеш.
2-й этап (с конца XIX в.) – «механическая» технология, инструментарий которой составляли: пишущая машинка, телефон, оснащенная
более совершенными средствами доставки почта.
3-й этап (40–60-е гг. XX в.) – «электрическая» технология, инструментарий которой составляли: большие ЭВМ и соответствующее программное обеспечение, электрические пишущие машинки, ксероксы,
портативные диктофоны.
4-й этап (с начала 70-х гг.) – «электронная» технология, основным
инструментарием которой становятся большие ЭВМ и создаваемые на
их базе автоматизированные системы управления (АСУ) и информационно-поисковые системы (ИПС), оснащенные широким спектром базовых и специализированных программных комплексов.
5-й этап (с середины 80-х гг.) – «компьютерная» («новая») технология, основным инструментарием которой является персональный компьютер с широким спектром стандартных программных продуктов разного назначения. На этом этапе происходит процесс персонализации
АСУ, который проявляется в создании систем поддержки принятия ре11
шений определенными специалистами. Подобные системы имеют
встроенные элементы анализа и интеллекта для разных уровней управления, реализуются на персональном компьютере и используют телекоммуникации.
В связи с переходом на микропроцессорную базу существенным
изменениям подвергаются и технические средства бытового, культурного и прочего назначений. Начинают широко использоваться в различных областях глобальные и локальные компьютерные сети.
1.3. Особенности новых информационных технологий
Информационная технология является наиболее важной составляющей процесса использования информационных ресурсов общества. К
настоящему времени она прошла несколько эволюционных этапов, смена которых определялась главным образом развитием научнотехнического прогресса, появлением новых технических средств переработки информации. В современном обществе основным техническим
средством технологии переработки информации служит персональный
компьютер. Внедрение персонального компьютера в информационную
сферу и применение телекоммуникационных средств связи определили
новый этап развития информационной технологии и, как следствие, изменение ее названия за счет присоединения одного из синонимов: «новая», «компьютерная» или «современная».
Прилагательное «новая» подчеркивает новаторский, а не эволюционный характер этой технологии. Ее внедрение является новаторским
актом в том смысле, что она существенно изменяет содержание различных видов деятельности в организациях. В понятие новой информационной технологии включены также коммуникационные технологии, которые обеспечивают передачу информации разными средствами, а
именно – телефон, телеграф, телекоммуникации, факс и др.
Новая информационная технология – информационная технология с «дружественным» интерфейсом работы пользователя, использующая персональные компьютеры и телекоммуникационные средства.
Прилагательное «компьютерная» подчеркивает, что основным техническим средством ее реализации является компьютер.
Три основных принципа новой (компьютерной) информационной
технологии:
1) интерактивный (диалоговый) режим работы с компьютером;
2) интегрированность с другими программными продуктами;
3) гибкость процесса изменения как данных, так и постановок задач.
12
Для эффективного взаимодействия конечных пользователей с вычислительной системой новые информационные технологии опираются
на принципиально иную организацию интерфейса пользователей с вычислительной системой (так называемого дружественного интерфейса),
который выражается прежде всего в следующем:
1) в обеспечении права пользователя на ошибку благодаря защите
информационно-вычислительных ресурсов системы от непрофессиональных действий на компьютере;
2) в наличии широкого набора иерархических меню, системы подсказок и обучения и т. п., облегчающих процесс взаимодействия пользователя с ПК;
3) в наличии системы «отката», позволяющей при выполнении регламентированного действия, последствия которого по каким-либо причинам не удовлетворили пользователя, вернуться к предыдущему состоянию системы.
По-видимому, более точным следует считать все же термин новая,
а не компьютерная информационная технология, поскольку он отражает
в ее структуре не только технологии, основанные на использовании
компьютеров, но и технологии, основанные на других технических
средствах, особенно на средствах, обеспечивающих телекоммуникацию.
1.4. Проблемы использования информационных технологий
Для информационных технологий является вполне естественным
то, что они устаревают и заменяются новыми.
Например: на смену технологии пакетной обработки программ на
большой ЭВМ в вычислительном центре пришла технология работы на
персональном компьютере на рабочем месте пользователя. Телеграф
передал все свои функции телефону и т. д.
При внедрении новой информационной технологии в организации
необходимо оценить риск отставания от конкурентов в результате ее
неизбежного устаревания со временем, так как информационные продукты, как никакие другие виды материальных товаров, имеют чрезвычайно высокую скорость сменяемости новыми видами, версиями. Периоды сменяемости колеблются от нескольких месяцев до одного года.
Если в процессе внедрения новой информационной технологии
этому фактору не уделять должного внимания, возможно, что к моменту
внедрения новой информационной технологию она уже устареет и придется принимать меры к ее модернизации. Основной причиной неудач
является отсутствие или слабая проработанность методологии использования информационной технологии.
13
1.5. Вопросы для самоконтроля
1. Совокупность четко определенных целенаправленных действий
персонала по переработке информации на компьютере.
2. Сколько выделяют этапов развития информационных технологий
по признаку – преимущество, которое приносит компьютерная технология.
3. Один или несколько взаимосвязанных программных продуктов
для определенного типа компьютера, технология работы в котором позволяет достичь поставленную пользователем цель.
4. В чём заключается основная проблема информационной технологии?
5. Суть новой информационной технологии.
6. Перечислите основные инструментарии механической, электрической и электронной информационной технологии.
7. Синоним понятия «новые» в определении «новые информационные технологии».
8. Виды информационных технологий по совокупности методов и
средств обработки данных
9. Установите в хронологическом порядке этапы развития информационных технологий по признаку – проблемы, стоящие на пути информатизации общества.
10.
Дайте определение понятию «инструментарий информационной технологии».
14
2. ВИДЫ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
2.1. Классификация видов информационных технологий
В настоящее время классификация ИТ проводится по следующим
признакам:
1) способу реализации в автоматизированных информационных системах (АИС),
2) степени охвата задач управления,
3) классам реализуемых технологических операций,
4) типу пользовательского интерфейса,
5) вариантам использования сети ЭВМ,
6) обслуживаемой предметной области и др.
1. По способу реализации ИТ делятся на традиционные и современные ИТ. Традиционные ИТ существовали в условиях централизованной обработки данных, до периода массового использования ПЭВМ.
Они были ориентированы главным образом на снижение трудоемкости
пользователя (например, инженерные и научные расчеты, формирование регулярной отчетности на предприятиях и др.). Новые (современные) ИТ связаны в первую очередь с информационным обеспечением
процесса управления в режиме реального времени.
15
2. По степени охвата информационными технологиями задач
управления выделяют: электронную обработку данных, автоматизацию
функций управления, поддержку принятия решений, электронный офис,
экспертную поддержку.
В первом случае электронная обработка данных выполняется с использованием ЭВМ без пересмотра методологии и организации процессов управления при решении локальных математических и экономических задач.
Во втором случае при автоматизации управленческой деятельности
вычислительные средства используются для комплексного решения
функциональных задач, формирования регулярной отчетности и работы
в информационно-справочном режиме для подготовки управленческих
решений. К этой же группе относятся ИТ поддержки принятия решений,
которые предусматривают широкое использование экономикоматематических методов и моделей, пакеты прикладных программ
(ППП) для аналитической работы и формирования прогнозов, составления бизнес-планов, обоснованных оценок и выводов по процессам и явлениям производственно-хозяйственной деятельности.
К названной группе относятся и широко внедряемые в настоящее
время ИТ, получившие название электронного офиса и экспертной поддержки принятия решений. Эти два варианта ИТ ориентированы на использование достижений в области новейших подходов к автоматизации работы специалистов и руководителей, создание для них наиболее
благоприятных условий выполнения профессиональных функций, качественного и современного информационного обслуживания за счет автоматизированного набора управленческих процедур, реализуемых в
условиях конкретного рабочего места и офиса в целом.
Электронный офис предусматривает наличие интегрированных
ППП, которые обеспечивают комплексную реализацию задач предметной области. В настоящее время все большее распространение приобретают электронные офисы, сотрудники и оборудование которых могут
находиться в разных помещениях. Необходимость работы с документами, материалами и базами данных (БД) конкретного предприятия или
учреждения в гостинице, транспорте, дома привела к появлению электронных офисов, включенных в соответствующие сети ЭВМ.
ИТ экспертной поддержки принятия решений, составляют основу
автоматизации труда специалистов-аналитиков. Эти работники кроме
аналитических методов и моделей для исследования складывающихся
ситуаций вынуждены использовать накопленный опыт в оценке ситуаций, т.е. сведения, составляющие базу знаний в конкретной предметной
области.
16
3. По классу реализуемых технологических операций ИТ подразделяются: на работу с текстовым и табличным процессорами, графическими объектами, системы управления БД, гипертекстовые и мультимедийные системы.
Технология формирования видеоизображения получила название
компьютерной графики.
Компьютерная графика – это создание, хранение и обработка моделей объектов и их изображений с помощью ЭВМ. Эта технология
проникла в область моделирования различных конструкций (машиностроение, авиационная техника, автомобилестроение, строительная техника и др.), экономического анализа, проникает в рекламную деятельность, делает занимательным досуг. Формируемые и обрабатываемые
с помощью цифрового процессора изображения могут быть демонстрационными и анимационными. К демонстрационным изображениям относят, как правило, коммерческую (деловую) и иллюстрационную графику. Ко второй группе – анимационной графике – принадлежит инженерная и научная графика, а также графика, связанная с рекламой, искусством, играми, когда на экран выводятся не только одиночные изображения, но и последовательность кадров в виде фильма (интерактивный вариант). Интерактивная графика является одним из наиболее прогрессивных направлений среди современных ИТ. Это направление переживает бурное развитие в области появления новых графических
станций и в области специализированных программных средств, позволяющих создавать реалистические объемные движущиеся изображения,
сравнимые по качеству с кадрами видеофильма.
В классическом понимании система управления БД (СУБД) представляет собой набор программ, позволяющих создавать и поддерживать БД в актуальном состоянии.
Обычно любой текст представляется как одна длинная страна символов, которая читается в одном направлении.
Гипертекстовая технология – организация текста в виде иерархической структуры. Материал текста делится на фрагменты. Каждый видимый на экране ЭВМ фрагмент, дополненный многочисленными связями с другими фрагментами, позволяет уточнить информацию об изучаемом объекте и двигаться в одном или нескольких направлениях по
выбранной связи.
Мультимедиа-технология – программно-техническая организация обмена с компьютером текстовой, графической, аудио и видеоинформацией.
4. По типу пользовательского интерфейса можно рассматривать
ИТ с точки зрения возможностей доступа пользователя к информационным и вычислительным ресурсам. Так, пакетная ИТ исключает возмож17
ность пользователя влиять на обработку информации, пока она проводится в автоматическом режиме. В отличие от пакетной диалоговая ИТ
предоставляет пользователю неограниченную возможность взаимодействовать с хранящимися в системе информационными ресурсами в реальном масштабе времени, получая при этом всю необходимую информацию для решения функциональных задач и принятия решений.
Интерфейс сетевой ИТ предоставляет пользователю средства доступа к территориально распределенным информационным и вычислительным ресурсам благодаря развитым средствам связи.
В настоящее время наблюдается тенденция к объединению различных типов ИТ в единый компьютерно-технологический комплекс, который носит название интегрированного. Особое место в нем принадлежит средствам коммуникации, обеспечивающим не только чрезвычайно
широкие технологические возможности автоматизации управленческой
деятельности, но и являющимся основой создания самых разнообразных
сетевых вариантов ИТ: локальных, многоуровневых, распределенных и
глобальных информационно-вычислительных сетей.
5. По обслуживаемым предметным областям ИТ подразделяются разнообразно. Например, только в экономике ими являются, бухгалтерский учет, банковская, налоговая и страховая деятельность и др.
Рассмотрим типичные применения информационных технологий,
применяемых в управленческой системе предприятия:
Бухгалтерский учет – классическая область применения информационных технологий и наиболее часто реализуемая на сегодняшний
день задача. Во-первых, ошибка бухгалтера может стоить очень дорого,
поэтому очевидна выгода использования возможностей автоматизации
бухгалтерии. Во-вторых, задача бухгалтерского учета довольно легко
формализуется, так что разработка систем автоматизации бухгалтерского учета не представляет технически сложной проблемы.
Управление финансовыми потоками. Внедрение информационных
технологий в управление финансовыми потоками также обусловлено
критичностью этой области управления предприятия к ошибкам.
Неправильно построив систему расчетов с поставщиками и потребителями, можно спровоцировать кризис наличности даже при налаженной сети закупки, сбыта и хорошем маркетинге. И наоборот, точно
просчитанные и жестко контролируемые условия финансовых расчетов
могут существенно увеличить оборотные средства фирмы.
Управление складом, ассортиментом, закупками. Можно автоматизировать процесс анализа движения товара.
18
Управление производственным процессом представляет собой
очень трудоемкую задачу. Основными механизмами здесь являются
планирование и оптимальное управление производственным процессом.
Автоматизированное решение подобной задачи дает возможность
грамотно планировать, учитывать затраты, проводить техническую подготовку производства, оперативно управлять процессом выпуска продукции в соответствии с производственной программой и технологией.
Очевидно, что чем крупнее производство, тем большее число бизнес-процессов участвует в создании прибыли, а значит, использование
информационных систем жизненно необходимо.
Управление маркетингом подразумевает сбор и анализ данных
о фирмах-конкурентах, их продукции и ценовой политике, а также моделирование параметров внешнего окружения для определения оптимального уровня цен, прогнозирования прибыли и планирования рекламных кампаний. Решение большинства этих задач могут быть формализованы и представлены в виде информационной системы, позволяющей существенно повысить эффективность управления маркетингом.
Документооборот является очень важным процессом деятельности
любого предприятия. Хорошо отлаженная система учетного документооборота отражает реально происходящую на предприятии текущую
производственную деятельность и дает управленцам возможность воздействовать на нее. Поэтому автоматизация документооборота позволяет повысить эффективность управления.
Оперативное управление предприятием. Информационная технология, решающая задачи оперативного управления предприятием строится на основе базы данных, в которой фиксируется вся возможная информация о предприятии. Информационная система оперативного
управления включает в себя массу программных решений автоматизации бизнес-процессов, имеющих место на конкретном предприятии.
Предоставление информации о фирме. Активное развитие сети Интернет привело к необходимости создания корпоративных серверов для
предоставления различного рода информации о предприятии. Практически каждое уважающее себя предприятие сейчас имеет свой webсервер. Web-сервер предприятия решает ряд задач, из которых можно
выделить две основные:
1) создание имиджа предприятия;
2) максимальная разгрузка справочной службы компании путем
предоставления потенциальным и уже существующим абонентам возможности получения необходимой информации о фирме, предлагаемых
товарах, услугах и ценах.
19
Кроме того, использование web-технологий открывает широкие
перспективы для электронной коммерции и обслуживания покупателей
через Интернет.
2.2. Информационная технология обработки данных
Информационная технология обработки данных предназначена
для решения хорошо структурированных задач, по которым имеются
необходимые входные данные и известны алгоритмы и другие стандартные процедуры их обработки.
Эта технология применяется на уровне исполнительской деятельности персонала невысокой квалификации в целях автоматизации некоторых рутинных постоянно повторяющихся операций управленческого
труда. Поэтому внедрение информационных технологий и систем на
этом уровне существенно повысит производительность труда персонала, освободит его от рутинных операций, возможно, даже приведет к
необходимости сокращения численности работников.
На уровне операционной деятельности решаются следующие задачи:
1) обработка данных об операциях, производимых фирмой;
2) создание периодических контрольных отчетов о состоянии дел
в фирме;
3) получение ответов на всевозможные текущие запросы и оформление их в виде бумажных документов или отчетов.
Пример 2. Рутинные операции.
Операция проверки на соответствие нормативу уровня запасов указанных товаров на складе. При уменьшении уровня запаса выдается заказ поставщику с указанием необходимого количества товара и сроков,
другой пример, операция продажи товаров фирмой, в результате которой формируется выходной документ для покупателя в виде чека или
квитанции.
Пример 3. Контрольный отчет.
Ежедневный отчет о поступлениях и выдачах наличных средств
банком, формируемый в целях контроля баланса наличных средств.
Пример 4. Запросы.
Запрос к базе данных по кадрам, который позволит получить данные о требованиях, предъявляемых к кандидатам на занятие определенной должности.
Основные компоненты
20
Основные компоненты информационной технологии обработки
данных и их характеристики представлены на (рис. 1).
База данных
Обработка данных
Сбор
данных
Группировка
Сортировка
Агрегирование
Данные из
внешней среды
Создание отчетов
Вычисление
переодипо
ческих запросу
Информация для
внутреннего и внешнего
использования
Рис. 1. Основные компоненты
информационной технологии обработки данных
Сбор данных. По мере того как фирма производит продукцию или
услуги, каждое ее действие сопровождается соответствующими записями данных. Обычно действия фирмы, затрагивающие внешнее окружение, выделяются особо как операции, производимые фирмой.
Обработка данных. Для создания из поступающих данных информации, отражающей деятельность фирмы, используют следующие типовые операции:
 классификация или группировка. Первичные данные обычно
имеют вид кодов, состоящих из одного или нескольких символов. Эти
коды, выражающие определенные признаки объектов, используются
для идентификации и группировки записей.
Пример 5. При расчете заработной платы каждая запись включает
в себя код (табельный номер) работника, код подразделения, в котором
он работает, занимаемую должность и т. п. В соответствии с этими кодами можно произвести разные группировки:
 сортировка, с помощью которой упорядочивается последовательность записей;
 вычисления, включающие арифметические и логические операции, эти операции, выполняемые над данными, дают возможность получать новые данные;
 укрупнение или агрегирование, служащее для уменьшения количества данных и реализуемое в форме расчетов итоговых или средних
значений.
21
Хранение данных. Многие данные на уровне операционной деятельности необходимо сохранять для последующего использования либо здесь же, либо на другом уровне. Для их хранения создаются базы
данных.
Создание отчетов (документов). В информационной технологии
обработки данных необходимо создавать документы для руководства
и работников фирмы, а также для внешних партнеров. При этом документы могут создаваться как по запросу или в связи с проведенной
фирмой операцией, так и периодически в конце каждого месяца, квартала или года.
Примеры информационных систем оперативного уровня: бухгалтерская; банковских депозитов; обработки заказов; регистрации авиабилетов; выплаты зарплаты и т.д.
Наибольшее число пакетов прикладных программ создано для бухгалтерского учета. Среди них можно отметить «Турбо-Бухгалтер»,
«Инфо-Бухгалтер», «Парус», «ABACUS» и др.
Типичной информационной системой оперативного уровня является популярная программа «1C: Бухгалтерия» фирмы «1C» для Windows.
Эта программа предоставляет широкие возможности манипулирования
бухгалтерскими данными.
Программа «1С: Бухгалтерия» входит в комплекс программ «1С:
Предприятие», который включает также разделы «1С: Торговля+Склад»
и «1С:Зарплата+Кадры».
Справочное и информационное обеспечение экономической деятельности представлено следующими пакетами программ: «ГАРАНТ»
(налоги, бухучет, аудит, предпринимательство, банковское дело, валютное регулирование, таможенный контроль), «КОНСУЛЬТАНТ+» (налоги, бухучет, аудит, предпринимательство, банковское дело, валютное
регулирование, таможенный контроль).
2.3. Информационная технология управления
Цель информационной технологии управления – удовлетворение
информационных потребностей всех без исключения сотрудников фирмы, имеющих дело с принятием решений. Она может быть полезна на
любом уровне управления.
Для принятия решений на уровне управленческого контроля информация должна быть представлена в агрегированном виде так, чтобы
просматривались тенденции изменения данных, причины возникших
отклонений и возможные решения. На этом этапе решаются следующие
задачи обработки данных:
22
1) оценка планируемого состояния объекта управления;
2) оценка отклонений от планируемого состояния;
3) выявление причин отклонений;
4) анализ возможных решений и действий.
Эта технология ориентирована на работу в среде информационной
системы управления и используется при худшей структурированности
решаемых задач, если их сравнивать с задачами, решаемыми с помощью
информационной технологии обработки данных.
Информационная система управления идеально подходят для удовлетворения сходных информационных потребностей работников различных функциональных подсистем (подразделений) или уровней
управления фирмой. Поставляемая ими информация содержит сведения
о прошлом, настоящем и вероятном будущем фирмы. Эта информация
имеет вид регулярных или специальных управленческих отчетов.
Регулярные отчеты создаются в соответствии с установленным
графиком, определяющим время их создания, например месячный анализ продаж компании.
Специальные отчеты создаются по запросам управленцев или когда в компании произошло что-то незапланированное.
И те, и другие виды отчетов могут иметь форму суммирующих,
сравнительных и чрезвычайных отчетов.
В суммирующих отчетах данные объединены в отдельные группы,
отсортированы и представлены в виде промежуточных и окончательных
итогов по отдельным полям.
Сравнительные отчеты содержат данные, полученные из различных источников или классифицированные по различным признакам
и используемые для целей сравнения.
Чрезвычайные отчеты содержат данные исключительного (чрезвычайного) характера.
Использование отчетов для поддержки управления оказывается
особенно эффективным при реализации так называемого управления по
отклонениям.
Управление по отклонениям предполагает, что главным содержанием получаемых менеджером данных должны являться отклонения состояния хозяйственной деятельности фирмы от некоторых установленных стандартов (например, от ее запланированного состояния).
Основные компоненты
Основные компоненты информационной технологии управления
показаны на рис. 2.
23
Входная информация поступает из систем операционного уровня.
Выходная информация формируется в виде управленческих отчетов
в удобном для принятия решения виде.
Информация из
информационной
системы
операционного
уровня
База данных
Данные по
проведенным
операциям
Нормативные
документы
Формирование управленческих отчетов
(регулярных или специальных)
Суммирующих
Сравнительных
Чрезвычайных
Информация
для менеджера,
принимающего
решение
Рис. 2. Основные компоненты информационной технологии управления
Содержимое базы данных при помощи соответствующего программного обеспечения преобразуется в периодические и специальные
отчеты, поступающие к специалистам, участвующим в принятии решений в организации. База данных, используемая для получения указанной информации, должна состоять из двух элементов:
1) данных, накапливаемых на основе оценки операций, проводимых фирмой;
2) планов, стандартов, бюджетов и других нормативных документов, определяющих планируемое состояние объекта управления (подразделения фирмы).
Пример 6. Экономическая и финансовая деятельность поддерживается следующими пакетами программ:
Программный продукт Audit Expert, разработанный фирмой ПроИнвест-Консалтинг, является эффективным инструментом комплексного анализа финансового состояния и результатов деятельности предприятия. Приведение финансовой отчетности к международному стандарту
позволяет Audit Expert преобразовать данные финансовой отчетности
предприятий за разные годы в аналитические таблицы, соответствующие требованиям Международных стандартов бухгалтерского учета.
Такой подход делает результаты анализа понятными как для российских, так и для иностранных экспертов. Отчеты формируются как на
русском, так и на английском языке.
«Экономический анализ и прогноз деятельности фирмы, организации» (фирма ИНЕК), реализующий функции: экономический анализ дея24
тельности фирмы, предприятия; бизнес-план; технико-экономическое
обоснование возврата кредитов; анализ и отбор вариантов деятельности;
прогноз баланса, потоков денежных средств и готовой продукции.
«Финансовый анализ предприятия» (фирма Инфософт), реализующий функции: общая оценка финансового состояния; анализ финансовой устойчивости; анализ ликвидности баланса; анализ финансовых коэффициентов (ликвидность, маневренность, покрытие, соотношение заемных и собственных средств); анализ коэффициентов деловой активности; расчет и анализ коэффициентов оборачиваемости; оценка рентабельности производства.
В области создания финансово-кредитных систем работают фирмы
«Диа-софт», «Инверсия», R-Style, Программбанк, «Асофт» и др.
2.4. Автоматизация офисной деятельности
Исторически автоматизация началась на производстве и затем распространилась на офис, имея вначале целью лишь автоматизацию рутинной секретарской работы. По мере развития средств коммуникаций
автоматизация офисных технологий заинтересовала специалистов
и управленцев, которые увидели в ней возможность повысить производительность своего труда.
Автоматизация офиса призвана не заменить существующую традиционную систему коммуникации персонала (с ее совещаниями, телефонными звонками и приказами), а лишь дополнить ее. Совместное использование этих систем обеспечивает рациональную автоматизацию
управленческого труда и наилучшее обеспечение управленцев информацией.
Автоматизированный офис привлекателен для менеджеров всех
уровней управления в фирме не только потому, что поддерживает внутрифирменную связь персонала, но также потому, что предоставляет им
новые средства коммуникации с внешним окружением.
Информационная технология автоматизированного офиса – организация и поддержка коммуникационных процессов как внутри организации, так и с внешней средой на базе компьютерных сетей других современных средств передачи и работы с информацией.
Офисные автоматизированные технологии используются управленцами, специалистами, секретарями и конторскими служащими, особенно они привлекательны для группового решения проблем. Они позволяют повысить производительность труда секретарей и конторских
работников и дают им возможность справляться с возрастающим объемом работ. Однако это преимущество является второстепенным по
25
сравнению с возможностью использования автоматизации офиса в качестве инструмента для решения проблем. Улучшение и ускорение принимаемых менеджерами решений в результате их более совершенной
коммуникации способно обеспечить экономический рост фирмы.
В настоящее время известно несколько десятков программных продуктов для компьютеров и некомпьютерных технических средств, обеспечивающих технологию автоматизации офиса: текстовый процессор, табличный процессор, электронная почта, электронный календарь, аудиопочта, компьютерные и телеконференции, видеотекст, хранение изображений, а также специализированные программы управленческой деятельности: ведения документов, контроля за исполнением приказов и т.д.
Автоматизацию офиса дополняют некомпьютерные средства:
аудио и видеоконференции, факсимильная связь, ксерокс и другие средства оргтехники.
Основные компоненты
База данных является обязательным компонентом любой информационной технологии. В автоматизированном офисе база данных концентрирует в себе данные о производственной системе фирмы так же,
как в технологии обработки данных на операционном уровне. Информация в базу данных может также поступать из внешнего окружения
фирмы. Специалисты должны владеть основными технологическими
операциями по работе в среде баз данных.
Пример 7. В базе данных собираются сведения о ежедневных продажах, передаваемые торговыми агентами фирмы на главный компьютер, или сведения о еженедельных поставках сырья. Могут ежедневно
по электронной почте поступать с биржи сведения о курсе валют или
котировках ценных бумаг, в том числе и акций этой фирмы, которые
ежедневно корректируются в соответствующем массиве базы данных.
Информация из базы данных поступает на вход компьютерных
приложений (программ), таких, как текстовый процессор, табличный
процессор, электронная почта, компьютерные конференции и пр. Любое
компьютерное приложение автоматизированного офиса обеспечивает
работникам связь друг с другом и с другими фирмами.
Текстовый процессор – это вид прикладного программного обеспечения, предназначенный для создания и обработки текстовых документов. Таким образом, в распоряжении менеджера имеется эффективный
вид письменной коммуникации. Регулярное получение подготовленных
с помощью текстового процессора писем и докладов дает возможность
менеджеру постоянно оценивать ситуацию на фирме.
26
Электронная почта (E-mail), основываясь на сетевом использовании компьютеров, дает возможность пользователю получать, хранить
и отправлять сообщения своим партнерам по сети. Здесь имеет место
только однонаправленная связь. Это ограничение, по мнению многих
исследователей, не является слишком важным, поскольку в пятидесяти
случаях из ста служебные переговоры по телефону имеют целью лишь
получение информации. Для обеспечения двухсторонней связи придется многократно посылать и принимать сообщения по электронной почте
или воспользоваться другим способом коммуникации.
Электронная почта может предоставлять пользователю различные
возможности в зависимости от используемого программного обеспечения. Чтобы посылаемое сообщение стало доступно всем пользователям
электронной почты, его следует поместить на компьютерную доску
объявлений, при желании можно указать, что это частная корреспонденция. Вы также можете послать отправление с уведомлением о его
получении адресатом.
Аудиопочта – это почта для передачи сообщений голосом. Она
напоминает электронную почту, за исключением того, что вместо набора сообщения на клавиатуре компьютера вы передаете его через телефон. Также по телефону вы получаете присланные сообщения. Система
включает в себя специальное устройство для преобразования аудиосигналов в цифровой код и обратно, а также компьютер для хранения
аудиосообщений в цифровой форме. Аудиопочта также реализуется в
сети. Система будет периодически обзванивать всех указанных сотрудников для передачи им сообщения.
Табличный процессор так же, как и текстовый процессор, является
базовой составляющей информационной культуры любого сотрудника
и автоматизированной офисной технологии. Без знания основ технологии работы в нем невозможно полноценно использовать персональный
компьютер в своей деятельности. Функции современных программных
сред табличных процессоров позволяют выполнять многочисленные
операции над данными, представленными в табличной форме. Объединяя эти операции по общим признакам, можно выделить наиболее многочисленные и применяемые группы технологических операций:
 ввод данных как с клавиатуры, так и из баз данных;
 обработка данных (сортировка, автоматическое формирование
итогов, копирование и перенос данных, различные группы операций по
вычислениям, агрегирование данных и т.д.);
 вывод информации в печатном виде, в виде импортируемых
файлов в другие системы, непосредственно в базу данных;
27
 качественное оформление табличных форм представления данных;
 многоплановое и качественное оформление данных в виде диаграмм и графиков;
 проведение инженерных, финансовых, статистических расчетов;
 проведение математического моделирования и ряд других вспомогательных операций.
Любая современная среда табличного процессора имеет средства
пересылки данных по сети.
Электронный календарь предоставляет еще одну возможность использовать сетевой вариант компьютера для хранения и манипулирования рабочим расписанием управленцев и других работников организации. Менеджер (или его секретарь) устанавливает дату и время встречи
или другого мероприятия, просматривает получившееся расписание,
вносит изменения при помощи клавиатуры. Техническое и программное
обеспечение электронного календаря полностью соответствует аналогичным компонентам электронной почты. Более того, программное
обеспечение календаря часто является составной частью программного
обеспечения электронной почты.
Система дополнительно дает возможность получить доступ также и
к календарям других менеджеров. Она может автоматически согласовать время встречи с их собственными расписаниями.
Использование электронного календаря оказывается особенно эффективным для менеджеров высших уровней управления, рабочие дни
которых расписаны надолго вперед.
Компьютерные конференции используют компьютерные сети для
обмена информацией между участниками группы, решающей определенную проблему. Естественно, круг лиц, имеющих доступ к этой технологии, ограничен. Количество участников компьютерной конференции может быть во много раз больше, чем аудио- и видеоконференций.
Телеконференция включает в себя три типа конференций: аудио,
видео и компьютерную. Видеотекст основан на использовании компьютера для получения отображения текстовых и графических данных на
экране монитора.
Обмен каталогами и ценниками (прайс-листами) своей продукции
между компаниями в форме видеотекста приобретает сейчас все большую популярность. Что же касается компаний, специализирующихся на
продаже видеотекста, то их услуги начинают конкурировать с такой печатной продукцией, как газеты и журналы. Так, во многих странах сейчас можно заказать газету или журнал в форме видеотекста, не говоря
уже о текущих сводках биржевой информации.
28
Хранение изображений. В любой фирме необходимо длительное время хранить большое количество документов. Их число может быть так велико, что хранение даже в форме файлов вызывает серьезные проблемы.
Поэтому возникла идея хранить не сам документ, а его образ (изображение), причем хранить в цифровой форме. Хранение изображений (imaging)
является перспективной офисной технологией и основывается на использовании специального устройства оптического распознавателя образов,
позволяющего преобразовывать изображение документа или фильма в
цифровой вид для дальнейшего хранения во внешней памяти компьютера.
Сохраненное в цифровом формате изображение может быть в любой момент выведено в его реальном виде на экран или принтер. Для хранения
изображений используются оптические диски.
Идея хранения изображений не нова и реализовывалась раньше на
основе микрофильмов. Созданию данной технологии способствовало
появление нового технического решения – оптического диска в комбинации с цифровой записью изображения.
Аудиоконференции используют аудиосвязь для поддержания коммуникаций между территориально удаленными работниками или подразделениями фирмы. Наиболее простым техническим средством реализации аудиоконференций является телефонная связь, оснащенная дополнительными устройствами, дающими возможность участия в разговоре более чем двум участникам. Создание аудиоконференций не требует наличия компьютера, а лишь предполагает использование двухсторонней аудиосвязи между ее участниками. Использование аудиоконференций облегчает принятие решений, оно дешево и удобно.
Видеоконференции предназначены для тех же целей, что и
аудиоконференций, но с применением видеоаппаратуры. Их проведение
также не требует компьютера. В процессе видеоконференции ее участники, удаленные друг от друга на значительное расстояние, могут видеть на телевизионном экране себя и других участников. Одновременно
с телевизионным изображением передается звуковое сопровождение.
Хотя видеоконференции позволяют сократить транспортные и командировочные расходы, большинство фирм применяет их не только по
этой причине. Эти фирмы видят в них возможность привлечь к решению проблем максимальное количество менеджеров и других работников, территориально удаленных от главного офиса.
Факсимильная связь основана на использовании факс-аппарата,
способного читать документ на одном конце коммуникационного канала и воспроизводить его изображение на другом. Факсимильная связь
вносит свой вклад в принятие решений за счет быстрой и легкой рас29
сылки документов участникам группы, решающей определенную проблему, независимо от их географического положения.
Наиболее популярным набором программ для офисной автоматизации является Microsoft Office. Продукты Microsoft Office тесно интегрированы между собой, они имеют более 50% общего программного кода. Это
является основой однотипной работы со всеми приложениями.
2.5. Информационная технология поддержки принятия решений
Системы поддержки принятия решений и соответствующая им информационная технология появились усилиями в основном американских ученых в конце 70-х – начале 80-х гг., чему способствовали широкое распространение персональных компьютеров, стандартных пакетов
прикладных программ, а также успехи в создании систем искусственного интеллекта.
Главной особенностью информационной технологии поддержки
принятия решений является качественно новый метод организации взаимодействия человека и компьютера. Выработка решения, что является
основной целью этой технологии, происходит в результате итерационного процесса, в котором участвуют:
 система поддержки принятия решений (СППР) в роли вычислительного звена и объекта управления;
 лица, принимающего решение, оценивающего полученный результат вычислений на компьютере.
Окончание итерационного процесса происходит по воле человека.
В этом случае можно говорить о способности информационной системы
совместно с пользователем создавать новую информацию для принятия
решений.
Дополнительно к этой особенности информационной технологии
поддержки принятия решений можно указать еще ряд ее отличительных
характеристик:
 ориентация на решение плохо структурированных (формализованных) задач;
 сочетание традиционных методов доступа и обработки компьютерных данных с возможностями математических моделей и методами
решения задач на их основе;
 направленность на непрофессионального пользователя компьютера;
 высокая адаптивность, обеспечивающая возможность приспосабливаться к особенностям имеющегося технического и программного
обеспечения, а также требованиям пользователя.
30
Информационная технология поддержки принятия решений может
использоваться на любом уровне управления. Кроме того, решения,
принимаемые на различных уровнях управления, часто должны координироваться. Поэтому важной функцией и систем, и технологий является
координация лиц, принимающих решения, как на разных уровнях
управления, так и на одном уровне.
Основные компоненты
Рассмотрим структуру системы поддержки принятия решений (рис. 3),
а также функции составляющих ее блоков, которые определяют основные технологические операции.
В состав системы поддержки принятия решений входят три главных компонента: база данных, база моделей и программная подсистема,
которая состоит из системы управления базой данных (СУБД), системы
управления базой моделей (СУБМ) и системы управления интерфейсом
между пользователем и компьютером.
Программная
подсистема управления
Источники данных
информационные
системы
операционного уровня
СУБД
База данных
СУБМ
Система
управления
интерфейсом
Внешние источники
База моделей
стратегических
тактических
оперативных
математических
Прочие внутренние
источники
ЛПР
Рис. 3. Основные компоненты информационной технологии поддержки
принятия решений
База данных играет в информационной технологии поддержки
принятия решений важную роль. Данные могут использоваться непосредственно пользователем для расчетов при помощи математических
моделей. Рассмотрим источники данных и их особенности.
1. Часть данных поступает от информационной системы операционного уровня. Чтобы использовать их эффективно, эти данные должны
быть предварительно обработаны.
2. Помимо данных об операциях фирмы для функционирования системы поддержки принятия решений требуются и другие внутренние данные, например данные о движении персонала, инженерные данные и т.п.,
которые должны быть своевременно собраны, введены и поддержаны.
3. Важное значение, особенно для поддержки принятия решений на
верхних уровнях управления, имеют данные из внешних источников.
31
В числе необходимых внешних данных следует указать данные о конкурентах, национальной и мировой экономике. В отличие от внутренних данных внешние данные обычно приобретаются у специализирующихся на их сборе организаций.
4. В настоящее время широко исследуется вопрос о включении в
базу данных еще одного источника данных – документов, включающих
в себя записи, письма, контракты, приказы и т.п. Если содержание этих
документов будет записано в памяти и затем обработано по некоторым
ключевым характеристикам (поставщикам, потребителям, датам, видам
услуг и др.), то система получит новый мощный источник информации.
База моделей. Целью создания моделей являются описание и оптимизация некоторого объекта или процесса. Использование моделей
обеспечивает проведение анализа в системах поддержки принятия решений. Модели, базируясь на математической интерпретации проблемы, при помощи определенных алгоритмов способствуют нахождению
информации, полезной для принятия правильных решений.
Пример. Модель линейного программирования дает возможность
определить наиболее выгодную производственную программу выпуска
нескольких видов продукции при заданных ограничениях на ресурсы.
Использование моделей в составе информационных систем началось с применения статистических методов и методов финансового анализа, которые реализовывались командами обычных алгоритмических
языков. Позже были созданы специальные языки, позволяющие моделировать ситуации типа «что будет, если?» или «как сделать, чтобы?».
Такие языки, созданные специально для построения моделей, дают возможность построения моделей определенного типа, обеспечивающих
нахождение решения при гибком изменении переменных.
Существует множество типов моделей и способов их классификации, например, по цели использования, области возможных приложений, способу оценки переменных и т. п.
По цели использования модели подразделяются на оптимизационные, связанные с нахождением точек минимума или максимума некоторых показателей (например, управляющие часто хотят знать, какие их
действия ведут к максимизации прибыли или минимизации затрат),
и описательные, описывающие поведение некоторой системы и не
предназначенные для целей управления (оптимизации).
По способу оценки модели классифицируются на детерминированные, использующие оценку переменных одним числом при конкретных
значениях исходных данных, и стохастические, оценивающие переменные несколькими параметрами, так как исходные данные заданы вероятностными характеристиками.
32
Детерминированные модели более популярны, потому что они менее дорогие, их легче строить и использовать. К тому же часто с их помощью получается вполне достаточная информация для принятия решения.
По области возможных приложений модели разбиваются на специализированные, предназначенные для использования только одной системой, и универсальные – для использования несколькими системами.
Специализированные модели более дорогие, они обычно применяются для описания уникальных систем и обладают большей точностью.
В системах поддержки принятия решения база моделей состоит из
стратегических, тактических и оперативных моделей, а также математических моделей в виде совокупности модельных блоков, модулей и
процедур: используемых как элементы для их построения.
Стратегические модели используются на высших уровнях управления для установления целей организации, объемов ресурсов, необходимых для их достижения, а также политики приобретения и использования этих ресурсов. Они могут быть также полезны при выборе вариантов
размещения предприятий, прогнозировании политики конкурентов и т.п.
Для стратегических моделей характерны значительная широта охвата,
множество переменных, представление данных в сжатой агрегированной
форме. Часто эти данные базируются на внешних источниках и могут
иметь субъективный характер. Горизонт планирования в стратегических
моделях, как правило, измеряется в годах. Эти модели обычно детерминированные, описательные, специализированные для использования на
одной определенной фирме.
Тактические модели применяются управляющими (менеджерами)
среднего уровня для распределения и контроля использования имеющихся ресурсов. Среди возможных сфер их использования следует указать: финансовое планирование, планирование требований к работникам, планирование увеличения продаж, построение схем компоновки
предприятий. Эти модели применимы обычно лишь к отдельным частям
фирмы (например, к системе производства и сбыта) и могут также
включать в себя агрегированные показатели. Временной горизонт, охватываемый тактическими моделями, – от одного месяца до двух лет.
Здесь также могут потребоваться данные из внешних источников, но
основное внимание при реализации данных моделей должно быть уделено внутренним данным фирмы. Обычно тактические модели реализуются как детерминированные, оптимизационные и универсальные.
Оперативные модели используются на низших уровнях управления
для поддержки принятия оперативных решений с горизонтом, измеряемым днями и неделями. Возможные применения этих моделей включают
33
в себя ведение дебиторских счетов и кредитных расчетов, календарное
производственное планирование, управление запасами и т.д. Оперативные модели обычно используют для расчетов внутрифирменные данные.
Они, как правило, детерминированные, оптимизационные и универсальные (т.е. могут быть использованы в различных организациях).
Математические модели состоят из совокупности модельных блоков, модулей и процедур, реализующих математические методы. Сюда
могут входить процедуры линейного программирования, статистического анализа временных рядов, регрессионного анализа и т. п. – от
простейших процедур до сложных продуктов программного приложения (ППП).
Пример 8. Программный продукт Forecast Expert, также разработанный фирмой Про-Инвест-Консалтинг, представляет собой универсальную систему прикладного прогнозирования. Forecast Expert предназначен для построения прогноза временного ряда. В качестве прогнозируемых могут выступать параметры как сфер производства и обращения
– цены мирового рынка, спрос на изделия, объемы закупок комплектующих и производственных запасов при увеличении объема производства, цены комплектующих, параметры технологических процессов, так
и финансового рынка – цены покупки и продажи акций, деловая активность участников рынка, объем предложений свободных средств инвесторами и многое другое.
Применение Forecast Expert позволяет проанализировать имеющиеся данные и построить прогноз с указанием границ доверительного интервала (при заданной вероятности прогноза) на период времени. Модель определяет степень влияния сезонных факторов и учитывает их
при построении прогноза.
2.6. Экспертные системы
Наибольший прогресс среди компьютерных информационных систем отмечен в области разработки экспертных систем (ЭС), основанных на использовании элементов искусственного интеллекта. Экспертные системы дают возможность менеджеру или специалисту получать
консультации экспертов по любым проблемам, на основе которых этими системами накоплены знания.
Под искусственным интеллектом (ИИ) обычно понимают
способности компьютерных систем к таким действиям, которые назывались бы интеллектуальными, если бы исходили от человека. Чаще
всего здесь имеются в виду способности, связанные с человеческим
мышлением. Работы в области искусственного интеллекта не ограничи34
ваются экспертными системами. Они также включают в себя создание
роботов, систем, моделирующих нервную систему человека, его слух,
зрение, обоняние, способность к обучению.
Решение специальных задач требует специальных знаний. Главная
идея использования технологии экспертных систем заключается в том,
чтобы получить от эксперта его знания и, загрузив их в память компьютера, использовать всякий раз, когда в этом возникнет необходимость.
Являясь одним из основных приложений искусственного интеллекта,
экспертные системы представляют собой компьютерные программы,
трансформирующие опыт экспертов в какой-либо области знаний
в форму эвристических правил. На практике ЭС используются прежде
всего как системы-советчики в тех ситуациях, где специалист сомневается в выборе правильного решения. Экспертные знания, хранящиеся
в памяти системы, более глубокие и полные, чем соответствующие знания пользователя.
ЭС находят распространение при решении задач с принятием решений в условиях неопределенности (неполноты) для распознавания
образов, в прогнозировании, диагностике, планировании, управлении,
конструировании и т. д.
Типичная экспертная система состоит из решателя (интерпретатора), БД (базы данных), БЗ (базы знаний), компонентов приобретения
знаний, объяснительного и диалогового компонентов.
БД предназначена для хранения исходных и промежуточных данных, используемых для решения задач, фактографических данных.
Решатель, используя исходные данные из БД и знания из Б3, обеспечивает решение задач для конкретных ситуаций.
Компонент приобретения знаний автоматизирует процесс наполнения Б3.
Объяснительный компонент объясняет, как система получила решение задачи (или почему не получила) и какие знания она при этом
использовала. Диалоговый компонент обеспечивает диалог между экспертной системой и пользователем в процессе решения задачи и приобретения знаний.
Экспертные системы создаются для решения разного рода задач
профессиональной деятельности человека, и в зависимости от этого выполняют разные функции.
2.6.1. Типы экспертных систем
Можно назвать несколько типов современных экспертных систем.
35
1. Экспертные системы первого поколения. Предназначены для
решения хорошо структурированных задач, требующих небольшого
объема эмпирических знаний. Сюда относятся классификационные задачи и задачи выбора из имеющегося набора вариантов.
2. Оболочки ЭС. Имеют механизм ввода-вывода, но Б3 пустая. Требуется настройка на конкретную предметную область. Знания приобретаются в процессе функционирования ЭС, способной к самообучению.
3. Гибридные ЭС. Предназначены для решения различных задач
с использованием Б3. Это задачи с использованием методов системного
анализа, исследования операций, математической статистики, обработки информации. Пользователь имеет доступ к объективизированным
знаниям, содержащимся в Б3 и пакетах прикладных программ.
4. Сетевые ЭС. Между собой связаны несколько экспертных систем. Результаты решения одной из них являются исходными данными
для другой системы. Эффективны при распределенной обработке информации.
При разработке экспертных систем должны участвовать: эксперт
той предметной области, задачи которой будет решать система; инженер по знаниям – специалист по разработкам систем; программист –
специалист по разработке инструментальных средств. Эксперт определяет знания, т. е. описывает предметную область в виде совокупности
данных и правил, обеспечивает полноту и правильность введенных
в экспертную систему знаний. Данные определяют объекты, их характеристики и значения. Правила указывают на способы манипулирования данными.
Инженер по знаниям помогает эксперту: выявить и структурировать знания, необходимые для функционирования экспертной системы;
осуществить выбор инструментальных средств, которые наиболее эффективны для решения задач в данной предметной области; указать
способы представления знаний. Программист разрабатывает инструментальную среду, включающую все компоненты экспертной системы,
производит ее сопряжение с другими существующими системами.
2.6.2. Виды знаний
1. Понятийные знания. Это набор понятий, которыми пользуется
ЛПР, работающий в некоторой области интеллектуальной, управляющей деятельности, а также свойства и взаимосвязи этих понятий. Эта
категория знаний в основном вырабатывается в сфере фундаментальных
наук.
36
2. Конструктивные знания (близкие к понятийным знаниям). Это
знания о структуре и взаимодействии частей различных объектов. Они
в основном составляют содержание технических, прикладных наук.
К примеру, если взять программирование, то понятийное знание – знание о структуре операторов, данных, языка программирования. Конструктивное знание – это знание об устройстве конкретных программ, о
типичных алгоритмах.
3. Процедурные знания. К ним относятся методические правила
решения различных задач, с которыми ЛПР уже сталкивался и их решать. В производственной сфере аналогом процедурных знаний являются технологические знания различных производственных процессов.
Процедурные знания – это опыт интеллектуальной, управляющей деятельности ЛПР в определенной предметной области.
4. Фактографические знания. Они включают в себя количественные и качественные характеристики конкретных объектов, явлений и их
элементов. Их накопление ведется в виде таблиц, справочников, файлов, БД.
2.6.3. Способы формализованного представления знаний в БЗ
Формализованное представление знаний в информационных технологиях управления в виде интеллектуальных систем является первичным. Рассмотрим распространенные способы их формализованного
представления.
1. Представление знаний продукционными правилами. Продукционные правила представляют знания в форме ЕСЛИ – ТО. Системы, использующие представления знаний продукционными правилами, называются продукционными. Это самый наглядный и простой способ.
В таких системах представления знаний имеются средства, позволяющие использовать в данных и правилах нечеткую информацию с определенной вероятностью, называемой фактором уверенности.
2. Логика предикатов (раздел математической логики). Константы
и переменные определяют отдельные объекты и обозначаются буквами
или набором букв (U, V, W, X, Y). Последовательность из n констант или
переменных (n – конечно, n>1) называется функцией. Атомарным предикатом называется последовательность из n сущностей и понятий,
описанных константами, переменными или функциями.
Предикат принимает одно из двух значений: истина или ложь. Предикат, в котором все переменные, константы и функции связаны между
собой, называется предложением. Предложения используются для
представления знаний. Логика предикатов обеспечивает высокий уро37
вень модульности знаний (представляет их как единое целое в определенной предметной области) и позволяет выяснить, имеются или отсутствуют противоречия между новыми и уже существующими знаниями.
Но чрезмерный уровень формализации представления знаний, трудность их прочтения снижают эффективность обработки. Кроме этого, в
логике предикатов все отношения описываются предикатами, что
не позволяет при компьютерной обработке полностью отразить свойства структуры данных. Для программирования используется язык логического типа ПРОЛОГ.
3. Модель доски объявлений. Модель представляется как совокупность отдельных проблем, каждая из которых составляет отдельное
множество знаний. Все множества модели используются согласованно
как единое целое и управляются через общую рабочую область памяти,
называемую доской объявлений. Отдельное множество знаний называется источником знаний (ИЗ), и каждый ИЗ строится как продукционная
система.
4. Семантические сети. Знания можно рассматривать как отношения между понятиями и сущностями, являющимися конкретными объектами реального мира. Понятия и отношения можно представить в виде семантической сети, состоящей из вершин и дуг. В вершинах располагаются понятия, а направленные связи между вершинами соответствуют различного рода отношениям между этими понятиями. Семантические сети могут быть выполнены обучаемыми и растущими, что
означает возможность автоматического добавления в сеть новых узлов
по мере появления в опыте ее использования новых понятий, а также
увеличение весовых коэффициентов, соответствующих дугам. В процессе ее обучения между существующими узлами также могут устанавливаться дополнительные связи.
5. Фреймовые системы. Фреймы рассматриваются как структура
описания отдельной сущности или понятия. Они могут быть в виде их
совокупностей, представляемых как отдельное множество знаний, относящихся к одному объекту. Каждый фрейм состоит из множества элементов, называемых слотами, которые в свою очередь представляются
определенной структурой данных. Каждый фрейм и слот имеют имя,
единственное во всей фреймовой системе. В значение слота содержит
конкретную информацию.
Фреймы не связаны в сеть. Управление большим числом источников знаний выполняется самим пользователем путем вызова нужных
процедур (в других способах это выполняет сама система). Для поиска
нужного объекта задаются значения слотов. Если данные удовлетворяют условиям всех слотов, то объект считается найденным.
38
2.6.4. Области применения ЭС
ЭС в задачах интерпретации, как правило, используют информацию от датчиков для описания ситуации. В качестве примера приведем
интерпретацию показаний измерительных приборов на химическом заводе для определения состояния процесса. Интерпретирующие системы
имеют дело не с четкими символьными представлениями проблемной
ситуации, а непосредственно с реальными данными. Они сталкиваются
с затруднениями, которых нет у систем других типов, потому что им
приходится обрабатывать информацию зашумленную, недостаточную,
неполную, ненадежную или ошибочную. Им необходимы специальные
методы регистрации характеристик непрерывных потоков данных, сигналов или изображений и методы их символьного представления.
Интерпретирующие ЭС могут обработать разнообразные виды
данных. Например, системы анализа сцен и распознавания речи, используя естественную информацию, – в одном случае визуальные образы, в другом – звуковые сигналы, – анализируют их характеристики
и понимают их смысл. Интерпретация в области химии использует данные дифракции рентгеновских лучей, спектрального анализа или ядерно-магнитного резонанса для вывода химической структуры веществ.
Интерпретирующая система в геологии использует каротажное зондирование – измерение проводимости горных пород в буровых скважинах
и вокруг них, – чтобы определить подповерхностные геологические
структуры. Медицинские интерпретирующие системы используют показания следящих систем (например, значения пульса, кровяного давления), чтобы установить диагноз или тяжесть заболевания. Наконец,
в военном деле интерпретирующие системы используют данные от радаров, радиосвязи и сонарных устройств, чтобы оценить ситуацию и
идентифицировать цели.
ЭС в задачах прогнозирования определяют вероятные последствия
заданных ситуаций. Примерами служат прогноз ущерба урожаю от некоторого вида вредных насекомых, оценивание спроса на нефть на мировом рынке в зависимости от складывающейся геополитической ситуации и прогнозирование места возникновения следующего вооруженного конфликта на основании данных разведки. Системы прогнозирования
иногда используют имитационное моделирование, т. е. программы, которые отражают причинно-следственные взаимосвязи в реальном мире,
чтобы сгенерировать ситуации или сценарии, которые могут возникнуть
при тех или иных входных данных. Эти возможные ситуации вместе со
знаниями о процессах, порождающих эти ситуации, образуют предпосылки для прогноза.
39
ЭС в задачах диагностики используют описания ситуаций, характеристики поведения или знания о конструкции компонент, чтобы установить вероятные причины неправильного функционирования диагностируемой системы. Примерами служат: определение причин заболевания по симптомам, наблюдаемым у пациентов; локализация неисправностей в электронных схемах и определение неисправных компонент
в системе охлаждения ядерных реакторов. Диагностические системы
часто являются консультантами, которые не только ставят диагноз, но
также помогают в отладке. Они могут взаимодействовать с пользователем, чтобы оказать помощь при поиске неисправностей, а затем предложить порядок действий по их устранению. Медицина представляется
вполне естественной областью для диагностирования, и действительно,
в медицинской области было разработано больше диагностических систем, чем в любой другой отдельно взятой предметной области.
ЭС, применяемые в области проектирования, разрабатывают конфигурации объектов с учетом набора ограничений, присущих проблеме.
Учитывая то, что проектирование столь тесно связано с планированием,
многие проектирующие системы содержат механизмы разработки и
уточнения планов для достижения желаемого проекта. Наиболее часто
встречающиеся области применения планирующих ЭС – химия, электроника и военное дело.
ЭС, которые используются для решения задач наблюдения, сравнивают действительное поведение с ожидаемым поведением системы.
Примерами могут служить слежение за показаниями измерительных
приборов в ядерных реакторах с целью обнаружения аварийных ситуаций или оценку данных мониторинга больных, помещенных в блоки интенсивной терапии. Наблюдающие ЭС подыскивают наблюдаемое поведение, которое подтверждает их ожидания относительно нормального
поведения или их предположения о возможных отклонениях. Наблюдающие ЭС по самой своей природе должны работать в режиме реального
времени.
ЭС в задачах отладки находят рецепты для исправления неправильного поведения устройств. Примерами могут служить настройка
компьютерной системы с целью преодолеть некоторый вид затруднений
в ее работе; выбор типа обслуживания, необходимого для устранения
неисправностей в телефонном кабеле; выбор ремонтной операции для
исправления известной неисправности в насосе.
ЭС в задачах ремонта аппаратуры следуют плану, который предписывает некоторые рецепты восстановления. Примером является
настройка масс-спектрометра, т. е. установка ручек регулировки прибора в положение, обеспечивающее достижение оптимальной чувстви40
тельности, совместимой с правильным отношением величин пиков и их
формы. Пока что было разработано очень мало ремонтных ЭС отчасти
потому, что необходимость фактического выполнения ремонтных процедур на объектах реального мира дополнительно усложняет задачу.
Ремонтным системам также необходимы диагностирующие, отлаживающие и планирующие процедуры для производства ремонта.
ЭС в области обучения подвергают диагностике, «отладке» и исправлению («ремонту») поведение обучаемого. В качестве примеров
приведем обучение студентов отысканию неисправностей в электрических цепях, обучение военных моряков обращению с двигателем на корабле и обучение студентов-медиков выбору антимикробной терапии.
Обучающие системы создают модель того, что обучающийся знает
и как он эти знания применяет к решению проблемы. Системы диагностируют и указывают обучающемуся его ошибки, анализируя модель
и строя планы исправлений указанных ошибок. Они исправляют поведение обучающихся, выполняя эти планы с помощью непосредственных
указаний обучающимся.
ЭС в задачах управления адаптивно руководят поведением системы
в целом. Примерами служат управление производством и распределением компьютерных систем или контроль за состоянием больных при
интенсивной терапии. Управляющие ЭС должны включать наблюдающие компоненты, чтобы отслеживать поведение объекта на протяжении
времени, но они могут нуждаться также и в других компонентах для
выполнения любых или всех из уже рассмотренных типов задач: интерпретации, прогнозирования, диагностики, проектирования, планирования, отладки, ремонта и обучения. Типичная комбинация задач состоит
из наблюдения, диагностики, отладки, планирования и прогноза.
2.7. Вопросы для самоконтроля
1. Сколько признаков классификации видов информационных технологий?
2. Какой компонент информационной технологии обработки данных осуществляет хранение данных?
3. Какой компонент информационной технологии управления содержит данные исключительного характера?
4. Программа, осуществляющая офисную автоматизацию.
5. По какому признаку классификации выделяют детерминированные и стохастические модели?
41
6. Виды информационной технологии, которые разделяются по
признаку «тип пользовательского интерфейса».
7. Задачи, при решении которых используются информационные
технологии обработки данных.
8. Компоненты, содержащиеся в базе данных информационной системы управления.
9. Последовательность выполнения этапов при работе информационной технологии обработки данных.
10. Цель информационной технологии управления.
3. ОСНОВНЫЕ ЭЛЕМЕНТЫ ИНФОРМАЦИОННЫХ
ТЕХНОЛОГИЙ
3.1. Интернет и его возможности
Новым явлением в жизни общества в конце XX века стало создание
глобальной международной компьютерной сети Интернет. Эта компьютерная сеть для многих людей стала средством оперативного получения самой различной информации – электронных копий газет, писем,
журналов, книг, программ, игр и информационных новостей.
Передача и получение информации с помощью сети Интернет за
рубежом стали самым массовым применением персональных компьютеров. Оперативное получение разнообразной информации дома и на
работе с помощью персональных ЭВМ становится доступным после
подсоединения их к телефонной или телекоммуникационной сети.
Вычислительная сеть – это объединение ЭВМ, в которой каждый
компьютер может передать информацию любому другому компьютеру,
подключенному к сети. Главной возможностью вычислительных сетей
является доступ к информации, документам и информационным ресурсам, хранящихся на компьютерах, подключенных к сети.
Информационные ресурсы – совокупность документов в архивах,
библиотеках, фондах, банках данных и других информационных систе42
мах. В вычислительных сетях информационные ресурсы, хранящиеся в
ЭВМ, могут быть доступны с помощью других персональных компьютеров, подключенных к этой сети.
По количеству объединяемых компьютеров сети подразделяются
на локальные, корпоративные, региональные и глобальные. Соответственно можно говорить о корпоративных, региональных и глобальных
информационных ресурсах, доступных в этих сетях ЭВМ.
Локальная вычислительная сеть – это сеть, связывающая компьютеры в одном или нескольких соседних помещениях. Примерами локальных сетей являются кабинеты учебных компьютеров в школах, вузах, офисах и лабораториях.
Ведущую роль в организации вычислительных систем и сетей играют серверы. Серверы – это мощные компьютеры с большой дисковой
памятью, используемые для хранения файлов и программ. Серверы
применяются для накопления и передачи общедоступной информации
в вычислительных сетях и работают обычно 24 часа в сутки.
При этом на уровне локальных сетей возникают вопросы организации надежного хранения информации и ее защиты от несанкционированного доступа. Для ведения, надежного хранения и защиты информации в сети привлекаются специалисты, профессия которых получила
название – сетевые администраторы.
Региональная вычислительная сеть объединяет компьютеры в пределах определенного региона. Примерами региональных сетей являются
корпоративные сети ЭВМ в банках и корпорациях, а также в промышленных и коммерческих предприятиях.
Для подключения к региональной сети персональных компьютеров
необходимы специальные средства связи – каналы связи, модемы и сетевое программное обеспечение. В качестве средств телекоммуникаций
между компьютерами используются обычные телефонные каналы,
а также специальные оптоволоконные линии связи либо спутниковые
каналы радиосвязи.
Модемы – это устройства связи ЭВМ с другими компьютерами с
использованием каналов связи. Функции модемов состоят в преобразовании данных, представляемых в ЭВМ в виде 0 и 1, в телефонные сигналы с двумя несущими частотами. Основной характеристикой модема
является скорость передачи данных, измеряемой в бодах.
Скорость, наиболее распространенных современных модемов составляет 2400, 9600, 14400, 19200, 22800 и 33600 Бод. Для электронной
почты можно использовать любой из этих модемов. Для работы в сети
Интернет требуются модемы со скоростью передачи не ниже 19200 Бод.
43
На уровне регионов и крупных корпораций вопросы защиты и
надежного ведения информации, образующей корпоративные информационные ресурсы, является серьезной проблемой. Ошибки в проектировании и эксплуатации корпоративных информационно-вычислительных
сетей могут привести к серьезному экономическому ущербу.
Глобальная сеть объединяет компьютеры, расположенные в различных странах на различных континентах земного шара. Пример глобальной сети ЭВМ – международная компьютерная сеть Интернет.
Для подключения к сети Интернет используются специальные сетевые
программы.
Сетевые программы – это программы получения доступа к информации, информационным ресурсам и информационным системам, используемым в вычислительной сети. Примерами таких программ является сетевые пакеты Internet Explourer фирмы Microsoft и Netscape
Navigator фирмы Netscape, созданные для работы на компьютерах IBM
PC с операционной системой Windows.
Применительно к сети Интернет используется понятие глобальных
информационных ресурсов, доступных из любой точки нашей планеты.
Развитие сети Интернет является базой для организации хранения
и доступа ко всей информации, накапливаемой человеческим обществом.
Основой современной информационной компьютерной индустрии
и сети Интернет является всемирная распределенная сеть электронных
библиотек WWW – World Wide Web. Электронные библиотеки в этой
сети размещены на специальных серверах.
Электронные библиотеки в сети Интернет организуются с помощью гипертекстов. В форме гипертекстов могут храниться самые различные документы, газеты, журналы, каталоги, прейскуранты, а также
всевозможные информационные и информационно-поисковые системы
и сетевые программы – сетевые компьютерные игры, сетевые электронные учебники, сетевые справочники и энциклопедии.
Гипертекст – это совокупность страниц с текстами, картинками
и ссылками на другие страницы. Ссылки могут делаться как на страницы данного гипертекста, так и на страницы любого другого гипертекста,
хранящегося в данном компьютере либо даже на любом другом файлсервере, зарегистрированном в сети Интернет.
Для доступа к электронным библиотекам используются специальные
гипертекстовые имена, выполняющие роль адреса сервера в сети. Коды,
указываемые в адресах, утверждены международным стандартом.
Пример 9. Гипертекстовое имя в сети Интернет сервера виртуального учебного центра, в котором установлена электронная копия учеб44
ника по информатике вместе с системой контрольных тестов: www.
prometеy. ankey.ru.
В рассматриваемом примере имя сервера состоит из четырех частей. Первое слово www – это признак подключения сервера к сети Интернет. Второе имя prometey – это имя системы дистанционного обучения Прометей. Третье имя ankey – это имя корпорации Анкей, которой
принадлежит данный сервер. Последнее четвертое слово ru – это идентификатор сектора России в сети Интернет.
Примерами электронных библиотек в сети Интернет могут служить
серверы различных центральных газет, журналов – сервер газеты Известия, сервер журнала Итоги, сервер радиостанции Русское Радио.
В Интернете Вы можете найти несколько игровых серверов, а также серверы Центров дистанционного обучения ведущих московских
и российских вузов – МЭСИ (Московский государственный университет Экономики, Статистики и Информатики) и МИЭМ (Московский
Институт Электроники и Математики).
Электронная почта – это способ передачи писем с помощью персональных компьютеров и средств телекоммуникаций. В качестве писем по электронной почте могут пересылаться самые различные текстовые файлы, изображения, программы и наборы данных.
Текст письма для отправки его по электронной почте должен быть
подготовлен на компьютере в виде текстового файла и оформлен в соответствии со стандартами Интернет. Общепринятый формат послания
состоит из заголовка и непосредственно сообщения, роль которого может играть любой текстовый файл, рисунок или программа.
Стандартный заголовок электронного письма выглядит следующим
образом:
From:
адрес отправителя
То:
адрес получателя
Сс:
другие адреса отправки
Subject:
тема сообщения
Пример 10. Почтового адреса в сети Интерент:
vitkay@mail.ru
Первое имя vitkay – это идентификатор владельца электронного
почтового ящика. Второе имя – адрес почтового сервера mail.ru. Здесь
mail – идентификатор отечественной почтовой системы Mail-Ru, в которой любой из Вас может открыть (или уже открыл) себе бесплатный
электронный почтовый ящик.
Для поиска информации в сети Интернет в нашей стране и за рубежом используется несколько информационно-поисковых систем. Среди
45
отечественных систем наиболее известны системы Апорт, Ремблер
и Яндекс, зарубежных – Altavista, Infoseek, Yahoo.
Поиск информации в сети Интернет этими системами производится
по запросам. Простейшие запросы состоят из одного или нескольких
слов на русском или английском языках, либо на другом языке, на котором записаны искомые документы.
Результатом поиска в сети Интернет являются перечни названий
и адресов гипертекстов, отвечающих заданным запросам. Например, на
запрос «Кайман информатика» поисковые системы предоставят список
всех гипертекстов, доступных в Интернете и в которых указаны слова
«Каймин» и «информатика». В том числе в этом списке будут указаны
адреса серверов, на которых размещены сетевые электронные учебники
по информатике.
Указанные поисковые системы еженедельно просматривают все
серверы в сети Интернет и индексируют все найденные гипертексты,
запоминая их адреса и встречающиеся в них ключевые слова и словосочетания. По этой причине любая информация, выставленная в сети Интернет, может быть найдена по интересующим нас запросам.
3.2. Электронные таблицы
Персональные компьютеры служат удобным средством вычислений и расчетов экономического и математического содержания. В этом
смысле компьютеры намного эффективнее бухгалтерских счетов
и калькуляторов, которые требуют больших затрат ручного труда.
Наиболее удобным средством проведения расчетов на персональных
компьютерах являются электронные таблицы. В этих программах все исходные и расчетные данные отображаются на экране в форме таблиц.
Электронные таблицы – программы для выполнения и хранения
различных расчетов и калькуляций на компьютерах. На персональных
компьютерах IBM PC наибольшее распространение получили электронные таблицы Excel.
Калькуляция – это таблица с определенным набором надписей,
формул и данных, используемых для расчетов. В качестве примера рассмотрим калькуляцию закупки сладостей к дню рождения.
Основные возможности электронных таблиц на компьютерах:
1) автоматический перерасчет калькуляций;
2) хранение и поиск калькуляций в памяти ЭВМ;
3) вывод калькуляций на печать;
4) обновление и ввод новых калькуляций.
46
Перерасчет калькуляций в электронных таблицах производится автоматически сразу же после обновления на экране любых исходных
данных. В этом заключается основное свойство и удобство электронных
таблиц: один раз составленная калькуляция может использоваться многократно для выполнения расчетов при различных исходных данных.
Хранение калькуляций в электронных таблицах обычно проводится
на магнитных дисках. Это позволяет повторно использовать их для новых расчетов и перерасчетов. Бумажная копия любой из электронных
таблиц со всеми ее исходными и расчетными данными может быть выведена на печать.
Ввод калькуляций, состоящих из надписей, числовых данных
и формул, проводится по ячейкам. Для этого к необходимой ячейке
подводится курсор с помощью мышки или клавиш стрелок, а затем
нажимается клавиша Enter на клавиатуре либо клавиша на мышке.
Копирование и перенос надписей, данных, формул и целых блоков
таблиц позволяет достаточно быстро создавать новые калькуляции из
уже имеющихся в памяти компьютера. Многие электронные таблицы
допускают изменение размеров строк или столбцов таблиц для их более
наглядного и красивого расположения.
Числовые данные могут быть целыми и вещественный числами.
Пример 11. Запись чисел в электронных таблицах:
0, 1, 2, 3, ..., –1, –2, –3, ... – целые числа;
0.1, 1.5, 12.87, 0.002, ... – вещественные числа.
Обратите внимание: для записи дробной части обычно применяется
точка, а не запятая. Для записи десятичного порядка используется символ Е:
1.2Е6  1200000
-.5Е-4  –0.0005
Расчетные формулы в электронных таблицах образуются из числовых значений, обозначений элементарных и специальных функций
и имен ячеек электронной таблицы: А1, А2, A3, В1, В2, С1 и т.д.
Запись арифметических операций в формулах и числовых выражениях в электронных таблицах выполняется с помощью следующих знаков:
+
– сложение
2+2
А2+В2+С2
–
– вычитание
6–8
А1–В1
*
– умножение
7*8
2*А2*С2
/
– деление
2/3
А1/(2/С2)


– возведение в степень
53
A32
47
Математические функции в электронных таблицах имеют следующие обозначения:
sin(x) – синус
cos(x) – косинус
tan(x) – тангенс
atan(x) – арктангенс
ехр(х) – экспонента
ln(x) – натуральный логарифм
sqr(x) – квадратный корень
3.3. Постановка и решение задач
Решение задач состоит в получении определенных результатов.
Это относится к работе, жизни или учебе: сдача экзаменов, написание
сочинений, выполнение чертежей, изготовление приборов, инструментов и машин, сбор урожая, накопление капитала и т. п. – все это получение или достижение результатов.
Ключом к любой задаче является способ решения, дающий необходимые результаты. Знание способов решения и умение их применять
для решения практических задач – важнейшая характеристика профессиональной квалификации.
Результаты правильные, если они отвечают требованиям решаемых
задач. Однако если требования сформулированы недостаточно четко, то
нельзя однозначно судить о правильности полученных результатов.
Результаты неправильные, если они противоречат заданным требованиям. Как однозначно определить правильность результатов? Ответ: для этого необходима точная постановка задач с четким выделением требований.
Для решения задач необходимо определение:
1) что требуется?
2) что дано?
Ответ на первый вопрос – что требуется? – точное определение
требуемых результатов. При отсутствии требований к конечным целям
оценка полученных результатов может быть неоднозначной.
Ответ на второй вопрос – что дано? – определение исходных условий, при которых требуется получить результаты. Неоднозначность
в определении исходных условий может привести к получению неправильных результатов.
Пример 12. Рассмотрим задачу: «Добраться домой». Исходным
будет место, где мы находимся, а требуемым – свой дом. Способов решения этой задачи может быть много, но правильные среди них только
те, которые обеспечат достижение своего дома.
48
Пример 13. Рассмотрим задачу. «Решение уравнения 2  х + 1 = 0».
Здесь требуемым является корень уравнения. В качестве решения уравнения можно рассмотреть два числа х1 = 1 и х2 = –1/2. Правильным из
них является то решение, при подстановке которого уравнение превратится в тождество.
Подстановка первого числа х1 = 1 в уравнение дает противоречие
2.(1) + 1 = 3  0.
Следовательно, значение х1 = 1 – это неправильное решение, так
как оно противоречит требованиям и не может быть корнем уравнения.
Подстановка второго решения х2 = –1/2 в уравнение дает тождество
2.(–1/2) + 1 = 0.
Таким образом значение х2 = –1/2 удовлетворяет исходному уравнению и является правильным решением.
Способ решения правильный, если он дает правильные результаты.
Для определения правильности способов решения задач необходима
четкая постановка решаемых задач, в которых должны быть строго
определены требуемые результаты.
Способ – неправильный, если его применение приводит к получению неправильных результатов либо вовсе не дает никаких результатов.
Использование неправильных способов решения может вообще не давать результатов.
Способы могут быть частными и общими. Частные способы дают
конкретные решения частных задач. Частный способ может оказаться
неприменимым для решения сходных задач, отличающихся деталями.
Общий способ может давать решения для целого класса задач, отвечающих определенным исходным условиям и отличающихся друг от
друга конкретными исходными данными.
Так, для рассмотренной задачи решения уравнения 2 – х + 1 = 0
можно использовать общий способ решения линейных уравнений вида
а  х + b = 0:
х0 = –b/а.
Применение этой формулы при а = 2, b = 1 дает решение х0 = –
b/а = –1/2, которое нам уже известно как правильное.
В правильности общего способа решения уравнений вида а  х + b = 0
можно убедиться подстановкой формулы х0 = –b/а в само уравнение:
а  х + b  а  (–b/а) + b  –b + b  0.
49
При постановке обобщенных задач кроме выделения требуемого
необходимо определить исходные условия, при которых должно быть получено требуемое. В такой постановке задач должно быть определено, какие исходные условия будут считаться допустимыми, а какие – нет.
Постановка задачи:
1. Что дано?
2. Что требуется?
3. Что допустимо?
Приведем полное описание постановки рассмотренной выше задачи:
Задача: решить уравнение а – х + b = 0.
Требуется найти: х – корень уравнения.
Дано: а, b – коэффициенты уравнения.
При: а  0.
Уравнения данного типа можно решать в общем виде с помощью
электронных таблиц, применяя описанный общий метод решения и следующую калькуляцию, представленную в табл. 1.
Таблица 1
Решение задачи
A
1
2
3
2
корень:
B
уравнение:
*х+
х = -0.5
C
D
1
=0
с расчетной формулой С3 = –С2/ А2.
Особую ценность для решения задач представляют обобщенные
методы решения. Метод – единый способ решения некоторого класса
задач. Знание методов позволяет находить решения для любой конкретной задачи данного класса.
Метод решения правильный, если он дает правильные результаты
для любой задачи данного класса. Применение таких методов гарантирует правильность результатов для любой из задач данного класса.
Метод решения неправильный, если можно указать конкретную задачу данного класса, для которой применение метода даст неправильные результаты либо не даст результатов вовсе.
Например, для уравнения а  х + b = 0 формула х = –b/а не дает результата при а = 0. Но при значении а = 0 уравнение превращается в соотношение b = 0, что говорит о недопустимости этого значения. Следовательно, условием допустимости данных в рассматриваемой задаче будут значения а  0.
50
Правильность методов решения можно проверять на конкретных
примерах. Достаточно привести хотя бы один контрпример, на котором способ или метод дает неправильный результат, чтобы утверждать
о неправильности метода решения в целом.
Однако демонстрация правильности результатов на двух-трех
примерах не может служить достаточным основанием для утверждений
о правильности метода или способа решения в целом.
Полное обоснование правильности методов решения дает только
исчерпывающий анализ результатов, получаемых с их помощью для
любых задач данного класса. Пример – приведенное выше обоснование
общего метода решения линейных уравнений.
В общем случае обоснование правильности обобщенных методов
решения требует математического исследования получаемых результатов и математического доказательства их правильности для всех конкретных случаев.
3.4. Вопросы для самоконтроля
1. Сеть, связывающая компьютеры в одном или нескольких соседних помещениях.
2. Устройство
связи
ЭВМ
с
другими
компьютерами
с использованием каналов связи.
3. Единица измерения скорости модемов.
4. Какое оборудование необходимо для подключения к региональной вычислительной сети.
5. Скорость современных модемов для работы в сети Интернет.
6. Информационно-поисковые системы, наиболее распространённые в России.
7. Пункты, из которых состоит постановка задачи.
8. Дайте определение понятию «Информационные ресурсы».
9. Чем метод решения отличается от способа решения.
10.Таблица с определенным набором надписей, формул и данных,
используемых для расчетов.
51
4. ОРГАНИЗАЦИЯ ИНФОРМАЦИОННЫХ ПРОЦЕССОВ
4.1. Модели информационных процессов передачи, обработки и
накопления данных
4.1.1. Обобщенная схема технологического процесса обработки
информации
При производстве информационного продукта исходный информационный ресурс в соответствии с поставленной задачей подвергается
в определенной последовательности различным преобразованиям. Динамика этих преобразований отображается в протекающих при этом
информационных процессах. Таким образом, информационный процесс – это процесс преобразования информации. В результате информация может изменить и содержание, и форму представления.
52
Управляющие воздействия формируются на основе накопленной и
функционирующей в системе управления информации, а также поступающих по каналам прямой и обратной связи сведений из внешней среды.
Таким образом, важнейшая функция любой системы управления –
получение информации, выполнение процедур по ее обработке с помощью заданных алгоритмов и программ, формирование на основе полученных сведений управленческих решений, определяющих дальнейшее
поведение системы.
Поскольку информация фиксируется и передается на материальных
носителях, необходимы действия человека и работа технических
средств по восприятию, сбору информации, ее записи, передаче, преобразованию, обработке, хранению, поиску и выдаче. Эти действия обеспечивают нормальное протекание информационного процесса и входят
в технологию управления. Они реализуются технологическими процессами обработки данных с использованием электронных вычислительных машин и других технических средств.
Фазы преобразования информации в информационной технологии
достаточно многочисленны. Однако если провести структуризацию
технологии, обобщенная схема технологического процесса обработки
информации может быть представлена схемой, показанной на рис. 4.
При обработке данных формируются четыре основных информационных процесса: сбор и регистрация, обмен, обработка, накопление
и хранение информации. Рассмотрим их модели.
Сбор,
регистрация
Передача
Прием
Обработка
данных
Передача
Прием
Анализ и
принятие
решения
Хранение
Рис. 4. Обобщенная схема технологического процесса
обработки информации
4.1.2. Сбор и регистрация информации
Сбор и регистрация информации происходят по-разному и в различных объектах.
Процесс перевода информации в выходные данные в технологических системах управления может быть полностью автоматизирован, так
как для сбора информации о состоянии производственной линии применяются разнообразные электрические датчики, которые уже по своей
53
природе позволяют проводить преобразования физических параметров,
вплоть до превращения их в данные, записываемые на машинных носителях информации, без выхода на человеческий уровень представления.
Это оказывается возможным благодаря относительной простоте и однозначности физической информации, снимаемой датчиками (давление,
температура, скорость и т.п.).
В организационно-экономических системах управления информация, осведомляющая человека о состоянии объекта управления семантически сложна, разнообразна и ее сбор не удается автоматизировать.
Поэтому в таких системах информационная технология на этапе превращения исходной (первичной) информации в данные в основе своей
остается ручной. На рис. 5 приведена последовательность фаз процесса
преобразования информации в данные в информационной технологии
организационно-экономических систем управления.
Объект
управления
Поток
информации
Сбор
информации
Подготовка и
контроль
Ввод
информации
Данные
Рис. 5. Процесс преобразования информации в данные
Сбор информации состоит в том, что поток осведомляющей информации, поступающей от объекта управления, воспринимается человеком и переводится в документальную форму (записывается на бумажный носитель информации). Составляющими этого потока могут быть
показания приборов (например, пробег автомобиля по спидометру),
накладные, акты, ордера, ведомости, журналы, описи и т.д.
Для перевода потока осведомляющей информации в автоматизированный контур информационной технологии необходимо собранную
информацию передать в места ее ввода в компьютер, так как часто
пункты получения первичной информации от них пространственно удалены. Передача осуществляется, как правило, традиционно, с помощью
курьера, телефона.
Собранная информация для ввода должна быть предварительно
подготовлена, поскольку модель предметной области, заложенная
в компьютер, накладывает свои ограничения на состав и организацию
вводимой информации. В современных информационных системах ввод
информации осуществляется по запросам программы, отображаемым на
экране дисплея, и часто дальнейший ввод приостанавливается, если
оператором проигнорирован какой-либо важный запрос. Очень важными на этапах подготовки информации и ввода являются процедуры контроля.
54
Контроль подготовленной и вводимой информации направлен на
предупреждение, выявление и устранение ошибок, которые неизбежны
в первую очередь из-за так называемого «человеческого фактора». Человек устает, его внимание может ослабнуть, кто-то может его отвлечь
– в результате возникают ошибки. Ошибки при сборе данных и подготовке информации могут быть и преднамеренными. Любые ошибки
приводят к искажению вводимых данных, к их недостоверности, а значит, к неверным результатам обработки и в конечном итоге к ошибкам
в управлении системой. При контроле собранных данных и подготовленной информации применяют совокупность приемов, как ручных, так
и формализованных, направленных на обнаружение ошибок.
Вообще процедуры контроля полноты и достоверности информации и данных используются при реализации информационных процессов повсеместно и могут быть подразделены на визуальные, логические
и арифметические.
Визуальный метод широко используется на этапе сбора и подготовки начальной информации и является ручным. При визуальном методе производится зрительный просмотр документа в целях проверки
полноты, актуальности, подписей ответственных лиц, юридической законности и т.д.
Логический и арифметический, являясь автоматизированными методами, применяются на последующих этапах преобразования данных.
Логический метод контроля предполагает сопоставление фактических данных с нормативными или с данными предыдущих периодов обработки, проверку логической непротиворечивости функциональнозависимых показателей и их групп и т.д.
Арифметический метод контроля включает подсчет контрольных
сумм по строкам и столбцам документов, имеющих табличную форму,
контроль по формулам, признакам делимости или четности, балансовые
методы, повторный ввод и т.п.
Для предотвращения случайного или намеренного искажения информации служат и организационные, и специальные мероприятия. Это
четкое распределение прав и обязанностей лиц, ответственных за сбор,
подготовку, передачу и ввод информации в системе информационной
технологии. Это и автоматическое протоколирование ввода, и обеспечение санкционированного доступа в контур ИТ.
В настоящее время в нашей стране, как и во всем мире, персональные компьютеры все шире применяются на рабочих местах служащих,
ответственных за сбор, подготовку и предварительный контроль первичной информации. В этом случае используются автоматизированные
55
подготовка и контроль собранной необработанной информации и, таким образом, фазы подготовки и ввода объединяются.
Ввод первоначальной информации при создании информационной
технологии в организационно-экономической системе в конечном итоге
является ручным – пользователь ЭВМ «набирает» данные (алфавитноцифровые) на клавиатуре, визуально контролируя правильность вводимых символов по отображению на экране дисплея. Каждое нажатие клавиши – это преобразование символа, изображенного на ней, в электрический двоичный код, т.е. в машинные данные. Этап ввода – заключительный этап процесса преобразования исходной информации в машинные данные. Конечно, сейчас есть, помимо клавиатуры, и другие
устройства ввода, позволяющие убыстрить и упростить этот трудоемкий и изобилующий ошибками этап, например сканеры или устройства
ввода с голоса. Однако указанные устройства, особенно последние, далеки от совершенства и имеют довольно высокую стоимость.
Для решения задач ИТ, помимо ввода осведомляющей информации
об объекте управления, необходимо также подготавливать и вводить
информацию о структуре и содержании предметной области (т.е. модель объекта управления), а также информацию о последовательности
и содержании процедур технологических преобразований для решения
поставленных задач (т.е. алгоритмическую модель). Суть подготовки
информации такого вида состоит в написании программ и описании
структур и данных на специальных формальных языках программирования. Этап разработки и ввода программ в настоящее время автоматизирован благодаря использованию развивающихся многофункциональных систем программирования. С их помощью существенно облегчаются процесс создания программ, их отладка и ввод. Тем не менее, сам
процесс моделирования, т.е. разработки моделей предметной области
решаемых задач и их алгоритмической реализации, остается творческим
и на этапе разработки информационных технологий в своей основе
практически неавтоматизируем.
Таким образом, после сбора, подготовки, контроля и ввода исходная информация (документы, модели, программы) превращается в данные, представленные машинными (двоичными) кодами, которые хранятся на машинных носителях и обрабатываются техническими средствами информационной технологии.
4.1.3. Передача информации
Информационный процесс обмена предполагает обмен данными
между процессами информационной технологии. Из рис. 6 видно, что
56
процесс обмена связан взаимными потоками данных со всеми информационными процессами на уровне переработки данных.
Передача информации осуществляется различными способами: с
помощью курьера, пересылка по почте, доставка транспортными средствами, дистанционная передача по каналам связи, с помощью других
средств коммуникаций.
При дистанционной передаче по каналам связи (рис. 6) можно выделить два основных типа процедур. Это процедуры передачи данных
по каналам связи и сетевые процедуры, позволяющие осуществить организацию вычислительной сети. Процедуры передачи данных реализуются с помощью операции кодирования – декодирования, модуляции
– демодуляции, согласования и усиления сигналов. Процедуры организации сети включают в себя в качестве основных операции по коммутации и маршрутизации потоков данных (трафика) в вычислительной сети. Процесс обмена позволяет, с одной стороны, передавать данные
между источником и получателем информации, а с другой – объединять
информацию многих ее источников.
Дистанционная передача по каналам связи сокращает время передачи данных, однако, для ее осуществления необходимы специальные
технические средства, что удорожает процесс передачи. Предпочтительным является использование технических средств сбора и регистрации, которые, собирая автоматически информацию с установленных на рабочих местах датчиков, передают ее в ЭВМ для последующей
обработки, что повышает ее достоверность и снижает трудоемкость.
Источник
информации
Передатчик
Канал связи
Приемник
Получатель
информации
Рис. 6. Передача данных по каналу связи
Дистанционно может передаваться как первичная информация
с мест ее возникновения, так и результатная в обратном направлении.
В этом случае результатная информация фиксируется различными
устройствами: дисплеями, табло, печатающими устройствами. Поступление информации по каналам связи в центр обработки в основном
осуществляется двумя способами: на машинном носителе или непосредственно вводом в ЭВМ при помощи специальных программных и
аппаратных средств. Дистанционная передача информации с помощью
современных коммуникационных средств постоянно развивается и совершенствуется. Особое значение этот способ передачи информации
57
имеет в многоуровневых межотраслевых системах, где применение дистанционной передачи значительно ускоряет прохождение информации
с одного уровня управления на другой и сокращает общее время обработки данных.
Модель обмена данными включает в себя формальное описание
процедур, выполняемых в вычислительной сети: передачи, маршрутизации, коммутации. Именно эти процедуры и составляют информационный процесс обмена. Для качественной работы сети необходимы
формальные соглашения между ее пользователями, что реализуется в
виде протоколов сетевого обмена. В свою очередь, передача данных основывается на моделях кодирования, модуляции, каналов связи.
На основе моделей обмена производится синтез системы обмена данными, при котором оптимизируются топология и структура вычислительной сети, метод коммутации, протоколы и процедуры доступа, адресации и маршрутизации.
В подсистему обмена данными входят комплексы программ и
устройств, позволяющих реализовать вычислительную сеть и осуществить по ней передачу и прием сообщений с необходимыми скоростью
и качеством.
Физическими компонентами подсистемы обмена служат устройства приема – передачи (модемы, усилители, коммутаторы, кабели, специальные вычислительные комплексы, осуществляющие коммутацию,
маршрутизацию и Доступ к сетям). Программными компонентами подсистемы являются программы сетевого обмена, реализующие сетевые
протоколы, кодирование – декодирование сообщений и др.
4.1.4. Обработка информации
Обработка информации производится на ПЭВМ, как правило, децентрализовано, в местах возникновения первичной информации, где
организуются автоматизированные рабочие места специалистов той или
иной управленческой службы (отдела материально-технического снабжения и сбыта, отдела главного технолога, конструкторского отдела,
бухгалтерии, планового отдела и т.п.). Обработка, однако, может производиться не только автономно, но и в вычислительных сетях, с использованием набора ПЭВМ программных средств и информационных массивов для решения функциональных задач.
Процесс обработки данных связан с преобразованием данных и их
отображением.
Процедуры преобразования данных на логическом уровне представляют собой алгоритмы и программы обработки данных и их струк58
тур. Сюда включаются стандартные процедуры, такие, как сортировка,
поиск, создание и преобразование статистических и динамических
структур данных, а также нестандартные процедуры, обусловленные алгоритмами и программами преобразования данных при решении конкретных информационных задач. Моделями процедур отображения
данных являются компьютерные программы преобразования данных,
представленных машинными кодами, в воспринимаемую человеком
информацию, несущую в себе смысловое содержание. В современных
ЭВМ данные могут быть отражены в виде текстовой информации, в виде графиков, изображений, звука, с использованием средств мультимедиа, которые интегрируют в компьютере все основные способы отображения.
Процедура отображения данных – одна из важнейших в информационной технологии. Без возможности восприятия результата обработки информации человеческими органами чувств этот результат оставался бы вещью в себе (ведь мы не ощущаем машинное представление информации).
В современных информационных технологиях при воспроизведении
информации предпочтение отдано графическим режимам работы дисплеев (в отличие от исторически более ранних текстовых режимов) как
наиболее универсальным. Графический режим позволяет выводить на
экран дисплея любую графику (ведь буквы и цифры тоже графические
объекты), причем с возможностью изменения масштаба, проекции, цвета и т.д. звитие информационных технологий относительно ввода и вывода информации идет по пути создания объектно-ориентированных
систем, в которых настройка систем, программирование функциональных задач, ввод и вывод информации осуществляются с помощью графических объектов, отображаемых на экране дисплея (примером могут
служить широко распространенный графический интерфейс Windows,
объектно-ориентированные языки Delphi, Java и т.д.).
Отображение информации на экране дисплея в виде графических
объектов (графиков, геометрических фигур, изображений и т.д.) носит
название компьютерной графики.
В ходе решения задач на ЭВМ в соответствии с машинной программой формируется результатная информация, которая в дальнейшем
используется на этапе принятия решения.
Принятие решения в автоматизированной системе организационного
управления, как правило, осуществляется специалистом с применением
или без применения технических средств, но в последнем случае на основе
тщательного анализа результатной информации, полученной на ЭВМ. Задача принятия решений осложняется тем, что специалисту приходится ис59
кать из множества допустимых решений наиболее приемлемое, сводящее
к минимуму потери ресурсов (временных, трудовых, материальных и т.д.).
Благодаря применению персональных ЭВМ и терминальных устройств
повышается аналитичность обрабатываемых сведений, а также обеспечивается постепенный переход к автоматизации выработки оптимальных
решений в процессе диалога пользователя с вычислительной системой.
Этому способствует использование новых технологий экспертных систем
поддержки принятия решений.
Модель обработки данных включает в себя формализованное описание процедур организации вычислительного процесса, преобразования данных и отображения данных. Под организацией вычислительного
процесса понимается управление ресурсами компьютера (память, процессор, внешние устройства) при решении задач обработки данных. Эта
процедура формализуется в виде алгоритмов и программ системного
управления компьютером. Комплексы таких алгоритмов и программ
получили название операционных систем.
Операционная система (ОС) – комплекс программ, организующих
вычислительный процесс в вычислительной системе.
Вычислительная система – совокупность аппаратных и программных средств ЭВМ, взаимодействующих для решения задач обработки информации.
Для выполнения функций подсистемы обработки данных используются электронные вычислительные машины различных классов. В
настоящее время при создании автоматизированных информационных
технологий применяются три основных класса ЭВМ: на верхнем уровне
– большие универсальные ЭВМ (по зарубежной классификации – мэйнфреймы), способные накапливать и обрабатывать громадные объемы
исходных данных и используемые как главные ЭВМ; на среднем – абонентские вычислительные машины (серверы); на нижнем уровне – персональные компьютеры либо управляющие ЭВМ. Обработка данных,
т.е. их преобразование и отображение, производится с помощью программ решения задач в той предметной области, для которой создана
информационная технология.
4.1.5. Хранение и накопление информации
Хранение и накопление информации вызвано многократным ее использованием, применением условно-постоянной, справочной и других
видов информации, необходимостью комплектации первичных данных
до их обработки.
60
Назначение технологического процесса накопления данных состоит в создании, хранении и поддержании в актуальном состоянии информационного фонда, необходимого для выполнения функциональных
задач системы управления. Хранение и накопление информации осуществляется в информационных базах в виде информационных массивов, где данные располагаются по установленному в процессе проектирования порядку.
С хранением и накоплением непосредственно связан поиск данных,
т.е. выборка нужных данных из хранимой информации, включая поиск
информации, подлежащей корректировке или замене. Процедура поиска
информации выполняется автоматически на основе составленного пользователем или ПЭВМ запроса на нужную информацию.
Указанные функции, выполняемые в процессе накопления данных,
реализуются по алгоритмам, разработанным на основе соответствующих математических моделей.
Процесс накопления данных состоит из ряда основных процедур,
таких, как выбор хранимых данных, хранение данных, их актуализация
и извлечение.
Информационный фонд систем управления должен формироваться
на основе принципов необходимой полноты и минимальной избыточности хранимой информации. Эти принципы реализуются процедурой выбора хранимых данных, в процессе выполнения которой производится
анализ циркулирующих в системе данных и на основе их группировки
на входные, промежуточные и выходные определяется состав хранимых
данных. Входные данные – это данные, получаемые из первичной информации и создающие информационный образ предметной области.
Они подлежат хранению в первую очередь. Промежуточные данные –
это данные, формирующиеся из других данных при алгоритмических
преобразованиях. Как правило, они не хранятся, но накладывают ограничения на емкость оперативной памяти компьютера. Выходные данные являются результатом обработки первичных (входных) данных по
соответствующей модели, они входят е состав управляющего информационного потока своего уровня и подлежат хранению в определенном
временном интервале. Вообще, данные имеют свой жизненный цикл
существования, который фактически и отображается в процедурах процесса накопления.
Процедура хранения состоит в том, чтобы сформировать и поддерживать структуру хранения данных в памяти ЭВМ. Современные структуры хранения данных должны быть независимы от программ, использующих эти данные, и реализовывать вышеуказанные принципы (полнота и минимальная избыточность). Такие структуры получили назва61
ние баз данных. Осуществление процедур создания структуры хранения
(базы данных), актуализации, извлечения и удаления данных производится с помощью специальных программ, называемых системами
управления базами данных.
В процессе накопления данных важной процедурой является их
актуализация. Под актуализацией понимается поддержание хранимых
данных на уровне, соответствующем информационным потребностям
решаемых задач в системе, где организована информационная технология. Актуализация данных осуществляется с помощью операций добавления новых данных к уже хранимым, корректировки (изменения значений или элементов структур) данных и их уничтожения, если данные
устарели и уже не могут быть использованы при решении функциональных задач системы.
Процедура извлечения данных из базы необходима для пересылки
требуемых данных либо для преобразования, либо для отображения,
либо для передачи по вычислительной сети.
При выполнении процедур актуализации и извлечения обязательно
выполняются операции поиска данных по заданным признакам и их
сортировки, состоящие в изменении порядка расположения данных при
хранении или извлечении.
На логическом уровне все процедуры процесса накопления должны
быть формализованы, что отображается в математических и алгоритмических моделях этих процедур.
Модель накопления данных формализует описание информационной базы, которая в компьютерном виде представляется базой данных.
Процесс перехода от информационного (смыслового) уровня к физическому описывается трехуровневой системой моделей представления информационной базы: концептуальной, логической и физической
схем.
Концептуальная схема информационной базы описывает информационное содержание предметной области, т.е. какая и в каком объеме
информация должна накапливаться при реализации информационной
технологии.
Логическая схема информационной базы должна формализовано
описать ее структуру и взаимосвязь элементов информации. При этом
могут быть использованы различные подходы: реляционный, иерархический, сетевой. Выбор подхода определяет и систему управления базой
данных, которая, в свою очередь, определяет физическую модель данных – физическую схему информационной базы, описывающую методы
размещения данных и доступа к ним на машинных (физических) носи62
телях информации. Модель данных – формализованное описание информационных структур и операций над ними.
4.2. Системный подход к решению функциональных задач и к организации информационных процессов
Пока автоматизация решения задач управления носила локальный,
частный характер, а количество таких задач было невелико, схема технологического процесса создания программных средств, при которой каждая
функциональная задача рассматривалась отдельно от других задач, могла
в большей или меньшей степени удовлетворять разработчиков. Когда возникла потребность создания систем автоматизированной обработки информации, внедрение которых могло обеспечить совершенствование организационно-экономического управления, такая схема оказалась непригодной, так как она не отражала основного принципа разработки – принципа системного подхода, что проявилось особенно ярко в виде массового
дублирования данных в информационных массивах.
В качестве альтернативы такому дублированию информации возникла концепция баз данных как единого, централизованного хранилища всей информации, необходимой для решения задач управления.
Первоначально в противовес огромному дублированию информации,
присущему позадачному подходу, концепция БД подразумевала полное
отсутствие такого дублирования. Однако теоретически корректная концепция в реальности оказалась малоэффективной, так как безусловный
выигрыш в объемах необходимой памяти оборачивался значительным
проигрышем во времени, требуемым на поиск и выборку из БД информации, необходимой для решения той или иной конкретной задачи.
В связи с этим в настоящее время концепция БД подразумевает разумный компромисс между сокращением до минимума необходимого
дублирования информации и эффективностью процесса выборки и обновления требуемых данных. Действительное обеспечение такого решения возможно только при условии системного анализа всего комплекса задач, подлежащих автоматизации, уже на этапе описания системы: ее целей и функций, состава и специфики информационных потоков, информационного состава задач и даже отдельных программных
модулей. Системный подход, базирующийся на положениях общей теории систем, наиболее эффективен при решении сложных задач анализа
и синтеза, требующих одновременного использования ряда научных
дисциплин.
Другим важным фактором, обусловливающим необходимость системного подхода, начиная с этапа формулирования требований и по63
становки задач, является то, что на этот этап приходится до 70–80 %
всех затрат, падающих на разработку прикладного программного обеспечения, и он имеет особое значение в обеспечении соответствия результатов разработки потребностям конечных пользователей.
Последнее особенно важно, так как по тяжести последствий ошибок этот этап занимает первое место среди всех остальных этапов.
Так, по проведенному статистическому анализу большого числа
проектов, выполненных ведущими западными компьютерными фирмами (IBM, TRW, GTE Corp., Bell Labs.), в типовом программистском
проекте 56 % всех обнаруженных ошибок приходится на ошибки в требованиях на программы, а на устранение этих ошибок уходит до 82 %
всех усилий, затрачиваемых разработчиками на устранение ошибок
проекта. Такое положение дел объясняется, с одной стороны, сложностью и трудоемкостью этапа в плане обеспечения адекватности трактовки разработчиками проекта требований пользователей, а с другой
стороны, тем, что неизбежные ошибки, допущенные на этом этапе, как
правило, обнаруживаются (проявляются) лишь на стадии опытной и даже промышленной эксплуатации, когда стоимость их исправления возрастает в десятки раз.
Объективное требование системного подхода к разработке программных средств решения задач при автоматизации систем управления
вызвало необходимость дифференциации специалистов-разработчиков,
что проявилось в выделении в их составе системных аналитиков, системотехников, прикладных и системных программистов.
Системный аналитик, исходя из общих целей, назначения, технических характеристик, состава и описания требований пользователей
к прикладным задачам и системе в целом, формулирует общие формальные требования к программному обеспечению системы.
Специалист-системотехник преобразует общие формальные требования в детальные спецификации на отдельные программы, участвует
в разработке логической структуры базы данных и т. п., т. е. определяет
общую информационно-программную структуру проекта.
Прикладной программист преобразует спецификации в логическую
структуру программных модулей, а затем и в программный код.
Системный программист обеспечивает сопряжение программных
модулей с программной средой, в рамках которой предстоит функционировать прикладным программам (задачам).
В целях сокращения общей длительности разработки системы
начало некоторых этапов технологического процесса осуществляется
еще до полного завершения работ на предыдущем этапе. Такой частичный параллелизм в работе, кроме того, обусловливается и итерацион64
ным характером работ на этих этапах, когда в ходе выполнения отдельных работ 1-го этапа возникает необходимость уточнения или изменения спецификаций, выполненных на предшествующих этапах, либо
пользователь по своей инициативе вносит коррективы в исходные требования, что, естественно, отражается на всей последующей технологической цепочке реализации проекта.
Другой отличительной чертой системной разработки проектов прикладных программ является их ориентация на использование интегрированных и распределенных баз данных. В связи с этим в качестве инструментальных средств разработки компонентов программного обеспечения наряду с языками программирования стали применяться языковые средства СУБД.
Микропроцессорная революция резко поменяла приоритеты и актуальность проблем, присущих традиционным технологиям разработки
прикладных программ. Быстро растущая вычислительная мощность,
расширение других вычислительных возможностей современных ПК
в сочетании с возможностью объединения этих ресурсов с помощью
вычислительных сетей – все это позволило нивелировать погрешности
Пользователей – непрофессиональных программистов в плане эффективности создаваемых ими программных средств решения прикладных
задач.
Возможность исключения из технологической цепочки программистов-профессионалов (посредников) создала предпосылки для ускорения процесса разработки прикладных программных средств, а главное
для сокращения количества ошибок, присущих традиционным технологическим схемам, когда основные усилия профессиональных программистов затрачивались на то, чтобы адекватно воспринять требования,
предъявляемые конечными пользователями к программам, обеспечить
своевременное получение достоверных, исчерпывающих сведений об
исходных данных, необходимых для решения задачи, и т.п.
Но эффект от такого «вытеснения» профессиональных программистов из их сферы деятельности пользователями-непрофессионалами зачастую снижался или не ощущался вообще в связи с тем, что, не владея
основами методологии разработки программных средств, типовыми
программистскими приемами и умением использовать «подручные»
средства из арсенала той или иной инструментальной среды, пользователи зачастую попадают в различные «тупиковые» ситуации, которые
не составляют каких-либо трудностей для профессионалов в области
программирования.
65
4.3. Вопросы для самоконтроля
1. Дайте определение понятию «информационный процесс».
2. В чём состоит сбор информации.
3. Виды процедур контроля полноты и достоверности информации
и данных.
4. Какими способами происходит обмен данными между процессами информационной технологии.
5. Дайте определение понятию «канал связи».
6. Какая информация может передаваться дистанционно?
7. Что представляют собой процедуры преобразования данных на
логическом уровне?
8. Кем осуществляется принятие решения в автоматизированной
системе организационного управления?
9. Дайте определение понятию «вычислительная система».
10.В чём состоит процесс накопления данных?
5. ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
В РАЗЛИЧНЫХ ОБЛАСТЯХ ДЕЯТЕЛЬНОСТИ
5.1. Информационные технологии
в системах организационного управления
5.1.1. ЭВМ при выборе решений в области технологии,
организации, планирования и управления производством
Применение компьютерных информационных технологий позволяет в ряде случаев при сравнительно небольших затратах получать ценные управленческие решения. Составление экономико-математических
моделей и проведение расчетов с помощью компьютера позволяют
66
быстро и относительно недорого проводить разработку и сравнение
многочисленных вариантов планов и управленческих решений.
Многовариантность выбора – одно из ценнейших качеств рассматриваемых методов. Однако в настоящее время практическое применение экономико-математических методов в управление и планирование
производственной деятельностью, несмотря на оснащение управленческих служб средствами вычислительной техники, далеко не соответствует имеющемуся в этой области научному запасу.
Трудности практического внедрения экономико-математических
методов связаны со многими объективными и субъективными причинами, но прежде всего обусловлены сложностью экономических процессов и явлений, невозможностью расчленения больших систем на обозримые части с целью их автономного рассмотрения, а также необходимостью учитывать наряду с технологическими аспектами и поведение
людей.
Поэтому практически приемлемым путем является включение компьютерных решений конкретных типовых задач в процесс принятия
управленческих решений руководителем. При этом необходимо сочетать опыт и трудноформализуемые знания руководителя, хорошо знающего производственную и хозяйственную стороны управленческой
деятельности, с производительностью и многовариантностью компьютерно-математических методов.
В настоящее время имеются отработанные методы решения ряда
типовых задач по организации и планированию производства, для которых могут быть применены компьютерные технологии. Все эти задачи
могут быть классифицированы следующим образом.
1. Задачи в области организации производства. К ним относятся,
например, задачи организации проектирования, ремонта машин, транспорта и складского хозяйства, задачи управления качеством, расчета потребности в ресурсах (трудовых, материальных, технических) с распределением во времени на основе календарного плана производства и т.п.
2. Задачи планирования производства. К ним относятся, например,
задачи планирования производства товарной продукции, технического
развития и повышения эффективности производства, труда и заработной платы, механизации и материально-технического обеспечения производства, задачи анализа производственно-хозяйственной деятельности и т.п.
Такие отработанные решения определенных типовых задач базируются на методах имитационного моделирования, линейного программирования, вероятностного моделирования и других методах.
67
Возможность практического решения указанных задач в настоящее
время расширяется в связи с компьютеризацией всех звеньев управленческого аппарата, созданием локальных и объединенных вычислительных сетей, организацией локальных и централизованных информационных баз данных и обеспечением к ним оперативного доступа.
5.1.2. Возможности использования новых информационных
технологий в системах организационного управления
Современные информационные технологии определяются как
непрерывные процессы обработки, хранения, передачи и отображения
информации, направленные на эффективное использование информационных ресурсов, средств вычислительной техники и передачи данных
при управлении системами различного класса и назначения.
ИТ существенно увеличивают степень автоматизации всех информационных процессов, что является предпосылкой для ускорения темпов научно-технического прогресса, повышения производительности и
эффективности управленческого труда.
Основу современных информационных технологий составляют
«четыре технических достижения:
1) развитие носителей информации, позволяющих хранить практически неограниченные объемы информации;
2) развитие средств связи, обеспечивающих доставку информации
в любую точку земного шара без существенных ограничений во времени;
3) возможность автоматизированной обработки информации в местах ее возникновения с помощью персональной ЭВМ;
4) возможности удаленного доступа и обработки информации, хранящейся в распределенных базах и банках данных.
ИТ развивались в процессе целенаправленной интеграции средств
хранения, обработки, передачи и представления информации в комплексные системы, обеспечивающие циркуляцию требуемых потоков
данных в рамках определенных организационных систем.
На современном этапе автоматизированная обработка данных в организационных системах характеризуется переходом от централизованной обработки информации к распределенной (децентрализованной), на
основе широкого применения персональных ЭВМ.
Объединение ЭВМ в сети (локальные и региональные) позволяет
пользователям сочетать преимущества автономной распределенной обработки информации с возможностями индивидуального доступа к общим информационным ресурсам отдела, предприятия, района и т.д.
Ввод и обработка информации на рабочем месте сотрудника (руководителя и специалиста) с использованием ПК позволяет повысить ка68
чество, точность, своевременность и актуальность подготавливаемых
документов и увеличить скорость их подготовки.
Объединение автоматизированных рабочих мест сотрудников в локальные вычислительные сети (ЛВС) позволяет снизить затраты на информационный обмен, решить задачу оптимального использования вычислительных мощностей и ресурсов. Включение в качестве элемента
ЛВС высокопроизводительной ЭВМ с внешними запоминающими
устройствами большого объема позволяет централизовать информацию,
необходимую для совместной обработки всеми пользователями сети
и исключить дублирование такой информации.
Технические средства «электронной почты» и вычислительных систем позволяют внедрять в организационных системах безбумажные
технологии, при которых часть информационных потоков и массивов
(файлов) переносятся на бумажный носитель лишь в строго регламентированных случаях, связанных в основном с подготовкой и представлением в официальных итоговых отчетов.
В современном учреждении выполняется несколько десятков видов
работ, включающих:
 осуществление информационных коммуникаций внутри организации и между организациями;
 изучение, поиск, накопление и генерирование информации (чтение документов, подготовка отчетов, писем, ответов на письма, поиск
необходимых данных, ведение архивов и т.п.);
 анализ данных и принятие решений;
 управление функционированием организации;
 информационное обслуживание руководителей и т.д.
Основными элементами современного «электронного» учреждения
являются автоматизированные рабочие места (АРМы) пользователей,
системы редактирования текстов, базы данных и средства управления
ими (СУБД), информационно-вычислительные сети, электронная почта,
средства печати и копирования документов и др.
Автоматизированное рабочее место (АРМ) – вычислительная система, предназначенная для автоматизации профессиональной деятельности.
Производительность труда при использовании АРМ на рутинных
операциях, применяемых при подготовке и передаче документов, увеличивается в несколько раз за счет применения специального программного обеспечения.
Пример 12. Функции пользователей-сотрудников, реализуемые на
АРМе соответствующего типа, являются:
69
 подготовка документов, содержащих текстовые, табличные и
графические фрагменты на основе анализа доступной информации;
 хранение и поиск информации;
 прием/передача документов (или их фрагментов) внутри учреждения и за его пределы;
 обеспечение режима использования и надежного хранения документов.
Функции АРМов руководителей организации и ее подразделений
существенно отличаются от функций АРМ сотрудника (служащего,
специалиста).
К основным функциям руководителя относятся: долгосрочное и
оперативное планирование работ, общение со смежными подразделениями, проведение рабочих совещаний, выдача поручений и контроль за
их выполнением, регистрация и исполнение поручений руководства,
оценка деятельности сотрудников, подразделения и организации в целом и другие функции. Большинство этих функций может быть успешно реализовано при наличии соответствующего прикладного программного обеспечения АРМ руководителя.
Таким образом, внедрение информационных технологий в процесс
управления организациями не ограничивается только автоматизацией
сбора, хранения и представления данных, а распространяется также на
анализ информации и поддержку принятия решений. В большинстве
случаев решения принимаются на основе математического моделирования технико-экономической ситуации в конкретной предметной области. Рассматриваемое в таком аспекте АРМ руководителя становится
усилителем его интеллекта, помогает находить достаточно эффективные (неубыточные) управленческие решения в сложных, динамически
изменяющихся ситуациях.
Необходимость в обмене информацией в различных сферах управленческой деятельности, получении новых сведений в результате коллективного обсуждения проблем привели к таким формам общения, как
конференции, семинары, совещания.
Практически ни одна серьезная сделка, ни один договор не могут
быть заключены без обсуждения на различных уровнях промежуточных
результатов, итогов, вариантов решения, заслушивания оппонентов и
принятия соответствующих решений. Эта идея была реализована в новом виде информационного обслуживания – телеконференции. Участники таких конференций, удаленные друг от друга на сотни и тысячи
километров, благодаря современной электронике могут видеть друг
70
друга, обмениваться данными и графической информацией дискутировать в условиях, максимально приближенных к реальной конференции.
Организация телеконференций требует привлечения весьма разнообразной аппаратуры: терминалов, факсимильной связи, телевизионных
камер, видеомагнитофонов, компьютеров, модемов, акустической аппаратуры.
Новейшей технологией информационного обслуживания организаций являются создание использование автоматизированных информационных систем интеллектуального типа (экспертные системы, функционирующие в режиме реального времени, ситуационные комнаты,
интеллектуальные системы поддержки принятия решения и т. д.).
5.2. Информационные технологии в обучении
Создание и совершенствование компьютеров привело и продолжает приводить к созданию новых технологий в различных сферах научной и практической деятельности. Одной из таких сфер стало образование. Нетрадиционные информационные системы, связанные с обучением, называют информационно-обучающими.
Автоматизированная обучающая система (АОС) – комплекс программных, технических и учебно-методических средств, предназначенных для активного индивидуального обучения человека на основе программного управления этим обучением.
Благодаря своим конструктивным и функциональным особенностям современный персональный компьютер находит применение
в обучении самым разнообразным дисциплинам и служит базой для создания большого числа новых информационных технологий обучения.
Компьютерная технология повышает интерес к обучению. В настоящее время существует огромное множество обучающих программ по
самым разным предметам, ориентированных на самые различные категории учащихся, начиная с детских садов и заканчивая персоналом
атомных электростанций.
Типы обучающих программ
Основанием для классификации служат обычно особенности учебной деятельности обучаемых при работе с программами. Обычно выделяют четыре типа обучающих программ:
 тренировочные и контролирующие;
 наставнические;
 имитационные и моделирующие;
71
 развивающие игры.
Тренировочные программы предназначены для закрепления умений
и навыков. Предполагается, что теоретический материал уже изучен.
Эти программы в случайной последовательности предлагают учащемуся вопросы и задачи и подсчитывают количество правильно и неправильно решенных задач (в случае правильного ответа может выдаваться
поощряющая реплика, при неправильном ответе можно получить помощь в виде подсказки).
Наставнические программы предлагают ученикам теоретический
материал для изучения. Задачи и вопросы служат в этих программах для
организации человеко-машинного диалога, для управления ходом обучения. Так, если ответы, даваемые учеником, неверны, программа может «откатиться назад» для повторного изучения теоретического материала.
Программы наставнического типа являются прямыми наследниками
средств программированного обучения 60-х годов в том смысле, что основным теоретическим источником современного компьютерного или автоматизированного обучения следует считать программированное обучение. В публикациях зарубежных специалистов и сегодня под термином
«программированное обучение» понимают современные компьютерные
технологии. Одним из основоположников концепции программированного обучения является американский психолог Б.Ф. Скиннер.
Главным элементом программированного обучения является программа, понимаемая как упорядоченная последовательность рекомендаций (задач), которые передаются с помощью программированного
учебника и выполняются обучаемыми. Существует несколько разновидностей программированного обучения:
 линейное программированное обучение;
 разветвленная программа. Разветвленная программа основана на
выборе одного правильного ответа из нескольких данных.
Если основой линейной программы является стремление избежать
ошибок, то разветвленная программа не направлена на ликвидацию ошибок в процессе обучения: ошибки трактуются как возможность обнаружить недостатки в знаниях обучаемых, а также выяснить, какие проблемы
обучаемые уяснили недостаточно. Постепенно (линейное и разветвленное
программированное) уступили место смешанным формам.
Существует и продолжает разрабатываться большое количество
инструментальных программ такого вида. Общим их недостатком является высокая трудоемкость разработки, затруднения организационного
и методического характера при использовании в реальном процессе
обучения.
72
Моделирующие программы основаны на графических иллюстративных возможностях компьютера, с одной стороны, и вычислительных, с другой, и позволяют осуществлять компьютерный эксперимент.
Такие программы предоставляют возможность наблюдать на экране
дисплея некоторый процесс, влияя на его ход подачей команды с клавиатуры, меняющей значения параметров.
Развивающие игры предоставляют в распоряжение ученика некоторую воображаемую среду, существующий только в компьютере мир,
набор каких-то возможностей и средств их реализации. Использование
предоставляемых программой средств для реализации возможностей,
связанных с изучением мира игры и деятельностью в этом мире, приводит к развитию обучаемого, формированию у него познавательных
навыков, самостоятельному открытию им закономерностей, отношений
объектов действительности, имеющих значение.
Наибольшее распространение получили обучающие программы
первых двух типов в связи с их относительно невысокой сложностью,
возможностью унификации при разработке многих блоков программ.
Если программы 3-го и 4-го типов требуют большой работы программистов, психологов, специалистов в области изучаемого предмета, педагогов-методистов, то технология создания программ 1-го и 2-го типов
сегодня сильно упростилась с появлением инструментальных средств
или наполняемых автоматизированных обучающих систем.
В процессе контроля знаний широкое распространение получило
компьютерное тестирование. В ряде стран тестирование вытеснило традиционные формы контроля – устные и письменные экзамены и собеседования.
Типы компьютерных тестовых заданий определяются способами
однозначного распознавания ответных действий тестируемого в соответствии с моделью знаний.
Учебная мультимедиа и гипермедиа-технология представляет собой развитие технологии программированного обучения, хотя упор делается не на адаптивность обучения и его методическое обоснование, а
на внешнюю иллюстративно-наглядную сторону. Современные графические и звуковые возможности компьютера обусловили появление
средств гипер- и мультимедиа.
Мультимедиа технология – представление информации в форме
видеоизображения с применением мультипликации и звукового сопровождения.
Гипермедиа технология – компьютерное представление данных
различного типа, в котором автоматически поддерживаются смысловые
связи между выделенными понятиями, объектами или разделами.
73
Научные исследования в данной области связаны с разработкой
технологий создания учебных курсов большего размера на основе возможностей мульти- и гипермедиа. Под управлением компьютера система мультисред может производить в едином представлении объединение текста, графики, звуков, видеообразов и мультипликации. Технология мультимедиа в последнее время широко применяется для создания
электронных книг и учебников.
Развитием идей мультимедиа являются технологии компьютерной
виртуальной реальности. В этом случае с помощью специальных экранов, датчиков, шлемов, перчаток и т.п. полностью моделируется управление, например, самолетом, так что у обучаемого возникает полная иллюзия того, что он находится в кабине самолета и им управляет.
5.3. Автоматизированные системы научных исследований
Автоматизированные системы научных исследований (АСНИ)
представляют собой программно-аппаратные комплексы, обрабатывающие данные, поступающие от различного рода экспериментальных
установок и измерительных приборов, и на основе их анализа облегчающие обнаружение новых эффектов и закономерностей (рис. 7).
Блок связи с измерительной аппаратурой преобразует к нужному
виду информацию, поступающую от измерительной аппаратуры.
В базе данных хранится информация, поступившая из блока связи
с измерительной аппаратурой, а также заранее введенная с целью обеспечения работоспособности системы.
74
Исследователь
Устройства
отображения
информации
Клавиатура
Блок
имитационного
моделирования
Расчетный
блок
Экспертная
система
Блок связи с
измерительной
аппаратурой
Пакет прикладных
программ
База данных
Рис. 7. Типовая структура АСНИ
Расчетный блок, выполняя программы из пакета прикладных программ, производит все математические расчеты, в которых может возникнуть потребность в ходе научных исследований.
Расчеты могут выполняться как по требованию исследователя, так
и блока имитационного моделирования. При этом на основе математических моделей воспроизводится процесс, происходящий во внешней
среде.
Экспертная система моделирует рассуждения специалистов данной
предметной области. С ее помощью исследователь может классифицировать наблюдаемые явления, диагностировать течение следуемых процессов.
АСНИ получили широкое распространение в молекулярной химии,
минералогии, биохимии, физике элементарных частиц и многих других
науках.
5.4. Системы автоматизированного проектирования
Близкими по своей структуре и функциям к системам автоматизации научных исследований оказываются системы автоматизированного
проектирования (САПР).
САПР – комплекс программных и аппаратных средств, предназначенных для автоматизации процесса проектирования человеком технических изделий или продуктов интеллектуальной деятельности.
75
Проектирование новых изделий – основная задача изобретателей
конструкторов, протекает в несколько этапов, таких как нормирование
замысла, поиск физических принципов, обеспечивающих реализацию
замыслов и требуемые значении конструкции, поиск конструктивных
решений, их расчет и обоснование, создание опытного образца, разработка технологий промышленного изготовления. Если формирование
замысла и поиск физических принципов пока остаются чисто творческими, не поддающимися автоматизации этапами, то при конструировании и расчетах с успехом могут быть применены САПР (рис. 8).
Проектировщик
Блок
технической
документации
Блок
формирования
заданий
База данных
Блок
имитационного
моделирования
Расчетный
блок
Экспертная
система
Рис. 8. Типовая схема САПР
База данных, блок имитационного моделирования, расчетный блок
и экспертная система выполняют функции, аналогичные функциям соответствующих блоков АСНИ. Вместо блока связи с измерительной аппаратурой в САПР имеется блок формирования заданий. Проектировщик вводит в блок техническое задание на проектирование, в котором
указаны цели, которые необходимо достичь при проектировании, и все
ограничения, которые нельзя нарушить. Блок подготовки технической
документации облегчает создание технической документации для последующего изготовления изделия.
Аппаратное обеспечение САПР составляет ЭВМ с набором
устройств, необходимых для ввода и вывода графической информации
(графопостроитель, световое перо, графический планшет и др.).
В настоящее время САПР является неотъемлемым атрибутом
крупных конструкторских бюро и проектных организаций, работающих
в различных предметных областях. Это важная сфера приложения идей
76
и методов информатики. САПР широко применяется в архитектуре,
электротехнике, электронике, машиностроении, авиакосмической технике и др.
5.5. Геоинформационные системы и технологии
Геоинформационные системы (ГИС) и ГИС-технологии объединяют компьютерную картографию и системы управления базами данных.
Концепция технологии ГИС состоит в создании многослойной электронной карты, опорный слой которой описывает географию территории, а каждый из остальных слоев – один из аспектов состояния территории. Тем самым ГИС-технологии определяют специфическую область
работы с информацией.
Технология ГИС применима везде, где необходимо учитывать, обрабатывать и демонстрировать территориально распределенную информацию. Пользователями ГИС-технологии могут быть как организации, чья деятельность целиком базируется на земле владельцы нефтегазовых предприятий, экологические службы, жилищно-коммунальное
хозяйство, так и многочисленные коммерческие предприятия – банки,
страховые, торговые и строительные фирмы, чья успешная работа во
многом зависит от правильного и своевременного учета территориального фактора.
В основе любой ГИС лежит информация о каком-либо участке
земной поверхности: континенте, стране, городе, улице.
БД организуется в виде набора слоев информации. Основной
шрифт содержит географически привязанную карту местности (топооснова). На него накладываются другие слои, несущие информацию об
объектах, находящихся на данной территории: коммуникации, в том
числе линии электропередач, нефте- и газопроводы, водопроводы, промышленные объекты, земельные участки, почвы, коммунальное хозяйство, землепользование и др.
В процессе создания и наложения слоев друг на друга между ними
устанавливаются необходимые связи, что позволяет выполнять пространственные операции с объектами посредством моделирования и интеллектуальной обработки данных.
Как правило, информация представляется графически в векторном
виде, что позволяет уменьшить объем хранимой информации и упростить операции по визуализации. С графической информацией связана
текстовая, табличная, расчетная информация, координатная привязка
к карте местности, видеоизображения, аудиокомментарии, БД с описанием объектов и их характеристик.
77
Многие ГИС включают аналитические функции, которые позволяют моделировать процессы, основываясь на картографической информации.
Программное ядро ГИС можно условно разделить на две подсистемы: СУБД и управление графическим выводом изображения. В качестве
СУБД используют SQL-серверы.
Рассмотрим типовую схему организации ГИС-технологии, в настоящее время сложился основной набор компонентов, составляющих
ГИС. К ним относятся:
1) приобретение и предварительная подготовка данных;
2) ввод и размещение данных;
3) управление данными;
4) манипуляция данными и их анализ;
5) производство конечного продукта.
Функциональным назначением данных компонентов является:
Приобретение и подготовка исходных данных; включает манипуляции с исходными данными карт – материалами на твердой или бумажной основе, данными дистанционного зондирования, результатами
полевых испытаний, текстовыми (табличными) материалами, с архивными данными.
Ввод и размещение пространственной и непространственной составляющих данных включает конвертирование информации во внутренние форматы системы и обеспечение структурной и логической совместимости всего множества порождаемых данных.
Управление данными предполагает наличие средств оптимальной
внутренней организации данных, обеспечивающих эффективный доступ
к ним.
Функции манипуляции и анализа представлены средствами, предназначенными для содержательной обработки данных в целях обработки
и реорганизации данных. С точки зрения пользователя, эти функции являются главными в ГИС-технологиях, потому что позволяют получать
новую информацию, необходимую для управления, исследовательских
целей, прогнозирования.
Производство конечного продукта включает вывод полученных
результатов для конечных потребителей ГИС. Эти продукты могут
представлять карты, статистические отчеты, различные графики, стандартные формы определенных документов.
Кроме этого, каждый картографический объект может иметь атрибутивную информацию, в которой содержится информация, которая
не обязательно должна отображаться на карте (например, число жильцов какого-либо дома и их социальный статус).
78
Подавляющее большинство ГИС-систем различают геометрическую и атрибутивную компоненты баз данных ГИС. Их часто называют
также пространственными (картографическими, геометрическими) и
непространственными (табличными, реляционными) данными.
Картографическая информация представляется точками, кривыми и
площадными объектами.
Атрибутивная информация содержит текстовые, числовые, логические данные о картографических объектах. Большинство современных
ГИС-инструментариев позволяют хранить информацию в составе БД,
как правило, реляционных.
Атрибутивная информация хранится в виде отдельных табличных
файлов, как правило, в форматах реляционных баз данных систем DBF,
PARADOX, ORACLE, INGRESS. Такой способ характерен как для западных коммерческих продуктов, так и современных отечественных
разработок.
5.6. Вопросы для самоконтроля
1. Какие технические достижения представляют основу современных информационных технологий?
2. Что позволяет снизить затраты на информационный обмен?
3. Дайте определение понятию «автоматизированное рабочее место».
4. В чём заключается внедрение информационных технологий в
процесс управления организациями?
5. Перечислите типы обучающих программ.
6. Что является главным элементом программированного обучения?
7. На чём основаны моделирующие программы?
8. Какие обучающие программы получили наибольшее распространение?
9. Что составляет аппаратное обеспечение САПР?
10.В чём состоит суть ГИС-технологии?
79
6. ТЕХНОЛОГИИ
КОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ
6.1. Понятие о компьютерном
математическом моделировании
6.1.1. Общие сведения о компьютерном математическом
моделировании
Модель – материальный объект, система математических зависимостей или программа, имитирующая структуру или функционирование
исследуемого объекта.
Моделирование – представление различных характеристик поведения физической или абстрактной системы с помощью другой системы.
Математическое моделирование – метод исследования процессов
и явлений на их математических моделях.
Изучение компьютерного математического моделирования открывает широкие возможности для осознания связи информатики с математикой и другими науками – естественными и социальными. Компьютерное математическое моделирование в разных своих проявлениях использует практически весь аппарат современной математики.
Математическое моделирование не всегда требует компьютерной
поддержки. Каждый специалист, профессионально занимающийся математическим моделированием, делает все возможное для аналитического исследования модели. Аналитические решения (т.е. представленные формулами, выражающими результаты исследования через исходные данные) обычно удобнее и информативнее численных. Возможности аналитических методов решения сложных математических задач,
однако, очень ограничены и, как правило, эти методы гораздо сложнее
численных. В компьютерном моделировании доминируют численные
методы, реализуемые на компьютерах. Однако понятия «аналитическое
решение» и «компьютерное решение» отнюдь не противостоят друг
другу, так как:
а) все чаще компьютеры при математическом моделировании используются не только для численных расчетов, но и для аналитических
преобразований;
б) результат аналитического исследования математической модели
часто выражен столь сложной формулой, что при взгляде на нее
не складывается восприятия описываемого ей процесса. Эту формулу
80
нужно представить графически, проиллюстрировать в динамике, иногда
даже озвучить, т.е. проделать то, что называется «визуализацией абстракций». При этом компьютер – незаменимое техническое средство.
6.1.2. Классификация математических моделей
К классификации математических моделей можно подходить поразному, положив в основу классификации различные принципы.
1) классификация моделей по отраслям наук (математические модели в физике, биологии, социологии и т. д.);
2) классификация моделей по применяемому математическому аппарату (модели, основанные на применении обыкновенных дифференциальных уравнений, дифференциальных уравнений в частных производных, стохастических методов, дискретных алгебраических преобразований и т.д.);
3) классификация моделей с точки зрения целей моделирования.
 дескриптивные (описательные) модели;
 оптимизационные модели;
 многокритериальные модели;
 игровые модели;
 имитационные модели.
Пример 13
1. Моделируя движение кометы, вторгшейся в Солнечную систему,
мы описываем (предсказываем) траекторию ее полета, расстояние, на
котором она пройдет от Земли и т.д., т.е. ставим чисто описательные
цели. У нас нет никаких возможностей повлиять на движение кометы,
что-то изменить.
2. Меняя тепловой режим в зернохранилище, мы можем стремиться
подобрать такой, чтобы достичь максимальной сохранности зерна, т.е.
оптимизируем процесс.
Часто приходится оптимизировать процесс по нескольким параметрам сразу, причем цели могут быть весьма противоречивыми.
Например, зная цены на продукты и потребность человека в пище, организовать питание больших групп людей (в армии, летнем лагере и др.)
как можно полезнее и как можно дешевле.
3. Игровые модели могут иметь отношение не только к детским играм (в том числе и компьютерным), но и к вещам весьма серьезным.
4. Бывает, что модель в большой мере подражает реальному процессу, т.е. имитирует его.
81
Имитационная модель – описание системы и ее поведения, которое
может быть реализовано и исследовано в ходе операций на компьютере.
Имитационное моделирование – исследование поведения сложной
системы на ее модели.
Можно сказать, что чаще всего имитационное моделирование применяется для того, чтобы описать свойства большой системы при условии, что поведение составляющих ее объектов очень просто и четко
сформулировано. Математическое описание тогда сводится к уровню
статистической обработки результатов моделирования при нахождении
макроскопических характеристик системы. Такой компьютерный эксперимент фактически претендует на воспроизведение натурного эксперимента.
Имитационное моделирование позволяет осуществить проверку
гипотез, исследовать влияние различных факторов и параметров.
6.2. Этапы, цели и средства
компьютерного математического моделирования
Здесь мы рассмотрим процесс компьютерного математического
моделирования, включающий численный эксперимент с моделью
(рис. 9).
Первый этап – определение целей моделирования.
Основные из целей таковы:
1) модель нужна для того, чтобы понять, как устроен конкретный
объект, какова его структура, основные свойства, законы развития
и взаимодействия с окружающим миром (понимание);
2) модель нужна для того, чтобы научиться управлять объектом
(или процессом) и определить наилучшие способы управления при заданных целях и критериях (управление);
3) модель нужна для того, чтобы прогнозировать прямые и косвенные последствия реализации заданных способов и форм воздействия
на объект (прогнозирование).
Выработка концепции управления объектом – другая возможная
цель моделирования. Какой режим полета самолета выбрать для того,
чтобы полет был вполне безопасным и экономически наиболее выгодным? Как составить график выполнения сотен видов работ на строительстве большого объекта, чтобы оно закончилось в максимально короткий срок? Множество таких проблем систематически возникает перед экономистами, конструкторами, учеными.
Наконец, прогнозирование последствий тех или иных воздействий
на объект может быть как относительно простым делом в несложных
82
физических системах, так и чрезвычайно сложным – на грани выполнимости – в системах биолого-экономических, социальных. Если относительно легко ответить на вопрос об изменении режима распространения
тепла в тонком стержне при изменениях в составляющем его сплаве, то
несравненно труднее проследить (предсказать) экологические и климатические последствия строительства крупной ГЭС или социальные последствия изменений налогового законодательства. Возможно, и здесь
методы математического моделирования будут оказывать в будущем
более значительную помощь.
Определение целей
моделирования
Огрубление
объекта или
процесса
Математическая
модель
Исходный
объект (процесс)
Уточнение
модели
Конец
работы
Поиск
математического
описания
Анализ результатов
Расчеты на ЭВМ
Выбор метода
исследования
Разработка алгоритма и
программы для ЭВМ
Отладка и тестирование
программы
Рис. 9. Общая схема
процесса компьютерного математического моделирования
Составим список величин, от которых зависит поведение объекта
или ход процесса, а также тех величин, которые желательно получить
в результате моделирования. Обозначим первые (входные) величины
через x1, х2, ..., хn; вторые (выходные) – через y1, y2, ..., yk.
Символически поведение объекта или процесса можно представить
в виде:
yj = Fj(x1, х2, ..., хn) (j = 1, 2, ..., k),
где F – совокуппность действий, которые следует произвести над входными параметрами, чтобы получить результаты.
83
Входные параметры, могут быть известны «точно», т. е. поддаваться (в принципе) измерению однозначно и с любой степенью точности –
тогда они являются детерминированными величинами. Так, в классической механике, сколь сложной ни была бы моделируемая система,
входные параметры детерминированы – соответственно, детерминирован, однозначно развивается во времени процесс эволюции такой системы.
Однако в природе и обществе гораздо чаще встречаются процессы
иного рода, когда значения входных параметров известны лишь с определенной степенью вероятности, т.е. эти параметры, являются вероятностными (стохастическими), и, соответственно, таким же является
процесс эволюции системы (случайный процесс).
«Случайный» – не значит «непредсказуемый»; просто характер исследования, задаваемых вопросов резко меняется (они приобретают вид «С какой вероятностью...», «С каким математическим ожиданием...» и т.п.).
Примеров случайных процессов не счесть как в науке, так и в обыденной
жизни (силы, действующие на летящий самолет в ветреную погоду, переход улицы при большом потоке транспорта и т.д.).
Для стохастической модели выходные параметры могут быть как
величинами вероятностными, так и однозначно определяемыми.
Важнейшим этапом моделирования является разделение входных
параметров по степени важности влияния их изменений на выходные.
Такой процесс называется ранжированием (разделением по рангам).
Чаще всего невозможно (да и не нужно) учитывать все факторы, которые могут повлиять на значения интересующих нас величин у.
От того, насколько умело выделены важнейшие факторы, зависит
успех моделирования, быстрота и эффективность достижения цели. Выделить более важные (или, как говорят, значимые) факторы и отсеять
менее важные может лишь специалист в той предметной области, к которой относится модель.
Отбрасывание (по крайней мере при первом подходе) менее значимых факторов огрубляет объект моделирования и способствует пониманию его главных свойств и закономерностей. Умело ранжированная модель должна быть адекватна исходному объекту или процессу в отношении целей моделирования. Обычно определить, адекватна ли модель,
можно только в процессе экспериментов с ней, анализа результатов.
Второй этап – поиск математического описания. На этом этапе
необходимо перейти от абстрактной формулировки модели к формулировке, имеющей конкретное математическое наполнение. В этот момент
модель предстает перед нами в виде уравнения, системы уравнений, си84
стемы неравенств, дифференциального уравнения или системы таких
уравнений и т.д.
Когда математическая модель сформулирована, выбирается метод
ее исследования. Как правило, для решения одной и той же задачи есть
несколько конкретных методов, различающихся эффективностью,
устойчивостью и т.д. От верного выбора метода часто зависит успех
всего процесса.
Разработка алгоритма и составление программы для ЭВМ – это
творческий и трудноформализуемый процесс. В настоящее время при компьютерном математическом моделировании часто используются приемы
процедурно-ориентированного (структурного) программирования.
При создании имитационной модели можно также воспользоваться
возможностями одного из пакетов математической поддержки
(MATHEMATICA, MathCad, MathLab и др.).
В настоящее время существуют проблемно-ориентированные имитационные языки, в которых объединяются различные альтернативные
подходы, и которые самой своей структурой определяют возможную
схему действий разработчика модели. Характерным примером такого
рода является имитационный язык СЛАМ II (SLAM – Simulating
Language for Alternative Modeling имитационный язык для альтернативного моделирования).
После составления программы решаем с ее помощью простейшую
тестовую задачу (желательно, с заранее известным ответом) с целью
устранения грубых ошибок. Это – лишь начало процедуры тестирования, которую трудно описать формально исчерпывающим образом. По
существу, тестирование может продолжаться долго и закончиться тогда,
когда пользователь по своим профессиональным признакам сочтет программу верной.
Затем следует собственно численный эксперимент, и выясняется,
соответствует ли модель реальному объекту (процессу). Модель адекватна реальному процессу, если некоторые характеристики процесса,
полученные на ЭВМ, совпадают с экспериментальными с заданной степенью точности. В случае несоответствия модели реальному процессу
возвращаемся к одному из предыдущих этапов.
6.2.1. Моделирования случайных процессов
Моделирование случайных процессов – мощнейшее направление в
современном математическом моделировании.
Событие называется случайным, если оно достоверно непредсказуемо. Случайность окружает наш мир и чаще всего играет отрицатель85
ную роль в нашей жизни. Однако есть обстоятельства, в которых случайность может оказаться полезной. В сложных вычислениях, когда искомый результат зависит от результатов многих факторов, моделей
и измерений, можно сократить объем вычислений за счет случайных
значений значащих цифр.
При вероятностном моделировании используют различные методы,
которые позволяют решать задачи из различных областей. Ниже перечислены сферы применения вероятностных методов.
Метод статистического моделирования: решение краевых задач математической физики, решение систем линейных алгебраических уравнений, обращение матриц и сводящиеся к ним сеточные методы решения систем дифференциальных уравнений, вычисление кратных интегралов, решение интегральных уравнений, задач ядерной физики, газовой динамики, фильтрации, теплотехники.
Метод имитационного моделирования: моделирование систем массового обслуживания, задачи АСУ, АСУП и АСУТП, задачи защиты
информации, моделирование сложных игровых ситуаций и динамических систем.
Метод стохастической аппроксимации: рекуррентные алгоритмы
решения задач статистического оценивания.
Метод случайного поиска: решение задач оптимизации систем, зависящих от большого числа параметров, нахождение экстремумов
функции большого числа переменных.
Другие методы: вероятностные методы распознавания образов, модели адаптации, обучения и самообучения.
При компьютерном математическом моделировании случайных
процессов нельзя обойтись без наборов так называемых случайных чисел, удовлетворяющих заданному закону распределения. На самом деле
эти числа генерирует компьютер по определенному алгоритму, т.е. они
не являются вполне случайными хотя бы потому, что при повторном запуске программы с теми же параметрами последовательность повторится; такие числа называют «псевдослучайными».
Для не слишком требовательного пользователя обычно достаточны
возможности датчика (генератора) случайных чисел, встроенного
в большинство языков программирования. Так, в языке Паскаль есть
функция random, значения которой – случайные числа из диапазона [0, 1].
Ее использованию обычно предшествует использование процедуры
randomize, служащей для начальной 'настройки» датчика, т.е. получения
при каждом из обращений к датчику разных последовательностей случайных чисел. Для задач, решение которых требует очень длинных некоррелированных последовательностей, вопрос осложняется и требует
нестандартных
86
6.2.2. Особенности имитационного моделирования
производственных систем
Для анализа производственных систем, которые очень сложны,
разноплановы, не имеют исчерпывающего математического описания,
а также проходят ряд этапов проектирования, реализации и развития,
адекватные математические модели, будь то логические или числовые,
построить не представляется возможным. Естественным здесь является
использование методов имитационного моделирования.
Система может быть однозначно описана набором значений производственных параметров, характерных для каждого конкретного ее состояния. Если эти значения внести в компьютер, то изменения их в ходе
вычислительного процесса можно интерпретировать как имитацию перехода системы из одного состояния в другое. При таких предположениях имитационное моделирование можно рассматривать как динамическое представление системы путем продвижения ее одного состояния
к другому по характерным для нее операционным правилам.
При имитационном моделировании производственных систем изменения их состояния происходят в дискретные моменты времени. Основная концепция имитационного моделирования системы и в этом
случае состоит в отображении изменений ее состояния с течением времени. Таким образом, здесь определяющим является выделение и однозначное описание состояний моделируемой системы.
Имитационные модели позволяют без использования каких-либо
аналитических или других функциональных зависимостей отображать
сложные объекты, состоящие из разнородных элементов, между которыми существуют разнообразные связи. В эти модели может быть
включен также и человек.
Без принципиальных усложнений в такие модели могут быть включены как детерминированные, так и стохастические потоки (материальные и информационные). С помощью имитационного моделирования
можно отображать взаимосвязи между рабочими местами, потоками материалов и изделий, транспортными средствами и персоналом.
Несмотря на такие очевидные преимущества, прежде всего заключающиеся в широте и универсальности применения, при этом методе из
вида упускается существование логических связей, что исключает возможность полной оптимизации получаемых на этой модели решений.
Гарантируется лишь возможность отбора лучшего из просмотренных
вариантов.
Практически же имитационное моделирование во многих реальных
случаях – единственно возможный способ исследования. После разра87
ботки имитационной модели с ней проводятся компьютерные эксперименты, которые позволяют сделать выводы о поведении производственной системы.
Появление и развитие методов компьютерного имитационного моделирования стало возможным также и в результате развития метода статистических испытаний, позволившего моделировать случайные события
и процессы, занимающие большое место в реальных производствах.
При составлении имитационной модели и проведении с ее помощью моделирования исследуемого объекта необходимо решение нескольких связанных между собой задач. К ним относятся:
 анализ моделируемой системы и составление ее формализованного описания, включая выявление информационно-логической структуры системы, идентификацию ее компонентов, выбор параметров, характеризующих состояние этих компонентов, разработку компьютерной
модели системы, способной воспроизвести ее поведение, планирование
эксперимента по развертыванию событий в компьютерной модели,
отображающих события в моделируемой системе;
 разработка методологии компьютерного статистического эксперимента, включая генерацию случайных или псевдослучайных чисел,
имитацию различных случайных событий, статистическую обработку
данных;
 проведение собственно компьютерного эксперимента на имитационной модели, включая управление параметрами и переменными модели в ходе ее исследования на компьютере.
6.3. Вопросы для самоконтроля
1. На чём основано математическое моделирование?
2. Дайте определение понятию «аналитическое решение».
3. С какой целью при математическом моделировании используются компьютеры?
4. По каким признакам классифицируются математические модели?
5. Когда применяются игровые модели?
6. Дайте определение понятию «имитационная модель».
7. Что позволяет осуществить имитационное моделирование?
8. С какой целью разрабатывают модель объекта?
9. Этап моделирования, основанный на разделении входных параметров по степени важности влияния их изменений на выходные.
10. Сфера применения метода имитационного моделирования.
88
7. ТЕХНОЛОГИИ СОЗДАНИЯ
ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
7.1. Общая характеристика
технологии создания программного обеспечения
К программно-инструментальным средствам в первую очередь относятся алгоритмические языки и соответствующие им трансляторы, затем системы управления базами данных (СУБД) с языковыми средствами программирования в их среде, электронные таблицы с соответствующими средствами их настройки и т.п.
Этапы разработки программ представлены на рис. 10.
Постановка
задачи
Математическое
описание
Разработка
(выбор и
адаптация)
алгоритма
Составление
(адаптация)
программы
Тестирование
и отладка
программы
Приемосдаточные
испытания
Опытная
эксплуатация
Промышленная
эксплуатация
Рис. 10. Этапы разработки программного обеспечения
Первый этап представляет собой постановку задачи. На этом этапе раскрывается сущность задачи, т.е. формулируется цель ее решения;
определяется взаимосвязь с другими задачами; указывается периодичность решения; устанавливаются состав и формы представления входной, промежуточной и результатной информации.
Особое внимание в процессе постановки задачи уделяется детальному описанию входной, выходной (результатной) и межуточной информации.
Особенность реализации этого этапа технологического процесса
заключается в том, что конечный пользователь разрабатываемой программы, хорошо знающий ее проблемную сторону, обычно хуже представляет специфику и возможности использования ЭВМ для решения
задачи. В свою очередь, предметная область пользователя (особенно ее
отдельные нюансы, способные оказать влияние на решение задачи) зачастую незнакома разработчику программы, хотя он знает возможности
и ограничения на применение ЭВМ. Именно эти противоречия являют89
ся основной причиной возникновения ошибок при реализации данного
этапа технологического процесса разработки программ, которые затем
неизбежно отражаются и на последующих этапах. Отсюда вся важность
и ответственность этого этапа, требующего осуществления корректной
и полной постановки задачи, а также необходимости однозначного ее
понимания как разработчиком программы, так и ее пользователем.
Второй этап в технологии разработки программ – математическое
описание задачи и выбор метода ее решения. Наличие этого этапа обусловливается рядом причин, одна из которых вытекает из свойства неоднозначности естественного языка, на котором описывается постановка задачи. В связи с этим на нем выполняется формализованное описание задачи, т. е. устанавливаются и формулируются средствами языка математики
логико-математические зависимости между исходными и результатными
данными. Математическое описание задачи обеспечивает ее однозначное
понимание пользователем и разработчиком программы.
Сложность и ответственность этапа математического описания задачи и выбора (разработки) соответствующего метода ее решения часто
требуют привлечения квалифицированных специалистов области прикладной математики, обладающих знанием таких дисциплин, как исследование операций, математическая статистика, вычислительная математика и т. п.
Третий этап технологического процесса подготовки решения задач ЭВМ представляет собой алгоритмизацию ее решения, т. е. разработку оригинального или адаптацию (уточнение и корректировку) уже
известного алгоритма.
Алгоритмизация – это сложный творческий процесс. В основу процесса алгоритмизации положено фундаментальное понятие математики
и программирования – алгоритм. Алгоритм – это конечный набор правил, однозначно раскрывающих содержание и последовательность выполнения операций для систематического решения определенного класса задач за конечное число шагов.
Любой алгоритм обладает следующими важными свойствами: детерминированностью, массовостью, результатностью и дискретностью.
Детерминированность алгоритма (определенность, однозначность) –
свойство, определяющее однозначность результата работы алгоритма при
одних и тех же исходных данных. Это означает, что набор указаний алгоритма должен быть однозначно и точно понят любым исполнителем.
Массовость алгоритма – свойство, определяющее пригодность использования алгоритма для решения множества задач данного класса.
Оно предполагает возможность варьирования исходными данными в
определенных пределах. Свойство массовости алгоритма является
90
определяющим фактором, обеспечивающим экономическую эффективность решения задач на ЭВМ, так как для задач, решение которых осуществляется один раз, целесообразность использования ЭВМ, как правило, диктуется внеэкономическими категориями.
Результатность алгоритма – свойство, означающее, что для любых допустимых исходных данных он должен через конечное число шагов (или итераций) завершить работу.
Дискретность алгоритма – свойство, означающее возможность
разбиения определенного алгоритмического процесса на отдельные
элементарные действия.
Таким образом, алгоритм дает возможность чисто механически решать любую задачу из некоторого класса однотипных задач.
Составление (адаптация) программ (кодирование) является завершающим этапом технологического процесса разработки программных средств. Он предшествует началу непосредственно машинной реализации алгоритма решения задачи. Процесс кодирования заключается
в переводе описания алгоритма на один из доступных для ЭВМ языков
программирования. В процессе составления программы для ЭВМ конкретизируются тип и структура используемых данных, а последовательность действий, реализующих алгоритм, отражается посредством конкретного языка программирования.
Этап тестирования и отладки. Оба эти процесса функционально
связаны между собой, хотя их цели несколько отличаются друг от друга.
Тестирование представляет собой совокупность действий, назначенных для демонстрации правильности работы программы в заданных
диапазонах изменения внешних условий и режимов эксплуатации программы. Цель тестирования заключается в демонстрации отсутствия
(или выявлении) ошибок в разработанных программах на заранее подготовленном наборе контрольных примеров.
Процессу тестирования сопутствует понятие «отладка», которое подразумевает совокупность действий, направленных на устранение ошибок в
программах, начиная с момента обнаружения фактов ошибочной работы
программы и завершая устранением причин их возникновения.
По своему характеру (причине возникновения) ошибки в программах делятся на синтаксические и логические.
Синтаксические ошибки в программе представляют собой некорректную запись отдельных языковых конструкций с точки зрения правил их представления для выбранного языка программирования (ошибки выявляются автоматически).
91
Далее проверяется логика работы программы на исходных данных.
При этом возможны следующие основные формы проявления логических ошибок:
 в какой-то момент программа не может продолжать работу (возникает программное прерывание, обычно сопровождающееся указанием
места в программе, где оно произошло);
 программа работает, но не выдает всех запланированных результатов и не выходит на останов (происходит ее «зацикливание»);
 программа выдает результаты и завершает свою работу, но они
полностью или частично не совпадают с контрольными.
После выявления логических ошибок и устранения причин их возникновения в программу вносятся соответствующие исправления и отладка продолжается.
Программа считается отлаженной, если она безошибочно выполняется на достаточно представительном наборе тестовых данных, обеспечивающих проверку всех ее участков (ветвей).
Процесс тестирования и отладки программ имеет итерационный
характер и считается одним из наиболее трудоемких этапов процесса
разработки программ. По оценкам специалистов, он может составлять
от 30 до 50 % в общей структуре затрат времени на разработку проектов
и зависит от объема и логической сложности разрабатываемы программных комплексов.
Для сокращения затрат на проведение тестирования и отладки в
настоящее время широко применяются специальные программные
средства тестирования (например, генераторы тестовых данных) и приемы отладки (например, метод трассировки программ, позволяющий
выявлять, все ли ветви программы были задействованы при решении
задачи с заданными наборами исходных данных).
После завершения процесса тестирования и отладки программные
средства вместе с сопроводительной документацией передаются пользователю для эксплуатации.
Основное назначение сопроводительной документации – обеспечить пользователя необходимыми инструктивными материалами по работе с программными средствами. Состав сопроводительной документации обычно оговаривается заказчиком (пользователем) и разработчиком на этапе подготовки технического задания на программное средство. Как правило, это документы, регламентирующие работу пользователя в процессе эксплуатации программы, а также содержащие информацию о программе, необходимую в случае возникновения потребности
внесения изменений и дополнений в нее.
92
При передаче пользователю разработанных прикладных программных средств создается специальная комиссия, включающая в свой состав представителей разработчиков и заказчиков (пользователей). Комиссия в соответствии с заранее составленным и утвержденным обеими
сторонами планом проводит работы по приемке-передаче программных средств и сопроводительной документации. По завершении работы комиссии оформляется акт приемки-передачи.
В процессе внедрения и эксплуатации прикладных программных
средств могут выявляться различного рода ошибки, не обнаруженные
разработчиком при тестировании и отладке программных средств. Поэтому при реализации достаточно сложных и ответственных программных комплексов по согласованию пользователя (заказчика) с разработчиком этап эксплуатации программных средств может быть разбит на
два подэтапа: экспериментальная (опытная) и промышленная эксплуатация.
Смысл экспериментальной эксплуатации заключается во внедрении
разработанных программных средств на объекте заказчика с целью проверки их работоспособности и удобства работы пользователей при решении реальных задач в течение достаточно длительного периода времени (обычно не менее года) Только после завершения периода экспериментальной эксплуатации и устранения выявленных при этом ошибок
и учета замечаний программное средство передается в промышленную
эксплуатацию.
Для повышения качества работ, оперативности исправления ошибок, выявляемых в процессе эксплуатации программных средств, также
выполнения различного рода модификаций, в которых может возникнуть необходимость в ходе эксплуатации, разработчик может по договоренности с пользователем осуществлять их сопровождение.
Описанная схема технологического процесса разработки прикладных программных средств отражает их «жизненный цикл», т.е. временной интервал с момента зарождения программы до момента полного отказа от ее эксплуатации.
7.2. Современные методы и средства разработки
программного обеспечения
7.2.1. Современные методы разработки ПО
Метод нисходящего проектирования (метод пошаговой детализации, метод иерархического проектирования, top-down-подход).
Суть метода заключается в определении спецификаций компонентов системы путем последовательного выделения в ее составе отдель93
ных составляющих и их постепенной детализации до уровня, обеспечивающего однозначное понимание того, что и как необходимо разрабатывать и реализовывать.
Этот метод является незаменимым при разработке сложных по характеру и больших по объему программ, когда к их разработке необходимо привлекать большое число программистов, работающих параллельно. Он позволяет концентрировать внимание разработчиков на
наиболее ответственных частях программы, а также облегчает возможность постоянного контроля за ее работоспособностью по мере разработки, отладки и объединения отдельных составляющих программ за
счет организации непрерывности этого процесса в течение всей разработки.
Для ускорения разработки программного комплекса часто вместо
некоторых программ нижнего уровня, находящихся в процессе разработки, могут применяться специальные «программы-заглушки» Программы-заглушки требуются только на ранних стадиях разработки для
того, чтобы не сдерживать общий ход создания программного комплекса. Суть программы-заглушки заключается в том, что при обращении
к ней в соответствии с заданным набором исходных тестовых данных
она не формирует, а выбирает результат «решения» из заранее подготовленного набора. Благодаря этому обеспечивается возможность имитировать работу на ЭВМ реально создаваемой программы, а следовательно, осуществлять проверку работоспособности программ верхнего
уровня еще до того, как будут разработаны и отлажены все составляющие программы нижнего уровня.
Модульное проектирование
Реализация метода нисходящего проектирования тесно связана
с другим понятием программирования – модульным проектированием,
так как на практике при декомпозиции сложной программы возникает
вопрос о разумном пределе ее дробления на составные части. Вместе
с тем понятие модульности нельзя сводить только к представлению
сложных программных комплексов в виде набора отдельных функциональных блоков.
Модуль – это последовательность логически взаимосвязанных
фрагментов задачи, оформленных как отдельная часть программы. При
этом программные модули должны обладать следующими свойствами:
 на модуль можно ссылаться (т. е. обращаться к нему) по имени,
в том числе и из других модулей;
 по завершении работы модуль должен возвращать управление
тому модулю, который его вызывал;
94
 модуль должен иметь один вход и выход;
 модуль должен иметь небольшой размер, обеспечивающий его
обозримость.
При разработке сложных программ в них выделяют головной
управляющий модуль, подчиненные ему модули, обеспечивающие реализацию отдельных функций управления, функциональную обработку
(т. е. непосредственную реализацию основного назначения программного комплекса), а также вспомогательные модули, обеспечивающие сервисное обслуживание пакета (например, сбор и анализ статистики работы программы, обработка различного рода ошибочных ситуаций, обучение и выдача подсказок и т. п.).
Модульный принцип разработки программ обладает следующими
преимуществами:
 большую программу могут разрабатывать одновременно несколько исполнителей, и это позволяет сократить сроки ее разработки;
 появляется возможность создавать и многократно использовать в
дальнейшем библиотеки наиболее употребляемых программ;
 упрощается процедура загрузки больших программ в оперативную память, когда требуется ее сегментация;
 возникает много естественных контрольных точек для наблюдения за осуществлением хода разработки программ, а в последующем
для контроля за ходом исполнения программ;
 обеспечивается более эффективное тестирование программ,
проще осуществляются проектирование и последующая отладка.
Преимущества модульного принципа построения программ особенно наглядно проявляются на этапе сопровождения и модификации
программных продуктов, позволяя значительно сократить затраты сил и
средств на реализацию этого этапа.
Структурное программирование
Актуальная для начального периода развития и использования
ЭВМ проблема разработки программ, занимающих минимум основной
памяти и выполняющихся за кратчайшее время, в последующем в связи
резким падением стоимости аппаратной части ЭВМ, значительным возрастанием их быстродействия и объемов памяти сменилась необходимостью разработки и применения принципиально новых методов составления программ. Все это нашло свое воплощение в разработке
принципа структурного программирования. Одной из целей структурного программирования было стремление облегчить разработку и отладку программных модулей, а главное – их последующее сопровождение и модификацию.
95
В настоящее время структурное программирование – это целая
дисциплина, объединяющая несколько взаимосвязанных способов создания ясных, легких для понимания программ. Эффективность применения современных универсальных языков программирования во многом определяется удобством написания с их помощью структурных
программ.
CASE-технологии
За последнее десятилетие в области средств автоматизации программирования сформировалось новое направление под общим названием CASE-технологии (Computer Aided Software Engineering).
CASE-технология представляет собой совокупность средств системного анализа, проектирования, разработки и сопровождения сложных программных систем, поддерживаемых комплексом взаимоувязанных инструментальных средств автоматизации всех этапов разработки
программ. Благодаря структурным методам CASE-технология на стадиях анализа и проектирования обеспечивает разработчиков широкими
возможностями для различного рода моделирования, а централизованное хранение всей необходимой для проектирования информации и
контроль за целостностью данных гарантируют согласованность взаимодействия всех специалистов, занятых в разработке ПО.
Технологии RAD
В начале 80-х годов появилась методология, по которой разработка
программы начиналась не после завершения процесса выработки окончательных требований к ней, а как только устанавливались требования
на первый, «стартовый» (пилотный) вариант прикладной программы,
позволяющий начать содержательную работу по ее реализации на компьютере.
Это дало пользователю возможность, получая уже с первых шагов
конкретное представление о характере реализации задачи, уточнять ее
постановку. Тем самым облегчался процесс экспериментального поиска
нужного решения автоматизации задачи. Благодаря тесному взаимодействию разработчика с заказчиком (пользователем) на самом ответственном этапе создания прикладных программ между ними достигалось
быстрое взаимопонимание цели поставленной задачи и возможности ее
автоматизации в данных конкретных условиях. Это повышало скорость
разработки программ и послужило основанием для названия такой технологии RAD (Rapid Application Development – быстрая разработка программ), которая получила широкое распространение.
Data Warehouse
96
Другое направление разработки прикладных программных средств,
олицетворяющее собой современный подход к реализации широкого
круга задач для принятия управленческих решений, базируется на концепции создания специального хранилища данных (Data Warehouse).
Основное отличие концепции Data Warehouse от традиционного представления баз данных заключается в следующем:
 во-первых, в том, что актуализация данных в Data Warehouse
означает не обновление элементов информации, а добавление новых
элементов к уже имеющимся (что расширяет возможности проведения
различного рода сравнительного анализа);
 во-вторых, в том, что наряду с информацией, непосредственно
отражающей состояние системы управления, в Data Warehouse аккумулируются и метаданные.
Метаданные (данные о данных) облегчают возможность визуального представления содержимого Data Warehouse, позволяют, «перемещаясь» по хранилищу, быстро отбирать необходимые данные для последующей обработки.
Основные типы метаданных Data Warehouse отражают:
 структуру и содержимое хранилища;
 соответствие между исходными и выходными данными;
 объемные характеристики данных;
 критерии архивирования;
 отношения между данными;
 информацию по кодированию;
 интервал жизни данных и т.п.
Концепция Data Warehouse поддерживается RAD средствами разработки прикладного ПО.
Концепция Data Warehouse обеспечивает возможность разработки
программных приложений для поддержки процессов принятия решений
с использованием OLAP-систем.
Система OLAP (On-Line Analytical Process) предоставляет возможность разработки информационных систем, ориентированных на
yна организацию многомерных баз данных и создание корпоративных
сетей, а также обеспечивает поддержку Web-технологий в сетях
Internet/Intranet.
Успешное применение инструментальных средств OLAP-систем
объясняется быстротой разработки приложений, гибкостью и широкими
возможностями в области доступа к данным и их преобразования. В
настоящее время на рынке ПО предлагается большое число OLAP-стем,
97
разработчиками которых являются различные фирмы, например IBM,
Informix, Microsoft, Oracle, Sybase и др.
7.2.2. Инструментарий технологии программирования
Инструментарий технологии программирования – программные
продукты поддержки (обеспечения) технологии программирования.
В рамках этого направления сформировались следующие группы
программных продуктов (рис. 11):
1) средства для создания приложений, включающие:
 локальные средства, обеспечивающие выполнение отдельных
работ по созданию программ;
 интегрированные среды разработчиков программ, обеспечивающие выполнение комплекса взаимосвязанных работ по созданию
программ;
2) средства для создания информационных систем (CASE- технология), представляющие методы анализа, проектирования и создания программных систем и предназначенные для автоматизации процессов разработки и реализации информационных систем.
Инструментарий технологии
программирования
Средства для разработки
информационных систем
(CASE-технологии)
Средства для
разработки приложений
Локальные
средства
Интегрированные
среды
Встроенные в систему
реализации
Независимые от
системы реализации
Языки и системы
программирования
Инструментальная
среда пользователя
Рис. 11. Классификация инструментария технологии программирования
98
7.2.3. Средства для создания приложений
Локальные средства разработки программ
Эти средства на рынке программных продуктов наиболее представительны и включают языки и системы программирования, а также инструментальную среду пользователя.
Язык программирования – формализованный язык для описания алгоритма решения задачи на компьютере.
Средства для создания приложений – совокупность языков и систем программирования, а также различные программные комплексы
для отладки и поддержки создаваемых программ.
Языки программирования можно условно разделить на следующие
классы (если в качестве признака классификации взять синтаксис образования конструкций языка):
 машинные языки (computer language) – языки программирования,
воспринимаемые аппаратной частью компьютера (машинные коды);
 машинно-ориентированные языки (computer-oriented language) –
языки программирования, которые отражают структуру конкретного
типа компьютера (ассемблеры);
 алгоритмические языки (algorithmic language) – языки программирования, не зависящие от архитектуры компьютера (Паскаль, Си,
Фортран, Бейсик и др.);
 процедурно-ориентированные
языки
(procedure-oriented
language) – языки программирования, где имеется возможность написания программы как совокупности процедур (подпрограмм);
 проблемно-ориентированные языки (universal programming
language) – языки программирования, предназначенные для решения задач определенного класса (Лисп, Пролог, Симула и др.);
 интегрированные системы программирования.
Другой классификацией языков программирования является их деление на языки, ориентированные на реализацию основ структурного
программирования, и объектно-ориентированные языки, поддерживающие понятие объектов и их свойств и методов обработки.
Программа, подготовленная на языке программирования, проходит
этап трансляции, когда происходит преобразование исходного кода
программы (source code) в объектный код (object code), который далее
пригоден к обработке редактором связей. Редактор связей специальная
программа, обеспечивающая построение загрузочного модуля (load
module), пригодного к выполнению (рис. 12).
99
Исходный код
программы на
алгоритмическом
языке
Транслятор
(компилятор)
Объектный код
программы на
машинном
языке
Редактор
связей
Загрузочный
модуль, готовый
для выполнения
программы
Рис. 12. Схема процесса создания загрузочного модуля программы
Трансляция может выполняться с использованием средств компиляторов (compiler) или интерпретаторов (interpreter). Компиляторы
транслируют всю программу, но без ее выполнения. Интерпретаторы, в
отличие от компиляторов, выполняют пооператорную обработку и выполнение программы.
Существуют специальные программы, предназначенные для трассировки и анализа выполнения программ, так называемые отладчики
(debugger). Лучшие отладчики позволяют осуществить трассировку (отслеживание выполнения программы в пооператорном варианте), идентификацию места и вида ошибок в программе, наблюдение за изменением значений переменных, выражений и т. п. Для отладки и тестирования правильности работы программ создается база данных контрольного примера.
Более мощным средством разработки программ являются системы
программирования.
Системы программирования (programming system) включают:
 компилятор;
 интегрированную среду разработчика программ;
 отладчик;
 средства оптимизации кода программ;
 набор библиотек (возможно с исходными текстами программ);
 редактор связей;
 сервисные средства (утилиты) для работы с библиотеками текстовыми и двоичными файлами;
 справочные системы;
 документатор исходного кода программы;
 систему поддержки и управления проектом программного комплекса.
Средства поддержки проектов – новый класс средств разработки
программного обеспечения, предназначенный:
 для отслеживания изменений, выполненных разработчиками
программ;
 поддержки версий программы с автоматической разноской изменений;
 получения статистики о ходе работ проекта.
100
Инструментальная среда пользователя представлена
специальными средствами, встроенными в пакеты прикладных
программ, такими как:
 библиотека функций, процедур, объектов и методов обработки;
 макрокоманды;
 клавишные макросы, языковые макросы;
 программные модули-вставки; конструкторы экранных форм
и отчетов;
 генераторы приложений; языки запросов высокого уровня;
 языки манипулирования данными; конструкторы меню и многое
другое.
Средства отладки и тестирования программ предназначены для
подготовки разработанной программы к промышленной эксплуатации.
Интегрированные среды разработки программ
Дальнейшим развитием локальных средств разработки программ,
являются интегрированные программные среды разработчиков.
Основное назначение инструментария данного вида – повышение
производительности труда программистов, автоматизация создания кодов программ, обеспечивающих интерфейс пользователя графического
типа, разработка приложений для архитектуры клиент-сервер, запросов
и отчетов.
7.2.4. CASE-технологии
CASE-технологии – относительно новое направление, формировавшееся на рубеже 80-х годов.
CASE-технологии делятся на две группы:
 встроенные в систему реализации, в которых все решения по
проектированию и реализации привязаны к выбранной системе явления
базами данных (СУБД);
 независимые от системы реализации, в которых все решения по
проектированию ориентированы на унификацию начальных этапов
жизненного цикла, средств их документирования и обеспечивают большую гибкость в выборе средств реализации.
Основное достоинство CASE-технологии – поддержка коллективной работы над проектом за счет возможности работы в локальной сети
разработчиков, экспорта/импорта любых фрагментов проекта, организационного управления проектом.
101
Некоторые CASE-технологии ориентированы только на системных
проектировщиков и предоставляют специальные графические средства
для изображения различного вида моделей:
 диаграмм потоков данных (DFD – data flow diagrams) совместно
со словарями данных и спецификациями процессов;
 диаграмм «сущность-связь» (ERD – entity relationship diagrams),
являющихся информационной моделью предметной области;
 диаграмм переходов состояний (STD – state transition diagrams),
учитывающих события и реакцию на них системы обработки данных.
Диаграммы DFD устанавливают связь источников информации
с потребителями, выделяют логические функции (процессы) образования информации, определяют группы элементов данных и их хранилища (базы данных).
Описание структуры потоков данных, определение их компонентов
хранятся в актуальном состоянии в словаре данных, который выступает
как база данных проекта. Каждая логическая функция может детализироваться с помощью DFD нижнего уровня согласно методам исходящего проектирования.
Этими CASE-технологиями выполняются автоматизированное проектирование спецификаций программ (задание основных характеристик
для разработки программ) и ведение словаря данных.
Другой класс CASE-технологий поддерживает только разработку
программ, включая:
 автоматическую генерацию кодов программ на основании их
спецификаций;
 проверку корректности описания моделей данных и схем потоков данных;
 документирование программ согласно принятым стандартам
и актуальному состоянию проекта;
 тестирование и отладку программ.
Кодогенерация программ выполняется двумя способами: создание
каркаса программ и создание полного продукта. Каркас программы
служит для последующего ручного варианта редактирования исходных
текстов, обеспечивая возможность вмешательства программиста; полный продукт не редактируется вручную.
В рамках CASE-технологий проект сопровождается целиком, а не
только его программные коды. Проектные материалы, подготовленные
в CASE-технологии, служат заданием программистам, а само программирование скорее сводится к кодированию – переводу на определенный
язык структур данных и методов их обработки, если не предусмотрена
автоматическая кодогенерация.
102
7.3. Языки и системы программирования
7.3.1. Развитие языков программирования
Поколения языков программирования
Языки программирования принято делить на пять поколений.
В первое поколение входят языки, созданные в начале 50-х годов,
когда только появились первые компьютеры. Это был первый язык ассемблера, созданный по принципу «одна инструкция – одна строка».
Расцвет второго поколения языков программирования пришелся на
конец 50-х – начало 60-х годов. Тогда был разработан символический
ассемблер, в котором появилось понятие переменной. Он стал первым
полноценным языком программирования. Благодаря его возникновению
заметно возросли скорость разработки и надежность программ.
Появление третьего поколения языков программирования принято
относить к 60-м годам. В это время возникли универсальные языки высокого уровня, с их помощью удается решать задачи из любых областей. Такие качества новых языков, как относительная простота, независимость от конкретного компьютера и возможность использования
мощных синтаксических конструкций, позволили резко повысить производительность труда программистов. Понятная большинству пользователей структура этих языков привлекла к написанию небольших программ (как правило, инженерного или экономического характера). Подавляющее большинство языков этого поколения успешно применяется
и сегодня.
С начала 70-х годов по настоящее время продолжается период языков четвертого поколения. Эти языки предназначены для реализации
крупных проектов, повышения их надежности и скорости создания. Они
ориентированы на специализированные области применения, где хороших результатов можно добиться, используя не универсальные, а проблемно-ориентированные языки, оперирующие конкретными понятиями узкой предметной области.
Как правило, в эти языки встраиваются мощные операторы, позволяющие одной строкой описать такую функциональность, для реализации которой на языках младших поколений потребовались бы тысячи
строк исходного кода.
Рождение языков пятого поколения произошло в середине 90-х годов. К ним относятся также системы автоматического создания прикладных программ с помощью визуальных средств разработки, без знания программирования.
103
Главная идея, которая закладывается в эти языки, – возможность
автоматического формирования результирующего текста на универсальных языках программирования (который потом требуется откомпилировать). Инструкции же вводятся в компьютер в максимально
наглядном виде с помощью методов, наиболее удобных для человека,
не знакомого с программированием.
Обзор языков программирования высокого уровня
Fortran (Фортран)
Это первый компилируемый язык, созданный в 50-е годы.
Программисты, разрабатывавшие программы исключительно на ассемблере, выражали серьезное сомнение в возможности появления высокопроизводительного языка высокого уровня, поэтому основным критерием при разработке компиляторов Фортрана являлась эффективность
исполняемого кода. Хотя в Фортране впервые был реализован ряд важнейших понятий программирования, удобство создания программ было
принесено в жертву возможности получения эффективного машинного
кода. Однако для этого языка было создано огромное количество библиотек, начиная от статистических комплексов и заканчивая пакетами
управления спутниками. Фортран продолжает активно использоваться
во многих организациях. Имеется стандартная версия Фортрана HPF
(High Performance Fortran) для параллельных суперкомпьютеров со
множеством процессоров.
Cobol (Кобол)
Это компилируемый язык для применения в экономической области и решения бизнес – задач, разработанный в начале 60-х годов. Он
отличается большой «многословностью» – его операторы иногда выглядят как обычные английские фразы. В Коболе были реализованы очень
мощные средства работы с большими объемами данных, хранящимися
на различных внешних носителях. На этом языке создано очень много
приложений, которые эксплуатируются и сегодня.
Algol (Алгол)
Компилируемый язык, созданный в 1960 г. Он был призван заменить Фортран, но из-за более сложной структуры не получил широкого
распространения. В 1968 г. была создана версия Алгол 68, по своим
возможностям и сегодня опережающая многие языки программирования, однако из-за отсутствия достаточно эффективных компьютеров для
нее не удалось своевременно создать хорошие компиляторы.
104
Pascal (Паскаль)
Язык Паскаль, созданный в конце 70-х годов, во многом напоминает Алгол, но в нем ужесточен ряд требований к структуре программы
и имеются возможности, позволяющие успешно применять его при создании крупных проектов.
Basic (Бейсик)
Для этого языка имеются и компиляторы, и интерпретаторы, а по
популярности он занимает первое место в мире. Он создавался
в 60-х годах в качестве учебного языка и очень прост в изучении.
С (Си)
Данный язык был создан в лаборатории Bell и первоначально
не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и
компактные программы, и в то же время не зависеть от конкретного типа процессора. Си во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в
70-е годы написано множество прикладных и системных программ
и ряд известных операционных систем (Unix).
C++ (Си++)
Си++ – это объектно-ориентированное расширение языка Си, разработан в 1980 г. В нем реализовано множество новых мощных возможностей, которые позволили резко повысить производительность
труда программистов, однако создание сложных и надежных программ
требует от разработчиков профессиональной подготовки высокого
уровня.
Java (Ява)
Этот язык был создан компанией Sun в начале 90-х годов на основе
Си++. Он призван упростить разработку приложений на основе Си++
путем исключения из него всех низкоуровневых возможностей.
Но главная особенность этого языка – компиляция не в машинный код,
а в платформно-независимый байт-код (каждая команда занимает один
байт). Этот байт-код может выполняться с помощью интерпретатора –
виртуальной Java-машины JVM (Java Virtual Machine), версии которой
созданы сегодня для любых платформ.
Особое внимание в развитии этого языка уделяется двум направлениям:
 поддержке всевозможных мобильных устройств и микрокомпьютеров, встраиваемых в бытовую технику (технология Jini);
105
 созданию платформно-независимых программных модулей, способных работать на серверах в глобальных и локальных сетях с различными операционными системами (технология Java Beans).
Пока недостаток этого языка – невысокое быстродействие.
Языки программирования баз данных
Эта группа языков отличается от алгоритмических языков, прежде
всего решаемыми задачами. База данных – это файл (или группа файлов), представляющий собой упорядоченный набор записей, имеющих
единообразную структуру и организованных по единому шаблону (как
правило, в табличном виде). База данных может состоять из нескольких
таблиц. Удобно хранить в базах данных различные сведения из справочников, картотек, журналов бухгалтерского учета и т.д. При работе с
базами данных чаще всего требуется выполнять следующие операции:
Первые базы данных появились очень давно, как только появилась
потребность в обработке больших массивов информации и выборки
групп записей по определенным признакам. Для этого был создан
структурированный язык запросов SQL (Structured Query Language). Он
основан на мощной математической теории и позволяет выполнять эффективную обработку баз данных, манипулируя не отдельными записями, а группами записей.
Для управления большими базами данных и их эффективной обработки разработаны СУБД (Системы Управления Базами Данных).
Практически фактически в каждой СУБД помимо поддержки языка
SQL имеется свой уникальный язык, ориентированный на особенности
этой СУБД и не переносимый на другие системы.
Сегодня в мире насчитывается пять ведущих производителей
СУБД:
Microsoft (SQL Server), IBM (DB2), Oracle, Software AG (Adabas),
Informix и Sybase. Их продукты нацелены на поддержку одновременной
работы тысяч пользователей в сети, а базы данных могут храниться
в распределенном виде на нескольких серверах.
С появлением персональных компьютеров были созданы так называемые настольные СУБД. Родоначальником современных языков программирования баз данных для ПК принято считать СУБД dBase II,
язык которой был интерпретируемым. Затем для него были созданы
компиляторы, появились СУБД FoxPro и Clipper, поддерживающие диалекты этого языка. Сегодня похожие, но несовместимые версии языков
семейства dBase реализованы в продуктах Visual FoxPro фирмы
Microsoft и Visual dBase фирмы Inprise.
106
Языки программирования для Интернета
С активным развитием глобальной сети было создано немало популярных языков программирования, адаптированных специально для
Интернета.
Все они отличаются характерными особенностями: языки являются
интерпретируемыми, интерпретаторы для них распространяются бесплатно, а сами программы – в исходных текстах. Такие языки называют
скрипт-языками.
HTML. Общеизвестный язык для оформления документов. Он
очень прост и содержит элементарные команды форматирования текста,
добавления рисунков, задания шрифтов и цветов, организации ссылок
и таблиц. Все Web-страницы написаны на языке HTML или используют
его расширения.
Perl. В 80-х годах Ларри Уолл разработал язык Perl. Он задумывался как средство эффективной обработки больших текстовых файлов, генерации текстовых отчетов и управления задачами. По мощности Perl
значительно превосходит языки типа Си. В него введено много часто
используемых функций работы со строками, массивами, всевозможные
средства преобразования данных, управления процессами, работы
с системной информацией и др.
VRML. В 1994г. был создан язык VRML для организации виртуальных трехмерных интерфейсов в Интернете. Он позволяет описывать
в текстовом виде различные трехмерные сцены, освещение и тени, текстуры (покрытия объектов), вращать в любых направлениях, масштабировать, регулировать освещенность и т.д.
Языки моделирования
При создании программ и формировании структур баз данных нередко применяются формальные способы их представления – формальные нотации, с помощью которых можно визуально представить таблицы баз данных, поля, объекты программы и взаимосвязи между ними в
системе, имеющей специализированный редактор и генератор исходных
текстов программ на основе созданной модели. Такие системы называются CASE-системами. В них активно применяются нотации IDEF, а в
последнее время все большее распространение получает UML.
7.3.2. Современные системы программирования
Основы визуального программирования интерфейса
Один из тупиков или кризисов программирования, не так давно
был связан с разработкой графического интерфейса пользователя. Про107
граммирование вручную всяких привычных пользователю окон, кнопок,
меню, обработка событий мыши и клавиатуры, включение в программы
изображений и звука требовало все больше и больше времени программиста. В ряде случаев весь этот сервис начинал занимать до 80–90 %
объема программных кодов. Причем весь этот труд нередко пропадал
почти впустую, поскольку через год – другой менялся общепринятый
стиль графического интерфейса и все приходилось начинать заново.
Выход из этой ситуации обозначился благодаря двум подходам.
Первый – стандартизация многих функций интерфейса, благодаря
чему появилась возможность использовать библиотеки, имеющиеся,
например, в Windows. В итоге при смене стиля графического интерфейса (например, при переходе от Windows 3.x к Windows 95) приложения
смогли автоматически приспосабливаться к новой системе без какоголибо перепрограммирования.
Вторым революционным шагом явилось появление визуального
программирования, возникшего в Visual Basic и нашедшего блестящее
воплощение в Delphi и С++Builder фирмы Borland.
Визуальное программирование позволило свести проектирование
пользовательского интерфейса к простым и наглядным процедурам, которые дают возможность за минуты или часы сделать то, на что ранее
уходили месяцы работы.
Пример 14. В Delphi это выглядит следующим образом. Вы работаете в Интегрированной Среде Разработки Delphi, которая предоставляет Вам формы (в приложении их может быть несколько) на которых
умещаются компоненты. Обычно это оконная форма, хотя могут быть
и невидимые формы. На форму с помощью мыши переносятся и размещаются пиктограммы компонентов, имеющихся в библиотеках Delphi.
С помощью простых манипуляций можно изменять размеры расположение этих компонентов. При этом все время в процессе проектирования видно результат – изображение формы и расположенных на ней
компонентов. Результаты проектирования видно, даже не компилируя
программу.
Основное достоинство заключается в том, что во время проектирования формы и размещения на ней компонентов, Delphi автоматически
формирует коды программы, включая в нее соответствующие фрагменты, описывающие данный компонент. А затем в соответствующих диалоговых окнах пользователь может изменить заданные по умолчанию
значения компонентов и, при необходимости написать обработчики каких-то событий. Фактически, проектирование сводится к размещению
108
компонентов на форме, заданию некоторых их свойств и написанию,
при необходимости, обработчиков событий.
Компоненты могут быть визуальные, видимые при работе приложения, и невизуальные, выполняющие те или иные служебные функции. Визуальные компоненты сразу видны на экране в процессе проектирования в таком же виде, в каком их увидит пользователь во время
выполнения приложения.
В библиотеки визуальных компонентов Delphi включено множество типов компонентов и их номенклатура очень быстро расширяется
от версии к версии. Имеющегося уже сейчас вполне достаточно, чтобы
построить практически любое самое замысловатое приложение, не прибегая к созданию новых компонентов. При этом даже неопытный программист, может создавать приложения, которые выглядят профессионально.
Основные системы программирования
Из универсальных языков программирования сегодня наиболее популярны следующие: Бейсик (Basic), Паскаль (Pascal), Си++ (C++), Ява
(Java).
Для каждого из этих языков программирования сегодня имеется
немало систем программирования, выпускаемых различными фирмами
и ориентированных на различные модели ПК и операционные системы.
Наиболее популярны следующие визуальные среды быстрого проектирования программ для Windows:
 Basic: Microsoft Visual Basic;
 Pascal: Borland Delphi;
 C++: Borland C++Bulider;
 Java: Symantec Cafe.
Для разработки серверных и распределенных приложений можно
использовать систему программирования Microsoft Visual C++, продукты фирмы Borland, практически любые средства программирования на
Java.
7.4. Архитектура программных систем
В то время как большинство автономных приложений – офисные
программы, среды разработки, системы подготовки текстов и изображений – выполняются на одном компьютере, крупные информационные
комплексы (например, система автоматизации предприятия) состоят из
десятков и сотен отдельных программ, которые взаимодействуют друг
с другом по сети, выполняясь на разных компьютерах. В таких случаях
говорят, что они работают в различной программной архитектуре.
109
1. Автономные приложения. Работают на одном компьютере.
2. Приложения в файл-серверной архитектуре. Компьютеры
пользователей системы объединены в сеть, при этом на каждом из них
(на клиентском месте) запущены копии одной и той же программы, которые обращаются за данными к серверу, который хранит файлы, одновременно доступные всем пользователям (как правило, это базы данных). Сервер обладает повышенной надежностью, высоким быстродействием, большим объемом памяти, на нем установлена специальная серверная версия операционной системы. При одновременном обращении
нескольких программ к одному файлу, например, с целью его обновления, могут возникнуть проблемы, связанные с неоднозначностью определения его содержимого. Поэтому каждое изменение общедоступного
файла выделяется в транзакцию (элементарную операцию по обработке
данных, имеющую фиксированные начало, конец (успешное или неуспешное завершение) и ряд других характеристик). Особенность этой
архитектуры в том, что все вычисления выполняются на клиентских местах, что требует наличия на них достаточно производительных ПК (это
так называемые системы с толстым клиентом – программой, которая
выполняет всю обработку получаемой от сервера информации).
3. Приложения в клиент-серверной архитектуре. Эта архитектура похожа на предыдущую, только сервер помимо простого обеспечения одновременного доступа к данным, способен еще выполнять программы, которые берут на себя определенный объем вычислений
(в файл-серверной архитектуре он реализуется полностью на клиентских установках). Благодаря этому удается повысить общую надежность системы, так как сервер работает значительно более устойчиво,
чем ПК, и снять лишнюю нагрузку с клиентских мест, на которых удается использовать. Запускаемые на них приложения осуществляют
небольшие объемы вычислений, а иногда занимаются только отображением получаемой от сервера информации, поэтому они называются
тонкими клиентами.
4. Приложения в многозвенной архитектуре. Недостаток предыдущей архитектуры в том, что резко возрастает нагрузка на сервер, а если он выходит из строя, то работа всей системы останавливается. Поэтому в систему добавляется так называемый сервер приложений, на
котором выполняется вся вычислительная работа. Другой сервер баз
данных обрабатывает запросы пользователей, на третьем может быть
установлена специальная программа – монитор транзакций, которая оптимизирует обработку транзакций и балансирует нагрузку на серверы.
В большинстве практических случаев все серверы соединены последо110
вательно, и выход из строя одного звена если и не останавливает всю
работу, то по крайней мере, снижает производительность системы.
5. Приложения в распределенной архитектуре. Чтобы избежать
недостатков рассмотренных архитектур, были придуманы специальные
технологии, позволяющие создавать программу в виде набора компонентов, которые можно запускать на любых серверах, связанных сеть
(компоненты как бы распределены по сети). Основное преимущество
подобного подхода в том, что при выходе из строя любого компьютера
специальные программы-мониторы, которые следят за корректностью
работы, сразу перезапускают временно пропавший компонент на другом компьютере. При этом общая надежность всей системы становится
очень высокой, а вычислительная загрузка распределяется между серверами оптимальным образом. Доступ к возможностям любого компонента, предназначенного для общения с пользователем, осуществляется
с произвольного клиентского места. Так как все вычисления происходят
на серверах, появляется возможность создавать сверхтонкие клиенты –
программы только отображающие получаемую из сети информацию
и требующие минимальных компьютерных ресурсов. Благодаря этому
доступ к компонентной системе возможен не только с ПК, но и с небольших мобильных устройств. Частный случай компонентного подхода – доступ к серверным приложениям из браузеров через Интернет.
Сегодня наиболее популярны три компонентные технологии:CORBA консорциума OMG, Java Beans компании Sun, СОМ+ корпорации Microsoft.
Эти технологии будут определять развитие информационной индустрии в ближайшие десятилетия.
7.5. Вопросы для самоконтроля
1. В чём заключается первый этап разработки программного обеспечения?
2. Дайте определение понятию «алгоритмизация».
3. Какими свойствами должен обладать алгоритм?
4. В чём заключается дискретность алгоритма?
5. После выполнения каких процессов программное средство отдаётся на эксплуатацию?
6. В чём заключается суть программы-заглушки?
7. Какими свойствами должны обладать программные модули?
8. Какими преимуществами обладает модульный принцип разработки программ?
9. Что представляют собой CASE-технологии?
10. Перечислите средства для создания приложений.
111
8. КОМПЬЮТЕРНАЯ МАТЕМАТИКА
И МАТЕМАТИЧЕСКИЕ ПАКЕТЫ
При использовании вычислительной техники встала проблема реализации алгоритмов решения в виде так называемых программ. Для
решения этой проблемы в различные годы использовались следующие
средства:
 программирование в машинных кодах (включая языки типа Ассемблер);
 программирование на языках высокого уровня (включая объектно-ориентированное программирование);
 системы компьютерной математики.
Разработка программы (даже с использованием языков высокого
уровня с приставками Visual) требует и соответствующей подготовки,
и достаточно большего количества времени (и то и другое часто отсутствует у «обычного пользователя»). Поэтому, начиная с 90-х годов
прошлого века, широкую известность и заслуженную популярность
приобрели так называемые системы компьютерной математики или,
проще, математические пакеты. Наиболее популярными из них являются Maple, MatLab, MathCAD. В рамках курса «Информационные
технологии», представленного в данном пособии, будут рассматриваться математические пакеты MathCAD и MatLab.
8.1. Математический пакет MathCAD
MathCAD – система компьютерной алгебры из класса систем автоматизированного проектирования, ориентированная на подготовку интерактивных документов с вычислениями и визуальным сопровождением, отличается легкостью использования и применения для коллективной работы.
MathcCAD был задуман и первоначально написан Алленом Раздовом из Массачусетского технологического института (MIT), соучредителем компании Mathsoft, которая с 2006 года является частью корпорации PTC (Parametric Technology Corporation).
MathcCAD имеет простой и интуитивный для использования интерфейс пользователя. Для ввода формул и данных можно использовать
как клавиатуру, так и специальные панели инструментов.
Некоторые из математических возможностей MathCAD (версии до
13.1 включительно) основаны на подмножестве системы компьютерной
112
алгебры Maple (MKM, Maple Kernel Mathsoft). Начиная с 14 версии – использует символьное ядро MuPAD.
Работа осуществляется в пределах рабочего листа, на котором
уравнения и выражения отображаются графически, в противовес текстовой записи в языках программирования. При создании документовприложений используется принцип WYSIWYG (What You See Is What
You Get – «что видишь, то и получаешь»).
Несмотря на то, что эта программа в основном ориентирована на
пользователей-непрограммистов, Mathcad также используется в сложных проектах, чтобы визуализировать результаты математического моделирования, путем использования распределённых вычислений и традиционных языков программирования. Также Mathcad часто используется в крупных инженерных проектах, где большое значение имеет
трассируемость и соответствие стандартам.
MathCAD достаточно удобно использовать для обучения, вычислений и инженерных расчетов. Открытая архитектура приложения в сочетании с поддержкой технологий .NET и .XML позволяют легко интегрировать MathCAD практически в любые ИТ-структуры и инженерные
приложения. Есть возможность создания электронных книг (e-Book).
Количество пользователей в мире – около 1,8 млн.
8.1.1. Основные возможности
MathCAD содержит сотни операторов и встроенных функций для
решения различных технических задач. Программа позволяет выполнять численные и символьные вычисления, производить операции
с скалярными величинами, векторами и матрицами, автоматически переводить одни единицы измерения в другие.
Среди возможностей MathCAD можно выделить:
 решение дифференциальных уравнений, в том числе и численными методами;
 построение двумерных и трёхмерных графиков функций (в разных системах координат, контурные, векторные и т. д.);
 использование греческого алфавита как в уравнениях, так
и в тексте;
 выполнение вычислений в символьном режиме;
 выполнение операций с векторами и матрицами;
 символьное решение систем уравнений;
 аппроксимация кривых;
 выполнение подпрограмм;
113
 поиск корней многочленов и функций;
 проведение статистических расчётов и работа с распределением
вероятностей;
 поиск собственных чисел и векторов;
 вычисления с единицами измерения;
 интеграция с САПР системами, использование результатов вычислений в качестве управляющих параметров;
С помощью MathCAD инженеры могут документировать все вычисления в процессе их проведения.
8.1.2. Сравнительная характеристика
Назначение
MathCAD относится к системам компьютерной алгебры, т. е.
средств автоматизации математических расчетов. В этом классе программного обеспечения существует много аналогов различной направленности и принципа построения. Наиболее часто MathCAD сравнивают с такими программными комплексами, как Maple, Mathematica,
MatLab, а также с их аналогами MuPAD, Scilab, Maxima и др. Впрочем,
объективное сравнение осложняется в связи с разным назначением программ и идеологией их использования.
Система Maple, например, предназначена главным образом для выполнения аналитических (символьных) вычислений и имеет для этого
один из самых мощных в своем классе арсенал специализированных
процедур и функций (более 3000). Такая комплектация для большинства
пользователей, которые сталкиваются с необходимостью выполнения
математических расчетов среднего уровня сложности, является избыточным. Возможности Maple ориентированы на пользователей – профессиональных математиков; решения задач в среде Maple требует
не только умения оперировать какой-либо функции, но и знания методов решения, в нее заложенных: во многих встроенных функциях Maple
фигурирует аргумент, задающий метод решения.
Тоже самое можно сказать и о Mathematica. Это одна из самых
мощных систем, имеет чрезвычайно большую функциональную наполненность (есть даже синтезирование звука). Mathematica обладает высокой скоростью вычислений, но требует изучения довольно необычного
языка программирования.
Разработчики MathCAD сделали ставку на расширение системы в
соответствии с потребностями пользователя. Для этого назначены дополнительные библиотеки и пакеты расширения, которые можно при114
обрести отдельно и которые имеют дополнительные функции, встраиваемые в систему при установке, а также электронные книги с описанием методов решения специфических задач, с примерами действующих
алгоритмов и документов, которые можно использовать непосредственно в собственных расчетах. Кроме того, в случае необходимости и при
условии наличия навыков программирования в C, есть возможность создания собственных функций и их прикрепления к ядру системы через
механизм DLL.
MathCAD, в отличие от Maple, изначально создавался для численного решения математических задач, он ориентирован на решение задач
именно прикладной, а не теоретической математики, когда нужно получить результат без углубления в математическую суть задачи. Впрочем,
для тех, кому нужны символьные вычисления и предназначено интегрированное ядро Maple (с версии 14-MuPAD). Особенно это полезно,
когда речь идет о создании документов образовательного назначения,
когда необходимо продемонстрировать построение математической модели, исходя из физической картины процесса или явления. Символьное
ядро MathCAD, в отличие от оригинального Maple (MuPAD) искусственно ограничено (доступно около 300 функций), но этого в большинстве случаев вполне достаточно для решения задач инженерного
характера.
Более того, опытные пользователи Mathcad обнаружили, что в версиях до 13 включительно есть возможность не слишком сложным способом задействовать почти весь функциональный арсенал ядра Maple
(так называемые «недокументированные возможности»), что приближает вычислительную мощность Mathcad к Maple [7].
Интерфейс
Основное отличие MathCAD от аналогичных программ – это графический, а не текстовый режим ввода выражений. Для набора команд,
функций, формул можно использовать как клавиатуру, так и кнопки на
многочисленных специальных панелях инструментов. В любом случае –
формулы будут иметь привычный, аналогичный книжному, вид. То есть
особой подготовки для набора формул не нужно. Вычисления с введенными формулами осуществляются по желанию пользователя или мгновенно, одновременно с набором, либо по команде. Обычные формулы
вычисляются слева направо и сверху вниз (подобно чтению текста).
Любые переменные, формулы, параметры можно изменять, наблюдая
воочию соответствующие изменения результата. Это дает возможность
115
организации действительности интерактивных вычислительных документов.
В других программах (Maple, MuPAD, Mathematica) вычисления
осуществляются в режиме программного интерпретатора, который
трансформирует в формулы введенные в виде текста команды. Maple
своим интерфейсом ориентирован на тех пользователей, кто уже имеет
навыки программирования в среде традиционных языков с введением
сложных формул в текстовом режиме. Для пользования MathCAD можно вообще не быть знакомым с программированием в том или ином виде.
MathCAD задумывался как средство программирования без программирования, но, если возникает такая потребность – MathCAD имеет
довольно простые для усвоения инструменты программирования, позволяющие, впрочем, строить весьма сложные алгоритмы, к чему прибегают, когда встроенных средств решения задачи не хватает, а также когда необходимо выполнять серийные расчеты [6].
Отдельно следует отметить возможность использования в расчетах
MathCAD величин с размерностями, причем можно выбрать систему
единиц: СИ, СГС, МКС, английскую или построить собственную. Результаты вычислений, разумеется, также получают соответствующую
размерность. Пользу от такой возможности трудно переоценить, поскольку значительно упрощается отслеживание ошибок в расчетах, особенно в физических и инженерных.
Графика
В среде MathCAD фактически нет графиков функций в математическом понимании термина, а есть визуализация данных, находящихся
в векторах и матрицах (т. е. осуществляется построение как линий так
и поверхностей по точкам с интерполяцией), хотя пользователь может
об этом и не знать, поскольку у него есть возможность использования
непосредственно функций одной или двух переменных для построения
графиков или поверхностей соответственно. Так или иначе, механизм
визуализации Mathcad значительно уступает таковому у Maple, где достаточно иметь только вид функции, чтобы построить график или поверхность любого уровня сложности. По сравнению с Maple, графика
MathCAD имеет еще такие недостатки, как: невозможность построения
поверхностей, заданных параметрически, с непрямоугольной областью
определения двух параметров; создание и форматирование графиков
только через меню, что ограничивает возможности программного
управления параметрами графики [6].
116
Однако следует помнить об основной области применения MathCAD
– для задач инженерного характера и создание учебных интерактивных
документов, возможностей визуализации вполне достаточно. Опытные
пользователи MathCAD демонстрируют возможность визуализации
сложнейших математических конструкций, но объективно это уже выходит за рамки назначения пакета.
8.1.3. Расширение функциональности
Возможно дополнение MathCAD новыми возможностями с помощью специализированных пакетов расширений и библиотек, которые
пополняют систему дополнительными функциями и константами для
решения специализированных задач:
 Пакет для анализа данных (англ. Data Analysis Extension Pack) –
обеспечивает MathCAD необходимыми инструментами для анализа данных.
 Пакет для обработки сигналов (англ. Signal Processing Extension
Pack) – содержит более 70 встроенных функций для аналоговой
и цифровой обработки сигналов, анализа и представления результатов
в графическом виде.
 Пакет для обработки изображений (англ. Image Processing
Extension Pack) – обеспечивает MathCAD необходимыми инструментами для обработки изображений, анализа и визуализации.
 Пакет для работы с функциями волнового преобразования (англ.
Wavelets Extension Pack) – содержит большой набор дополнительных
вейвлет-функций, которые можно добавить в библиотеку встроенных
функций базового модуля MathCAD Professional. Пакет предоставляет
возможность применить новый подход к анализу сигналов и изображений, статистической оценки сигналов, анализа сжатия данных, а также
специальных численных методов. Функциональность включает однои двухмерные вейвлеты, дискретные вейвлет-преобразования, мультианализ разрешения и многое другое. Пакет объединяет более 60 функций
ключевых вейвлетов. Включены ортогональные и биортогональные семейства вейвлетов, среди прочего – вейвлет Хаара, вейвлет Добеши,
симлет, койфлет и B-сплайны. Пакет также содержит обширную диалоговую документацию по основным принципам вейвлетов, приложения,
примеры и таблицы ссылок.
 Библиотека строительства (англ. Civil Engineering Library) –
включает справочник англ. Roark's Formulas for Stress and Strain (Формулы Роарка для расчета напряжений и деформаций), настраиваемые
117
шаблоны для строительного проектирования и примеры тепловых расчётов.
 Электротехническая библиотека (англ. Electrical Engineering
Library) – содержит стандартные вычислительные процедуры, формулы
и справочные таблицы, используемые в электротехнике. Текстовые пояснения и примеры облегчают работу с библиотекой – каждый заголовок имеет гиперссылку на оглавление и указатель, и его можно найти в
системе поиска.
 Библиотека машиностроения (англ. Mechanical Engineering
Library) – включает справочник англ. Roark's Formulas for Stress and
Strain (Формулы Роарка для расчета напряжений и деформаций), содержащий более пяти тысяч формул, вычислительные процедуры из
справочника McGraw-Hill и метод конечных элементов. Текстовые пояснения, поисковая система и примеры облегчают работу. В состав библиотеки включена электронная книга Дэвида Пинтура «Введение в метод конечных элементов».
8.1.4. Взаимодействие с другими программами
Mathcad интегрируется с программами SmartSketch, VisSim/Comm
PE, Pro/ENGINEER.
Приложение SmartSketch позволяет инженерам, дизайнерам, архитекторам, чертежникам, системным и сетевым администраторам работать с точными чертежами и графиками.
VisSim/Comm PE – это Windows-приложение для моделирования
аналоговых, цифровых или смешанных систем сообщения на сигнальном или физическом уровне.
Использование компонентов
В документах-программах MathCAD есть возможность вставки модулей (component) других приложений для расширения возможностей визуализации, анализа данных, выполнение специфических вычислений.
Для расширенной визуализации данных предназначен компонент
Axum Graph. Для работы с табличными данными – Microsoft Excel.
Компоненты Data Acquisition, ODBC Input позволяют пользоваться
внешними базами данных.
Предлагаются также бесплатные модули (add-in) для интеграции
Mathcad с программами Excel, AutoCAD.
Для статистического анализа предназначен компонент Axum SPLUS Script.
118
Значительное расширение возможностей пакета достигается при
интеграции со сверхмощным приложением MATLAB.
8.1.5. История версий
MathCAD 1.0-5.xx
Версии MathCAD с 1.0 по 4.хх работали в операционной системе
DOS, имели небольшой общий размер исполняемых файлов (до 1 Мб)
и незначительные (по современным меркам) системные требования
(оперативная память до 1 МБ, IBM PC-совместимый компьютер). Возможности позволяли выполнять операции как с элементарными математическими функциями, так и специальными (статистическими, булевыми, комплексными и т.п.). Уже в первых версиях присутствовала возможность использования размерностей в расчетах и построения 2Dграфики.
3D-графика появилась в версиях 2.5х и выше, возможности которой, впрочем, существенно сдерживались незначительными вычислительными возможностями ЭВМ того времени.
Объединив усилия с фирмой Waterloo Maple Software и введя
в свои системы ядро мощной системы символьной математики Maple V,
MathSoft Inc. научила свою систему (начиная уже с версии 3.0) основам
компьютерной алгебры (символьной математики). Однако, из многочисленных функций ядра Maple V и его расширений (их было около
2500 в Maple V R3 для Windows) привлечено лишь мизерную часть распространенных функций символьной математики. Между тем, появилась возможность использовать функции ядра Maple V с вызовом их из
системы MathCAD.
Возможности программирования ограничивались функциями if
и until, позволявшие реализовывать лишь две основные алгоритмические конструкции – выбор и повторение. Но эти функции не могут
иметь в качестве аргументов блоки составных операторов. Поэтому для
реализации даже несложного алгоритма нужно было подключать механизм вложенных функций, существенно осложняющего программирование.
Версии с 5-й и выше уже работали на платформе Windows. Начиная
с пятой версии MathCAD, пользователям была представлена возможность объявления в среде Mathcad новых встроенных функций. Их нужно было написать на языке С, откомпилировать 32-разрядным транслятором и прикрепить к MathCAD через механизм DLL.
В пятой версии также появились инструменты решения обыкновенных дифференциальных уравнений (ОДУ) и их систем.
119
Mathcad 6
Версии MathCAD 6.0 и PLUS 6.0 были рассчитаны на работу с ОС
Windows 95 и были полноценными 32-разрядными приложениями, которые могли полностью использовать новые возможности микропроцессоров серий 486/Pentium. Интерфейс системы был улучшен, повышена скорость выполнения операций, введены многочисленные новые
графические возможности, новые функции и новые возможности программирования.
Вариант системы 6.0 Standard Edition рассчитана на обычных пользователей, к которым относятся ученые, инженеры, преподаватели и
студенты вузов, с уважением относятся к математике, но не считают все
же ее главным своим занятием. Система ориентирована на ПК класса
386DX и выше с емкостью RAM не менее 4 Мб и свободным пространством на диске не менее 12 Мб для файла подкачки и еще 20 Мб для
установки самой системы.
Второй вариант системы – PLUS 6.0 ориентирован на пользователей – профессионалов, требующих более мощного математического помощника. Для реализаций расширенных возможностей становится необходимым RAM с емкостью не менее 8 Мб. Mathcad PLUS 6.0 имеет
заметно расширенный набор функций (20 новых матричных функций,
13 функций для решения дифференциальных уравнений различного типа, ряд новых статистических функций и т.д.), расширенные возможности символьных вычислений и мощную графику. Стоимость Mathcad
6.0 составляла 129$, а Mathcad PLUS 6.0 – 495$. Были также версии для
студентов и школьников (Mathcad 6.0 BASIC, 90$), Mathcad 6.0 Standart
(240$). Для версий Standart и PLUS дополнительно включалось средство
рисования технических и бизнес-диаграмм Visio Express корпорации
Visio.
Mathcad 7
В версии Mathcad 7.0 PRO были следующие доработки и нововведения: отсутствие проблемы 2000 года; интерфейс, существенно переработанный и приближенный к интерфейсу текстового процессора Word
95/97; выделения частей выражений мышью; задача впервые для данной
переменной ее значения или значений нажатием клавиши = (при этом
на экране выводится знак присваивания :=), при повторном использовании клавиши = для этой же переменной выводится ее текущее значение;
быстрое построение (QuickPlot) графиков в декартовых и полярных координатах с автоматической установкой пределов изменения независи120
мых переменных; новая палитра символьной математики с расширенными операторами; удобным и наглядным синтаксисом символьных
операций; возможность обработки ошибок в ходе вычислений; новые
инструкции on error, continue, return; применение в программах операторов символьных операций; новый тип строковых данных, констант и
переменных; восемь новых функций для работы со строковыми данными; задачи размерных величин в системе СИ; возможность подготовки
сложных документов различными пользователями, работающими в разных местах, с помощью Collaboratory; возможность обмена документами через Интернет; появление более оперативного центра ресурсов
(Resource Center) вместо «быстрых шпаргалок» QuickSheet, электронных книг, самоучителя и др.; моделирование (симуляция) работы сложных систем, построенных из функциональных блоков, с помощью системы MathConnex, имеющая 16 компонентов; возможность использования функций других систем (Excel, Axum, MatLab и др.) и фактическая интеграция с ними.
Некоторые из указанных изменений были скорее из разряда приятных мелочей, например расширено действие знака = (ранее для присвоения переменным значений нужно было вводить только комбинированный знак :=). Другие изменения, такие как интеграция с другими системами и применение системного интегратора MathConnex, были серьезными дополнением системы, открыли множество новых возможностей
[7].
MathCAD 8
Версия MathCAD 8.0 PRO предоставила еще целый ряд полезных
возможностей: около 50 новых математических функций (элементарных, специальных статистических и др.); новые функции оптимизации
maximize и minimize; решения задач линейного программирования, новые функции контроля типа данных; улучшенный блок решения систем
нелинейных уравнений – снято ограничение на полное число уравнений
(ранее было не более 50), теперь их число достигло 200; введение набора методов численного интегрирования с возможностью выбора конкретного метода через контекстное меню; возможность проведения бинарных вычислений; эффективные средства сглаживания данных;
улучшенные средства ввода и форматирования текста; команды редактирования Find (найти) и Replace (найти и заменить); новая возможность блокировки и сокрытия областей; улучшенное вывода таблиц;
возможность записи документов в формате HTML, возможность записи
документов в формате предыдущих версий; поддержка новой графики
121
OpenGL и ActiveX, применение мастеров для создания сложных трехмерных графиков; существенно улучшены средства форматирования
графиков; просмотр графиков в увеличенном масштабе; применения
функциональной окраски поверхностей; возможность изображения на
одном трехмерном графике поверхностей и фигур разного типа; возможность изображения на одном трехмерном графике разных объектов,
с пересечением в пространстве; возможность вращения трехмерных
графиков в пространстве мышью; анимация трехмерных графиков [8].
MathCAD 2000 (версия 9)
Версия MathCAD 2000 добавила к существующим возможностям еще
ряд новых и существенных отличий: улучшенный интерфейс системы,
в частности интеграция с Интернетом перенесена в центр ресурсов; введен
ряд новых функций для финансово-экономических расчетов, создания
матриц трехмерных поверхностей, численного решения дифференциальных уравнений в составе блока Given, контроля типа размерных переменных и др.; введен набор функций для выполнения регрессии – экспоненциальной, логарифмической, синусоидальной и др.; введен набор логических операторов; расширенные возможности функции root – теперь она
может искать корень не только по заданному приближению (функция с
двумя параметрами), но и в заданном интервале (функция с четырьмя параметрами); введено ускоренное и упрощенное построение трехмерных
графиков; предусмотрено наложение надписей на блоки документов, в
частности графические; введена трассировка ошибок; существенно обновлен набор примеров в центре ресурсов; обеспечен контроль орфографии
англоязычных текстов на трех диалектах английского языка [2].
MathCAD 2001 (версия 10)
В версии MathCAD 2001 еще более возросла производительность
вычислений и расширенные возможности. Внедрена поддержка
Windows 2000. Созданы четыре модификации с учетом специфики использования.
Основные нововведения: существенно расширена совместимость
с другими популярными приложениями; обработка единиц измерения
в реальном времени; ограничения рекурсивного спуска в процессе вычислений (выигрыш в скорости до 5–20 раз по сравнению с предыдущими версиями); оптимизированы вычисления, особенно для итераций,
суммирования, интегрирования и дифференцирования; новые логические алгоритмы, основанные на зависимостях от областей изменения
переменных и большая согласованность между аналитическими и чис122
ленными расчетами; улучшенное управление памятью и обработка объектов рабочего документа, которые удаляются; новый режим публикации в сочетании с основанными на MathML возможностями электронных публикаций; включение последней версии IBM Techexplorer
Professional Edition для чтения и редактирования MathML, TeX и LaTeX.
Существенно усовершенствованы инструменты для создания приложений с использованием Mathcad: улучшенные объекты программирования сценария для создания новых модулей из программируемых
OLE и COM объектов, и хранение их для повторного использования
и распространения. Поддерживаются стандартные языки программирования сценариев, такие как VBScript и JScript [5].
MathCAD 2001i («интерактивный»)
MathCAD 2001i получил полную поддержку Windows XP, расширены возможности сбора данных от внешних устройств, повышенную
защищенность MathCAD-документов введением современной криптографии, упрощенную публикацию в Интернет, расширенное число алгоритмов решения задач и набор опций пользовательских настроек [6].
Основные нововведения:
 включение современных методов криптографии файлов для защиты содержания документов до того момента, пока они не поступят
в руки адресатов, кроме того, при распространении документов добавлена возможность заблокировать все области MathCAD с конструкциями и вычислениями, т.е. распространять результаты не открывая сути
идей. MathCAD 2001i также предоставил возможность пользователям
задавать новые опции секретности для защиты от внесения в документы
кодов опасных для пользовательских компьютерных систем;
 введена поддержка сбора данных от аналоговых DAQ-плат и
улучшенную совместимость с платами устройств компании National
Instruments;
 добавлено несколько опций для повышения комфортности работы, основываясь на множестве запросов пользователей, в частности: опция цветной сетки для двумерных графиков, включения и надписи на
трехмерных графиках, региональные установки и печать текущей страницы;
 двунаправленная поддержка MathML, поддержка интерактивных
данных, улучшенная графика и, с помощью дополнительных интернетшаблонов, упрощенная публикация в Интернет;
 новый, быстрый и точный алгоритм Radau решения обыкновенных дифференциальных уравнений. Блоки решения обыкновенных
123
дифференциальных уравнений теперь поддерживают системы дифференциальных уравнений и дифференциальные алгебраические уравнения, в то же время вложенные блоки теперь поддерживают более сложные задачи оптимизации;
 улучшены интерфейсы автоматизации для встроенных приложений. Новые интерфейсы Mathcad приложений, рабочие документы, окна
и области обеспечивают более широкий набор опций для настройки
Mathcad с целью выполнения повторяющихся задач.
MathCAD 11-11.2a
При создании MathCAD 11 основное внимание было обращено на
увеличение скорости и мощности работы системы. Цель состояла в том,
чтобы улучшить ядро MathCAD, расширить и улучшить удобства работы с MathCAD.
Основные нововведения:
 Расширенные компоненты ввода-вывода для импорта и экспорта
данных в виде строк и столбцов, а также возможности чтения-записи
смешанных текстово-числовых файлов; обеспечена глубокая интеграция с Microsoft Excel; используя простые команды copy/paste можно создавать и отображать смешанные данные непосредственно в форме матриц и таблиц; обеспечена новая поддержка чтения/записи для равномерных, произвольных и однородных файлов двоичного формата
(READBIN и WRITEBIN), что дает пользователям большую гибкость в
операциях импорта или экспорта данных, чем их преобразование в
ASCII-коды; обеспечена новая поддержка для прохождения строковых
данных через UserEFI-интерфейс (функции, определенные пользователем; DLL).
 На основе ODE-вычислительных блоков (для решения обыкновенных дифференциальных уравнений) Mathcad 2001i, Mathcad 11 теперь поддерживает PDE-вычислительные блоки (для решения дифференциальных уравнений в отдельных производных); обеспечена новая
поддержка для комплексных аргументов функций floor, ceil, round и
trunc; добавлены комплексные функции Бесселя и Ганкеля; расширенные возможности функции genfit, которая обеспечивает аппроксимацию
кривых нелинейными функциями общего вида; введена новая sinc
функция для вычисления точных значений sin(x)/x в пределе при х,
стремящемся к 0; новый доступ к «зерновым» значениям в генераторах
случайных чисел.
 Улучшенный формат текста RTF позволяет вставлять фрагменты
из документа MathCAD в такие прикладные приложения, как Microsoft
124
Word без дополнительного переформатирования; улучшена поддержка
протокола HTTP, который позволяет открывать удаленные файлы
MathCAD, размещенные на веб-сервере, с помощью команды File/Open;
улучшен HTML-образный формат для вставки в интернет страницы
с колонтитулами, ссылками и картинками; обеспечена возможность сохранять документы как интернет-страницы [7].
MathCAD 12
Новая версия пакета получила более совершенное математическое
ядро, а также дополнительные опции, позволяющие сохранять и публиковать документы MathCAD в различных форматах.
Основные нововведения:
 Возможность трассировки вычислений: промежуточные данные
могут быть выведены как для всего документа в целом, так и для его отдельных областей, что позволяет эффективно контролировать выполнение исходных кодов MathCAD.
 Дополнительные возможности публикации результатов вычислений благодаря новому формату данных XML: XSL-HTML-конвертер
позволяет генерировать веб-страницы лучшего качества; опция XSL-FO
позволяет сохранять данные в формате PDF; внутри XML изображения
хранятся в специальном экономичном формате, что позволяет значительно уменьшить объём на диске для файлов с большим количеством
графики.
 Двойная ось ординат на двумерных графиках, что позволяет
представить на одном графике функции, которые значительно различаются по величине, а также увеличить допустимое количество графиков,
которые могут одновременно отображаться в одном блоке, до 32
(по сравнению с 16 в предыдущих версиях).
 MathCAD Application Server: формы и кнопки для вебприложений, поддерживаемых MathCAD Application Server.
 Новые возможности по импорту данных из файлов, созданных
другими программами: поддержка большого количества новых форматов данных; функция READFILE позволяет импортировать данные
внутри программных циклов.
MathCAD 13-13.1
Основные нововведения:
 Мощные средства отладки программ, включая возможность
вставки меток и пошагового выполнения программных циклов.
125
 Новая функция автосохранения позволяет исключить возможность потери выполненной инженерами работы.
 Новый указатель математических ошибок позволяет устранять
ошибки, которые без него могли бы быть пропущены.
 Поддержка нелинейных единиц измерения, таких как Фаренгейт,
Цельсий и децибел; возможность создания собственных единиц измерения с помощью простого меню.
 Существенно повышена производительность вычислений по
сравнению с предыдущими версиями.
 Включен новый мощный класс возможностей определения
«происхождения», которые дают возможность предприятиям точно
определить источник конкретных расчетов, величину или результат.
Это позволяет контролировать и отслеживать выполняемую работу.
MathCAD 14
MathCAD 14 – первая с момента приобретения Mathsoft Inc. компанией PTC версия MathCAD (релиз состоялся 12 февраля 2007). Реализована возможность двусторонней интеграции с основным продуктом
PTC – пакетом Pro/ENGINEER. Базовые величины, рассчитанные в системе Mathcad, могут быть переведены в параметры и размеры CADмодели для управления геометрическим объектом. Параметры из модели Pro/ENGINEER также можно ввести в Mathcad для последующих
инженерно-конструкторских расчетов.
Существенные изменения коснулись также математического ядра
системы, которое теперь использует символьную систему MuPAD. Это
позволило во многих случаях повысить точность символьных вычислений и их детализацию, но есть и негативные последствия, связанные,
в первую очередь, с совместимостью символьных алгоритмов с предыдущими версиями (вычисления, которые работают в предыдущих версиях; могут не выполняться в новой и наоборот).
Основные нововведения [8]:
 Интернационализация: введена полная поддержка шрифтов
Unicode и азиатских локализаций операционных систем. Интерфейс переведен на девяти языках (английский, французский, немецкий, итальянский, испанский, японский, корейский, упрощенный и традиционный китайский), поддерживается проверка орфографии на 15-ти языках.
 2D-графики: добавлена возможность выбора формата отображения чисел на шкалах координатных осей. При использовании полярной
системы координат является возможность применения отрицательных
значений функции на радиусе.
126
 Инструментарий решения дифференциальных уравнений дополнена тремя новыми алгоритмами – по методам Адамса (англ. Adams),
BDF (англ. backward differentiation formulas, формулы обратного дифференцирования) и комбинированным Adams/BDF.
o Новая функция statespace (наряду с новыми функциями Эйри)
позволяет решать ОДУ, записанные в матричной форме.
o Добавлен оператор, который возвращает значение градиента
функции в виде вектора отдельных производных функции многих переменных.
 Введен долго ожидаемый пользователями тандем операторов
интерфейса «… := … = …», который позволяет присваивать переменной
любое выражение и сразу выводить значение (результат), что еще
в большей степени приблизило формат записи к обычному («не компьютерному»).
 Символьный процессор MathCAD пополнен тремя функциями,
тремя ключевыми словами и девятью модификаторами. Результат символьных вычислений по желанию можно существенно детализировать.
Символьные вычисления теперь возможны и с векторизованными
функциями.
 Общая функциональность:
o есть возможность сравнения изменений в двух документах
Mathcad (XMCD-файлы), что позволяет выявлять математические и текстовые элементы, которые были добавлены, удалены или изменены
с соответствующей цветовой разметкой. Есть возможность выявления
изменений результатов вычислений при разнице в настройках и алгоритмах между версиями MathCAD;
o поиск и замена возможны в скрытых областях документа;
o изображения можно сохранять в формате JPEG с настройкой
качества, что позволяет уменьшить размер документов;
o активация заменена на использование лицензионного файла,
получаемой через интернет при установке.
Версии MathCAD с 12-й включительно, в связи с использованием
формата данных XML, а также с постепенным ростом функционального
инструментария, имеют ограниченную обратную совместимость документов с предыдущими версиями, но могут почти без ограничений открывать документы, созданные в старых версиях. Как следствие, импорт также имеет ограничения: документ, созданный в MathCAD 14
можно сохранить в формате версии не ниже 11-й.
MathCAD 15
127
Основные новые возможности:
 добавлено 25 функций для расчетов по планированию экспериментов (design of experiments (DoE)). Также имеются шаблоны для проведения нескольких экспериментов, при наличии нескольких уровней
эксперимента (режимов тестирования) и различных условий;
 интеграция с базой данных KnovelMath (инженерные и технические стандарты);
 интеграция с программным обеспечением Kornucopia (позволяет
применять шаблоны процессов для оценки данных натурных экспериментов и результатов расчетов);
 интеграция с базой данных Truenumbers (от True Engineering
Technology), предоставляющий доступ к различным справочным материалам и данным (результаты из MathCAD просто передаются в различные форматы документов, что облегчает передачу данных в цепи
разработчиков);
 поддержка операционной системы Microsoft Windows 7;
 поддержка Microsoft Excel 2007.
MathCAD Prime 1.0
MathCAD Prime 1.0 является последним релизом компании PTC
в программном обеспечении для инженерных расчетов. Основные отличия нового MathCAD Prime 1.0:
 Изменён интерфейс пользователя, который теперь выполнен
в стиле последних версий MS Office.
 Среда вычислений, ориентированная на работу с документами,
позволяет пользователям быстро и просто создавать детализированные
технические документы, которые включают сложные вычисления, используя «живые» математические примечания с текстом, изображениями и диаграммами. Подобные документы легко читаются и воспринимаются сотрудниками, которые не знакомы с данным программным решением, помогают поддерживать эффективную коммуникацию в рамках проектов и передачу технического знания внутри предприятия.
 Полный пакет дополнительных функций численной математики
(включая новый пакет по планированию эксперимента) позволяет быстро и качественно решить любую вычислительную задачу, экономя время и средства.
 Динамическая проверка размерных величин предоставляет полную поддержку размерных величин и единиц их измерения по всем расчетам, созданным в Mathcad Prime 1.0. Векторы и матрицы Mathcad
Prime 1.0 теперь могут содержать величины разной размерности, что
128
повышает эффективность процесса разработки продукции, помогая избегать многих ошибок.
 Интуитивно понятный редактор уравнений, работающий в режиме полного соответствия (что видите на экране, то и получаете на
бумаге), позволяет пользователям описывать условия и решения в естественном математическом виде, сосредотачиваясь на вычислениях, а не
на работе с документом.
 Mathcad Prime 1.0 написан на совершенно новой программной
основе, имеет максимальную производительность, а также полную поддержку Windows 7 и последнего релиза MS Excel.
Комплектации
Версии Mathcad могут отличатся комплектацией и лицензией пользователя. В разное время поставлялись версии Mathcad Professional,
MathCAD Premium, MathCAD Enterprise Edition (отличаются комплектацией). Для академических пользователей предназначена версия
MathCAD Academic Professor (обладает полной функциональностью, но
отличается лицензией пользователя и имеет в несколько раз меньшую
стоимость).
Некоторое время выпускались также упрощенные и заметно «урезанные» студенческие версии программы.
8.1.6. Развитие
Дальнейшее развитие технология Mathcad получила при создании
MathCAD Application Server (MAS). Суть технологии MAS – в реализации удаленного доступа к программному обеспечению Mathcad или уже
готовым Mathcad-документам через веб-интерфейс (технология Web
Calc). Пользователь MAS не нуждается в покупке MathCAD, не требуется скачивать и запускать exe-файлы (но это не исключается и определяется уровнем доступа).
8.1.7. Установка математического пакета MathCAD
Для того, чтобы установить MathCAD на компьютер клиента,
вставьте инсталляционный DVD диск пакета MathCAD в DVD-привод
компьютера. Автоматически запустится мастер установки данного продукта. Если этого не произошло, запустите Setup.exe, расположенный в
корневой директории инсталляционного диска Mathcad. Откроется окно, представленное на рис. 13.
129
Рис. 13. Окно установки Mathcad
В данном окне нажмите на кнопку с надписью «MathCAD 14.0 M020».
Запустится процесс подготовки файлов для установки MathCAD и в
итоге откроется следующее окно (рис. 14).
Рис. 14
В этом окне нажмите на кнопку с надписью «Next >». Откроется
окно лицензионного соглашения (рис. 15).
130
Рис. 15. Окно лицензионного соглашения MathCAD
В этом окне соглашаемся с лицензионным соглашением, выбрав
пункт «I accept the terms in the license agreement», и нажимаем кнопку с
надписью «Next >». Откроется окно ввода ключа продукта и информации о пользователе (рис. 16).
Рис. 16. Окно ввода ключа продукта и информации о пользователе Mathcad
В этом окне вводим любую информацию о пользователе, а в полях
«Product Code» вводим код, который можно получить в отделе инфор131
матизации вместе инсталляционным диском программы. Нажимаем
кнопку с надписью «Next >». Откроется окно выбора папки для установки данного продукта (рис. 17).
Рис. 17. Окно выбора папки для установки данного продукта Mathcad
В открывшемся окне либо указываем папку для установки с помощью кнопки с надписью «Change...», либо оставляем все как есть и
нажимаем кнопку с надписью «Next >». Откроется окно для запуска
установки (рис. 18).
Рис. 18. Окно для запуска установки MathCAD
132
В данном окне нажимаем кнопку с надписью «Install», после чего
запустится процесс установки продукта. По ее завершении откроется
следующее окно (рис. 19).
Рис. 19
В этом окне оставляем установленным флажок «Run the License
Setup wizard to acquire/specify a license» и нажимаем кнопку с надписью
«Finish». Откроется окно настройки лицензий (рис. 20).
Рис. 20. Окно настройки лицензий MathCAD
133
В этом окне выбираем пункт «Use a license server» и в открывшиеся
поля вводим следующее: Server Name: 217.14.204.39, Server Port: 7788.
Нажимаем кнопку с надписью «Finish», при этом откроется окно, представленное на рис. 21.
Рис. 21
В этом окне нажимаем кнопку с надписью «OK» для завершения
установки Mathcad. При этом останется открытым первое окно установки данного продукта, которое можно просто закрыть, нажав на кнопку с
надписью «Exit Installer».
Рис. 22. Окно установки Mathcad
134
На этом установка пакета MathCAD завершена и можно приступать
к его использованию.
8.1.8. Задачи математического анализа в MathCAD
Определение функций и построение графиков
Для определения функции одной переменной нужно ввести с клавиатуры имя функции с аргументом в круглых скобках, знак присваивания (для ввода знака присваивания нужно нажать на клавиатуре комбинацию клавиш <Shift>+<:> или щелкнуть по кнопке <:=> панели
Evaluation) и справа от него – выражение для вычисления функции.
В записи выражения для функции можно использовать знаки (имена) элементарных функций, вводя их с клавиатуры или вставляя в рабочий документ функцию, выбранную из списка в пункте Function меню
Insert.
Выражение можно вводить с помощью кнопок панели инструментов Calculator Toolbar.
Вставить в выражение букву греческого алфавита можно с помощью панели Greek Symbol Toolbar.
Для вычисления значения функции в точке нужно ввести в рабочий
документ с клавиатуры имя функции, указать в скобках значение аргумента, выделить выражение, ввести знак равенства (с помощью соответствующей кнопки панели Evaluation) и щелкнуть по свободному месту в рабочем документе.
Пример 15. Определение функции. Вычисление значений функции
в точках (рис. 23).
135
Рис. 23. Определение и вычисление функции в пакете MathCAD
Инструменты для построения графиков в MathCAD доступны в панели инструментов Graph Toolbar, которая открывается щелчком по
соответствующей кнопке в панели математических инструментов или
через пункт Graph меню Insert.
Для построения графика функции, заданной в декартовых координатах, нужно:
 щелкнуть по рабочему документу, по пункту по строке X-Y Plot
в пункте Graph меню Insert (или по соответствующей кнопке в панели
Graph); в рабочем документе откроется окно построения графиков;
 ввести в помеченной позиции возле оси абсцисс имя аргумента,
а в позиции возле оси ординат – имя функции и щелкнуть по рабочему
документу вне окна графиков.
Если нужно построить одновременно графики нескольких функций, нужно ввести их имена в позиции возле оси ординат, разделяя запятой.
Вместо имени функции можно ввести выражение для ее вычисления. Параметры изображения (цвет и толщина линий, координатная
сетка, разметка осей, надписи на графиках и т. д.) можно изменить,
щелкнув дважды по полю графика и установив настройки в соответствующих появившихся окнах диалога.
Графики функций, заданных в параметрической форме, строятся
аналогично, с учетом того, что в позициях аргумента и функции вводятся выражения или имена соответствующих функций параметра.
136
Для построения графика функции, заданной в полярных координатах, нужно:
 щелкнуть по рабочему документу, по строке Polar Plot в пункте
Graph меню Insert (или по соответствующей кнопке в панели Graph);
в рабочем документе откроется окно построения графиков;
 ввести в помеченной позиции возле оси абсцисс имя аргумента,
а в позиции возле оси ординат – имя функции и щелкнуть по рабочему
документу вне окна графиков.
Пример 16. Построение графика функции (рис. 24).
Рис. 24. Построение графика функции в пакете MathCAD
Вычисление пределов
Для вычисления пределов предназначены три кнопки в панели
Calculus панели математических инструментов:
– оператор вычисления предела функции в точке или на бесконечности;
и
– операторы вычисления односторонних пределов соответсвенно справа и слева.
Для вычисления предела нужно:
137
 щелкнуть по свободному месту в рабочем документе, затем
щелкнуть по нужной кнопке, ввести с клавиатуры в помеченных позициях имя или выражение допредельной функции и предельной точки;
 выделить все выражение и щелкнуть по строке Symbolically
в пункте Evaluate меню Symbolics (или щелкнуть по кнопке
в панели символьных операций Symbolic).
Пример 17. Вычисление пределов (рис. 25).
Рис. 25. Вычисление пределов в пакете Mathcad
Дифференцирование
Чтобы найти производную нужно:
 щелкнуть по свободному месту в рабочем документе, щелкнуть
в панели Calculus по кнопке , ввести с клавиатуры в помеченных позициях имя или выражение функции и аргумента;
 заключить все выражение в выделяющую рамку и щелкнуть по
строке Symbolically в пункте Evaluate меню Symbolics (или щелкнуть
по кнопке
в панели символьных операций Symbolic).
Чтобы найти производные высших порядков нужно:
 щелкнуть по свободному месту в рабочем документе, щелкнуть
в панели Calculus по кнопке
, ввести с клавиатуры в помеченных позициях имя или выражение функции и аргумента;
138
 заключить все выражение в выделяющую рамку и щелкнуть по
строке Symbolically в пункте Evaluate меню Symbolics (или щелкнуть
по кнопке
в панели символьных операций Symbolic).
Чтобы найти производную с помощью меню нужно:
 ввести в рабочий документ выражение для функции;
 выделить аргумент и щелкнуть по строке Differentiate в пункте
Variable меню Symbolics.
Пример 18. Вычисление производных (рис. 26).
Рис. 26. Вычисление производных в пакете MathCAD
Интегрирование
Чтобы найти неопределенный интеграл нужно:
 щелкнуть по свободному месту в рабочем документе, щелкнуть
в панели Calculus по кнопке , ввести с клавиатуры в помеченных позициях выражение функции и имя переменной интегрирования;
 заключить все выражение в выделяющую рамку и щелкнуть по
строке Symbolically в пункте Evaluate меню Symbolics (или щелкнуть
по кнопке
в панели символьных операций Symbolic).
Чтобы вычислить определенный интеграл нужно:
 щелкнуть по свободному месту в рабочем документе, щелкнуть
в панели Calculus по кнопке , ввести с клавиатуры в помеченных позициях выражение функции, имя переменной интегрирования и пределов интегрирования;
139
 заключить все выражение в выделяющую рамку и щелкнуть по
строке Symbolically в пункте Evaluate меню Symbolics (или щелкнуть
по кнопке
в панели символьных операций Symbolic).
Чтобы найти неопределенный интеграл с помощью меню нужно:
 ввести в рабочий документ выражение для интегрируемой функции;
 выделить аргумент и щелкнуть по строке Integrate в пункте
Variable меню Symbolics.
Пример 19. Вычисление интегралов с помощью меню Symbolics
(рис. 27), панели (рис. 28) и вычисление определённого интеграла (рис. 29).
Рис. 27. Вычисление неопределённого интеграла
в пакете MathCAD с помощью меню Symbolics
Рис. 28. Вычисление неопределённого интеграла
в пакете MathCAD с помощью панели Calculus
140
Рис. 29. Вычисление определённого интеграла в пакете MathCAD
8.1.8. Задачи линейной алебры в MathCAD
Определение и ввод матрицы в рабочий документ MathCAD
Чтобы определить матрицу нужно:
1) ввести с клавиатуры имя матрицы и знак присваивания (для ввода знака присваивания нужно нажать на клавиатуре комбинацию клавиш <Shift>+<:> или щелкнуть по кнопке<:=> панели Evaluation);
2) щелкнуть по кнопке Vector or Matrix Toolbar в панели математических инструментов, чтобы открыть панель матричных операций
Matrix);
3) открыть щелчком по кнопке Matrix or Vector окно диалога
определения размерности матрицы и ввести размерность матрицы: число строк (Rows), число столбцов (Columns);
4) закрыть окно диалога, щелкнув по кнопке Ok.
В рабочем документе, справа от знака присваивания, открывается
поле ввода матрицы с помеченными позициями для ввода элементов.
Для того, чтобы ввести элемент матрицы, установите курсор в помеченной позиции и введите с клавиатуры число или выражение.
Нумерация элементов матриц и векторов
Номер первой строки (столбца) матрицы или первой компоненты
вектора, хранится в MathCAD в переменной ORIGIN.
По умолчанию в MathCAD координаты векторов, столбцы и строки
матрицы нумеруются, начиная с 0 (ORIGIN:=0). Поскольку в математической записи чаще используется нумерация с 1, удобно перед началом работы с матрицами определять значение переменной ORIGIN
равным 1, выполнять команду ORIGIN:=1.
Панель операций с матрицами и векторами
141
Панель векторных и матричных операций открывается щелчком по
кнопке Vector and Matrix Toolbar в панели математических инструментов.
За кнопками панели закреплены следующие функции:
– определение размеров матрицы;
– ввод нижнего индекса;
– вычисление обратной матрицы;
– вычисление определителя матрицы: |A| = det A; вычисление
длины вектора |x|;
– поэлементные операции с матрицами: если A={aij }, B={bij },
то
;
– определение столбца матрицы: M<j>– j-й столбец матрицы M;
– транспонирование матрицы: M={mij }, M T ={mji };
– вычисление скалярного произведения векторов:
;
– вычисление векторного произведения векторов:
a x b = (a2 b3 -a3 b2 , a3 b1 -a1 b3 , a1 b2 -a2 b1 );
– вычисление суммы компонент вектора:
;
– определение диапазона изменения переменной;
– визуализация цифровой информации, сохраненной в матрице.
Для того чтобы выполнить какую-либо операцию с помощью панели инструментов, нужно выделить матрицу и щелкнуть в панели по
кнопке операции, либо щелкнуть по кнопке в панели и ввести в помеченной позиции имя матрицы.
Меню символьных операций с матрицами
Меню символьных операций с матрицами (пункт Matrix меню
Symbolics) содержит три функции:
 транспонирование (Transpose),
 обращение матрицы (Invert),
 вычисление определителя матрицы (Determinant).
Если требуется произвести какую-либо операцию через пункт
Matrix меню Symbolics, нужно выделить матрицу и щелкнуть в меню
по строке нужной операции.
Функции, предназначенные
для решения задач линейной алгебры
142
Функции, предназначенные для решения задач линейной алгебры,
можно разделить на три группы.
1) функции определения матриц и операций с блоками матриц;
2) функции отыскания различных числовых характеристик матриц;
3) функции, реализующие численные алгоритмы решения задач
линейной алгебры.
Функции определения матриц и операции с блоками матриц.
 matrix(m, n, f) – создает и заполняет матрицу размерности m×n,
элемент которой, расположенный в i-й строке, j-м столбце, равен значению f(i, j) функции f(x, y);
Пример 20. Исполнение функции matrix (рис. 30).
Рис. 30
 diag(v) – создает диагональную матрицу, элементы главной диагонали которой хранятся в векторе v;
Пример 21. Исполнение функции diag (рис. 31).
143
Рис. 31
 identity(n) – создает единичную матрицу порядка n;
Пример 22. Исполнение функции identity (рис. 32).
Рис. 32
 augment(A, B) – формирует матрицу, в первых столбцах которой
содержится матрица A, а в последних – матрица B (матрицы A и B
имеют одинаковое число строк);
Пример 23. Исполнение функции augment (рис. 33).
Рис. 33
 stack(A, B) – формирует матрицу, в первых строках которой содержится матрица A, а в последних – матрица B (матрицы A и B имеют
одинаковое число столбцов);
Пример 24. Исполнение функции stack (рис. 34).
144
Рис. 34
 submatrix(A, ir, jr, ic, jc) – формирует матрицу, которая является блоком матрицы A, расположенным в строках с ir по jr и в столбцах
с ic по jc, ir <= jr, ic <= jc.
Пример 25. Исполнение функции submatrix (рис. 35).
Рис. 35
Функции отыскания
различных числовых характеристик матриц
 last(v) – вычисление номера последнего элемента вектора v;
 lenght(v) – вычисление количества элементов v вектора;
 rows(A) – вычисление числа строк в матрице A;
 cols(A) – вычисление числа столбцов в матрице A;
 max(A) – вычисление наибольшего элемента в матрицы A;
 tr(A) – вычисление следа квадратной матрицы A (след матрицы
равен сумме ее диагональных элементов);
 rank(A) – вычисление ранга матрицы A;
 norm1(A), norm2(A), norme(A), normi(A) – вычисление норм
квадратной матрицы A.
Функции, реализующие численные алгоритмы
решения задач линейной алгебры
 rref(A) – приведение матрицы к ступенчатому виду с единичным
базисным минором (выполняются элементарные операции со строками
матрицы);
 eigenvals(A) – вычисление собственных значений квадратной
матрицы А;
145
 eigenvecs(A) – вычисление собственных векторов квадратной
матрицы А; значением функции является матрица, столбцы которой
есть собственные векторы матрицы А; порядок следования векторов отвечает порядку следования собственных значений, вычисленных функцией eigenvals(A);
 eigenvec(A, l) – вычисление собственного вектора матрицы А,
отвечающего собственному значению l;
 lsolve(A, b) – решение системы линейных алгебраических уравнений Ax=b.
Пример 26. Исполнение функции eigenvals (рис. 36).
Рис. 36
Пример 27. Исполнение функции lsolve (рис. 37).
146
Рис. 37
8.1.9. Программирование в пакете MathCAD
Существуют два способа программирования в MathCAD:
 программирование в пакете MathCAD без использования программных модулей;
 программирование с использованием программных модулей.
Первый способ (в дальнейшем для простоты названный безмодельным программированием) реализуется записью соответствующих
конструкций непосредственно в математических областях документа
MathCAD, и он приемлем для сравнительно простых алгоритмов.
Второй способ (называемый для простоты модульным программированием) предполагает реализацию отдельных независимых алгоритмов вычисления (например, решение нелинейного уравнения методом
«деления отрезка пополам») в виде отдельных программных модулей,
которые будем называть программами-функциями (сокращенно П-Ф).
8.1.9.1. Безмодульное программирование в пакете MathCAD
Программирование линейных алгоритмов
Характерной особенностью линейных алгоритмов является строго
последовательное выполнение всех операций алгоритма без пропусков
и повторений вычислений. Поэтому конструкции, реализующие такой
алгоритм, записываются в документе MathCAD в нужном порядке их
выполнения, т.е. «слева-направо – сверху-вниз».
Пример 28. Составить программу для вычисления корней квадратного уравнения: ax2 + bx + c = 0 по известной формуле
x1, 2 
 b  b 2  4ac
2a
147
.
(1)
Алгоритм (1) является линейным и фрагмент документа MathCAD
содержит конструкции, приведенные на рис. 38.
Рис. 38
Программирование разветвляющихся алгоритмов
Характерной чертой разветвляющихся алгоритмов является наличие в них нескольких возможных ветвей вычислений. Выбор конкретной ветви зависит от выполнения (или не выполнения) заданных условий на значения переменных алгоритма.
Для реализации разветвляющегося алгоритма необходимо использовать:
 конструкции, проверяющие выполнение заданных условий;
 конструкции, выбирающие нужную ветвь вычислений в зависимости от результатов проверки заданных условий.
Для проверки заданных условий в MathCAD используется: выражение отношений, логические операции и логические выражения.
Выражением отношений (или просто отношением) называется
конструкция вида:
<выр.1> <операция отношения> <выр.2>,
где <выр.1>, <выр.2> – произвольные арифметические выражения;
<операция отношения> – любая из следующих операций:
(здесь вертикальные чёрточки являются разделительным символом при перечислении).
Для ввода знаков операций отношений можно использовать палитру БУЛЕВО (приведённую на рис. 39) или использовать клавиши, обозначения которых приведены в табл. 2.
148
Рис. 39. Палитра инструментов БУЛЕВО
Внимание! Не следует путать знак операции сравнения = с похожим знаком вывода значений переменных. Знак операции = имеет
больший размер и более жирное начертание.
Выражение отношений принимает одно из двух значений: 1 – если
заданное отношение выполняется или 0 – в противном случае. Значение
1 можно интегрировать как значение ИСТИНА, а 0 – как ЛОЖЬ.
Для проверки более сложных условий используются четыре логических операций, обозначение которых приведены в табл. 2.
Таблица 2
Логические операции и результаты их выполнения
NOT
AND
OR
XOR
Логическим выражением называется конструкция, состоящая из
выражений отношений, логических операций и круглых скобок. Логическое выражение принимает только одно из двух значений: 1 или 0;
вычисляется слева направо с учетом приоритета входящих в выражение
операции. Наивысший приоритет круглые скобки, а затем по убыванию:
AND, OR и XOR – одинаковый приоритет и самый низкий приоритет
выражения отношений.
Для выбора нужной ветви разветвляющегося алгоритма используется конструкция, названная условной функцией if, записывается в виде:
if (<логическое выражение>, <выр. 1>, <выр. 2>),
где имя функции if вводится с клавиатуры.
Если логическое выражение равно 1, то значение функции определяется выр.1, в противном случае – выр.2. При программировании разветвляющихся алгоритмов с тремя и более вычислительных ветвей на
месте выр.1 и выр.2 вновь может использоваться функция if .
149
В MathCAD имеется ряд встроенных функций, которые возвращают результат, зависящий от знака или величины аргумента и которые
могут использоваться при программировании разветвляющихся алгоритмов. Приведем некоторые из них:
ceil (x) – наименьшее целое, большее или равное x;
trunc (x) – целая часть вещественного числа x;
floor (x) – наибольшее целое, меньшее или равное x;
round (x, n) – округленное значение вещественного x с точностью
до n знаков после десятичной точки;
Ф(x) – функция Хевисайда – равна 0 при x < 0 и 1 в противном случае;
sign(x) – функция знака (равна 0 если x = 0; –1, если x <0 и 1, если x >0);
x
signum (x) – возвращает 1, если x = 0 и
в остальных случаях.
x
Программирование циклических алгоритмов
По способам организации цикла можно выделить:
а) цикл типа арифметической прогрессии;
б) итерационный цикл.
Программирование цикла
типа арифметической прогрессии
Особенностью цикла типа арифметической прогрессии является
изменение параметра цикла по закону арифметической прогрессии
и поэтому можно, не выполняя цикла, определить количество повторений цикла.
Параметр такого цикла задается дискретной переменной и тогда
конструкции, входящие в тело цикла располагаются, начиная от этого
описания и до конца документа MathCAD или до конструкции, переопределяющей дискретную переменную – параметр цикла (рис. 40).
Рис. 40
Этот цикл имеет уже два параметра: i – параметр, определяющий
номер строки; j – параметр, определяющий номер столбца матрицы. Заметим, что такой цикл называется двойным циклом (рис. 41).
150
Рис. 41
Заметим, что если параметр цикла не входит в индексные выражения элементов массива, то он может принимать вещественные значения.
8.1.9.2. Программные операторы MathCAD
Вплоть до появления седьмой версии системы MathCAD возможности программирования в них были крайне ограниченными. Фактически MathCAD позволяла реализовать лишь линейные программы, в основе которых лежит понятие функции. Функция if и ранжированные переменные в отдельных случаях могли заменить условные выражения
и циклы, но с серьезными ограничениями. Отсутствовала возможность
задания завершенных программных модулей.
Рис. 42. Панель программирования
в MathCAD
Эти возможности в расширенном варианте появились в MathCAD 7.0 Pro
и имеются в описываемой версии MathCAD 2001 PRO. Они сосредоточены в наборной панели программных элементов Programming (показана на рисунке), включаемой кнопкой
на панели Math.
Отметим, что возможность составлять программы реализована
только в версии Professional. Все эти MathCAD-программы с точки зрения программиста представляют собой подпрограммы-функции, которые могут возвращать в качестве результата число, вектор или матрицу.
151
Функции могут вызывать сами себя (рекурсивно определенные функции) или другие подпрограммы-функции, определенные выше в том же
MathCAD-документе.
Эти подпрограммы-функции составляются так же, как и определения функций. Рассмотрим простой пример вычисления суммы:
Sum(n) = 1 + 2 + 3 + .. + n:
 Задайте сначала имя функции Sum, вслед за которым введите
список параметров (n) и оператор присваивания := .
 Введите начальное значение s <--0 и отметьте его целиком.
Стрелка служит оператором присваивания в теле программы, вводитя
клавишей { (открывающая фигурная скобка) или выбором кнопки со
срелкой с панели.
 Создайте новую строку программы (вставка вертикальной черты) при помощи кнопки Add Line ( клавиша -] (закрывающая квадратная скобка)). На экране появится вертикальная черта и пустая ячейка.
 Выполните щелчок на кнопке for, чтобы ввести оператор цикла.
Перед символом принадлежности введите переменную i, а после него –
промежуток изменения переменной 1..n. В находящейся ниже ячейке
введите присваивание s <– s+i. Программа готова.
Ниже в табл. 3 приведены операторы, находящиеся на кнопках панели программирования.
Таблица 3
Операторы панели программирования
Команда
Add Line
if
otherwise
for
Функция
Добавляет новую строку под/над (зависит от выделения) текущей строкой
Присваивание значения локальной переменной
Условный оператор (оператор ветвления)if; условие должно стоять после if,
а оператор, который исполняется, если
выполнено заданное условие, – перед if
Обозначает оператор, который должет
быть исполнен, если условие оператора
if не выполняется
Цикл for; за ключевым словом for следует переменная-счетчик, а после символа принадлежности вводится промедуток изменения этой переменной.
Внутренние операторы цикла сдвинуты
немного вправо
152
Пример
while
break
continue
retutn
on error
Цикл while;внутренние операторы цикла будут исполняться до тех пор, пока
будет истинным условие, следующее за
ключевым словом while. Пример показыветприменение цикла для нахождения нулей функции методом касательных Ньютона
Служит для преждевременного завершения цикла, чтобы, например, избежать зацикливания или слишком продолжительных вычислений
Служит для преждевременного завершения текущей итерации цикла; сам
цикл при этом продолжается
Преждевременное завершение программы; указанное в ячейке значение
будет возвращено
Если при вычислении выражения expr2
возникла ошибка, вычисляется выражение expr1
Примеры программ
Пример 29. Условный оператор if и оператор otherwise. Программноый блок, вычисляющий факториал с использованием рекурсии
(рис. 43).
Рис. 43
В данном примере 1 возвращается, только если n=0 или n=1. Обратите внимание на задание некольких условий – со знаком плюс, каждое
условие в скобках. В остальных случаях, учитывая формулу n!=n*(n – 1)!,
вызывается fakt(n – 1) и умножается на n. При помощи функции error
можно вывести сообщение об ошибке при неправильном вводе аргумента.
Пример 30. Для демонстрации работы цикла for рассмотрим ту же
задачу, но вычисление факториала осуществим при помощи цикла.
153
Рис. 44
Если n=0 или n=1, возвращается 1, в противном случае при помощи цикла for вычисляется произведение n!=1*2*3...*n. Вычисленное
последним значение pвозвращается автоматически.
Пример 31. В следующем примере при помощи алгоритма Евклида
определяется наибольший общий делитель. Для реализации алгоритма
используется цикл с ключевым словом while (рис. 45).
Рис. 45
Пример 32. Прерывание цикла при помощи операторов break
и continue. Оператор return (рис. 46). Первый пример – релизация метода касательных Ньютона для определения нулей функции. На основе
начального значения x вычисляется новое улучшенное значение x, расположенное ближе к искомому нулю функции. При этом итерации повторяются до тех пор, пока значение функции не станет меньше заданной точности (в примере 10–6).
154
Рис. 46
При помощи оператора return организовано завершение программы в нужный момент. В данном примере если число итераций больше
или равно 10, то происходит прерывание программы и выдается сообщение о том, что слишком много итераций. Здесь также отслеживаются
случаи, когда производная в знаменателе близка к нулю и выдается об
этом сообщение.
Пример 33. Кроме ключевого слова break имеется ключевое слово
continue с похожей функцией. В то время как break прерывает цикл и
осуществляет переход к следующему за циклом оператору, continue
прерывает выполнение только текущей итерации (рис. 47).
В примере справа ключевое слово continue используется для выявления всех нулей функции на заданном интервале. При этом в примере производится разбиение интервала на n равных подынтервалов и ищутся те из
них, на которых функия меняет знак. При обнаружении такого поинтервала вызывается функция, реализующая метод касательных Ньютона, с
начальным значением, находящимся в середине подынтервала.
155
Рис. 47
Обратите внимание, по завершении работы программы выдается
вектор значений.
Пример 34. Программа, вычисляющая коэффициенты Фурье
функции, причем в результате выдается матица значений: нулевая по
счету строка содержит коэффициенты Аn, а первая – коэффициенты Bn
(рис. 48). Для выделения этих коэффициентов выдаваемая матрица
транспонируется и из нее выбирается нулевой столбец для коэффициентов Аn, и первый – для Bn.
156
Рис. 48
8.2. Математический пакет MatLab
MatLab (сокращение от англ. «Matrix Laboratory») – пакет прикладных программ для решения задач технических вычислений и одноимённый язык программирования, используемый в этом пакете. MatLab используют более 1 000 000 инженерных и научных работников, он работает на большинстве современных операционных системах, включая
Linux, Mac OS, Solaris (начиная с версии R2010b, поддержка Solaris прекращена [2]) и Microsoft Windows.
Пакет MatLab является одной из старейших, тщательно проработанных и апробированных временем систем компьютерной математики,
157
построенная на расширенном представлении и применении матричных
операций (MatLab – Matrix Laboratory – матричная лаборатория). В
настоящее время MatLab вышла за пределы специализированной матричной системы и является одним из наиболее мощных математических
пакетов, сочетающий в себе удобную оболочку, редактор, вычислитель
и графический программный процессор.
8.2.1. История
MATLAB как язык программирования был разработан Кливом
Моулером (англ. Cleve Moler) в конце 1970-х годов, когда он был деканом факультета компьютерных наук в Университете Нью-Мексико. Целью разработки служила задача дать студентам факультета возможность
использования программных библиотек Linpack и EISPACK без необходимости изучения Фортрана. Вскоре новый язык распространился
среди других университетов и был с большим интересом встречен учёными, работающими в области прикладной математики. До сих пор в
Интернете можно найти версию 1982 года, написанную на Фортране,
распространяемую с открытым исходным кодом. Инженер Джон Литтл
(англ. John N. (Jack) Little) познакомился с этим языком во время визита
Клива Моулера в Стэнфордский университет в 1983 году. Поняв, что
новый язык обладает большим коммерческим потенциалом, он объединился с Кливом Моулером и Стивом Бангертом (англ. Steve Bangert).
Совместными усилиями они переписали MATLAB на C и основали в
1984 году компанию The MathWorks для дальнейшего развития. Эти переписанные на С библиотеки долгое время были известны под именем
JACKPAC. Первоначально MATLAB предназначался для проектирования систем управления (основная специальность Джона Литтла), но
быстро завоевал популярность во многих других научных и инженерных областях. Он также широко использовался и в образовании, в частности, для преподавания линейной алгебры и численных методов.
8.2.2. Язык MATLAB
Описание языка
Язык MATLAB является высокоуровневым интерпретируемым
языком программирования, включающим основанные на матрицах
структуры данных, широкий спектр функций, интегрированную среду
разработки, объектно-ориентированные возможности и интерфейсы
к программам, написанным на других языках программирования.
158
Программы, написанные на MATLAB, бывают двух типов – функции и скрипты. Функции имеют входные и выходные аргументы, а также собственное рабочее пространство для хранения промежуточных результатов вычислений и переменных. Скрипты же используют общее
рабочее пространство. Как скрипты, так и функции не компилируются
в машинный код и сохраняются в виде текстовых файлов. Существует
также возможность сохранять так называемые pre-parsed программы –
функции и скрипты, обработанные в вид, удобный для машинного исполнения. В общем случае такие программы выполняются быстрее
обычных, особенно если функция содержит команды построения графиков.
Основной особенностью языка MATLAB являются его широкие
возможности по работе с матрицами, которые создатели языка выразили
в лозунге «думай векторно» (англ. Think vectorized).
Пример 35. Пример кода, являющегося частью функции magic.m,
генерирующего магический квадрат M для нечётных значений размера
стороны n.
[J,I]=meshgrid(1:n);
A=mod(I+J-(n+3)/2,n);
B=mod(I+2*J-2,n);
M=n*A+B+1;
Пример 36. Код, рисующий график sinc-функции f ( R ) 
представленноо на рис. 49.
[X,Y]=meshgrid(-8:.5:8);
R=sqrt(X.^2+Y.^2);
Z=sin(R)./R;
Z(R==0)=1;
mesh(X,Y,Z);
159
sin( R )
,
R
Рис. 49. График sinc-функции,
нарисованный с помощью MATLAB
8.2.3. Применение
Математика и вычисления
MATLAB предоставляет пользователю большое количество (несколько сотен) функций для анализа данных, покрывающие практически все области математики, в частности:
 Матрицы и линейная алгебра – алгебра матриц, линейные уравнения, собственные значения и вектора, сингулярности, факторизация
матриц и др.
 Многочлены и интерполяция – корни многочленов, операции
над многочленами и их дифференцирование, интерполяция и экстраполяция кривых и др.
 Математическая статистика и анализ данных – статистические
функции, статистическая регрессия, цифровая фильтрация, быстрое
преобразование Фурье и др.
 Обработка данных – набор специальных функций, включая построение графиков, оптимизацию, поиск нулей, численное интегрирование (в квадратурах) и др.
 Дифференциальные уравнения – решение дифференциальных и
дифференциально-алгебраических
уравнений,
дифференциальных
уравнений с запаздыванием, уравнений с ограничениями, уравнений в
частных производных и др.
 Разреженные матрицы – специальный класс данных пакета
MATLAB, использующийся в специализированных приложениях.
 Целочисленная арифметика – выполнение операций целочисленной арифметики в среде MATLAB.
Разработка алгоритмов
MATLAB предоставляет удобные средства для разработки алгоритмов, включая высокоуровневые с использованием концепций объектно-ориентированного программирования. В нём имеются все
необходимые средства интегрированной среды разработки, включая отладчик и профайлер. Функции для работы с целыми типами данных облегчают создание алгоритмов для микроконтроллеров и других приложений, где это необходимо.
Визуализация данных
160
В составе пакета MATLAB имеется большое количество функций
для построения графиков, в том числе трёхмерных, визуального анализа
данных и создания анимированных роликов.
Встроенная среда разработки позволяет создавать графические интерфейсы пользователя с различными элементами управления, такими
как кнопки, поля ввода и другими. С помощью компонента MATLAB
Compiler эти графические интерфейсы могут быть преобразованы в самостоятельные приложения, для запуска которых на других компьютерах необходима установленная библиотека MATLAB Component Runtime.
Внешние интерфейсы
Пакет MATLAB включает различные интерфейсы для получения
доступа к внешним подпрограммам, написанным на других языках программирования, данным, клиентам и серверам, общающимся через технологии Component Object Model или Dynamic Data Exchange, а также
периферийным устройствам, которые взаимодействуют напрямую
с MATLAB. Многие из этих возможностей известны под названием
MATLAB API.
COM
Пакет MATLAB предоставляет доступ к функциям, позволяющим
создавать, манипулировать и удалять COM-объекты (как клиенты, так
и серверы). Поддерживается также технология ActiveX. Все COMобъекты принадлежат к специальному COM-классу пакета MATLAB.
Все программы, имеющие функции контроллера автоматизации (англ.
Automation controller) могут иметь доступ к MATLAB как к серверу автоматизации (англ. Automation server).
.NET
Пакет MATLAB в Microsoft Windows предоставляет доступ к программной платформе .NET Framework. Имеется возможность загружать
.NET сборки (Assemblies) и работать с объектами .NET классов из среды
MATLAB. В версии MATLAB 7.11 (R2010b) поддерживается .NET
Framework версий 2.0, 3.0, 3.5 и 4.0.
DDE
Пакет MATLAB содержит функции, которые позволяют ему получать доступ к другим приложениям среды Windows, равно как и этим
приложениям получать доступ к данным MATLAB, посредством технологии динамического обмена данными (DDE). Каждое приложение, которое может быть DDE-сервером, имеет своё уникальное идентификационное имя. Для MATLAB это имя – Matlab.
Веб-сервисы
161
В MATLAB существует возможность вызывать методы вебсервисов. Специальная функция создаёт класс, основываясь на методах
API веб-сервиса.
MATLAB взаимодействует с клиентом веб-сервиса с помощью
принятия от него посылок, их обработки и посылок ответа. Поддерживаются следующие технологии: Simple Object Access Protocol (SOAP) и
Web Services Description Language (WSDL).
COM-порт
Интерфейс для последовательного порта пакета MATLAB обеспечивает прямой доступ к периферийным устройствам, таким как модемы,
принтеры и научное оборудование, подключающееся к компьютеру через
последовательный порт (COM-порт). Интерфейс работает путём создания
объекта специального класса для последовательного порта. Имеющиеся
методы этого класса позволяют считывать и записывать данные в последовательный порт, использовать события и обработчики событий, а также
записывать информацию на диск компьютера в режиме реального времени. Это бывает необходимо при проведении экспериментов, симуляции
систем реального времени и для других приложений.
MEX-файлы
Пакет MATLAB включает интерфейс взаимодействия с внешними
приложениями, написанными на языках C и Фортран. Осуществляется
это взаимодействие через MEX-файлы. Существует возможность вызова подпрограмм, написанных на C или Фортране из MATLAB, как будто
это встроенные функции пакета. MEX-файлы представляют собой динамически подключаемые библиотеки, которые могут быть загружены и
исполнены интерпретатором, встроенным в MATLAB. MEX-процедуры
имеют также возможность вызывать встроенные команды MATLAB.
DLL
Интерфейс MATLAB, относящийся к общим DLL, позволяет вызывать функции, находящиеся в обычных динамически подключаемых
библиотеках, прямо из MATLAB. Эти функции должны иметь Cинтерфейс.
Кроме того, в MATLAB имеется возможность получить доступ к
его встроенным функциям через C-интерфейс, что позволяет использовать функции пакета во внешних приложениях, написанных на C. Эта
технология в MATLAB называется C Engine.
162
8.2.4. Наборы инструментов
Для MATLAB имеется возможность создавать специальные наборы
инструментов (англ. toolbox), расширяющих его функциональность.
Наборы инструментов представляют собой коллекции функций, написанных на языке MATLAB для решения определённого класса задач.
Компания Mathworks поставляет наборы инструментов, которые используются во многих областях, включая следующие:
 Цифровая обработка сигналов, изображений и данных: DSP
Toolbox, Image Processing Toolbox, Wavelet Toolbox, Communication
Toolbox, Filter Design Toolbox – наборы функций, позволяющих решать
широкий спектр задач обработки сигналов, изображений, проектирования цифровых фильтров и систем связи.
 Системы управления: Control Systems Toolbox, µ-Analysis and
Synthesis Toolbox, Robust Control Toolbox, System Identification Toolbox, LMI
Control Toolbox, Model Predictive Control Toolbox, Model-Based Calibration
Toolbox – наборы функций, облегчающих анализ и синтез динамических
систем, проектирование, моделирование и идентификацию систем управления, включая современные алгоритмы управления, такие как робастное
управление, H∞-управление, ЛМН-синтез, µ-синтез и др.
 Финансовый анализ: GARCH Toolbox, Fixed-Income Toolbox,
Financial Time Series Toolbox, Financial Derivatives Toolbox, Financial
Toolbox, Datafeed Toolbox – наборы функций, позволяющие быстро
и эффективно собирать, обрабатывать и передавать различную финансовую информацию.
 Анализ и синтез географических карт, включая трёхмерные:
Mapping Toolbox.
 Сбор и анализ экспериментальных данных: Data Acquisition
Toolbox, Image Acquisition Toolbox, Instrument Control Toolbox, Link for
Code Composer Studio – наборы функций, позволяющих сохранять и обрабатывать данные, полученные в ходе экспериментов, в том числе
в реальном времени. Поддерживается широкий спектр научного и инженерного измерительного оборудования.
 Визуализация и представление данных: Virtual Reality Toolbox –
позволяет создавать интерактивные миры и визуализировать научную
информацию с помощью технологий виртуальной реальности и языка
VRML.
 Средства разработки: MATLAB Builder for COM, MATLAB
Builder for Excel, MATLAB Builder for NET, MATLAB Compiler, Filter
Design HDL Coder – наборы функций, позволяющих создавать независимые приложения из среды MATLAB.
163
 Взаимодействие с внешними программными продуктами:
MATLAB Report Generator, Excel Link, Database Toolbox, MATLAB Web
Server, Link for ModelSim – наборы функций, позволяющие сохранять
данные в различных видов таким образом, чтобы другие программы
могли с ними работать.
 Базы данных: Database Toolbox – инструменты работы с базами
данных.
 Научные и математические пакеты: Bioinformatics Toolbox,
Curve Fitting Toolbox, Fixed-Point Toolbox, Fuzzy Logic Toolbox, Genetic
Algorithm and Direct Search Toolbox, OPC Toolbox, Optimization Toolbox,
Partial Differential Equation Toolbox, Spline Toolbox, Statistic Toolbox, RF
Toolbox – наборы специализированных математических функций, позволяющие решать широкий спектр научных и инженерных задач, включая разработку генетических алгоритмов, решения задач в частных производных, целочисленные проблемы, оптимизацию систем и другие.
 Нейронные сети: Neural Network Toolbox – инструменты для
синтеза и анализ нейронных сетей.
 Нечёткая логика: Fuzzy Logic Toolbox – инструменты для построения и анализа нечётких множеств.
 Символьные вычисления: Symbolic Math Toolbox – инструменты для символьных вычислений с возможностью взаимодействия с символьным процессором программы Maple.
Помимо вышеперечисленных, существуют тысячи других наборов
инструментов для MATLAB, написанных другими компаниями и энтузиастами.
8.2.5. Возможности систем MATLAB
Возможности прежних версий MATLAB 4.x
Уже первые ориентированные на Microsoft Windows версии системы (MATLAB 4.x) обладали мощными средствами.
В области математических вычислений:
 матричные, векторные, логические операторы;
 элементарные и специальные функции;
 полиномиальная арифметика;
 многомерные массивы;
 массивы записей;
 массивы ячеек.
В области реализации численных методов:
 дифференциальные уравнения;
164




вычисление одномерных и двумерных квадратур;
поиск корней нелинейных алгебраических уравнений;
оптимизация функций нескольких переменных;
одномерная и многомерная интерполяция.
В области программирования:
 свыше 500 встроенных математических функций;
 ввод/вывод двоичных и текстовых файлов;
 применение программ, написанных на Си и ФОРТРАН;
 автоматическая перекодировка процедур MATLAB в тексты
программ на языках Си и C++;
 типовые управляющие структуры.
В области визуализации и графики:
 возможность создания двумерных и трехмерных графиков;
 осуществление визуального анализа данных.
Эти средства сочетались с открытой архитектурой систем, позволяющей изменять уже существующие функции и добавлять свои собственные. Входящая в состав MATLAB программа Simulink дает возможность имитировать реальные системы и устройства, задавая их моделями, составленными из функциональных блоков. Simulink имеет обширную и расширяемую пользователями библиотеку блоков и простые
средства задания и изменения их параметров.
Возможности версий MATLAB 5.x
В версиях системы MATLAB 5.x введены новые мощные средства.
Улучшенная среда программирования:
 профилировщик m-файлов для оценки времени исполнения
фрагментов программ;
 редактор/отладчик m-файлов с удобным графическим интерфейсом;
 объектно-ориентированное программирование, включая переназначение функций и операторов;
 средства просмотра содержимого рабочей области и путей доступа;
 конвертирование m-файлов функций в промежуточный р-код.
Графический интерфейс пользователя (GUI):
 интерактивное средство построения графического интерфейса
пользователя – GUI;
 новый редактор свойств графических объектов – Handle Graphics
Property Editor (редактор свойств дескрипторной графики);
165
 панели списков, включая списки с множественным выбором;
 форма диалоговых панелей и панелей сообщений;
 многострочный режим редактирования текста;
 запоминание последовательности графических элементов управления;
 расширение параметров элементов управления;
 свойство переносимости между платформами;
 курсор, определяемый пользователем;
 подготовка документов в формате HTML (языка разметки гипертекста Hypertext Mark Up Language), начиная с версии 5.3.
Новые типы данных:
 многомерные массивы;
 массивы структур (записей);
 массивы ячеек данных разного типа;
 массивы символов с 16-разрядной кодировкой;
 массивы с 8-разрядной кодировкой элементов.
 Средства программирования:
 списки аргументов переменной длины;
 переназначение функций и операторов;
 применение локальных функций в m-файлах;
 оператор-переключатель switch...case...end;
 оператор wait for;
 функции обработки битов.
Математические вычисления и анализ данных:
 пять новых численных методов решения (solver) обыкновенных
дифференциальных уравнений (ОДУ);
 ускоренное вычисление функций Бесселя;
 вычисление собственных значений и сингулярных чисел для
матриц разреженной структуры;
 двумерные квадратурные формулы;
 многомерная интерполяция;
 триангуляция и вывод на терминал данных, определенных на неравномерной сетке;
 анализ и обработка многомерных массивов;
 функции обработки времени и даты.
Новые возможности обычной графики:
 Z-буферизация для быстрой и точной трехмерной визуализации;
 24-битовая поддержка RGB;
166
 множественная подсветка поверхностей и полигонов;
 перспективные изображения из произвольной точки;
 новые модели подсветки;
 векторизованные полигоны для больших трехмерных моделей;
 поддержка данных, определенных на неравномерной сетке, включая триангуляционные и сеточные двух- и трехмерные поверхности;
 дескрипторная графика для множественных объектов;
 вывод на терминал, хранение и импорт 8-разрядных изображений;
 дополнительные форматы графических объектов.
Презентационная графика и звук:
 двойные х- и y-оси;
 легенда – пояснение в виде отрезков линий со справочными
надписями, размещаемое внутри графика или около него;
 управление шрифтом текстовых объектов;
 надстрочные, подстрочные и греческие символы;
 трехмерные диаграммы, поля направлений, ленточные и стержневые графики;
 увеличенное количество стилей для маркировки линий;
 16-битный стереозвук.
Интерактивная документация:
 возможность просмотра с помощью Netscape Navigator или
Microsoft Internet Explorer;
 полная справочная документация в форматах HTML и PDF;
О возможность создания «живых» книг с помощью специального приложения
Версия MATLAB 5.3.1 (выпуск 11.1) интегрирует в своем составе
42 программных продукта, среди которых основу составляют базовая
система MATLAB и новая реализация пакета расширения Simulink 3.1.
В систему введен ряд новых компонентов, включая следующие:
 Data Analysis, Visualization and Application Development – анализ
данных, их визуализация и применение;
 Control Design – проектирование устройств управления;
 DSP and Communications System Design – проектирование коммуникационных систем и систем цифровой обработки сигналов;
 Financial Engineering – финансовые расчеты и др.
Из других возможностей версии MATLAB 5.3.1 наиболее значимыми являются следующие:
167
 существенное обновление пакетов расширения (toolbox) системы
MATLAB; О новые улучшенные версии Simulink 3.1 и Real-Time
Workshop 3.0;
 Real-Time Windows Target, позволяющая исполнять управляющие программы реального времени на том же компьютере или ноутбуке, где установлены MATLAB, Simulink и Real Time Workshop;
 стандартный пакет расширения хРС для управления системами
реального времени на управляющем компьютере (PC) без участия хосткомпьютера с установленной системой MATLAB;
 Data Acquisition Toolbox для обмена информацией с блоками
сбора данных, подключаемыми к шине компьютера, в реальном масштабе времени;
 новое меню View (Вид), позволяющее выводить или скрывать
панель инструментов;
 расширенные возможности работы с целочисленными данными;
 улучшенное окно графики с панелью инструментов;
 возможность вращения графиков в пространстве с помощью
мыши в любом направлении простым включением режима вращения
с помощью кнопки панели инструментов графического окна;
 поддержка нового стандарта NTSC;
 новый графический интерактивный редактор, облегчающий
форматирование графиков;
 обеспечение записи и считывания изображений в формате PNG
(Portable Network Graphics – Переносимая сетевая графика);
 улучшенная визуализация трехмерных скалярных и векторных
данных объемных поверхностей;
 новые решатели дифференциальных уравнений и дифференциально-алгебраических уравнений;
 улучшенный редактор и профилировщик m-файлов, содержащий
генератор отчетов и поддерживающий HTML (язык разметки гипертекста) – формат записи файлов;
 улучшенная печать, предусматривающая предварительный просмотр печатаемых страниц – команда Print Preview (предварительный
просмотр области печати).
Возможности новейшей версии MATLAB 6
Новейшая версия системы MATLAB 6 не только имеет перечисленные выше возможности предшествующих версий, но и характеризуется целым рядом новых и важных возможностей:
168
 доведенное до более чем 600 число встроенных функций и команд;
 новый интерфейс с набором инструментов для управления средой, включающий в себя окно команд (Command Window), окно истории команд (Command History), браузер рабочей области (Workspace
Browser) и редактор массивов (Array Editor);
 новые инструменты, позволяющие при помощи мыши интерактивно редактировать и форматировать графики, оптимизировать их коды и затраты памяти на графические команды и атрибуты;
 улучшенные алгоритмы на основе оптимизированной библиотеки LAPACK;
 новая библиотека FFTW (быстрых преобразований Фурье) Массачусетского технологического института Кембриджского университета
(США);
 ускоренные методы интегральных преобразований;
 новые, более мощные и точные, алгоритмы интегрирования
дифференциальных уравнений и квадратур;
 новые современные функции визуализации: вывод на экран двумерных изображений, поверхностей и объемных фигур в виде прозрачных объектов;
 новая инструментальная панель Camera для управления перспективой и ускорение вывода графики с помощью OpenGL;
 новый интерфейс для вызова Java-процедур и использования
Java-объектов непосредственно из MATLAB;
 новые, современные инструменты проектирования графического
пользовательского интерфейса;
 обработка (регрессия, интерполяция, аппроксимация и вычисление основных статистических параметров) графических данных прямо
из окна графики;
 новое приложение MATLAB для системы разработки Visual
Studio, позволяющее автоматически, непосредственно из Microsoft
Visual Studio, преобразовывать Си и Си++ коды в выполняемые
MATLAB файлы (МЕХ-файлы);
 интеграция с системами контроля версий кода, такими как Visual
Source Safe;
 новый интерфейс (последовательный порт) для обмена данными
с внешним оборудованием из MATLAB;
 новый пакет управления измерительными приборами (Instrument
Control ToolBox) для обмена информацией с приборами, подключенными к каналу общего пользования (GPIB, HP-IB, IEEE-488) Существует
169
аналогичные международные МЭК (IEC) 625.1 и российские государственные стандарты. Несмотря на логическую и электрическую совместимость, международные и отечественные стандарты предполагают
использование других разъемов или к шине VXI через адаптер VXI –
GPIB (только в версиях для Windows и Sun Solaris) и последовательному интерфейсу RS-232, RS-422, RS-485 (также и для Linux-версии), в
том числе в соответствии со стандартом VISA (Virtual Instruments
Systems Application – Применение виртуальных измерительных приборов) [5];
 существенно обновленные пакеты расширения, в частности новые версии пакета моделирования динамических систем Simulink 4 и
Real Time Workshop 4;
 интеграция с системами управления потребностями, например
DOORS.
Поставляемый с системой MATLAB 6.0 новый пакет расширения
Simulink 4 также имеет ряд новинок. Они перечислены ниже по категориям:
 Усовершенствование пользовательского интерфейса:
o новый графический отладчик для интерактивного поиска
и диагностики ошибок в модели;
o усовершенствован
навигатор моделей (Model Browser,
Windows 95/98/Me/ 2000/NT4);
o новый однооконный режим для открытия подсистем;
o контекстное меню для блок-диаграмм (открывается щелчком
правой кнопки мыши) как в Windows, так и в Unix версиях;
o новый диалог Finder для поиска моделей и библиотек.
Simulink поступает к пользователям с более 100 встроенными блоками, в состав которых входят наиболее необходимые функции моделирования. Блоки сгруппированы в библиотеки в соответствии с их назначением: источники сигнала, приемники, дискретные, непрерывные, нелинейные, математика, функции и таблицы, сигналы и системы. В дополнение к обширному набору встроенных блоков Simulink имеет расширяемую библиотеку блоков благодаря функции создания пользовательских блоков и библиотек. Вы можете настраивать не только функциональность встроенных и пользовательских блоков, но также пользовательский интерфейс, используя значки и диалоги. Например, вы можете создать блоки для моделирования поведения специальных механических, электрических и программных компонентов, как, например: моторы, преобразователи, серво-клапаны, источники питания, энергетические установки, фильтры, шины, модемы.
170
 Приемники или другие динамические компоненты. Однажды созданные пользовательские блоки могут быть сохранены в библиотеке
блоков для использования в будущем. Любые пользовательские блоки
или библиотеки блоков могут быть легально распространены в рабочих
группах, переданы поставщикам и заказчикам как с исходным кодом,
так и без него.
Новые и улучшенные возможности блоков:
o наряду с существовавшей ранее поддержкой скалярных и векторных сигналов обеспечена поддержка матричных сигналов многими
блоками Simulink;
o блоки Product, Multiplication, Gain и Math Function теперь поддерживают матричные операции на матричных сигналах;
o Мих и Demux блоки теперь поддерживают мультиплексирование матричных сигналов;
o новый блок Reshape изменяет размер матрицы своего входного
сигнала;
o блок Probe теперь по умолчанию выводит размер матрицы сигнала, подаваемого на вход;
o новый блок Bitwise Logical Operator (логические операции по
битам) накладывает маску, инвертирует или производит логические
операции с отдельными битами целочисленного сигнала без знака;
o четыре новых блока Look-Up Table (просмотра таблиц);
o новый Polynomial блок выводит полиномиальную функцию от
входного сигнала.
 Расширенная поддержка для крупных приложений:
o новые объекты данных Simulink позволяют создавать специфические для приложений типы данных MATLAB;
o новый графический пользовательский интерфейс Simulink
Explorer для наблюдения и редактирования объектов данных Simulink;
o усовершенствование блока Configurable Subsystems (конфигурируемые подсистемы);
o новое меню выбора блока конфигурируемой подсистемы;
o поддержка защиты интеллектуальной собственности с помощью S-функций, позволяющая не передавать исходный код S-функций
(требуется Real-Time Workshop 4.0 (Лаборатория реального времени))
[S-функция – пользовательский программный модуль, который определяет поведение Simulink блока. Simulink содержит шаблоны для создания S-функций с помощью существующих или разработанных заново
кодов на Си, Ada (в версии Simulink 4.0/Real Workshop 4.0, нужен отдельный блок Real Workshop Ada Coder), Fortran или MATLAB. Созданную S-функцию вы можете включить в вашу модель, используя соот171
ветствующий ей блок Simulink – будь то стандартный или пользовательский. S-функции уменьшают время, необходимое для моделирования крупномасштабных систем, позволяя оперативно вставлять существующие коды в модель. Это, например, особенно важно, если система
MATLAB+Simulink+Real Workshop+Real Time Windows Target используется для управления сложными объектами в реальном масштабе времени. Simulink обеспечивает многопортовую и многоскоростную поддержку и разрешает различные интервалы дискретизации (только Sфункции на Си и MATLAB). – Примеч. ред.];
o поддержка S-функций, кодируемых на языке ADA (требуется
новый отдельный пакет Real Time Workshop Ada Coder);
o улучшенная интеграция со Stateflow – пакетом инструментов
моделирования систем, управляемых событиями, значительно усовершенствованный Stateflow Coder для генерации кода;
o run-time сервер MATLAB для запуска программ MATLAB,
в том числе в р-кодах, без установленной системы MATLAB;
o улучшенная версия хРС Embedded Target для записи генерируемого кода не только на переносимые носители, но и в постоянные запоминающие устройства, твердотельные диски и на жесткий диск управляющего компьютера. Наряду с хРС поддерживаются другие платформы встроенных управляющих систем, включая VxWorks/Tornado (причем как
UNIX, так и Windows хостом с MATLAB), Real Time Windows Target;
Lynx Embedded OSEK Target, стандартизированную в автомобилестроении, DOS Target на управляющем компьютере Intel386 и старше (последняя только со снятым с производства компилятором Watcom Си/Си++ с
расширителем DOS4GW.exe для DOS и несовместима с приложениями
Windows). Но возможность работы без хоста с системой MATLAB (StandAlone) имеется только в хРС;
o поддержка хРС Target стандартной полевой шины промышленной автоматизации CAN, возможность синхронизации хРС сигналами, поступающими по этой шине;
o web-сервер, встроенный в хРС Target, позволяющий осуществлять управление встроенными компьютерами и просмотр их состояния при помощи браузеров Интернета (Microsoft Explorer 4.0 и
старше и Netscape Navigator 4.5 и старше).
Все это говорит о том, что двенадцатый выпуск системы (MATLAB 6.0
+ Simu-link 4.0 + Stateflow 4.0 + ...) подвергся не косметической, а самой
серьезной переработке, выдвигающей эту систему на абсолютно новый
уровень развития и применения.
Интеграция с другими программными системами
172
В последние годы разработчики математических систем уделяют
огромное внимание их интеграции и совместному использованию. Это
не только расширяет класс решаемых каждой системой задач, но и позволяет подобрать для них самые лучшие и наиболее подходящие инструментальные средства. Решение сложных математических задач сразу на нескольких системах существенно повышает вероятность получения корректных результатов – увы, как математики, так и математические системы способны ошибаться, особенно при некорректной постановке задач неопытными пользователями.
С системой MATLAB могут интегрироваться такие популярные
математические системы, как Mathcad, Maple V и Mathematica. Есть
тенденция и к объединению математических систем с современными
текстовыми процессорами. Так, новое средство последних версий
MATLAB – Notebook – позволяет готовить документы в текстовом процессоре Word 95/97/2000 [Здесь и далее Word 95 и Word 97 – синонимы
соотвественно Microsoft Word 7 из пакета Microsoft Office 95 и Microsoft
Word 8 из пакета Microsoft Office 97. – Примеч. ред.] со вставками в виде документов MATLAB и результатов вычислений, представленных
в численном, табличном или графическом виде. Таким образом, становится возможной подготовка «живых» электронных книг, в которых демонстрируемые примеры могут быть оперативно изменены. Так, вы
можете менять условия задач и тут же наблюдать изменение результатов их решения. В версии MATLAB 6 предусмотрены также улучшенные средства для экспорта графики в слайды презентационной программы Microsoft PowerPoint. В MATLAB задачи расширения системы
решаются с помощью специализированных пакетов расширения – наборов инструментов (Toolbox). Многие из них содержат специальные
средства для интеграции с другими программами, поддержки объектноориентированного и визуального программирования, для генерации
различных приложений. Краткое описание пакетов расширения дано
[6]. Кроме того, этой теме посвящены отдельные книги. В состав системы MATLAB входит ядро одной из самых мощных, популярных
и хорошо апробированных систем символьной математики (компьютерной алгебры) Maple V Release 5. Оно используется пакетами расширения Symbolic Math Toolbox и Extended Symbolic Math Toolbox, благодаря которым в среде MATLAB стали доступны принципиально новые
возможности символьных и аналитических вычислений. Новые свойства системе MATLAB придала ее интеграция с программной системой
Simulink, созданной для моделирования динамических систем и
устройств, заданных в виде системы блоков. Базируясь на принципах
визуально-ориентированного программирования, Simulink позволяет
173
выполнять моделирование сложных устройств с высокой степенью достоверности и с прекрасными средствами представления результатов.
Помимо естественной интеграции с пакетами расширения Symbolic
Math и Simulink MATLAB интегрируется с десятками мощных пакетов
расширения, описанными в [3], и значительно более подробно, хотя в
версиях для выпуска И, в монографии. В свою очередь, многие другие
математические системы, например Mathcad и Maple, допускают установление объектных и динамических связей с системой MATLAB, что
позволяет использовать в них эффективные средства MATLAB для работы с матрицами. Эта прогрессивная тенденция интегрирования компьютерных математических систем, несомненно, будет продолжена.
8.2.6. Расширяемость системы
Какой бы мощной ни была та или иная математическая система,
она не способна включить в себя все средства, которые могут потребоваться сотням тысяч пользователей. Поэтому важно, чтобы система была достаточно гибкой и способной адаптироваться к различным задачам
пользователей самых разных категорий – начинающих и опытных математиков, инженеров и научных работников, аспирантов и студентов
вузов и даже школьников. MATLAB – расширяемая система, и ее легко
приспособить к решению нужных вам классов задач. Ее огромное достоинство заключается в том, что это расширение достигается естественным путем и реализуется в виде так называемых т-файлов (с расширением .m). Иными словами, расширения системы хранятся на жестком диске компьютера и в нужный момент вызываются для использования точно так же, как встроенные в MATLAB (внутренние) функции и
процедуры. Благодаря текстовому формату m-файлов пользователь может ввести в систему любую новую команду, оператор или функцию и
затем пользоваться ими столь же просто, как и встроенными операторами или функциями. При этом в отличие от таких языков программирования, как Бейсик, Си или Паскаль не требуется никакого объявления
этих новых функций. Это роднит MATLAB с языками Лого и Форт,
имеющими словарную организацию операторов и функций и возможности пополнения словаря новыми определениями-словами. Но, поскольку новые определения в системе MATLAB хранятся в виде файлов на
диске, это делает набор операторов и функций практически неограниченным. В базовый набор слов системы входят спецзнаки, знаки арифметических и логических операций, арифметические, алгебраические,
тригонометрические и некоторые специальные функции, функции
быстрого преобразования Фурье и фильтрации, векторные и матричные
174
функции, средства для работы с комплексными числами, операторы построения графиков в декартовой и полярной системах координат, трехмерных поверхностей и т.д. Словом, MATLAB предоставляет пользователю обширный набор готовых средств (большая часть из них – это
внешние расширения в виде m-файлов).
Дополнительный уровень системы образуют ее пакеты расширения
(toolbox). Они позволяют быстро ориентировать систему на решение задач в той или иной предметной области: в специальных разделах математики, в физике и в астрономии, в области нейтронных сетей и средств
телекоммуникаций, в математическом моделировании, проектировании
событийно-управляемых систем и т.д. Благодаря этому MATLAB обеспечивает высочайший уровень адаптации к решению задач конечного
пользователя.
8.2.7. Установка и файловая система MATLAB
Новая версия системы MATLAB 6 – весьма громоздкий программный 1 комплекс, который (при полной установке) требует до 1000–1500
Мбайт дисковой памяти (в зависимости от конкретной поставки, полноты справочной системы и числа устанавливаемых пакетов прикладных
программ). Поэтому он поставляются исключительно на компактдисках. Полный комплект системы размещается на двух компакт-дисках
только для чтения (CD-ROM), на одном из которых размещены PDFфайлы документации.
Для успешной установки MATLAB необходимы следующие минимальные средства:
 компьютер с микропроцессором не ниже Pentium и математическим сопроцессором, рекомендуются процессоры Pentium PRO, Pentium
II, Pentium III, Pentium IV или AMD Athlon;
 устройство считывания компакт дисков (привод CD-ROM) (для
установки), мышь, 8-разрядный графический адаптер и монитор, поддерживающие не менее 256 цветов;
 операционная система Windows 95/98 (оригинальная или второе
издание) / Me (Millennium Edition) /2000/ (допускается также NT4 с сервис-пакетами 5 или 6а);
 ОЗУ емкостью 64 Мбайт для минимального варианта системы
(рекомендуется иметь память не менее 128 Мбайт);
 до 1500 Мбайт дискового пространства при полной установке
всех расширений и всех справочных систем.
Для использования расширенных возможностей системы нужны
графический ускоритель, Windows-совместимые звуковая карта и принтер, текстовый процессор Microsoft Word 95/97/ 2 2000 для реализации
175
Notebook, компиляторы языков Си/Си++ и/или ФОРТРАН для подготовки собственных файлов расширения и браузер Netscape Navigator 4.0
и выше или Microsoft Internet Explorer 4.0 и выше. Для просмотра файлов справочной системы в формате PDF нужна программа Adobe Reader
или Adobe Acrobat 3.0 и выше.
 Компилятор Compaq Visual Fortran 5.0 или 6.1;
 Microsoft Visual Си/С++ версий 5.0 или 6.0;
 Borland Си/С++ версий 5.0, 5.02;
 Borland C++Builder версий 3.0, 4.0 или 5.0;
 WATCOM Си/Си++ версий 10.6 или 11 (фирмой Sybase более не
поставляется версия этих компиляторов, необходимая для работы
управляющих компьютеров под DOS);
 LCC 2.4 (в комплекте с MATLAB).
Только в Linux версии поддерживается компилятор .GNU C++.
Мы рассматриваем систему, ориентированную на IBM PC
(Intel80X86/Pentium) – совместимые компьютеры под управлением
Microsoft Windows как наиболее распространенные. Math Works рекомендует графические видеокарты Accel Eclipse фирмы Accel Graphics
для аппаратной поддержки новых, введенных в MATLAB 6, эффектов
трехмерной графики (расчет сцены и рендеринг Open GL) на этой платформе. Но наряду с ними MathWorks тщательно протестировала чисто
программные драйверы операционных систем Windows. Если ваш графический ускоритель, аппаратно поддерживающий Open GL, другого
типа, фирма MathWorks, Inc. его не протестировала со своей обычной
легендарной скрупулезностью. Но это не значит, что искажения трехмерной графики неизбежны. Если у вас будут сомнения, вы всегда сможете программно отключить аппаратную поддержку Open GL, попрежнему эффективно используя свой графический ускоритель для обработки шгонов, и задействовать только тщательно проверенное
MathWorks программное обеспечение Open GL.
Возможна работа MATLAB 6 на ряде других компьютерных платформ: Lintel (ядро Linux 2.2x на Intel Pentium или AMD Athlon), Sun
SPARC/UltraSPARC (Solaris 2.6, 2.7, 2.8), Silicon Graphics (рабочие
станции на процессорах R12000, R10000, R5000 под IRIX64, IRIX 6.5x),
Compaq(DEC) Alpha (Tru64UNIX 4.0f, 5.0), HP (HP700 (HP-UX10.2),
HP9000 (HP-UX10.2 или HP-UX11), IBM RS/6000 (AIX 4.3.3).
MathWorks протестировала графические ускорители Sun 3D Creator
(Solaris 2.6, 2.7, 2.8) и ускорители моделей Silicon Graphics на платформах IRIX/IRIX 64 6.5x для проверки поддержки Open GL на UNIX платформах. Отличия между платформами, таким образом, в основном связаны со скоростью выполнения, в особенности при выводе трехмерной
графики при расчете сцены и рендеринге новым, введенным только в
176
данной версии, механизмом Open GL, и с отдельными деталями интерфейса. Как гарантирует MathWorks, отличия совсем (или для платформ
HP и IBM почти) не затрагивают базового набора возможностей ядра и
пакетов прикладных программ. Например, пользователи Linux Red Hat
7.0 и Slackware 7.0, 7.1, как и пользователи на RISC-платформах IBM и
HP, не должны использовать виртуальную машину Java и должны запускать MATLAB 6.0 с параметром nojvm (matl ab-nojvm). Но и это
ограничение не распространяется на пользователей RedHat 6.2,
Mandrake 7.1, SuSE 6.4, Debian 2.1 и 2.2. Поэтому читатели, работающие
с MATLAB 6.0 на любой платформе, могут пользоваться всеми или
большей частью материалов данной книги. Для Macintosh поддерживается только версия MATLAB 5.2.1, для пользователей OpenVMS рекомендуется стабилизированная на этой платформе MATLAB 5.2.
Установка системы обычно не имеет никаких специфических особенностей и подобна установке других программных продуктов.
Но в среде Windows 2000/NT4 установить и первый раз запустить систему должен администратор системы. От вас требуется задать свое имя
(фамилию), сокращенное название организации и пароль, который указывается на установочном компакт-диске или в имеющемся на нем файле. Возможны типичная установка и выборочная, в ходе которой вам
предлагается выбор компонентов системы. Последняя предпочтительнее, так как из-за огромного объема системы ее полная установка не
всегда возможна.
Прежде чем начинать установку системы, рекомендуется ознакомиться с описанием компонентов. Нет никакого смысла использовать
все компоненты, поскольку вы всегда сможете по мере необходимости
изменить набор установленных компонентов системы. Установив только нужные компоненты, вы можете уменьшить затраты памяти на жестком диске в несколько раз.
Для установки системы на ПК достаточно вставить первый установочный компакт-диск в устройство считывания компакт-дисков. Диск
запускается автома тически, и Мастер установки проверяет, нет ли
необходимости обновить или установить виртуальную машину Java
фирмы Microsoft. Если такая необходимость есть, то вам надо согласиться с предложением Мастера установки. После того как Мастер
установки установит или обновит виртуальную машину Java Microsoft,
нужно обязательно ответить согласием на предложение перезагрузить
компьютер (restart). Если Мастер установки не предложил вам обновить
вашу виртуальную машину Java, но в процессе установки сообщит, что
необходимый класс Java отсутствует, не прерывайте установку и не извлекайте компакт-диск. Вам достаточно выбрать Пуск > Выполнить >
Обзор, выбрать в папке msutils вашего первого установочного компактдиска файл msjavx86.exe и запустить его. После установки виртуальной
177
машины Java и перезагрузки компьютера установка MATLAB продолжится автоматически. В самом начале установки собственно MATLAB
Мастер установки выводит временное окно-заставку системы. При этом
копируются вспомогательные файлы MathWorks Installer (Мастера
установки), что показано на рис. 50.
Рис. 50. Начало установки – открытие окна Мастера установки
Установка осуществляется с помощью ряда окон Мастера установки. Одно из них и показано на рис. 50. Прочтя его текст, надо нажать
кнопку Next (Далее). Появится подобное окно с запросом на ввод персонального номера лицензии (рис. 51). Введя номер лицензии и подтвердив его щелчком на кнопке Next (Далее), можно получить окно
с текстом лицензионного соглашения (рис. 52). Если вы с ним согласны,
следует вновь щелкнуть кнопку Next (Далее).
178
Рис. 51. Окно с запросом персонального номера лицензии
Рис. 52. Окно с текстом лицензии
Следующее окно (рис. 53) требует ввода пользователем своего имени
и названия организации. Их можно сократить, как показано на рис. 53.
179
Рис. 53. Окно установки имени пользователя и организации
Выполнив эти установки и щелкнув кнопку Next (Далее) (она становится доступной, если данные введены верно), можно получить окно
с полем для указания имени папки, в которую будет установлена система, и с полным перечнем компонентов системы. Это окно представлено
на рис. 54. В нем следует установить флажки напротив названий нужных компонентов.
Рис. 54. Окно выбора компонентов системы MATLAB
180
Здесь обратите особое внимание на указание свободного места
в выбранном разделе жесткого диска и на данные о занимаемом системой объеме дискового пространства. Он должен быть заметно меньше,
чем объем свободного пространства выбранного раздела диска, поскольку в нем, как правило, размещаются и служебные файлы операционной системы Windows 95/98/Me/ 2000/NT4, в частности временные
файлы.
Если объема выбранного раздела явно недостаточно, то, во-первых,
просмотрите другие разделы жесткого диска, а во-вторых, умерьте свои
аппетиты в части установки расширений системы. Скорее всего, большинство этих расширений вам просто не понадобится, поскольку относится к не интересующим вас разделам науки и техники. Кроме того,
система помощи может, например, оставаться на компакт-диске, так как
вы сможете установить путь к файлам справочной системы на компактдиске из пользовательского интерфейса после установки системы.
Обратите внимание и на выбор папки для размещения файлов системы MAT-LAB 6.0 – их тысячи! Если вы решили сменить предложенное
вам название и место размещения папки для системы, то в случае отсутствия папки, название которой было введено вами, Мастер установки.
(MathWorks Installer) выведет окно с сообщением об этом (рис. 55).
Вы должны согласиться с предложением о задании новой папки,
щелкнув кнопку Yes (Да), или вернуться к окну рис. 52, щелкнув кнопку
No (Нет).
Рис. 55. Предупреждение об отсутствии папки
для установки системы MATLAB 6.0
После этого и после выбора необходимых компонентов надо щелкнуть кнопку Next (Далее). Затем начинается самый длительный этап
установки. Все файлы системы разархивируются и переносятся в созда181
ваемые для них папки. Этот процесс сопровождается контролем по линейным индикаторам (рис. 56).
Рис. 56. Процесс установки системы MATLAB
Иногда возможно появление окон с сообщением о наличии на вашем компьютере каких-либо файлов, которые входят в состав системы
MATLAB. В этом случае вам предоставляется возможность сохранить
существующий файл или записать на его место новый файл системы
MATLAB. Последнее, пожалуй, более целесообразно, так как MATLAB
– очень сложная и объемная система и лучше не рисковать устанавливать ее с «чужими» файлами. Процесс установки на компьютере
Pentium II 350 МГц с 32-скоростным приводом CD-ROM идет довольно
медленно и занимает больше часа при полной установке системы. Он
может затянуться на несколько часов на менее мощном ПК. После установки надо произвести перезагрузку компьютера или временно отложить ее. Запуск MATLAB без перезагрузки компьютера не рекомендуется, поскольку может протекать некорректно. Так что если вы отложили перезагрузку компьютера, не забудьте провести ее перед первым запуском системы MATLAB. Система MATLAB состоит из многих тысяч
файлов, находящихся в множестве папок. Полезно иметь представление
о содержании основных папок, поскольку это позволяет быстро оценить
возможности системы – например, узнать, какие операторы, функции
или графические команды входят в систему. В MATLAB особое значение имеют файлы двух типов – с расширениями .mat и т.д. Первые являются бинарными файлами, в которых могут храниться значения пе182
ременных. Вторые представляют собой текстовые файлы, содержащие
внешние программы, определения команд и функций системы. Именно
к ним относится большая часть команд и функций, в том числе задаваемых пользователем для решения своих специфических задач. Нередко
встречаются и файлы с расширением .с (коды на языке Си), файлы с откомпилированными кодами MATLAB с расширением .тех и другие. Исполняемые файлы имеют расширение .ехе. Особое значение имеет папка MATLAB/TOOLBOX/MATLAB. В ней содержится набор стандартных m-файлов системы. Просмотр этих файлов позволяет детально оценить возможности поставляемой конкретной версии системы. Ниже перечислены основные подпапки с этими файлами (деление на категории
условно, на самом деле все подпапки находятся в общей папке
MATLAB/TOOLBOX/MATLAB).
Подпапка команд общего назначения:
 General – команды общего назначения: работа со справкой, управление окном MATLAB, взаимодействие с операционной системой и т.д.
Подпапки операторов, конструкций языка и системных функций:
 ops – операторы и специальные символы;
 tang – конструкции языка программирования;
 strfun – строковые функции;
 iofun – функции ввода/вывода;
 timefun – функции времени и дат;
 datatypes – типы и структуры данных.
Подпапки основных математических и матричных функций:
 elmat – команды создания элементарных матриц и операций с ними;
 elfun – элементарные математические функции;
 specfun – специальные математические функции;
 matfun – матричные функции линейной алгебры;
 datafun – анализ данных и преобразования Фурье;
 polyfun – полиномиальные функции и функции интерполяции;
 funfun – функции функций и функции решения обыкновенных
дифференциальных уравнений;
 soarfun – функции разреженных матриц.
Подпайки команд графики:
 graph2d – команды двумерной графики;
 graph3d – команды трехмерной графики;
 specgraph – команды специальной графики;
 graphics – команды дескрипторной графики;
 uitools – графика пользовательского интерфейса.
183
Полный состав файлов каждой подпапки (их список содержится
в файле соn-tents.m) можно вывести на просмотр с помощью команды
help имя, где имя – название соответствующей подпапки.
8.2.8. Запуск MATLAB и работа в режиме диалога
В этой книге предполагается, что MATLAB используется в среде
операционной системы Windows 95 или Windows 98/Me/2000. Копии
сеансов работы MATLAB даны именно для этих случаев. Однако пользователи, работающие с Windows NT4, также могут обращаться к материалам данной книги без каких-либо ограничений, поскольку отличия
касаются лишь мелких деталей пользовательского интерфейса. Это
справедливо, хотя в меньшей мере, и для пользователей систем
MATLAB на иных платформах.
Рис. 57 иллюстрирует подготовку к запуску системы MATLAB 6.0
из главного меню операционной системы Windows 98 со стандартным
видом рабочего стола, подобным использованному в Windows 95. Для
раскрытия главного меню активизируется кнопка Пуск (Start), расположенная внизу рабочего стола слева, или можно щелкнуть на значке с логотипом системы на рабочем столе Windows. Далее мы не всегда будем
повторять полное название системы – MATLAB 6.0 – и ограничимся сокращенным названием MATLAB. После запуска MATLAB на экране
появляется основное окно системы MATLAB, показанное на рис. 57.
184
Рис. 57. Подготовка к запуску MATLAB
Обычно это окно раскрыто не полностью и занимает часть рабочего стола. Вы можете раскрыть окно полностью, щелкнув на средней из
трех кнопок, расположенных в конце титульной (верхней) строки окна.
Левая кнопка сворачивает окно в кнопку с именем приложения, помещаемую в панель задач Windows 95/98, а правая закрывает окно и прекращает работу с MATLAB. Система готова к проведению вычислений
в командном режиме. При этом вы можете не обращать внимания на
новации пользовательского интерфейса, привнесенного операционными
системами Windows 95 и 98/Me/2000/NT4, в виде расширяемого окна
и панели инструментов. Мы обсудим их роль позже. Тем не менее сразу
бросается в глаза существенное изменение интерфейса у системы
MATLAB 6.0 по сравнению с предшествующей версией MATLAB 5.3.I.
Для уточнения версии системы следует вывести окно с информацией
о системе (команда About MATLAB (О MATLAB) в меню Help (Помощь). Из него видно, что запущена версия 6.0 (R12) от 22 сентября
2000 года. Поскольку номер лицензии имеет конфиденциальный характер, вместо него на рисунке показан 0.
185
Рис. 58. Окно системы MATLAB
после запуска и выполнения простых вычислений
Полезно знать, что в начале запуска автоматически выполняется
команда rnatl abrc, которая исполняет загрузочный файл matlabrc.m
и файл startup.m, если таковой существует. Эти файлы выполняют
начальную настройку терминала системы и задают ряд ее параметров.
В частности, могут быть заданы пути доступа к другим файлам, необходимым для корректной работы системы MATLAB. Таким образом,
опытные пользователи могут выполнить настройку системы под свои
запросы. Однако в большинстве случаев особой необходимости в этом
нет. Поскольку указанные файлы имеют текстовый формат, их легко
просмотреть с помощью какого-либо текстового редактора или с помощью команды type в командном режиме работы MATLAB. Сеанс работы с MATLAB принято именовать сессией (session). Сессия, в сущности,
является текущим документом, отражающим работу пользователя
с системой MATLAB. В ней имеются строки ввода, вывода и сообщений об ошибках. Входящие в сессию определения переменных и функ186
ций, расположенные в рабочей области памяти, но не саму сессию,
можно записать на диск (файлы формата .mat), используя команду save
(Сохранить). Команда load (Загрузить) позволяет считать с диска данные рабочей области. Фрагменты сессии можно оформить в виде дневника с помощью команды diary (Дневник). Позже мы обсудим эти команды подробно.
8.2.9. Новый и старый облик системы MATLAB 6.0
Пользователи, уже имеющие опыт работы с системами MATLAB,
будут приятно (а кое-кто, напротив, неприятно) удивлены новациями
пользовательского интерфейса системы MATLAB 6.0. В новой версии
пользовательского интерфейса не осталось и следа от прежней строгой
скромности (рис. 59).
Рис. 59. Окно с логотипом системы MATLAB 6.0
187
В новой версии вид окна системы уже вполне отвечает канонам современного интерфейса. Пользовательский интерфейс многооконный
и имеет ряд средств прямого доступа к различным компонентам системы. Бросается в глаза новый пункт меню – Web. Он дает прямой выход
в Интернет. В панели инструментов добавлена позиция ввода ранее отмененной операции и меню просмотра файловой системы с кнопкой его
открытия. Но самые решительные изменения произошли в левой части
общего окна системы – здесь появились окна доступа к компонентам
системы Launch Pad/Workspace (Панель запуска/ Рабочая область) и окно Current Directory (текущей папки).
Надо прямо признать, что особой необходимости в этих новациях
нет, поскольку старые пользователи уже привыкли к крайней простоте
интерфейса систем MATLAB. Учтя это, разработчики системы ввели
в позицию View (Вид) меню команду Desktop Layout > Command
Windows Only (Только командное окно). Стоит ее исполнить, как вид
окна системы будет очень напоминать старый интерфейс версий
MATLAB 5.*(рис. 60).
Рис. 60. Упрощенный интерфейс системы MATLAB 6.0
188
Если вы все же хотите вкусить прелести нового интерфейса, то исполните в той же позиции меню команду Desktop Layout > Default (Интерфейс по умолчанию). Там же вы найдете и другие возможности модификации вида интерфейса системы MATLAB 6.0.
Операции строчного редактирования
При работе с MATLAB в командном режиме действует простейший строчный редактор. Его команды перечислены в табл. 4.
Таблица 4
Команды строчного редактора MATLAB
Комбинация клавиш
Ctrl+b
Ctrl+f
Ctrl +r
Ctrl +1
Home или Ctrl+a
End или Ctrl +e
Ctrl+рu Ctrl+n
Del или Ctrl+d
Ctrl+h
Ctrl+k
Esc
Ins
PgUp
PgDn
Назначение
Перемещение курсора вправо на один символ
Перемещение курсора влево на один символ
Перемещение курсора вправо на одно слово
Перемещение курсора влево на одно слово
Перемещение курсора в начало строки
Перемещение курсора в конец строки
Перелистывание предыдущих команд вверх или вниз
для подстановки в строку ввода
Стирание символа справа от курсора
Стирание символа слева от курсора
Стирание до конца строки
Очистка строки ввода
Включение/выключение режима вставки
Перелистывание страниц сессии вверх
Перелистывание страниц сессии вниз
Эти возможности кажутся примитивными, но позволяют пользователю быстро работать в стиле первых версий MATLAB для MS-DOS.
Они обеспечивают важное свойство новых версий систем – их совместимость со старыми версиями в части преемственности навыков работы. Позже вы увидите, что в новых версиях есть вполне современный
редактор со средствами отладки создаваемых документов – m-файлов.
Обратите особое внимание на применение клавиш вверх и вниз.
Они используются для подстановки после маркера строки ввода » ранее
введенных строк, например для их исправления, дублирования или дополнения. При этом указанные клавиши обеспечивают перелистывание
ранее введенных строк снизу вверх или сверху вниз. Такая возможность
существует благодаря организации специального стека, хранящего
строки с исполненными ранее командами.
189
Команды управления окном
Полезно сразу усвоить некоторые команды управления окном командного режима:
 clс – очищает экран и размещает курсор в левом верхнем углу
пустого экрана.
 home – возвращает курсор в левый верхний угол окна.
 echo <file_name> on – включает режим вывода на экран текста
Script-файла (файла-сценария).
 echo <file_name> off – выключает режим вывода на экран текста
Script-файла.
 echo <fi1e_name> – меняет режим вывода на противоположный.
 echo on all – включает режим вывода на экран текста всех
m-файлов.
 echo off all – отключает режим вывода на экран текста всех mфайлов.
 mоrе on – включает режим постраничного вывода (полезен при
просмотре больших m-файлов).
 mоrе off – отключает режим постраничного вывода (в этом случае для просмотра больших фалов надо пользоваться линейкой прокрутки).
В версии MATLAB 6.0 обе команды clc и home действуют аналогично – очищают экран и помещают курсор в левый верхний угол окна
командного режима работы. Команды echo позволяют включать или
выключать отображение текстов m-файлов при каждом обращении
к ним. Как правило, отображение текста файлов сильно загромождает
экран и часто не является необходимым. При больших размерах файлов
начало их текста (листинга) убегает далеко за пределы области просмотра (текущего окна командного режима). Поэтому для просмотра
длинных листингов файлов полезно включить постраничный вывод командой more on. Различие между m-файлами сценариев и функций мы
обсудим позже.
MATLAB в роли суперкалькулятора
Система MATLAB создана таким образом, что любые (подчас
весьма сложные) вычисления можно выполнять в режиме прямых вычислений, т. е. без подготовки программы. Это превращает MATLAB в
необычайно мощный калькулятор, который способен производить не
только обычные для калькуляторов вычисления (например, выполнять
арифметические операции и вычислять элементарные функции), но и
190
операции с векторами и матрицами, комплексными числами, рядами и
полиномами. Можно почти мгновенно задать и вывести графики различных функций – от простой синусоиды до сложной трехмерной фигуры. Работа с системой в режиме прямых вычислений носит диалоговый
характер и происходит по правилу «задал вопрос, получил ответ».
Пользователь набирает на клавиатуре вычисляемое выражение, редактирует его (если нужно) в командной строке и завершает ввод нажатием
клавиши ENTER.
При работе с системой MatLab в режиме прямых вычислений следует учитывать следующее:
 для указания ввода исходных данных используется символ »;
 данные вводятся с помощью простейшего строчного редактора;
 для блокировки вывода результата вычислений некоторого выражения после него надо установить знак ; (точка с запятой);
 если не указана переменная для значения результата вычислений, то MATLAB назначает такую переменную с именем ans;
 знаком присваивания является привычный математикам знак равенства =, а не комбинированный знак :=, как во многих других языках
программирования и математических системах;
 результат вычислений выводится в строках вывода (без знака »);
 встроенные функции (например, sin) записываются строчными
буквами, и их аргументы указываются в круглых скобках;
 диалог происходит в стиле «задал вопрос – получил ответ».
Рассмотрим следующий пример, который иллюстрирует применение системы MATLAB для выполнения простых векторных операций. В
этом примере задается четырехэлементный вектор V со значениями
элементов 1, 2, 3 и 4. Далее вычисляются функции синуса и экспоненты
с аргументом в виде вектора, а не скаляра.
Две записи для вектора – V=[l 2 3 4] и V=[1,2,3,4] – являются идентичными. Таким образом, векторы задаются списком своих элементов,
разделяемых пробелами или запятыми. Список заключается в квадратные скобки. Для выделения п-го элемента вектора V используется выражение V(n). Оно задает соответствующую индексированную переменную. В большинстве математических систем вычисление sin(V) и
exp(V), где V – вектор, сопровождалось бы выдачей ошибки, поскольку
функции sin и ехр должны иметь аргумент в виде скалярной величины.
Однако MATLAB – матричная система, а вектор является разновидностью матрицы с размером 1×n. Поэтому в нашем случае результат вычислений будет вектором того же размера, что и аргумент V, но элемен191
ты возвращаемого вектора будут синусами или экспонентами от элементов вектора V.
Еще один пример (рис. 61) демонстрирует простейшие операции с
матрицей. Здесь задана матрица М с размером 2×2 и вычислена матрица
MX=sin(M).
Рис. 61. Простейшие операции с матрицей
Матрица задается в виде ряда векторов, представляющих ее строки
и заключенных в квадратные скобки. Для разделения элементов векторов используется пробелил и запятая, а для отделения одного вектора от
другого – точка с запятой. Для выделения отдельного элемента матрицы
М используется выражение вида M(j, i), где М – имя матрицы, j – номер
строки и 1 – номер столбца. Как видно из приведенных примеров, ввод
исходных выражений для вычислений в системе MATLAB осуществляется в самом обычном текстовом формате. В этом же формате выдаются
результаты вычислений, за исключением графических.
192
Пример 37. Записи вычислений: То get started, select «MATLAB
Help» from the Help menu.
» 2+3
ans= 5 » sin(l)
ans= 0.8415
» type sin sin is a built-in function.
» help sin
SIN Sine. SIN(X) is the sine'of the elements of X.
Overloaded methods help sym/sin.m » V=[l 2 3 4]
V = 1 2 3 4 » sin(V) ans = 0.8415
0.9093
0.1411
-0.7568
» 3*V
ans=
3
6
9
12
» V^2
??? Error using ==> ^
Matrix must be square.
» V.^2
ans=
1 4 9 16
» V+2
ans =
3
4
5
6
»
Обратите внимание на форму ответов при выполнении простых
операций без указания переменной, которой присваивается результат.
В таких случаях MATLAB сам назначает переменную ans, которой присваивается результат и значение которой затем выводится на экран.
О переносе строки в сессии
В некоторых случаях вводимое математическое выражение может
оказаться настолько длинным, что для него не хватит одной строки.
В этом случае часть выражения можно перенести на новую строку с помощью знака многоточия «...» (3 или более точек), например:
s = 1-1/2 + 1/3 – 1/4 + 1/5 – 1/6 + 1/7 ... 1/8 + 1/9 – 1/10 + 1/11 – 1/12:
Этот прием может быть весьма полезным для создания наглядных
документов, у которых предотвращается заход строк в невидимую область окна. Вообще говоря, максимальное число символов в одной
строке командного режима – 4096, а в m-файле – не ограничено, но со
столь длинными строками работать неудобно. В ранних версиях в одной
строке было не более 256 символов.
193
8.2.9. Основные объекты MATLAB
Понятие о математическом выражении
Центральным понятием всех математических систем является
математическое выражение. Оно задает то, что должно быть вычислено в численном (реже символьном) виде. Вот примеры простых математических выражений:
2+3
2.301*sin(x)
4+ехр(3)/5
sqrt(y)/2
sin(pi/2)
Математические выражения строятся на основе чисел, констант,
переменных, операторов, функций и разных спецзнаков. Ниже даются
краткие пояснения сути этих понятий.
Действительные и комплексные числа
Число – простейший объект языка MATLAB, представляющий количественные данные. Числа можно считать константами, имена которых совпадают с их значениями. Числа используются в общепринятом
представлении о них. Они могут быть целыми, дробными, с фиксированной и плавающей точкой. Возможно представление чисел в хорошо
известном научном формате с указанием мантиссы и порядка числа.
Пример 38. Представления чисел.
0
2
-3
2.301 0.00001 123.45бе-24
-234.456е10
Как нетрудно заметить, в мантиссе чисел целая часть отделяется от
дробной не запятой, а точкой, как принято в большинстве языков программирования. Для отделения порядка числа от мантиссы используется
символ е. Знак «плюс» у чисел не проставляется, а знак «минус» у числа
называют унарным минусом. Пробелы между символами в числах не допускаются. Числа могут быть комплексными: z =Rе(x)+Im(x)*i. Такие числа содержат действительную Re(z) и мнимую Im(z) части. Мнимая часть
имеет множитель i или j, означающий корень квадратный из –1:
3i
2j
2+3i
-3.141i
-123.456+2.7e-3i
194
Функция real (z) возвращает действительную часть комплексного
числа, Re(z), a функция imag(z) – мнимую, Im(z). Для получения модуля
комплексного числа используется функция abs(z), а для вычисления фазы – angle(Z).
Пример 39. Работа с комплексными числами.
»i
ans=
0 +1.0000i
» j
ans =
0 + 1.0000i
» z=2+3i
z = 2.0000 + 3.0000i
» abs(z)
ans =
3.6056
» real(z)
ans=
2
» imag(z)
ans =
3
» angle(z)
ans =
0.9828
В MATLAB не принято делить числа на целые и дробные, короткие
и длинные и т.д., как это принято в большинстве языков программирования, хотя задавать числа в таких формах можно. Вообще же операции
над числами выполняются в формате, который принято считать форматом с двойной точностью. Такой формат удовлетворяет подавляющему
большинству требований к численным расчетам, но совершенно не подходит для символьных вычислений с произвольной (абсолютной) точностью. Символьные вычисления MATLAB может выполнять с помощью специального пакета расширения Symbolic Math Toolbox.
Константы и системные переменные
Константа – это предварительно определенное числовое или символьное значение, представленное уникальным именем. Числа (например 1, –2 и 1.23) являются безымянными числовыми константами. Другие виды констант в MATLAB принято назвать системными переменными, поскольку, с одной стороны, они задаются системой при ее за195
грузке, а с другой – могут переопределяться. Основные системные переменные, применяемые в системе MATLAB, указаны ниже:
 i или j – мнимая единица (корень квадратный из –1);
 pi – число п – 3.1415926...;
 eps – погрешность операций над числами с плавающей точкой (2-52);
 realmin – наименьшее число с плавающей точкой (2-1022);
 realmax – наибольшее число с плавающей точкой (21023);
 inf – значение машинной бесконечности;
 ans – переменная, хранящая результат последней операции
и обычно вызывающая его отображение на экране дисплея;
 NaN – указание на нечисловой характер данных (Not-a-Number).
Пример 40. Применения системных переменных.
»
2*pi ans =
6.2832
» eps
ans =
2.2204е-016
» real min
ans= 2
.2251e-308
» realmax
ans=
1.7977e+308
» 1/0
Warning: Divide by zero,
ans=
Inf
» 0/0
Warning: Divide by zero,
ans =
NaN
Как отмечалось, системные переменные могут переопределяться.
Можно задать системной переменной eps иное значение, например
eps=0.0001. Однако важно то, что их значения по умолчанию задаются
сразу после загрузки системы. Поэтому неопределенными в отличие от
обычных переменных системные переменные не могут быть никогда.
Символьная константа – это цепочка символов, заключенных
в апострофы, например: 'Hello my friend!' 'Привет' '2+3' Если в апострофы помещено математическое выражение, то оно не вычисляется и рассматривается просто как цепочка символов. Так что ' 2+3' не будет возвращать число 5. Однако с помощью специальных функций преобразования символьные выражения могут быть преобразованы в вычисляе196
мые. Соответствующие функции преобразования будут рассмотрены
в дальнейшем.
Текстовые комментарии
Поскольку MATLAB используется для достаточно сложных вычислений, важное значение имеет наглядность их описания. Она достигается, в частности, с помощью текстовых комментариев. Текстовые
комментарии вводятся с помощью символа %, например, так:
Bit is factorial function
В каждой большой программе есть свои «ложки дегтя».
В MATLAB 6 такой «ложкой дегтя» является перевод строки при вводе
буквы «с» русского алфавита в командной строке. В итоге ввод комментариев в командной строке на русском языке превращается в проблему.
Пока автор может порекомендовать заменять русское «с» на английское, что на виде текстового комментария никак не сказывается. Не рекомендуется вводить русскоязычные комментарии и в тесты m-файлов
при подготовке их в редакторе/отладчике (он будет описан позже). Это
нередко делает программы неработоспособными. Жаловаться тут бесполезно – MATLAB англоязычный продукт и официальной локализованной под Россию версии этой системы пока нет.
Обычно первые строки m-файлов служат для описания их назначения, которое выводится на экран дисплея после команды
» help Имя_файла
Считается правилом хорошего тона вводить в m-файлы достаточно
подробные текстовые комментарии. Без таких комментариев даже разработчик программных модулей быстро забывает о сути собственных
решений. В текстовых комментариях и в символьных константах могут
использоваться буквы русского алфавита – при условии, что установлены содержащие эти буквы наборы шрифтов.
Переменные и присваивание им значений
Переменные – это имеющие имена объекты, способные хранить некоторые, обычно разные по значению, данные. В зависимости от этих
данных переменные могут быть числовыми или символьными, векторными или матричными. В системе MATLAB можно задавать переменным определенные значения. Для этого используется операция присваивания, вводимая знаком равенства =: Имя_переменной – Выражение
Типы переменных заранее не декларируются. Они определяются выражением, значение которого присваивается переменной. Так, если это
выражение – вектор или матрица, то переменная будет векторной или
матричной.
197
Имя переменной (ее идентификатор) может содержать сколько
угодно символов, но запоминается и идентифицируется только 31
начальный символ. Имя любой переменной не должно совпадать с именами других переменных, функций и процедур системы, т.е. оно должно быть уникальным. Имя должно начинаться с буквы, может содержать буквы, цифры и символ подчеркивания _. Недопустимо включать
в имена переменных пробелы и специальные знаки, например +, –, *, / и
т.д., поскольку в этом случае правильная интерпретация выражений
становится невозможной. Желательно использовать содержательные
имена для обозначений переменных, например speed_l для переменной,
обозначающей скорость первого объекта. Переменные могут быть
обычными и индексированными, т.е. элементами векторов или матриц
(см. выше). Могут использоваться и символьные переменные, причем
символьные значения заключаются в апострофы, например s='Demo'.
Уничтожение определений переменных
В памяти компьютера переменные занимают определенное место,
называемое рабочей областью (workspace). Для очистки рабочей области используется функция clear в разных формах, например:
 clear – уничтожение определений всех переменных;
 clear x – уничтожение определения переменной х;
 clear a, b, с – уничтожение определений нескольких переменных.
Уничтоженная (стертая в рабочей области) переменная становится
неопределенной. Использовать неопределенные переменные нельзя,
и такие попытки будут сопровождаться выдачей сообщений об ошибке.
Пример 41. Задание и уничтожения переменных.
» x=2*pi
х =
6.2832
» V=[l 2345]
V =
12345
» MAT
??? Undefined function or variable 'MAT'.
» MAT=[1 2 3 4; 5 6 7 8]
MAT=
1234
198
5678
» clear V
» V
??? Undefined function or variable 'V'.
» clear
» x
??? Undefined function or variable 'x'.
» M
??? Undefined function or variable 'M'.
Обратите внимание на то, что сначала выборочно стерта переменная V, а затем командой clear без параметров стерты все остальные переменные.
Операторы и функции
Оператор – это специальное обозначение для определенной операции над данными – операндами. Например, простейшими арифметическими операторами являются знаки суммы +, вычитания –, умножения *
и деления /. Операторы используются совместно с операндами. Например, в выражении 2+3 знак + является оператором сложения, а числа 2
и 3 – операндами. Следует отметить, что большинство операторов относится к матричным операциям, что может служить причиной серьезных
недоразумений. Например, операторы умножения * и деления / вычисляют произведение и частное от деления двух многомерных массивов,
векторов или матриц. Есть ряд специальных операторов, например, оператор \ означает деление справа налево, а операторы . * и . / означают
соответственно поэлементное умножение и поэлементное деление массивов.
Пример 42. Операции с векторами.
» Vl=[2
V1=
2468
» V2=[l
V2 =
1234
» V1/V2
ans =
2
» V1.*V2
ans=
2
8
18
4
6
8]
2
3
4]
32
199
2
» V1./V2
ans =
2
2
2
Полный список операторов можно получить, используя команду »
help ops. Постепенно мы рассмотрим все операторы системы MATLAB
и обсудим особенности их применения. А пока приведем только часть
полного списка операторов, содержащую арифметические операторы:
» help ops
Функции – это имеющие уникальные имена объекты, выполняющие
определенные преобразования своих аргументов и при этом возвращающие результаты этих преобразований. Возврат результата – отличительная черта функций. При этом результат вычисления функции
с одним выходным параметром подставляется на место ее вызова, что
позволяет использовать функции в математических выражениях,
например функцию sin в 2*sin(pi/2).
Функции в общем случае имеют список аргументов (параметров),
заключенный в круглые скобки. Например, функция Бесселя записывается как bessel(NU.X). В данном случае список параметров содержит
два аргумента – NU в виде скаляра и X в виде вектора. Многие функции
допускают ряд форм записи, отличающихся списком параметров. Если
функция возвращает несколько значений, то она записывается в виде
[Yl. Y2....]=func(Xl. X2...)
где Yl, Y2, ... – список выходных параметров и XI, Х2, .... – список входных аргументов (параметров).
Со списком элементарных функций можно ознакомиться, выполнив команду hel p elfun, а со списком специальных функций – с помощью команды help specfun. Функции могут быть встроенными (внутренними) и внешними, или т-функциями. Так, встроенными являются
наиболее распространенные элементарные функции например, sin(x)
и ехр(у), тогда как функция sinh(x) является внешней функцией. Внешние функции содержат свои определения в m-файлах. Задание таких
функций с помощью специального редактора m-файлов будет рассмотрено в разделе 8.2.12. Встроенные функции хранятся в откомпилированном ядре системы MATLAB, в силу чего они выполняются предельно быстро.
Применение оператора «:» (двоеточие)
200
Очень часто необходимо произвести формирование упорядоченных
числовых последовательностей. Такие последовательности нужны для
создания векторов или значений абсциссы при построении графиков.
Для этого в MATLAB используется оператор «:» (двоеточие):
Начальное_значение:Шаг:Конечное_значение
Данная конструкция порождает возрастающую последовательность
чисел, которая начинается с начального значения, идет с заданным шагом и завершается конечным значением. Если Шаг не задан, то он принимает значение 1. Если конечное значение указано меньшим, чем
начальное значение, – выдается сообщение об ошибке.
Пример 43. Применения оператора : даны ниже.
» 1:5
ans =
12345
» i=0:2:10
i = 0 2 4 6 8 10
» j=10:-2:2
j =10 8 6 4 2
» V=0:pi/2:2*pi;
» V
V =
0 1.5708 3.1416 4.7124 6.2832
» X= l:-.2:0
X=
1.0000 0.8000 0.6000 0.4000 0.2000 0
» 5:2
ans=
Empty matrix:1-by-0
Как отмечалось, принадлежность MATLAB к матричным системам
вносит коррективы в назначение операторов и приводит при неумелом
их использовании к казусам.
Пример 44
» х=0:5
х=
0 1 2 3 4 5
» cos(x)
ans =
1.0000 0.5403 -0.4161 -0.9900 -0.6536 0.2837
» sin(x)/x
ans = -0.0862
201
Вычисление массива косинусов здесь прошло корректно. А вот вычисление массива значений функции sin(x)/x дает неожиданный, на первый взгляд, эффект – вместо массива с шестью элементами вычислено
единственное значение! Причина «парадокса» здесь в том, что оператор
/ вычисляет отношение двух матриц, векторов или многомерных массивов. Если они одной размерности, то результат будет одним числом,
что в данном случае и выдала система. Чтобы действительно получить
вектор значений sin(x) /x, надо использовать специальный оператор поэлементного деления массивов – . /. Тогда будет получен массив чисел:
» sin(x)./x
Warning: Divide by zero.
ans =
NaN 0.8415 0.4546 0.0470 -0.1892-0.1918
Впрочем, и тут без особенностей не обошлось. Так, при х = 0 значение sin(x)/x дает устранимую неопределенность вида 0/0=1. Однако,
как и всякая численная система, MATLAB классифицирует попытку деления на 0 как ошибку и выводит соответствующее предупреждение.
А вместо ожидаемого численного значения выводится символьная константа NaN, означающая, что неопределенность 0/0 – это все же не
обычное число.
Выражения с оператором : могут использоваться в качестве аргументов функций для получения множественных их значений. Например,
в приводимом ниже примере вычислены функции Бесселя порядка от 0
до 5 со значением аргумента 0.5:
Пример 45
» bessel(0:l:5,l/2)
ans =
0.9385 0.2423 0.0306 0.0026 0.0002 0.0000
А в следующем примере вычислено шесть значений функции Бесселя нулевого порядка для значений аргумента от 0 до 5 с шагом 1:
Пример 46
» bessel(0.0:1:5)
ans =
1.0000 0.7652
0.2239 -0.2601
-0.3971
-0.1776
Таким образом, оператор : является весьма удобным средством задания регулярной последовательности чисел. Он широко используется
при работе со средствами построения графиков. В дальнейшем мы расширим представление о возможностях этого оператора.
202
Сообщения об ошибках и исправление ошибок
Важное значение при диалоге с системой MATLAB имеет диагностика ошибок. Вряд ли есть пользователь, помнящий точное написание
тысяч операторов и функций, входящих в систему MATLAB и в пакеты
прикладных программ. Поэтому никто не застрахован от ошибочного
написания математических выражений или команд. MATLAB диагностирует вводимые команды и выражения и выдает соответствующие сообщения об ошибках или предупреждения. Рассмотрим ряд примеров.
Пример 47. Введем, к примеру, ошибочное выражение
» sqr(2)
и нажмем клавишу ENTER. Система сообщит об ошибке:
??? Undefined function or variable 'sqr'.
Это сообщение говорит о том, что не определена переменная или
функция, и указывает, какая именно – sqr. В данном случае, разумеется,
можно просто набрать правильное выражение. Однако в случае громоздкого выражения лучше воспользоваться редактором. Для этого достаточно нажать клавишу вниздля перелистывания предыдущих строк.
В результате в строке ввода появится выражение » sqr(2) с курсором
в его конце. В версии MATLAB 6 можно теперь нажать клавишу Tab.
Система введет подсказку, анализируя уже введенные символы. Если
вариантов несколько, клавишу Tab придется нажать еще раз. Из предложенных системой трех операторов выбираем sqrt. Теперь с помощью
клавиши вниз вновь выбираем нужную строку и, пользуясь клавишей
влево, устанавливаем курсор после буквы г. Теперь нажмем клавишу
вверх, а затем клавишу ENTER. Выражение примет следующий вид:
» sqrt(2)
ans= 1.4142
Если бы был только один вариант окончания введенных символов,
то после нажатия клавиши Tab система бы закончила наш ввод без перевода строки. Вычисления дают ожидаемый результат – значение
квадратного корня из двух.
В системе MATLAB внешние определения используются точно так
же, как и встроенные функции и операторы. Никаких дополнительных
указаний на их применение делать не надо. Достаточно лишь позаботиться о том, чтобы используемые определения действительно существовали в виде файлов с расширением .m. Впрочем, если вы забудете
об этом или введете имя несуществующего определения, то система от203
реагирует на это звуковым сигналом (звонком) и выводом сообщения об
ошибке:
» hsin(1)
??? Undefined function or variable 'hsin'.
» sinh(1)
ans= 1.1752
В этом примере мы забыли (нарочно), какое имя имеет внешняя
функция, вычисляющая гиперболический синус. Система подсказала,
что функция или переменная с именем hsin не определена ни как внутренняя, ни как m-функция. Зато далее мы видим, что функция с именем
sinh есть в составе функций системы MATLAB – она задана в виде
М-функции. Между тем в последнем примере мы не давали системе никаких указаний на то, что следует искать именно внешнюю функцию!
И это вычисление прошло так же просто, как вычисление встроенной
функции, такой как sin. Разумеется, скорость вычислений по внешним
определениям несколько ниже, чем по встроенным функциям или операторам.
При этом вычисления происходят следующим образом: вначале система быстро определяет, имеется ли введенное слово среди служебных
слов системы. Если да, то нужные вычисления выполняются сразу, если
нет, система ищет m-файл с соответствующим именем на диске. Если
файла нет, то выдается сообщение об ошибке, и вычисления останавливаются. Если же файл найден, он загружается с жесткого диска впамять
машины и исполняется. Этот алгоритм аналогичен применяемым в развиваемых и адаптируемых к задачам пользователя языкам программирования ЛОГО и ФОРТ [7, 8]. Иногда в ходе вывода результатов вычислений появляется сокращение NaN (от слов Not a Number – не число).
Оно обозначает неопределенность, например вида 0/0 или Inf/Inf, где Inf
– системная переменная со значением машинной бесконечности. Могут
появляться и различные предупреждения об ошибках (на английском
языке). Например, при делении на 0 конечного/ числа появляется предупреждение «Warning: Devide by Zero.» («Внимание: Деление на
ноль»). Диапазон чисел, представимых в системе, лежит от 10–308 до
10+308 .
Вообще говоря, в MATLAB надо отличать предупреждение об
ошибке от сообщения о ней. Предупреждения (обычно после слова
Warning) не останавливают вычисления и лишь предупреждают пользователя о том, что диагностируемая ошибка способна повлиять на ход
вычислений. Сообщение об ошибке (после знаков ???) останавливает
вычисления.
204
Форматы чисел
По умолчанию MATLAB выдает числовые результаты в нормализованной форме с четырьмя цифрами после десятичной точки и одной
до нее. Многих такая форма представления не всегда устраивает. Поэтому при работе с числовыми данными можно задавать различные
форматы представления чисел. Однако в любом случае все вычисления
проводятся с предельной, так называемой двойной, точностью. Для
установки формата представления чисел используется команда » format
name, где name – имя формата. Для числовых данных name может быть
следующим сообщением: short – короткое представление в фиксированном формате (5 знаков); short e – короткое представление в экспоненциальном формате (5 знаков мантиссы и 3 знака порядка); long – длинное
представление в фиксированном формате (15 знаков); long e – длинное
представление в экспоненциальном формате (15 знаков мантиссы
и 3 знака порядка); hex – представление чисел в шестнадцатеричной
форме; bank – представление для денежных единиц.
Для иллюстрации различных форматов рассмотрим вектор, содержащий два элемента-числа:
х=[4/3 1.2345е-6]
В различных форматах их представления будут иметь вид, представленный в табл. 5.
Таблица 5
Представления чисел в различных форматах
Формат
format short
format short e
format long
format long e
format bank
1.2345е-6
4/3
1.3333
1.3333E+000
1.333333333333338
1.333333333333338E+00
1.33
0.0000
1.2345E-006
0.000001234500000
1.234500000000000E-006
0.00
Задание формата сказывается только на форме вывода чисел. Вычисления все равно происходят в формате двойной точности, а ввод чисел возможен в любом удобном для пользователя виде.
8.2.10. Основы графической визуализации вычислений
Особенности графики системы MATLAB
Начиная с версии MATLAB 4.0, впервые ориентированной на
Windows, графические средства системы MATLAB были существенно
205
улучшены. Основные отличительные черты графики в новой версии
MATLAB 6:
 существенно улучшенный интерфейс графических окон;
 введение новой панели инструментов Camera для интерактивного изменения условий видимости объекта;
 расширенные возможности форматирования графики;
 возможность создания графики в отдельных окнах;
 возможность вывода нескольких графических окон;
 возможность перемещения окон по экрану и изменения их размеров;
 возможность перемещения области графики внутри графического окна;
 задание различных координатных систем и осей;
 высокое качество графики;
 широкие возможности использования цвета;
 легкость установки графических признаков-атрибутов;
 снятие ограничений на число цветов;
 обилие параметров команд графики;
 возможность получения естественно выглядящих трехмерных
фигур и их сочетаний;
 простота построения трехмерных графиков с их проекцией на
плоскость;
 возможность построения сечений трехмерных фигур и поверхностей плоскостями;
 функциональная многоцветная и полутоновая окраска;
 возможность имитации световых эффектов при освещении фигур точечным источником света;
 возможность создания анимационной графики;
 возможность создания объектов для типового интерфейса пользователя.
С понятием графики связано представление о графических объектах, имеющих определенные свойства. В большинстве случаев об объектах можно забыть, если только вы не занимаетесь объектноориентированным программированием задач графики. Связано это
с тем, что большинство команд высокоуровневой графики, ориентированной на конечного пользователя, автоматически устанавливает свойства графических объектов и обеспечивает воспроизведение графики
в нужных системе координат, палитре цветов, масштабе и т.д.
206
На более низком уровне решения задач используется ориентированная на программиста дескрипторная графика (Handle Graphics), при
которой каждому графическому объекту в соответствие ставится особое
описание – дескриптор, на который возможны ссылки при использовании графического объекта. Дескрипторная графика позволяет осуществлять визуальное программирование объектов пользовательского
интерфейса – управляющих кнопок, текстовых панелей и т.д. Команды
дескрипторной графики могут использоваться в высокоуровневой графике, например, для удаления осей, изменения цвета и т.д. в уже построенных графических объектах. Эти обширные возможности делают
графику MATLAB одной из лучших среди графических подсистем систем компьютерной математики (СКМ).
Несмотря на обилие графических команд, их синтаксис достаточно
прост и легко усваивается даже начинающими пользователями. Руководствуясь правилом описания «от простого к сложному», мы рассмотрим сначала графику функций одной переменной, а затем трехмерную
графику, специальную, анимационную и, наконец, дескрипторную.
Хотя данная книга не предусматривает исчерпывающе полного
описания всех команд графики системы MATLAB, большинство команд
графики будет рассмотрено с примерами, которые можно считать дополнительными к тем, которые приведены в документации по системе.
Построение графика функций одной переменной
В режиме непосредственных вычислений доступны практически
все возможности системы. Широко используется, например, построение
графиков различных функций, дающих наглядное представление об их
поведении в широком диапазоне изменения аргумента. При этом графики строятся в отдельных масштабируемых и перемещаемых окнах.
Возьмем вначале простейший пример – построение графика синусоиды. Следует помнить, что MATLAB (как и другие СКМ) строит графики функций по ряду точек, соединяя их отрезками прямых, т.е. осуществляя линейную интерполяцию функции в интервале между смежными точками. Зададим интервал изменения аргумента х от 0 до 10с шагом 0.1. Для построения графика достаточно вначале задать вектор
х=0:0.1:10, а затем использовать команду построения графиков
plot(sin(x)). Это показано на рис. 62.
Вектор х задает интервал изменения независимой переменной от 0
до 10 с шагом 0.1. Почему взят такой шаг, а не, скажем, 1? Дело в том,
что plot строит не истинный график функции sin(x), а лишь заданное
числом элементов вектора х число точек. Эти точки затем просто со207
единяются отрезками прямых, т.е. осуществляется кусочно-линейная
интерполяция данных графика. При 100 точках полученная кривая глазом воспринимается как вполне плавная, но при 10–20 точках она будет
выглядеть состоящей из отрезков прямых.
Графики MATLAB строит в отдельных окнах, называемых графическими окнами. С первого взгляда видны отличия графического окна,
показанного на рис. 62, от командного окна MATLAB. В главном меню
окна появилась позиция Tools (Инструменты), которая позволяет вывести или скрыть инструментальную панель, видимую в верхней части
окна графики на рис. 62. Средства этой панели (мы их рассмотрим полнее в дальнейшем) позволяют легко управлять параметрами графиков и
наносить на них текстовые комментарии в любом месте.
Рис. 62. Пример построения графика синусоиды
Построение в одном окне
графиков нескольких функций
Построим графики сразу трех функций: sin(x), cos(х) и sin (x)/х.
Прежде всего отметим, что эти функции могут быть обозначены переменными, не имеющими явного указания аргумента в виде у(х):
»y1=sin(x); y2=cos(x); y3=sin(x)/x;
208
Такая возможность обусловлена тем, что эти переменные являются
векторами – как и переменная х. Теперь можно использовать одну из
ряда форм команды
plot: plot(a1.f1.a2.f2.a3.f3,...).
где al, а2, аЗ, ... – векторы аргументов функций (в нашем случае все они
– х), a f1, f2, f3, ... – векторы значений функций, графики которых строятся в одном окне. В нашем случае для построения графиков указанных
функций мы должны записать следующее:
» plot(x,y1,x,y2,x.y3)
Можно ожидать, что MATLAB в этом случае построит, как обычно,
точки графиков этих функций и соединит их отрезками линий. Но, увы,
если мы выполним эти команды, то никакого графика не получим вообще. Не исключен даже сбой в работе программы. Причина этого казуса уже обсуждалась в предыдущем уроке – при вычислении функции
y3=sin(x)/x, если х представляет собой массив (вектор), то нельзя использовать оператор матричного деления /.
Этот пример еще раз наглядно указывает на то, что чисто поверхностное применение даже такой мощной системы, как MATLAB, иногда
приводит к досадным срывам. Чтобы все же получить график, надо вычислять отношение sin(x) к х с помощью оператора поэлементного деления массивов ./. Этот случай поясняет рис. 63.
Обратите внимание на то, что хотя на этот раз MATLAB построил
графики всех трех функций, в окне командного режима появилось предупреждение о делении на 0 – в момент, когда х=0. Это говорит о том,
что piot «не знает» о том, что неопределенность sin(x)/x=0/0 устранимая
и дает 1. Это недостаток практически всех систем для численных вычислений.
209
Рис. 63. Построение графиков трех функций
Графическая функция fplot
Разумеется, MATLAB имеет средства для построения графиков
и таких функций, как sin(x)/x, которые имеют устранимые неопределенности. Не обсуждая эти средства подробно, просто покажем, как это делается, с помощью другой графической команды –
fplot: fplott'f(x)'. [xmin xmax])
Она позволяет строить функцию, заданную в символьном виде,
в интервале изменения аргумента х от xmin до xmax без фиксированного шага изменения х. Один из вариантов ее применения демонстрирует
рис. 64. Хотя в процессе вычислений предупреждение об ошибке (деление на 0) выводится, но график строится правильно, при х=0 sinx/x=l.
Обратите также внимание на две используемые команды: clear (очистить) – очистка графического окна и grid on (сетка) – включение отображения сетки, которая строится пунктирными линиями.
210
Рис. 64. Построение графика sin(x)/x функцией fplot
На рис. 64 представлено также меню File (Файл) окна графики.
Нетрудно заметить, что оно содержит типовые файловые операции. Однако они относятся не к файлам документов, а к файлам графиков. В
частности, можно присваивать имя записываемым на диск рисункам с
графиками.
Позже мы более подробно рассмотрим возможности различных
графических команд. В частности, покажем, как можно задавать определенный цвет и стиль линий, как менять вывод координатных осей,
наносить на графики различные текстовые надписи и выполнять множество иных операций форматирования графиков для придания им более
наглядного вида, соответствующего требованиям пользователя. Мы
также обсудим множество новых форм применения графических команд, резко расширяющих их возможности построения графиков всех
мыслимых типов.
211
Столбцовые диаграммы
В прикладных расчетах часто встречаются графики, именуемые
столбцовыми диаграммами, отражающие содержание некоторого вектора V. При этом каждый элемент вектора представляется столбцом, высота которого пропорциональна значению элемента. Столбцы нумеруются и масштабируются по отношению к максимальному значению
наиболее высокого столбца. Выполняет построение такого графика команда bar(V) (рис. 65).
Рис. 65. Построение столбцовой диаграммы
значений элементов вектора
Столбцовые диаграммы – лишь один из многих типов графиков,
которые может строить система MATLAB. Особенно часто столбцовые
диаграммы используются при представлении данных финансовоэкономических расчетов.
Рис. 65дает также представление о меню Tools (Инструменты) окна
графики, появившемся начиная с версии MATLAB 5.3.1 (выпуск 11.1).
Нетрудно заметить, что кроме возможности вывода инструментальной
панели здесь имеется целый ряд других команд, которые будут рассмотрены в дальнейшем. Это команды вывода свойств графических
объектов, изменения масштаба графика, добавления осей и т.д.
Построение трехмерных графиков
Столь же просто обеспечивается построение графиков сложных
поверхностей. Надо только знать, какой командой реализуется тот или
иной график. Например, для построения графика поверхности и ее проекции в виде контурного графика на плоскость под поверхностью достаточно использовать следующие команды:
212
» [X.Y]=meshgrid(-5:0.1:5);
» Z=X.*sin(X+Y);
» meshc(X.Y,Z)
Окно с построенным графиком показано на рис. 66.
213
Рис. 66. Окно с графиками поверхност
и и ее проекции на плоскость под фигурой
Раньше пришлось бы убить много дней на составление и отладку
нужной для построения такого графика программы. В MATLAB же
можно в считанные секунды изменить задающую поверхность функцию
Z(X, Y) и тут же получить новый график поверхности с окраской, в
данном случае заданной вектором Z, и с ее проекцией на плоскость XY.
На рис. 3.5 показано также открытое меню Help (Помощь) окна трехмерной графики.
Мы ограничимся этими примерами построения графиков как достаточно простыми и типовыми. Из них следует важный вывод – для
решения той или иной частной задачи надо знать соответствующие команды и функции. В этом вам помогут как данная книга, так и справочная система MATLAB.
Вращение графиков мышью
Можно поворачивать построенную фигуру мышью и наблюдать ее
под разными углами. Рассмотрим эту возможность на примере построения логотипа системы MATLAB – мембраны. Для этого, введя команду
membrane, получим исходный график, представленный на рис. 67.
Для вращения графика достаточно активизировать последнюю
справа кнопку панели инструментов с изображением пунктирной
окружности со стрелкой. Теперь, введя курсор мыши в область графика
и нажав левую кнопку мыши, можно круговыми движениями заставить
214
график вращаться вместе с обрамляющим его параллелепипедом (рис.
68).
Рис. 67. Построение мембраны – логотипа системы MATLAB
Рис. 68. Вращение трехмерной фигуры мышью
215
Любопытно, что в версии MATLAB 6 вращать можно и двумерные
графики, наблюдая поворот плоскости, в которой они построены. Никакого программирования такое вращение не требует.
Контекстное меню графиков
Для переключения в режим редактирования графика нужно щелкнуть на кнопке Edit Plot (Редактировать график) с изображением курсора-стрелки. В этом режиме графиком можно управлять с помощью контекстного меню, вызываемого щелчком правой кнопки мыши. Вид этого
меню при курсоре, расположенном в области трехмерного графика вне
построенных трехмерных графических объектов, показан на рис. 69.
С помощью мыши можно также выделить график. Щелчок левой клавишей выводит рамку вокруг рисунка (рис. 69). Теперь на график можно наносить стрелки, поясняющие надписи (кнопка с буквой А) и т.д.
Рис. 69. График в состоянии редактирования и контекстное меню
Основы форматирования двумерных графиков
Графики в системе MATLAB строятся обманчиво просто. Связано
это с тем, что многие свойства графиков установлены по умолчанию.
К таким свойствам относятся вывод или скрытие координатных осей,
положение их центра, цвет линии графика, ее толщина и т.д. и т.п. Позже будет показано, как свойства и вид графиков можно менять в широких пределах с помощью параметров команд графики. Однако этот путь
требует хорошего знания деталей языка программирования и дескрипторной графики системы MATLAB.
216
В новой версии MATLAB 6 для изменения свойств графиков (их
форматирования) используются принципы визуального контроля за
стилем (видом) всех объектов графиков. Это позволяет легко, просто
и наглядно придать графикам должный вид перед записью их в виде
файлов на диск. Можно сказать, что в этой части реализованы отдельные принципы визуально-ориентированного программирования графических средств.
Здесь мы рассмотрим возможности форматирования графиков, которые, образно говоря, лежат на поверхности.
Форматирование линий графиков
MATLAB имеет возможность легко настраивать и корректировать
свойства графиков с помощью специальных средств. В новой версии
MATLAB 6.0 они существенно изменены. Так, в предшествующей версии для настройки (форматирования) графиков использовался специальный редактор свойств – Graphics Properties Editor (Редактор свойств
графики). Его можно было вызвать из меню File окна командного режима MATLAB с помощью команды Show Graphics Properties Editor
(Показать редактор свойств графики).
В новой версии MATLAB форматирование графиков стало более
строгим и удобным. При этом ранее упомянутый редактор свойств графиков перестал так именоваться, и команда Show Graphics Properties
в новой версии отсутствует. Ее заменяют команды Figure Properties
(свойства фигуры) и Axis Properties (свойства осей) со всеми необходимыми настройками.
При построении графиков появляется графическое окно. Иногда
оно бывает скрыто ранее имеющимися окнами как системы MATLAB,
так и других работающих в среде Windows 95/98/Me/2000/NT4 приложений. Если вы не увидели графика, заданного для построения, то поищите его в списке открытых окон (приложений), нажимая клавиши Alt
+ Tab, и выберите из списка нужное окно. Окна графики имеют изображение логотипа системы MATLAB. По умолчанию они выводятся с панелью инструментов с рядом кнопок вполне очевидного назначения.
Щелкнув на кнопке Edit Plot (Редактировать график) в панели инструментов окна графики и щелкнув по графику, можно заметить, что
график выделился: вокруг него появилась рамка. Теперь, указав курсором мыши на тот или иной объект графика и щелкнув снова левой клавишей, можно наблюдать выделение объекта и появление окна его форматирования.
217
Например, указав в режиме редактирования мышью на линию графика (и дважды быстро щелкнув левой клавишей), можно увидеть окно
форматирования линий графика, показанное на рис. 70 слева. Часть окна графики с выделенным графиком видна справа. Обратите внимание
на появление на линии графика ряда черных квадратиков, – они используются для указания курсором мыши именно на линию графика, а не на
другие объекты.
218
Рис. 70. Окно графика и окно форматирования линий
В этом окне открыта главная для операций форматирования вкладка – Style (Стиль). Она устанавливает стиль отображения линии, т.е. ее
вид (например, сплошная линия или пунктирная), ширину и цвет,
а также параметры маркеров, отмечающих опорные точки графиков.
Полезно знать, что кнопка Apply (Применить) позволяет применить
сделанные установки к графику до закрытия окна диалога. Кнопка ОК
вводит сделанные установки и закрывает окно диалога. Назначение других кнопок очевидно.
Форматирование маркеров опорных точек
В нашем случае опорные точки задаются ранжированной переменной х, имеющей ряд значений от –15 до +15 с шагом 0.1. Эти точки появляются на графике, если в поле свойств маркера Marker Properties
(Свойства маркера) из меню Style (Стиль) выбрать стиль маркера.
На рис. 71, к примеру, показано построение графика с маркерами опорных точек в виде окружностей.
219
Рис. 71. Пример задания параметров маркеров и построения графика с ними
Можно задавать размеры маркеров, цвет их закраски и цвет окантовки. Так, на рис. 71 при его просмотре на экране цветного дисплея
маркеры имеют вид окружностей с условным размером 4, цветом окантовки красным и цветом закраски желтым. Маркеры можно задавать в
виде окружностей, прямоугольников, крестиков, ромбиков и т.д. Применение маркеров делает графики более наглядными.
Форматирование линий и маркеров
для графика нескольких функций
Если строится график нескольких функций, то можно форматировать линии и маркеры каждой кривой отдельно. Выполним следующие
команды:
» х=-6:.1:6;
» plot(x,sin(x),x,sin(x).^3,x,sin(x).^5):
Рис. 72 показывает пример такого форматирования для графика,
полученного исполнением этих команд.
220
Рис. 72. Пример форматирования для графика трех функций
Кстати, обратите внимание на то, как заданы степени синуса. Записать эти выражения в виде sin(x)^3 и cos(x)^5 будет грубейшей ошибкой, поскольку х здесь вектор. Операторы ^ в данном случае дают поэлементное возведение в степень, что и нужно для построения графиков
этих функций.
Форматирование осей графиков
Аналогично описанным выше правилам выполняется форматирование и других объектов графиков. Например, указав курсором мыши
на оси графиков (на них тоже есть метки в виде черных квадратиков) и
дважды щелкнув левой клавишей мыши, можно увидеть появление окна
форматирования объектов дескрипторной графики Property Editor (Редактор свойств, Графический редактор свойств), настроенного на форматирование осей (рис. 73).
221
222
Рис. 73. Пример форматирования осей графика
Окно графического редактора свойств дескрипторной графики
имеет множество вкладок, настройки которых довольно очевидны, и
ничто не мешает читателю поэкспериментировать с ними несколько
минут. Это позволит понять простоту и одновременно высокую эффективность средств форматирования объектов графики. Например, вы можете задать линейный или логарифмический масштаб осей (вкладка
Scale (Масштаб), открытая на рис. 74), нормальное или инверсное
направление осей (X, У, а в случае трехмерных графиков и Z), показ
сетки (параметр Grid Show), изменить стиль осей и цвета фона (вкладка
Style (Стиль)), нанести у осей надписи (вкладка Label (Ярлык)) и пр.
Рис. 74 показывает график синусоиды после некоторых операций
по форматированию осей. Здесь (кстати, как и на рис. 74) задано построение сетки Grid по осям X и Y, построение надписей (просто буквы
X и Y) по координатным осям и построение титульной надписи. Заодно
на рис. 74 показано в открытом виде меню расширенных инструментальных средств графического окна. Некоторые из возможностей форматирования объектов графики мы рассмотрим позже, по мере описания
типов графиков.
223
Рис. 74. Пример построения графика синусоиды после форматирования осей
224
Если компьютер оснащен должным набором шрифтов, то надписи
на графиках могут быть сделаны на русском языке – рис. 74 хорошо иллюстрирует эту важную для наших пользователей возможность. На нем
титульная надпись сделана на русском языке. Средства форматирования
надписей дают обширные возможности по выбору набора шрифтов, их
стиля, размеров символов и их цвета.
Нанесение надписей и стрелок прямо на график
Дополнительно на график можно нанести надписи с помощью
кнопки панели инструментов с буквой А. Место надписи фиксируется
щелчком мыши. На рис. 75 показан отформатированный график с текстовым блоком, созданным таким образом в левой верхней части поля
графика.
Здесь показано контекстное меню правой клавиши мыши, поясняющее выбор размера символов надписи (и другие возможности этого
меню). Напоминаем, что это меню появляется при щелчке правой кнопки мыши на заданном объекте. В этом меню имеются все команды, доступные для данного объекта в данной ситуации.
Рис. 75. Нанесение надписи на отформатированный график
Полученную таким образом надпись можно выделить и перенести
мышью в любое другое место. Рис. 75 показывает процесс создания еще
225
двух надписей с переносом их текстового блока в нужное место. Надписи сделаны с разным размером символов и разным стилем. Особенно
приятно, что при задании на надписи возведения в степень знаком ^
надпись на экране отображается в естественном математическом виде
(степень в виде верхнего индекса).
Рис. 76. Окончательно отформатированный график трех функций
На рис. 76, в частности, показано задание надписей разным стилем,
а также задание стрелки с помощью соответствующей кнопки панели
инструментов. Это стрелку в режиме редактирования графика можно
перемещать и вращать мышью, а также менять ее длину. Можно также
наносить на график и обычные линии (без стрелки).
Построение легенды и шкалы цветов на графике
Дополнительно можно изменить размеры графика (см. меню Tools
(Инструменты) и его команды Zoom In (Увеличить) и Zoom Out
(Уменьшить)), начать поворот графика мышью (команда Rotate 3D), добавить отрезок прямой или иной графический примитив (подменю Add)
и подключить к графику легенду – пояснение в виде отрезков линий со
справочными надписями, размещаемое внутри графика или около него.
226
Поскольку наш график содержит три кривые, то легенда представляет
собой обозначение этих трех линий в правом верхнем углу рисунка
(рис. 77). Каждая линия имеет тот же цвет, что и на графике (и тот же
стиль).
Рис. 77. Окончательно сформированный график
Следует еще раз отметить, что все описанные возможности форматирования графиков доступны и программным способом, путем задания
соответствующих графических команд, параметров и примитивов.
Например команда text(х, у, 'legend') позволяет задать надпись 'legend'
с началом, имеющим координаты (х, у). Если после первого апострофа
перед текстом поместить параметр \leftarrow, то надпись (легенда) появится после стрелки с острием, обращенным влево. Аналогично параметр \rightarrow после надписи задает вывод стрелки после надписи с
острием, обращенным вправо. Эта возможность позволяет помечать не
только кривые, но и отдельные точки на них. Возможно также применение команды legend('s1', 's2', ...), выводящей легенду обычного вида –
отрезки линий графиков с поясняющими надписями 's1', 's2' и т.д.
227
Перемещение графика в графическом окне
Обычно график занимает фиксированное положение в центре графического окна. Однако в режиме редактирования графиков, когда курсор мыши находится в области графика, в контекстном меню правой
клавиши мыши есть команда Unlock Axes Position (отключить позиционирование осей). Она снимает фиксацию положения координатных осей
графика и позволяет двигать его мышью вместе с осями. Это иллюстрирует рис. 78.
Рис. 78. Пример перемещения графика
Интересно, что при перемещении графика его легенда и цветовая
диаграмма остаются на прежнем месте.
Применение графической «лупы»
На панели инструментов есть кнопки с изображение лупы и знаками + и –. С их помощью выполняются команды Zoom In (+)(Увеличить)
и Zoom Out (-) (Уменьшить). Это позволяет увеличивать или уменьшать
масштаб просмотра изображения. При этом команда Zoom In интересна
еще одной возможностью – с ее помощью можно выделять часть графика перемещением мыши с нажатой левой клавишей (рис. 79).
228
Рис. 79. Пример выделения части графика
229
Область выделения отмечается прямоугольником из тонких точечных линий. Отпустив левую клавишу мыши, можно наблюдать построение выделенной части графика на всем окне (рис. 80).
Рис. 80. Пример просмотра части графика
С помощью команды Zoom Out можно восстановить график
в прежнем масштабе. Таким образом реализуется графическая «лупа».
Работа с камерой 3D-графики
В отличие от двумерных (2D) графиков форматирование трехмерных графиков содержит ряд дополнительных возможностей. Покажем
их на простом примере построения 3D-графики с помощью следующих
простых команд:
» Z=peaks(40):
» mesh(Z);
Здесь первая команда создает массив точек поверхности с помощью одного из ряда встроенных в ядро системы MATLAB готовых описаний таких поверхностей.
Вторая команда просто строит эту поверхность по опорным точкам
с использованием интерполяции для промежуточных точек. Таким образом создается цветная каркасная поверхность, как бы сотканная из
230
разноцветных проволок. На рис. 81 показано построение этой поверхности вместе со специальной панелью инструментов трехмерной графики,
названной в оригинале Camera (Камера).
Рис. 81. Пример построения каркасного 3D-графика
Несмотря на множество кнопок, пользование панелью инструментов 3D-графики достаточно просто, если представить себе, что вы смотрите на предмет через объектив фотокамеры. Наглядные рисунки на
кнопках поясняют смысл их действия – это перемещение и вращение
3D-рисунков относительно тех или иных координатных осей, включение отображения перспективы, изменение цветовой схемы и др.
Рис. 82 показывает, что приемы форматирования двумерной графики
можно использовать при работе с трехмерной графикой – вывод надписи
на график, вывод легенды (кстати, теперь объемной) и шкалы цветов.
Для управления положением и вращением трехмерного графика
можно использовать клавиши перемещения курсора. Эффект вращения
графика иллюстрирует рис. 83, где показан график рис. 82 после его поворота при нажатой клавише –>. В отличие от поворота мышью (также
возможного) перемещение и повороты с помощью клавиш курсора при
выбранном типе перемещения дают плавное перемещение или вращение фигуры. Таким образом осуществляется анимация (оживление)
трехмерной графики.
231
Рис. 82. Пример форматирования трехмерного графика
Таким образом, были рассмотрены основные приемы форматирования графиков, в основном используя средства панели инструментов и отдельные, достаточно очевидные, команды из меню графического окна.
Хотя многие приемы форматирования графики заимствованы из
технологии визуально-ориентированного программирования, в базовой
системе MATLAB (без дополнительных пакетов расширения (toolbox))
все еще отсутствует полноценная возможность такого программирования, даже с учетом расширенных возможностей дескрипторной графики. Это видно уже из того, что вносимые форматированием изменения
в графиках не сопровождаются генерацией программных кодов, которые в последующем при их вызове с новыми параметрами порождали
бы построение графиков с новыми параметрами. Пользователь может
лишь записать на диск копии созданных графиков в формате растрового
изображения (.bmp) и использовать их в целях иллюстрации своих материалов.
232
Рис. 83. Cтоп-кадр вращения трехмерного графика
233
Однако средства MATLAB позволяют опытным программистам создать расширения системы с визуально-ориентированной технологией
программирования. Самым наглядным примером этого является система моделирования динамических объектов Simulink с набором моделей
из готовых блоков. При этом автоматически создается не только сложная графическая блок-схема моделируемого устройства, но и система
уравнений состояния, решение которой и является основой моделирования.
8.2.11. Операции с векторами и матрицами
Создание матриц с заданными свойствами
Создание единичной матрицы
Для создания единичной матрицы (она обычно обозначается как Е)
служит функция eye:
 еуе(n) – возвращает единичную матрицу размера nrn;
 eye(m.n) или еуе([m n]) – возвращают матрицу размера mm
с единицами по диагонали и нулями в остальных ячейках;
 eye(size(A)) – возвращает единичную матрицу того же размера,
что и А.
Единичная матрица не определена для многомерных массивов. Так,
функция у = eye([2,3,4]) при попытке ее вычисления приведет к ошибке.
Создание матрицы с единичными элементами
Для создания матриц, все элементы которых – единицы, используется функция ones:
 ones(n) – возвращает матрицу размера nхn, все элементы которой
– единицы. Если n – не скаляр, то появится сообщение об ошибке;
 ones(m.n) или ones([m n]) – возвращают матрицу размера mxn,
состоящую из единиц;
 ones(dl.d2,d3....) или ones([dl1 d2 d3...]) – возвращает массив из
единиц с размером d1xd2xd3x...;
 ones(size(A)) – возвращает массив единиц той же размерности
и размера, что и А. Матрица с единичными элементами в отличие от единичной матрицы в MATLAB определена и для многомерных массивов.
Пример 48
» s=ones(3,4)
s=
1
1
1
1
1
1
1
1
1
1
1
1
234
Создание матрицы с нулевыми элементами
Иногда нужны матрицы, все элементы которых – нули. Следующая
функция обеспечивает создание таких матриц:
 zeros(n) – возвращает матрицу размера nхn, содержащую нули.
Если n – не скаляр, то появится сообщение об ошибке;
 zeros(m.n) или zeros([m n]) – возвращают матрицу размера mxn,
состоящую из нулей;
 zeros(d1.d2,d3,...) или zeros([d1.d2.d3...]) – возвращают массив из
нулей размера d1xd2xd3x...;
 zeros(size(A)) – возвращает массив нулей того же размера и размерности, что и А.
Пример 49
» D=zeros(3.2)
D=
0
0
0
0
0
0
Создание линейного массива равноотстоящих точек
Функция linspace формирует линейный массив равноотстоящих узлов. Это подобно оператору, но дает прямой контроль над числом точек.
Применяется в следующих формах:
 llnspace(a.b) – возвращает линейный массив из 100 точек, равномерно распределенных между а и b;
 linspace(a,b,n) – генерирует n точек, равномерно распределенных
в интервале от а до b.
Пример 50
» M-linspace(4.20.14)
М=
Columns I through 7
4.0000 5.2308 6.4615 7.6923 8.9231 10.153811.3846
Columns 8 through 14
12.615413.846215.076916.307717.538518.769220.0000
Создание вектора равноотстоящих в логарифмическом масштабе точек
Функция logspace генерирует вектор равноотстоящих в логарифмическом масштабе точек. Она особенно эффективна при создании вектора частот. Это логарифмический эквивалент оператора: и функции
linspace:
235
 logspace(a.b) – возвращает вектор-строку из 50 равноотстоящих
в логарифмическом масштабе точек между декадами 10^0 и 10^b;
 logspace(a.b.n) – возвращает n точек между декадами 10^a и 10^b;
 logspace(a.pi) – возвращает точки в интервале между 10^a и n.
Эта функция очень полезна в цифровой обработке сигналов.
Все аргументы функции logspace должны быть скалярными величинами.
Пример 51
» L=logspaced.2,14)
L =
Columns 1 through 7
10.000011.937814.251017.012520.309224.244628.9427
Columns 8 through 14
34.551141.246349.238858.780270.170483.7678100.0000
Создание массивов со случайными элементами
 р = randperm(n) – возвращает случайные перестановки целых чисел 1:n в векторе-строке.
Пример 52
» randperm(6)
ans =
243651
Функция rand генерирует массивы случайных чисел, значения элементов которых равномерно распределены в промежутке (0, 1):
 rand(n) – возвращает матрицу размера nхn. Если n – не скаляр, то
появится сообщение об ошибке;
 rand(m.n) или rand([m n]) – возвращают матрицу размера mxn;
 rand(m.n,p....) или rand([m n р...]) – возвращает многомерный
массив;
 rand(size(A)) – возвращает массив того же размера и размерности, что и А, с элементами, распределенными по равномерному закону;
 rand (без аргументов) – возвращает одно случайное число, которое изменяется при каждом последующем вызове и имеет равномерный
закон распределения;
 rand('state') – возвращает вектор с 35 элементами, содержащий
текущее состояние генератора случайных чисел с равномерным распределением. Для изменения состояния генератора можно применять следующие формы этой функции:
o rand('state' .s) – устанавливает состояние в s;
o rand('state' ,0) – сбрасывает генератор в начальное состояние;
236
o
rand('state'. j) – для целых j, устанавливает генератор в j-е со-
стояние;
rand('state' ,sum(100*clock)) – каждый раз сбрасывает генератор в состояние, зависящее от времени.
o
Пример 53
» Y=rand(4,3)
Y=
0.9501
0.8913
0.2311
0.7621
0.6068
0.4565
0.4860
0.0185
0.8214
0.4447
0.6154
0.7919
Проверить равномерность распределения случайных чисел можно,
построив большое число точек на плоскости со случайными координатами. Это делается с помощью следующих команд:
» X=rand(1000,1);
» Y=rand(1000,1);
» plot(X,Y,'.')
Полученный при этом график показан на рис. 84. Нетрудно заметить, что точки довольно равномерно распределены на плоскости, так
что нет оснований не доверять заданному закону распределения координат точек.
Рис. 84. Случайные точки с равномерным распределением координат
на плоскости
237
Функция randn генерирует массив со случайными элементами, распределенными по нормальному закону с нулевым математическим ожиданием и среднеквадратическим отклонением, равным 1:
 randn(n) – возвращает матрицу размера n×n. Если n – не скаляр,
то появится сообщение об ошибке;
 randn(m.n) или randn([m n]) – возвращают матрицу размера mxn;
 randn(m,n,p,...) или randn([m n р...]) – возвращает массив с элементами, значения которых распределены по нормальному закону;
 randn(size(A)) – возвращает массив того же размера, что и А,
с элементами, распределенными по нормальному закону;
 randn (без аргументов) – возвращает одно случайное число, которое изменяется при каждом последующем вызове и имеет нормальное
распределение;
 randn('state') – возвращает двухэлементный вектор, включающий
текущее состояние нормального генератора. Для изменения состояния
генератора можно применять следующие формы этой функции:
o randn('state',s) – устанавливает состояние в s;
o randn('state' ,0) – сбрасывает генератор в начальное состояние;
o randn('state', j) – для целых j устанавливает генератор в j-е состояние;
o randn('state', sum(100*clock)) – каждый раз сбрасывает генератор в состояние, зависящее от времени.
Пример 54
>>Y=randn(4.3)
Y =
-0.4326
-1.1465
-1.6656
1.1909
0.1253
1.1892
0.2877
-0.0376
0.3273
0.1746
-0.1867
0.7258
Проверить распределение случайных чисел по нормальному закону
можно, построив гистограмму распределения большого количества чисел. Например, следующие команды
» Y=randn(10000,1);
» hist(Y,100)
строят гистограмму (рис. 85) из 100 столбцов для 10 000 случайных чисел с нормальным распределением.
Из рисунка видно, что огибающая гистограммы действительно
близка к нормальному закону распределения.
В пакете расширения Statistics Toolbox можно найти множество
статистических функций, в том числе для генерации случайных чисел
с различными законами распределения и определения их статистических характеристик.
238
Рис. 85. Гистограмма для 10 000 нормально распределенных чисел
в 100 интервалах
239
Создание матриц с заданной диагональю
Свойства матриц сильно зависят от их диагональных элементов.
Следующая функция MATLAB позволяет создавать специальные типы
матриц с заданными диагональными элементами:
 X = diag(v.k) – для вектора v, состоящего из n компонентов, возвращает квадратную матрицу X порядка n + abs(k) с элементами v на k-й
диагонали, при k = 0 – это главная диагональ (из левого верхнего угла
матрицы в правый нижний угол), при k > 0 – одна из диагоналей (диагональ в терминологии MATLAB – это линия, параллельная главной
диагонали) выше главной диагонали, при k < 0 – одна из нижних диагоналей. Остальные элементы матрицы – нули;
 X = diag(v) – помещает вектор v на главную диагональ (то же.
что и в предыдущем случае при k = 0);
 v = diag(X.k) – для матрицы X возвращает вектор-столбец, состоящий из элементов n-й диагонали матрицы X;
 v = diag(X) – возвращает главную диагональ матрицы X (то же,
что и в предыдущем случае при k = 0).
Пример 55
» v=[2.3];X-d1ag(v.2)
X=
0
0
2
0
0
0
0
3
0
0
0
0
0
0
0
0
» X=[2,5.45,6;3.5.4.9;7.9.4.8;5.66,45.2];
v=diag(X,0)
v =
2
5
4
2
Перестановки элементов матриц
Для перестановок элементов матриц служат следующие функции:
 В = fiiplr(A) – зеркально переставляет столбцы матрицы А относительно вертикальной оси.
Пример 56
» F=[1.2.3;5.45,3]
F =
1
2
3
5
45
3
240
» fliplr(F)
ans=
3
2
1
3
45
5
 В = flipud(A) – зеркально переставляет строки матрицы А относительно горизонтальной оси.
 perms(v) – возвращает матрицу Р, которая содержит все возможные перестановки элементов вектора v. каждая перестановка в отдельной строке. Матрица Р содержит n! строк и n столбцов.
Пример 57
» v=[l 4 6]
v =
1 4 6
P=perms(v)
6 4 1
4 6 1
6 1 4
1 6 4
4 1 6
1 4 6
Вычисление произведений
Несколько простых функций служат для перемножения элементов
массивов:
 prod(A) – возвращает произведение элементов массива, если А –
вектор, или вектор-строку, содержащую произведения элементов каждого столбца, если А – матрица;
 prod (A, dim) – возвращает матрицу (массив размерности два)
с произведением элементов массива А по столбцам (dim=l), по строкам
(dim=2), по иным размерностям в зависимости от значения скаляра dim.
 cumprod(A) – возвращает произведение с накоплением. Если А –
вектор, cum-prod(A) возвращает вектор, содержащий произведения
с накоплением элементов вектора А. Если А – матрица, cumprod(A) возвращает матрицу того же размера, что и А, содержащую произведения
с накоплением для каждого столбца матрицы А (Первая строка без изменений, во второй строке произведение первых двух элементов каждого столбца, в третьей строке элементы второй строки матрицырезультата умножаются на элементы третьей строки матрицы входного
аргумента по столбцам и т.д.);
 cumprod(A,dim) – возвращает произведение с накоплением элементов по строкам или столбцам матрицы в зависимости от значения
скаляра dim.
241
Пример 58
» А=[1 2 3; 4 5 6; 7 8 9]
А=
1
2
3
4
5
6
7
8
9
» В = cumprod(A)
 cross(U. V) – возвращает векторное произведение векторов U и V
в трехмерном пространстве, т.е. W=UxV. U и V – обязательно векторы
с тремя элементами;
 cross(U,V,dim) – возвращает векторное произведение U и V по
размерности, определенной скаляром dim. U и V – многомерные массивы, которые должны иметь одну и ту же размерность, причем размер
векторов в каждой размерности size(U.dim) и size(V.dim) должен быть
равен 3.
Пример 59
» а = [6 5 3]; b= [1 7 6];с = cross(a.b)
с =
9 -33 37
Суммирование элементов
Определены следующие функции суммирования элементов массивов:
 sum(A) – возвращает сумму элементов массива, если А – вектор,
или вектор-строку, содержащую сумму элементов каждого столбца, если А – матрица;
 sum(A.dim) – возвращает сумму элементов массива по столбцам
(dim-1), строкам (dim=2) или иным размерностям в зависимости от значения скаляра dim.
 cumsum(A) – выполняет суммирование с накоплением. Если А –
вектор, cumsum(A) возвращает вектор, содержащий результаты суммирования с накоплением элементов вектора А. Если А – матрица,
cumsum(A) возвращает матрицу того же размера, что и А, содержащую
суммирование с накоплением для каждого столбца матрицы А;
 cumsum(A.dim) – выполняет суммирование с накоплением элементов по размерности, определенной скаляром dim. Например,
cumsum(A.l) выполняет суммирование по столбцам.
242
Пример 60
» A=magic(4)
А =
16
2
3
5
11
10
9
7
6
4
14
15
» В = cumsum(A)
В =
16
2
3
21
13
13
30
20
19
34
34
34
13
8
12
1
13
21
33
34
Функции формирования матриц
Для создания матриц, состоящих из других матриц, используются
следующие функции:
 repmat (А, m, n) – возвращает матрицу В, состоящую из mxn копий матрицы А (т.е. в матрице mxn каждый элемент заменяется на копию матрицы А);
 repmat(А,n) – формирует матрицу, состоящую из пхп копий матрицы А;
 repmat(A,[m n]) – дает тот же результат, что и repmat(A,m,n);
 repmat(A,[m n р...]) – возвращает многомерный массив
(mxnxp...), состоящий из копий многомерного массива или матрицы А;
 repmat (A, m, n) – когда А – скаляр, возвращает матрицу размера
mxn со значениями элементов, заданных А, Это делается намного быстрее, чем A*ones(m,n).
 reshape(A,m,n) – возвращает матрицу В размерностью mxn,
сформированную из А путем последовательной выборки по столбцам.
Если число элементов А не равно mxn, то выдается сообщение об
ошибке;
 reshape(A,m,n,p,...) или В = reshape(A.[m n р...]) – возвращает
N-мерный массив с элементами из А, но имеющий размер mxnxp....
Произведение mxnxp... должно быть равно значению prod(size(A)).
 reshape(A, slz) – возвращает N-мерный массив с элементами из
А, но перестроенный к размеру, заданному с помощью вектора siz.
243
Пример 61
» F=[3.2.7.4:4.3.3.2:2.2.5.5]
F =
3
2
7
4
4
3
3
2
2
2
5
5
» reshape(F.2,6)
ans=
3
2
3
7
5
2
4
2
2
3
4
5
Поворот матриц
Следующая функция обеспечивает поворот матрицы (по расположению элементов): О rot90(A) – осуществляет поворот матрицы А на
90° против часовой стрелки;
 rot90(A,k) – осуществляет поворот матрицы А на величину 90*k
градусов, где k – целое число.
Пример 62
» М=[3.2,7;3.3.2:1.1.1]
м
=
3 2
7
3 3
2
1 1
1
» rot90(M)
a =
ns
7 2
1
2 3
1
3 3
1
Выделение треугольных частей матриц
При выполнении ряда матричных вычислений возникает необходимость в выделении треугольных частей матриц. Следующие функции
обеспечивают такое выделение:
244
 tril(X) – возвращает матрицу, все элементы которой выше главной
диагонали X заменены нулями, неизменными остаются лишь элементы
нижней треугольной части, включая элементы главной диагонали;
 tril(X.k) – возвращает неизменной нижнюю треугольную часть
матрицы X начиная с k-й диагонали. При k = 0 это главная диагональ,
при k > 0 – одна из верхних диагоналей, при k < 0 – одна из нижних диагоналей.
Пример 63
» М=[3.1.4:8.3.2;8.1.1]
М=
3 1 4
8 3 2
8 1 1
» tril(M)
ans =
3 0 0
8 3 0
8 1 1
 triu(X) – возвращает неизменной верхнюю треугольную часть
матрицы X, включая элементы главной диагонали, и заменяет нулями
остальные элементы;
 triu(X.k) – возвращает неизменной верхнюю треугольную часть
матрицы X, начиная с k-й диагонали. При k = 0 – это главная диагональ,
при k > 0 – одна из верхних диагоналей, при k < 0 – одна из нижних диагоналей.
Пример 64
»М=
3
1
8
3
8
1
» triu(M)
ans =
3
1
0
3
0
0
4
2
1
4
2
1
Вычисление сопровождающей матрицы
Начиная с этого раздела рассматриваются функции, относящиеся
к различным специальным матрицам. Они довольно широко используются при решении достаточно серьезных задач матричного исчисления.
245
В связи с тем, что назначение соответствующих функций вытекает из их
наименования, мы не будем сопровождать описание вводными комментариями. Соответствующие подробные определения вы найдете в книге.
Рекомендуем читателю построить графики, представляющие элементы
этих матриц.
 compan(u) – возвращает сопровождающую матрицу, первая
строка которой равна -u (2: n) /u(1), где u – вектор полиномиальных коэффициентов. Собственные значения compan(u) – корни многочлена.
Пример 65. Для многочлена х^3+х ^ 2–6х–8 вектор полиномиальных коэффициентов г имеет следующий вид:
» r=[1.1.-6.-8]
r =
1
1
-6
-8
» A=compan(r) % сопровождающая матрица
А =
-1
6
8
1
0
0
0
1
0
» eigtcompan(r)) % корни многочлена
ans =
-2.0000
2.5616
-1.5616
Вычисление тестовых матриц
Для выполнения ряда вычислений в области линейной алгебры создан ряд специальных матриц, именуемых тестовыми матрицами. Такие матрицы создаются указанными ниже средствами.
 [А.В,С....] = gallerу('tmfun',P1.P2,...) – возвращает тестовые матрицы, определенные строкой tmfun, где tmfun – это имя семейства матриц, выбранное из списка. Р1, Р2, .. – входные параметры, требуемые
для конкретного семейства матриц. Число используемых параметров
P1, P2, ... изменяется от матрицы к матрице. Функция gallery хранит более 50 различных тестовых матричных функций, полезных для тестирования численных алгоритмов и других целей (включая матрицы Коши,
Чебышева, фон Неймана, Вандермонде, Уилкинсона и т.д.).
Пример 66
» A=gallery('dramadah',5.2)
А
246
=
1
0
0
0
0
1
1
0
0
0
0
1
1
0
0
1
0
1
1
0
0
1
0
1
1
8.2.12. Программирование в MatLab
8.2.12.1. Основные понятия программирования
До сих пор мы в основном использовали систему MATLAB в режиме непосредственного счета – в командном режиме. Однако при решении серьезных задач возникает необходимость сохранения используемых последовательностей вычислений, а также их дальнейшей модификации. Иными словами, существует необходимость программирования решения задач.
Это может показаться отходом от важной цели, которая преследуется разработчиками большинства математических систем, – выполнения математических вычислений без использования традиционного
программирования. Однако это не так. Выше было показано, что множество математических задач решается в системе MATLAB без программирования. С использованием языков высокого уровня для их решения потребовалось бы написать и оттестировать сотни программ.
Практически невозможно предусмотреть в одной, даже самой
большой и мощной, математической системе возможность решения
всех задач, которые могут интересовать пользователя. Программирование в системе MATLAB является эффективным средством ее расширения и адаптации к решению специфических проблем. Оно реализуется
с помощью языка программирования системы.
Большинство объектов этого языка, в частности все команды, операторы и функции, одновременно являются объектами входного языка
общения с системой в командном режиме работы. Так что фактически
мы приступили к описанию языка программирования системы
MATLAB с первых строк данной книги.
Так в чем же отличие входного языка от языка программирования?
В основном – в способе фиксации создаваемых ими кодов. Сессии в командном режиме работы не сохраняются в памяти компьютера (ведение
дневника не в счет). Хранятся только определения созданных в ходе их
выполнения переменных и функций. А вот программы на языке программирования MATLAB сохраняются в виде текстовых m-файлов. При
этом могут сохраняться как целые программы в виде файлов-сценариев,
247
так и отдельные программные модули – функции. Кроме того, важно,
что программа может менять структуру алгоритмов вычислений в зависимости от входных данных и данных, создаваемых в ходе вычислений.
С позиций программиста язык программирования системы является типичным проблемно-ориентированным языком программирования
высокого уровня. Точнее говоря, это даже язык сверхвысокого уровня,
содержащий сложные операторы и функции, реализация которых на
обычных языках (например, Бейсике, Паскале или Си) потребовала бы
много усилий и времени. К таким функциям относятся матричные
функции, функции быстрого преобразования Фурье (БПФ) и др.,
а к операторам – операторы построения разнообразных графиков, генерации матриц определенного вида и т.д.
Основные средства программирования
Итак, программами в системе MATLAB являются m-файлы текстового формата, содержащие запись программ в виде программных кодов.
Язык программирования системы MATLAB имеет следующие средства:
 данные различного типа;
 константы и переменные;
 операторы, включая операторы математических выражений;
 встроенные команды и функции;
 функции пользователя;
 управляющие структуры;
 системные операторы и функции;
 средства расширения языка.
Коды программ в системе MATLAB пишутся на языке высокого
уровня, достаточно понятном для пользователей умеренной квалификации в области программирования. Язык программирования MATLAB
является типичным интерпретатором. Это означает, что каждая инструкция программы распознается и тут же исполняется, что облегчает
обеспечение диалогового режима общения с системой. Этап компиляции всех инструкций, т.е. полной программы, отсутствует. Высокая
скорость выполнения программ обеспечена наличием заведомо откомпилированного ядра, хранящего в себе критичные к скорости выполнения инструкции, такие как базовые математические и иные функции, а
также тщательной отработкой системы контроля синтаксиса программ в
режиме интерпретации.
Интерпретация означает, что MATLAB не создает исполняемых
конечных программ. Они существуют лишь в виде m-файлов. Для выполнения программ необходима среда MATLAB. Однако для программ
248
на языке MATLAB созданы компиляторы, транслирующие программы
MATLAB в коды языков программирования С и C++. Это решает задачу
создания исполняемых программ, первоначально разрабатываемых
в среде MATLAB. Компиляторы для системы MATLAB являются
вполне самостоятельными программными средствами и в данной книге
не рассматриваются.
Следует особо отметить, что не все инструкции MATLAB могут
компилироваться, так что перед компиляцией программы нуждаются
в некоторой доработке. Зато скорость выполнения откомпилированных
программ порой возрастает в 10–15 раз (правда, это достигается, как
правило, для простых примеров с большими циклами).
Начальное представление о переменных, встроенных константах
и функциях уже было дано в предшествующих главах. В этой главе эти
представления будут существенно расширены с позиций пользователяпрограммиста.
Основные типы данных
Структура типов данных системы MATLAB представлена ниже:
Типы данных array и numeric являются виртуальными («кажущимися»), поскольку к ним нельзя отнести какие-либо переменные. Они
служат для определения и комплектования некоторых типов данных.
Таким образом, в MATLAB определены следующие основные типы
данных, в общем случае представляющих собой многомерные массивы:
 single – числовые массивы с числами одинарной точности;
 double – числовые массивы с числами удвоенной точности;
 char – строчные массивы с элементами-символами;
 sparse – наследует свойства double, разреженные матрицы с элементами-числами удвоенной точности;
 сеll – массивы ячеек; ячейки, в свою очередь, тоже могут быть
массивами;
 struct– массивы структур с полями, которые также могут содержать массивы;
 function_handle – дескрипторы функций:
 int32, uint32 – массивы 32-разрядных чисел со знаком и без знаков;
 intl6,uint!6 – массивы 16-разрядных целых чисел со знаком и без
знаков;
 int8. uint8 – массивы 8-разрядных целых чисел со знаками и без
знаков.
Кроме того, предусмотрен еще один тип данных – UserObject, который относится к типам данных (объектом), определяемым пользова249
телем. Типы данных double, char и sparse были рассмотрены ранее, так
что в этой главе будут детально рассмотрены оставшиеся типы. Что касается чисел класса uint8, то они представляют значения от 0 до 255
и занимают в памяти 1/8 часть от размера одного числа с двойной точностью. В основном этот тип данных применяется в служебных целях.
Каждому типу данных можно соотнести некоторые характерные
для него операции, называемые методами. Дочерние типы данных, расположенные на приведенной диаграмме ниже родительских типов,
наследуют от последних их методы, что является признаком наследования объектов. Поскольку в иерархии типов данных сверху находятся
данные типа array, это значит, что все виды данных в MATLAB являются массивами.
Виды программирования
На рынке программного обеспечения система MATLAB позиционируется как язык высокого уровня для научно-технических расчетов.
Таким образом, возможность программирования относится к важным
достоинствам данного языка, несмотря на обилие средств прямого решения задач. И действительно, именно возможность программирования
сложных задач и практически неограниченного расширения системы
сделала MATLAB столь почитаемой системой в университетах и крупных научных учреждениях. MATLAB открывает широчайшие возможности реализации новых алгоритмов вычислений, численных методов
и методик расчета и проектирования различных систем и устройств.
Язык программирования системы MATLAB вобрал в себя все средства, необходимые для реализации различных видов программирования:
 процедурного;
 операторного;
 функционального;
 логического;
 структурного (модульного);
 объектно-ориентированного;
 визуально-ориентированного.
В основе процедурного, операторного и функционального типов
программирования лежат процедуры, операторы и функции, используемые как основные объекты языка. Эти типы объектов присутствуют
в MATLAB. Логическое программирование реализуется в MATLAB
с помощью логических операторов и функций. Это позволяет реализовать основные идеи логического программирования, хотя на выдающу250
юся роль в этом классе языков программирования MATLAB не претендует.
Зато MATLAB представляет собой яркий пример плодотворности
структурного программирования. Подавляющее большинство функций
и команд языка представляют собой вполне законченные модули, обмен
данными между которыми происходит через их входные параметры, хотя возможен обмен информацией и через глобальные переменные. Программные модули оформлены в виде текстовых m-файлов, которые хранятся на диске и подключаются к программам по мере необходимости.
Важно отметить, что в отличие от многих языков программирования,
применение тех или иных модулей не требует предварительного объявления, а для создания и отладки самостоятельных модулей MATLAB
имеет все необходимые средства. Подавляющее большинство команд
и функций системы MATLAB поставляется в виде таких модулей.
Объектно-ориентированное программирование также широко представлено в системе MATLAB. Оно особенно актуально при программировании задач графики. Что качается визуально-ориентированного программирования, то в MATLAB оно представлено в основном в пакете моделирования заданных блоками устройств и систем Simulink. Этот пакет
будет рассмотрен в конце книги. В ядре системы в данный момент визуально-ориентированное программирование не используется.
8.2.12.2. Двойственность операторов, команд и функций
Для языка системы MATLAB различие между командами (выполняемыми при вводе с клавиатуры) и программными операторами (выполняемыми из программы) является условным. И команды, и программные операторы могут выполняться как из программы, так и в режиме прямых вычислений. Под командами далее в основном понимаются средства, управляющие периферийным оборудованием, под операторами – средства, выполняющие операции с операндами (данными).
Функция преобразует одни данные в другие. Для многих функций
характерен возврат значений в ответ на обращение к ним с указанием
списка входных параметров-аргументов. Например, говорят, что функция sin(x) в ответ на обращение к ней возвращает значение синуса аргумента х. Поэтому функцию можно использовать в арифметических выражениях, например 2*sin(x+1). Для операторов (и команд), не возвращающих значения, такое применение обычно абсурдно. В данной книге
все функции, возвращающие единственное значение (или один массив),
записываются малыми (строчными) буквами в виде
f_nаmе(Список_параметров).
251
Тем самым мы исключаем искусственное выделение имен функций
большими (заглавными) буквами, принятое в справочной системе
MATLAB. Напоминаем, что как в командной строке, так и в текстах
m-файлов функции записываются только малыми буквами. Для функций, возвращающих ряд значений или массивов (например X, Y, Z,...),
запись имеет следующий вид:
[X. Y, Z. ...]=f_name(Cписок_параметров)
Важное значение имеет двойственность операторов и функций.
Многие операторы имеют свои аналоги в виде функций. Так, например,
оператор «+» имеет аналог в виде функции sum. Команды, записанные
в виде Command argument, нередко имеют форму записи и в виде функции: Command(' argument')
Пример 67
» help sin SIN Sine.
SIN(X) is the sine of the elements of X.
Overloaded methods
help sym/sin.m
» help('sin') SIN Sine.
SIN(X) is the sine of the elements of X.
Overloaded methods
help sym/sin.m
» type('sin')
sin is a built-in function.
» type sin
sin is a built-in function.
Указанная двойственность лежит в основе выбора между процедурным и функциональным типами программирования, каждый из которых имеет своих поклонников и противников и может (в той или иной
мере) подходить для решения различных классов задач. При этом переход от одного типа программирования к другому возможен в пределах
одной программы и происходит настолько естественно, что большинство пользователей даже не задумывается над тем, каким же типом (или
стилем) программирования они преимущественно пользуются.
Некоторые ограничения
Поскольку язык программирования системы MATLAB ориентирован на структурное программирование, в нем нет номеров строк (присущих до недавнего времени Бейсику) и программных операторов безусловного перехода GO TO. Имеются лишь управляющие структуры
следующих типов: условных выражений if... el se...elseif...end, циклы
252
for...end и while...end. Их форма похожа на ту, которая используется в
языке Pascal (т. е. область действия управляющих структур начинается
их заголовком, но без слова begin, а заканчивается словом end). С позиций теории структурного программирования этих средств достаточно
для решения любых задач. В MATLAB имеются также операторыпереключатели типа case.
Однако в MATLAB исключены те средства, возможности которых
можно реализовать уже имеющимися средствами. Зато резко увеличен
набор средств программирования для решения математических задач,
прежде всего сводящихся к матричным вычислениям и реализации современных численных методов.
Программирование простых задач в среде MATLAB очень напоминает программирование на Бейсике. Во многих случаях программы на
Бейсике можно почти дословно перевести на язык системы, учтя небольшие отличия в синтаксисе этих языков. Это нельзя трактовать как
отсутствие у языка MATLAB индивидуальных черт. Любители Си, Паскаля или Фортрана также заметят сходство этих языков с языком программирования MATLAB. Так что правильнее считать, что этот язык
имеет вполне самостоятельное значение. Он вобрал в себя лучшие средства универсальных языков программирования.
8.2.12.3. М-файлы сценариев и функций
Структура и свойства файлов сценариев
Итак, мы установили, что работа в командном режиме (сессия)
не является программированием. Внешним атрибутом последнего
в MATLAB служит задание последовательности действий по программе, записанной в виде m-файла. Для создания m-файлов может использоваться как встроенный редактор, так и любой текстовый редактор,
поддерживающий формат ASCII. Подготовленный и записанный на
диск m-файл становится частью системы, и его можно вызывать как из
командной строки, так и из другого m-файла. Есть два типа m-файлов:
файлы-сценарии и файлы-функции. Важно, что в процессе своего создания они проходят синтаксический контроль с помощью встроенного
в систему MATLAB редактора/отладчика m-файлов.
Файл-сценарий, именуемый также Script-файлом, является просто
записью серии команд без входных и выходных параметров. Он имеет
следующую структуру:
«Основной комментарий
%Дополнительный комментарий
253
Тело файла с любыми выражениями.
Важны следующие свойства файлов-сценариев:
 они не имеют входных и выходных аргументов;
 работают с данными из рабочей области;
 в процессе выполнения не компилируются;
 представляют собой зафиксированную в виде файла последовательность операций, полностью аналогичную той, что используется в
сессии.
Основным комментарием является первая строка текстовых комментариев, а дополнительным – последующие строки. Основной комментарий выводится при выполнении команд lookfor и help
имя_каталога. Полный комментарий выводится при выполнении команды help Имя_файла.
Примре 68. Файл-сценарий:
%Plot with color red
%Строит график синусоиды линией красного цвета
%с
выведенной
масштабной
сеткой
в
интервале
[xmin.xmax]
x=xmin:0.1:xmax;
plot(x.sin(x).'r')
grid on
Первые три строки здесь – это комментарий, остальные – тело файла. Обратите внимание на возможность задания комментария на русском языке. Знак % в комментариях должен начинаться с первой позиции строки. В противном случае команда help name не будет воспринимать комментарий (иногда это может понадобиться) и возвратит сообщение вида No help comments found in-name.m.
Обратите внимание на то, что такой файл нельзя запустить без
предварительной подготовки, сводящейся к заданию значений переменным xmin и хтах, использованным в теле файла. Это следствие первого
свойства файлов-сценариев – они работают с данными из рабочей области. Переменные, используемые в файлах-сценариях, являются глобальными, т.е. они действуют одинаково в командах сессии и внутри
программного блока, которым является файл-сценарий. Поэтому заданные в сессии значения переменных используются и в теле файла. Имена
файлов-сценариев нельзя использовать в качестве параметров функций,
поскольку файлы-сценарии не возвращают значений. Можно сказать,
что файл-сценарий – это простейшая программа на языке программирования MATLAB [ Файлы-сценарии нельзя компилировать. Перед компилированием их нужно преобразовать в файлы ].
254
Рис. 86. Пример работы с файлом pcr
Статус переменных в функциях
Переменные, указанные в списке параметров функции, являются
локальными и служат для переноса значений, которые подставляются на
их место при вызовах функций.
Эта особенность переменных-параметров хорошо видна при разборе примера, показанного на рис. 87. Здесь (признаемся, что неточно) задана некоторая функция двух переменных fun(x, у).
В этом примере в окне редактора создана функция fun двух переменных х и у, вычисляющая z = х2 +у2 . Поскольку переменные х и у указаны как параметры функции fun(x, у), то они являются локальными.
В примере вне тела функции им заданы нулевые значения. Очевидно,
что при вычислении значения fun(2, 3) в теле функции задается х=2
и у=3. Поэтому результат – z = 13. Однако после выхода из тела функции
переменные х и у принимают свои исходные значения, равные нулю. Так
что эти переменные меняют свои значения на значения параметров функции только локально – в пределах тела функции. А каков статус переменной z в нашем примере? Она, как и любая переменная, определенная в теле функции, также будет локальной. Изначально ее значение не определено. В теле функции переменная принимает значение z = 13. А после возврата из функции переменная z, несмотря на ее применение в теле функции, остается неопределенной. На это указывает сообщение, отображаемое после попытки вывода значения переменной z.
255
Рис. 87. Пример, поясняющий действие локальных
и глобальных переменных при задании файла-функции
Возврат из функции производится после обработки всего тела
функции, т.е. при достижении конца файла функции. При использовании в теле функции условных операторов, циклов или переключателей
иногда возникает необходимость осуществить возврат функции раньше,
чем будет достигнут конец файла. Для этого служит команда return.
В любом случае, результатом, возвращаемым функцией, являются значения выходных параметров (в нашем случае выходным параметром
является переменная z), присвоенные им на момент возврата.
У нашей функции имеется один недостаток – вывод на индикацию
значения z=13 из тела функции, хотя после этого z остается равным 0.
Чтобы убрать побочный эффект вывода значения z, достаточно установить знак ; после математического выражения, определяющего z. Таким
образом, окончательно наша функция должна записываться следующим
образом:
function z=fun(x,y)
z=x^2+y^2;
Этот пример наглядно показывает, что пропуск любого слова или
даже простого оператора (вроде знака :) может привести к не сразу понятным побочным эффектам и даже неверной работе функции. Программирование требует особой точности и педантичности, именно поэтому далеко не все могут быть хорошими программистами.
256
Структура М-файла-функции
М-файл-функция является типичным объектом языка программирования системы MATLAB. Одновременно он является полноценным
модулем с точки зрения структурного программирования, поскольку
содержит входные и выходные параметры и использует аппарат локальных переменных. Структура такого модуля с одним выходным параметром выглядит следующим образом:
function var=f_name(Cnncoк_napaмeтpов)
%Основной комментарий
%Дополнительный комментарий
Тело файла с любыми выражениями
vаr=выражение
М-файл-функция имеет следующие свойства:
 он начинается с объявления function, после которого указывается
имя переменной van – выходного параметра, имя самой функции и список ее входных параметров;
 функция возвращает свое значение и может использоваться
в виде name (Список_параметров) в математических выражениях;
 все переменные, имеющиеся в теле файла-функции, являются
локальными, т.е. действуют только в пределах тела функции;
 файл-функция является самостоятельным программным модулем, который общается с другими модулями через свои входные и выходные параметры;
 правила вывода комментариев те же, что у файлов-сценариев;
 файл-функция служит средством расширения системы
MATLAB;
 при обнаружении файла-функции он компилируется и затем исполняется, а созданные машинные коды хранятся в рабочей области системы MATLAB.
Последняя конструкция vаг=выражение вводится, если требуется,
чтобы функция возвращала результат вычислений.
Приведенная форма файла-функции характерна для функции с одним выходным параметром. Если выходных параметров больше, то они
указываются в квадратных скобках после слова function. При этом
структура модуля имеет следующий вид:
function [varl,var2....]=f_name(Список_параметров)
%Основной комментарий
%Дополнительный комментарий
Тело файла с любыми выражениями
vаг1=выражение
vаг2=выражение
257
Такая функция во многом напоминает процедуру. Ее нельзя слепо
использовать непосредственно в математических выражениях, поскольку она возвращает не единственный результат, а множество результатов
– по числу выходных параметров. Если функция используется как имеющая единственный выходной параметр, но имеет ряд выходных параметров, то для возврата значения будет использоваться первый из них.
Это зачастую ведет к ошибкам в математических вычислениях. Поэтому, как отмечалось, данная функция используется как отдельный элемент программ вида:
[var1,va2,... ]=f_nаmе(Список_параметров)
После его применения переменные выхода varl, var2, ... становятся
определенными и их можно использовать в последующих математических выражениях и иных сегментах программы. Если функция используется в виде nаmе(Список_параметров), то возвращается значение
только первого выходного параметра – переменной varl.
Статус переменных и команда global
Итак, из сказанного ясно, что переменные в файлах-сценариях являются глобальными, а в файлах-функциях – локальными. Нередко применение глобальных переменных в программных модулях может приводить к побочным эффектам. Применение локальных переменных
устраняет эту возможность и отвечает требованиям структурного программирования.
Однако передача данных из модуля в модуль в этом случае происходит только через входные и выходные параметры, что требует тщательного планирования такой передачи. В жизни мы далеко не всегда
едим черную икру (локальные переменные) и часто хотим отведать черного хлебушка (глобальные переменные). Так и при создании файловфункций порой желательно применение глобальных переменных. Ответственность за это должен брать на себя программист, создающий
программные модули.
Команда global varl var2... позволяет объявить переменные модуляфункции глобальными. Таким образом, внутри функции могут использоваться и такие переменные, если это нужно по условиям решения вашей задачи [ Чтобы несколько программных модулей могли совместно
использовать глобальную переменную, i идентификатор должен быть
объявлен как global во всех модулях].
258
Использование подфункций
Начиная с версии 5.0 в функции системы MATLAB можно включать подфункции. Они объявляются и записываются в теле основных
функций и имеют идентичную им конструкцию. Не следует путать эти
функции с внутренними функциями, встроенными в ядро системы
MATLAB.
Пример 69. Функция с подфункцией:
function [mean.stdev] = statv(x)
USTATV Interesting statistics.
%Пример функции с встроенной подфункций
n = length(x);
mean = avg(x.n);
stdev = sqrt(sum((x-avg(x.n)). ^ 2)/n);
%-------------------------------------function m = avg(x.n) £Mean subfunction
sum(x)/n;
m
=
В этом примере среднее значение элементов вектора х вычисляется
с помощью подфункции avg(x.n), тело которой записано в теле основной функции statv.
Пример 70. Использование функции statv представлен ниже:
» V=[l 2345]
V=
12345
» [a,m]=statv(V)
а =
3
m =
1.4142 » statv(V)
ans =
3
» help statv
STATV Interesting statistics.
Пример функции с встроенной подфункций
Подфункции определены и действуют локально, т.е. только в пределах т-файла, определяющего основную функцию. Команда help пате
выводит комментарий, относящийся только к основной функции, тогда
как команда type name выводит весь листинг m-файла. Так что заданные
в некотором m-файле подфункции нельзя использовать ни в командном
режиме работы, ни в других т-файлах. При обращении к функции интерпретатор системы MATLAB прежде всего просматривает m-файл на
259
предмет выявления подфункций. Если они обнаружены, то задаются как
локальные функции. Благодаря локальному действию подфункций их
имена могут совпадать с именами основных функций системы. Если
в функции и подфункциях должны использоваться общие переменные,
их надо объявить глобальными как в функции, так и в ее подфункциях.
Частные каталоги
Для записи m-файлов используются каталоги, называемые родительскими каталогами. Они содержат группы файлов определенного функционального назначения, например по статистическим расчетам, матричным
операциям, вычислению определенных классов функций и т.д.
Однако, начиная с версии MATLAB 5.0, появилась возможность
в родительских каталогах создавать частные каталоги с именем
PRIVATE. Расположенные в них m-файлы доступны только файлам родительского каталога. Файлы частных каталогов просматриваются интерпретатором системы MATLAB в первую очередь. Применение частных каталогов позволяет изменять исходные файлы, сохраняя оригиналы в родительском каталоге в неизменном виде.
Если вы решили отказаться от применения измененного файла, достаточно стереть его в частном каталоге. Такая возможность связана
с тем, что интерпретатор при поиске m-файла прежде всего просматривает частный каталог и интерпретирует найденный в нем файл. И только если файл не найден, ищется файл в родительском каталоге.
8.2.12.4. Обработка ошибок
Вывод сообщений об ошибках
Часто в ходе вычислений возникают ошибки. Например, мы уже
сталкивались с проблемой вычисления функции sin(x)/x – при х = 0 имеет место ошибка вида «деление на ноль». При появлении ошибки вычисления могут завершиться досрочно с выводом сообщения об ошибке. Следует, однако, отметить, что не все ошибки вызывают остановку
вычислений. Некоторые сопровождаются только выдачей предупреждающей надписи.
Такие ситуации должны учитываться программистом, отмечаться
как ошибочные и по возможности устраняться. Для вывода сообщения
об ошибке служит команда error('Сообщение об ошибке'), при выполнении которой вычисления прерываются и выдается сообщение об ошиб-
260
ке, заданное в апострофах. Ниже дан пример вычисления функции
sd(x)=sin(x)/x, в котором задано сообщение об ошибке на русском языке:
function f=sd(x)
if x==0 error('Ошибка - деление на 0'). end
f=sin(x)/x
Для выявления ситуации об ошибке использован оператор условного перехода if, который будет описан детально несколько позднее. Результат выполнения данной функции приводится ниже:
» sd(l)
f =
0.8415
ans =
0.8415
» sd(0)
??? Error using ==> sd Ошибка - деление на 0
Если остановка программы при появлении ошибки нежелательна,
то может использоваться команда вывода предупреждающего сообщения warning('Предупреждающее сообщение')
Эта команда выводит стоящее в апострофах сообщение, но не препятствует дальнейшей работе программы. Признаком того, что является
ошибкой, а что – предупреждением, являются символы ??? и слово
Warning в соответствующих сообщениях.
Функция lasterr и обработка ошибок
Опытные программисты должны предусматривать ситуации с появлением ошибок. К примеру, при х = 0 выражение sin(x)/x = 0/0 = 1
и правильным решением было бы вместо его вычисления использовать
значение 1.
Пример 71. Функция sdO, исключающая вычисление sin(x)/x при х=0.
function f=sdO(x)
if x==0 f=1;
else f=sin(x)/x;
end
return
При этом вычисления пройдут корректно при любом х:
» sd0(l)
ans=
0.8415
»sd0(0)
ans =
1
261
Для вывода сообщения о последней произошедшей ошибке служит
функция lasterr:
» ааа
??? Undefined function or variable 'aaa'.
» 2+3
ans =
5
» 1/0
Warning: Divide by zero,
ans =
Inf
» lasterr
ans = Undefined function or variable 'aaa'.
Как нетрудно заметить, функция lasterr возвращает текстовое сообщение, следующее за знаками ??? сообщения об ошибке.
В общем случае программы могут содержать обработчики ошибок,
направляющие ход вычислений в нужное русло, даже если появляется
ошибка. Но для этого требуются средства индикации и обработки ошибок. Основными из них являются функции eval и l asterr. О функции
lasterr уже говорилось, а функция eval ('try', 'catch') имеет два входных
аргумента. Один из них – это строчное выражение, которое преобразуется в исполняемую форму и выполняется при отсутствии ошибки. Если
же происходит ошибка, то строка 'catch' вызывает обращение к функции
обработки ошибки.
8.2.12.5. Функции с переменным числом аргументов
Функции подсчета числа аргументов
При создании функций со специальными свойствами весьма полезны две приведенные ниже функции:
 nargin – возвращает число входных параметров данной функции;
 nargout – возвращает число выходных параметров данной функции.
Пусть, к примеру, мы хотим создать функцию, вычисляющую сумму квадратов пяти аргументов xl, х2, хЗ, х4 и х5.
Обычный путь состоит в следующем – создаем функцию с именем
sum2_5:
function f=sum2_5(x1,x2,x3,x4,x5);
f=x1^2+x2^2+x3^2+x4*2+x5^*2;
Теперь проверим ее в работе:
» sum2_5(l,2.3.4.5)
ans =
262
55
» sum2_5(l,2)
??? Input argument 'хЗ' is undefined.
Error in ==> C:\MATI_AB\bin\sum2_5.m
On line 2 ==> f=x1^2+x2^2+x3^2+x4^2+x5^2;
Итак, при наличии всех пяти аргументах функция работает корректно. Но если аргументов менее пяти, она выдает сообщение об
ошибке. С помощью функции nargin можно создать функцию sum2_5m,
которая работает корректно при любом числе заданных входных аргументов в пределах от 1 до 5:
f unction f=sum2m_5(x1 ,x2 , хЗ ,x4 , x5);
n=nargin;
if n==1 f=x1^2; end
if n==2 f=x1^2+x2^2;end
if n==3 f=x1^2+x2^2+x3^2; end
if n==4 f=x1^2+x2 ^ 2+x3^2+x4 ^ 2: end
if n==5 f=x1^2+x2^2+x3^2+x
В данной функции используется условный оператор if...end, который будет детально описан далее. Но и без этого ясно, что благодаря
применению функции nargin и условного оператора вычисления всякий
раз идут по формуле с числом слагаемых, равным числу входных аргументов – от одного до пяти. Это видно из приведенных ниже примеров.
Пример 72
» sum2_5m(1)
ans =
1
» sum2_5m(1,2)
ans =
5
» sum2_5m( 1,2,3)
ans =
14
» sum2_5m(1,2,3,4)
ans =
30
» sum2_5m(1,2,3,4,5)
ans=
55
» sum2_5m(1,2,3,4,5,6)
??? Error using ==> sum2_5m
Too many input arguments.
263
Итак, при изменении числа входных параметров от 1 до 5 вычисления проходят корректно. При большем числе параметров выводится сообщение об ошибке. Этс уже действует встроенная в интерпретатор
MATLAB система диагностики ошибок.
Переменные varargin и varargout
Для упрощения записи аргументов функций их можно представить
списком, который определяет специальная переменная varargin, являющаяся массивом ячеек. Она должна записываться строчными буквами
и может включать в себя как аргументы, так и опции функций. Например, в приведенных ниже примерах.
Пример 73
function myplot(x,varargin)
plot(x,varargin{:}) function [s,varargout] = mysize(x)
nout = max(nargout.1)-1;
s = size(x);
for 1=1:nout, varargout(i) = {s(i)}; end
Эта переменная вбирает в себя все входные параметры и опции,
начиная со второго аргумента. При обращении к данной функции
myplot(sin(0:.1:1),'color'.[.5 .7
,3],'linestyle',':')
varargin представляет массив ячеек размера 1x4, включающий в себя
значения
'color', [.5 .7 .3], 'linestyle' u ':'.
Аналогично varagin переменная varargout объединяет любое число
выходных параметров в массив ячеек. Эта переменная, кстати, как
и varargin, должна быть последней в списке аргументов. Обычно эта переменная не создается при вызове функций. Приведенный ниже пример
поясняет ее создание с помощью цикла.
Пример 74
function [s,varargout] = rnysize(x)
nout = max(nargout,l)-l:
s = size(x);
for i=1:nout.
varargout(i)= (s(i)}: end
Более подробно циклы будут рассмотрены в дальнейшем описании.
В данном случае цикл использован для объединения всех параметров,
начиная со второго в значение переменной varargout.
264
8.12.2.6. Комментарии
Как отмечалось, команда help name, где name – имя m-файла, обеспечивает чтение первой строки с текстовым комментарием и тех строк
с комментариями, которые следуют непосредственно за первой строкой.
Комментарий, расположенный за пределами этой области, не выводится. Это позволяет создавать невыводимый программный комментарий,
например: Z=X+Y ^Массив Z является суммой массивов X и Y
Пустая строка прерывает вывод комментария при исполнении команды help name. Команда type name выводит текст программы со всеми комментариями, в том числе и следующими после пустых строк.
Команда help catalog, где catalog – имя каталога с m-файлами, позволяет вывести комментарий, общий для всего каталога. Такой комментарий содержится в файле contents.m, который пользователь может создать самостоятельно с помощью редактора m-файлов. Если такого
файла нет, то будет выведен список первых строк комментариев для
всех m-файлов каталога.
8.12.2.7. Особенности выполнения m-файлов функций
М-файлы-функции могут использоваться как в командном режиме,
так и вызываться из других M-файлов. При этом необходимо указывать
все входные и выходные параметры. Исключением является случай, когда выходной параметр единственный – в этом варианте функция возвращает единственный результат и может использоваться в математических выражениях. При использовании глобальных переменных они
должны быть объявлены во всех m-файлах, используемых в решении
заданной задачи, и во всех входящих в них встроенных подфункциях.
Имена функций должны быть уникальными. Это связано с тем, что
при обнаружении каждого нового имени MATLAB проверяет, относится ли это имя к переменной, подфункции в данном m-файле, частной
функции в каталогах PRIVATE или функции в одном из каталогов пути
доступа. Если последняя встречается, то будет исполнена именно эта
функция. В новой версии MATLAB возможно переопределение функции, но это не рекомендуется делать подавляющему большинству пользователей системы.
Если аргумент функции используется только для вычислений и его
значения не меняются, то аргумент передается ссылкой, что уменьшает
затраты памяти. В других случаях аргумент передается значением. Для
каждой функции выделяется своя (рабочая) область памяти, не входящая в область, предоставляемую системе MATLAB. Глобальные пере265
менные принадлежат ряду областей памяти. При их изменении меняется
содержимое всех этих областей.
При решении задач с большим объемом данных может ощущаться
нехватка оперативной памяти. Признаком этого становится появление
сообщения об ошибке «Out of memory».
В этом случае может быть полезным применение следующих мер:
 стирание ставших ненужными данных, прежде всего больших
массивов;
 увеличение размеров файла подкачки Windows;
 уменьшение размера используемых данных;
 снятие ограничений на размеры используемой памяти;
 увеличение объема физической памяти компьютера.
Чем больше емкость ОЗУ компьютера, на котором используется
система MATLAB тем меньше вероятность возникновения указанной
ошибки. Опыт показывает, что даже при решении задач умеренной
сложности емкость ОЗУ не должна быть менее 16–32 Мбайт.
8.12.2.8. Создание Р-кодов
Когда встречается сценарий или функция в виде m-файла, то всякий раз выполняется трансляция файлов, создающая так называемые
Р-коды (псевдокоды). Она связана с синтаксическим контролем сценария или функции, который несколько замедляет вычисления. Временные Р-коды хранятся в памяти только до использования команды clear
или завершения сеанса работы. Кроме того, MATLAB позволяет явно
создавать и хранить Р-коды сценариев и функций с помощью команды
pcode: pcode имена_М-файлов pcode *.m создает файлы р-кодов для
всех m-файлов данной папки, pcode с дополнительным параметром –
inplace – хранит эти файлы в тех же папках, что и исходные m-файлы.
Особенно полезно применение этой команды в том случае, когда
используется сложная дескрипторная графика и средства создания GUI.
В этом случае выигрыш по скорости выполнения вычислений может
быть заметным. Переход к Р-кодам полезен, если пользователь желает
скрыть созданный им m-файл и реализованные в нем идеи и алгоритмы.
Файл с Р-кодами имеет расширение .р. Размер файла с Р-кодами обычно
больше, чем размер m-файла.
Пример 75. Файл-сценарий pp.m.
told=cputime;
х=-15:.0001:15;
plot(x,sin(x))
t=cputime-told
266
Эта программа строит график функции sin(x) по большому числу
точек. Кроме того, она вычисляет время выполнения данного сценария
в секундах. При первом пуске получим:
» рр
t=
0.4400
Теперь выполним создание Р-кодов и вновь запустим программу:
» pcode рр
» рр
t=
0.3900
» рр
t =
0.3300
Нетрудно заметить, что после преобразования в Р-коды время построения графика несколько уменьшилось. Но гораздо важнее то, что теперь вы можете стереть файл pp.m (но оставить рр.р!) и снова запустить
программу. Ваши слишком любопытные коллеги едва ли разберутся с тем,
что записано в машинных кодах файла рр.р, хотя с помощью специальных
программ (декомпиляторов) такая возможность реализуется.
8.12.2.9. Управляющие структуры
Помимо программ с линейной структурой, инструкции которых
исполняются строго по порядку, существует множество программ,
структура которых нелинейна. При этом ветви программ могут выполняться в зависимости от определенных условий, иногда с конечным
числом повторений – циклов, иногда в виде циклов, завершаемых при
выполнении заданного условия. Практически любая серьезная программа имеет нелинейную структуру. Для создания таких программ необходимы специальные управляющие структуры. Они имеются в любом
языке программирования, и в частности в MATLAB.
Диалоговый ввод
Приведем простой пример диалоговой программы, которую легко
поймут приверженцы доброго старого Бейсика:
% Вычисление длины окружности с диалоговым вводом
радиуса
r=0;
while r>=0,
267
r=input('Введите радиус окружностиr=');
if r>=0 disp(' Длина окружности l='); disp(2*pi*r),
end
end
Эта программа служит для многократного вычисления длины
окружности по вводимому пользователем значению радиуса r. Обратите внимание на то, что здесь мы впервые показываем пример организации простейшего диалога. Он реализован с помощью команды input:
MnputC Введите радиус окружности r='):
При выполнении этой команды вначале выводится запрос в виде
строки, затем происходит остановка работы программы и ожидается
ввод значения радиуса r (в общем случае числа). Ввод, как обычно, подтверждается нажатием клавиши Enter, после чего введенное число присваивается переменной r. Следующая строка
if
r>=0
disp('
disp(2*pi*r);end
Длина
окружности
l
=
');
с помощью команды disp при r>=0 выводит надпись «Длина окружности 1=» и вычисленное значение длины окружности. Она представляет
собой одну из наиболее простых управляющих структур типа if...end.
В данном случае она нужна для остановки вычислений, если вводится
отрицательное значение r (прием, который любят начинающие программисты).
Приведенные строки включены в управляющую структуру
while...end. Это необходимо для циклического повторения вычислений
с вводом значений r. Пока r> = 0. цикл повторяется. Но стоит задать
r < 0, вычисление длины окружности перестает выполняться, а цикл завершается.
Если данная программа записана в виде m-файла circ.m, то работа
с ней будет выглядеть следующим образом:
» circ
Введите радиус окружности R=1
Длина окружности l=
6.2832
Введите радиус окружности R=2
Длина окружности l=
12.5664
Введите радиус окружности R=-1
»
Итак, на примере даже простой программы мы видим пользу применения управляющих структур типа if...end и whi1e...end, а также
функций диалогового ввода input('String') и вывода disp. Обратите вни268
мание на завершение работы программы при вводе любого отрицательного числа для радиуса окружности.
Функция Input может использоваться и для ввода произвольных
строковых выражений. При этом она задается в следующем виде:
input('Комментарий'. V)
При выполнении этой функции она останавливает вычисления
и ожидает ввода строкового комментария. После ввода возвращается
набранная строка.
Пример 76
» S=input('Введите выражение ','s') Введите выражение (Вводим) 2*sin(l)
S =
2*sin(l)
» eval(S)
ans =
1.6829
Обратите внимание на то, что функция eval позволяет вычислить
выражение, заданное (полученное от функции input) в символьном виде.
Вообще говоря, возможность ввода любого символьного выражения
в сочетании с присущими языку программирования MATLAB управляющими структурами открывает путь к созданию диалоговых программ
любой сложности [Нужно проявлять большую осторожность при применении eval и input, так как программы с их с использованием не всегда возможно компилировать. Впрочем, р-коды таких программ можно использовать с сервером run-time].
Условный оператор
Условный оператор if в общем виде записывается следующим образом:
if Условие
Инструкции_1
elself Условие
Инструкции_2
else
Инструкции_3
end
Эта конструкция допускает несколько частных вариантов. В простейшем, типа! f...end: if Условие Инструкции end
Пока Условие возвращает логическое значение 1 (т.е. «истина»),
выполняются Инструкции, составляющие тело структуры if...end. При
269
этом оператор end указывает на конец перечня инструкций. Инструкции
в списке разделяются оператором, (запятая) или ; (точка с запятой). Если Условие не выполняется (дает логическое значение 0, «ложь»), то
Инструкции также не выполняются.
Еще одна конструкция
if Условие
Инструкции_1
else
Инструкции_2
end
выполняет Инструкции_1, если выполняется Условие, или Инструкции_2 в противном случае.
Условия записываются в виде:
Выражение_1 Оператор_отношения Выражение_2,
причем в качестве Операторов_отношения используются следующие
операторы: ==, <, >, <=, >= или ~=. Все эти операторы представляют собой пары символов без пробелов между ними.
Мы уже неоднократно показывали применение этой общеизвестной
управляющей структуры в программных модулях. Читателю предлагается
опробовать собственные варианты программ с условным оператором.
Циклы типа for...end
Циклы типа for...end обычно используются для организации вычислений с заданным числом повторяющихся циклов. Конструкция такого
цикла имеет следующий вид:
for vаг=Выражение. Инструкция. .... Инструкция end
Выражение чаще всего записывается в виде s:d:e, где s – начальное
значение переменной цикла var, d – приращение этой переменной и е –
конечное значение управляющей переменной, при достижении которого
цикл завершается. Возможна и запись в виде s :е (в этом случае d=l).
Список выполняемых в цикле инструкций завершается оператором end.
Следующие примеры поясняют применение цикла для получения
квадратов значений переменной цикла/
Примр 77
» for 1=1:5 i^2. end;
ans =
1
ans =
4
ans =
9
270
ans =
16
ans =
25
» for x=0:.25:1 Х
ans =
0
ans =
0.0625
ans =
0.2500
ans =
0.5625
ans =
1
^
2, end:
Оператор continue передает управление в следующую итерацию
цикла, пропуская операторы, которые записаны за ним, причем во вложенном цикле он передает управление на следующую итерацию основного цикла. Оператор break может использоваться для досрочного прерывания выполнения цикла. Как только он встречается в программе,
цикл прерывается. Возможны вложенные циклы, например:
for i=1:3
for j=l:3
A(1.j)=i+j;
end
end
В результате выполнения этого цикла (файл for2.m) формируется
матрица А:
»
»
А
2
3
4
»
for2
А
=
3 4
4 5
5 6
Следует отметить, что формирование матриц с помощью оператора
: (двоеточие) обычно занимает намного меньше времени, чем с помощью цикла. Однако применение цикла нередко оказывается более
наглядным и понятным. MATLAB допускает использование в качестве
переменной цикла массива А размера т×п. При этом цикл выполняется
столько раз, сколько столбцов в массиве А, и на каждом шаге переменная var представляет собой вектор, соответствующий текущему столбцу
массива А:
271
» А=[1 2 3:4 5 6]
А =
1 2 3
4 5 6
» for var=A; var, end
var =
1
4
var =
2
5
var=
3
6
Циклы типа while...end
Цикл типа while выполняется до тех пор, пока выполняется Условие:
while Условие Инструкции end
Пример применения цикла while уже приводился. Досрочное завершение циклов реализуется с помощью операторов break или continue.
Конструкция переключателя
Для осуществления множественного выбора (или ветвления) используется конструкция с переключателем типа switch:
switch switch_Bыражение
case саsе_Выражение
Список_инструкций
case {саsе_Выражение1, Саsе_выражение2, саsе_ВыражениеЗ....}
Список_инструкций
otherwise. Список_инструкций end
Если выражение после заголовка switch имеет значение одного из
выражений са5е_Выражение..., то выполняется блок операторов case,
в противном случае – список инструкций после оператора otherwise.
При выполнении блока case исполняются те списки инструкций, для которых сазе_Выражение совпадает со switch_Bыpaжением. Обратите
внимание на то, что сазе_Выражение может быть числом, константой,
переменной, вектором ячеек или даже строчной переменной. В последнем случае оператор case истинен, если функция strcmp (значение, выражение) возвращает логическое значение «истине».
Поясним применение оператора switch на примере m-файла swl.m.
Пример 78
switch van
case {1,2,3}
272
dispCПервый квартал')
case {4,5,6}
disp('Второй квартал')
case {7,8,9}
d.isp( 'Третий квартал')
case {10.11,12}
dispC Четвертый квартал')
otherwise
disp('Ошибка в задании')
end
Эта программа в ответ на значения переменной van – номера месяца – вычисляет, к какому кварталу относится заданный месяц, и выводит соответствующее сообщение:
» var=2;
» swl
Первый квартал
» var=4;swl
Второй квартал
» var=7:swl
Третий квартал
» var=12;swl
Четвертый квартал
» var=-l;swl
Ошибка в задании
Конструкция try...catch...end
В MATLAB 6 введена новая конструкция блока вывода ошибок
try...catch...end:
try
Список инструкций
Список инструкций catch
Список инструкций
...
Список инструкций
end
Эта конструкция выполняет все списки инструкций. Если в каком-то
списке до оператора catch появляется ошибка, то выводится сообщение об
ошибке, но системная переменная последней ошибки lasterr не меняется.
В сообщениях после catch сообщения об ошибке не выводятся.
В следующем примере задано появление ошибки (переменная ааа
не определена), после чего выполняется блок try...catch...end.
Пример 78
273
ааа
??? Undefined function or variable 'ааа'.
try
2+3:
3+4:
2/0: catch
4+5: end:
Warning: Divide by zero.
»lasterr ans = Undefined function or variable 'aaa'.
Обратите внимание, что в конце блока команда lasterr выводит ее
начальное значение. А в другом примере ошибка задана в блоке
try...catch...end уже после оператора catch:
» try
2+3:
3+4;
4+5: catch
5/0:
end:
» lasterr
ans = Undefined function or variable 'aaa'.
Как нетрудно заметить, на этот раз ошибка в вычислении 5/0
не выводится, а значение lasterr осталось тем, что было изначально.
Создание паузы в вычислениях
Для остановки программы используется оператор pause. Он используется в следующих формах:
 pause – останавливает вычисления до нажатия любой клавиши;
 pause(N) – останавливает вычисления на N секунд;
 pause on – включает режим отработки пауз;
 pause off – выключает режим отработки пауз.
Следующий пример поясняет применение команды pause.
Пример 79
for i=1:20;
х =rand(1,40);
у =rand(1,40);
z = sin(x.*y);
tri = delaunay(x.y);
trisurf(tri,x,y,z)
paused);
end
274
Команда paused) здесь обеспечивает показ 20 рисунков – построений трехмерных поверхностей из треугольных окрашенных областей со
случайными параметрами.
8.2.13. Simulink for Windows
Пакет расширения Simulink служит для имитационного моделирования моделей, состоящих из графических блоков с заданными свойствами (параметрами). Компоненты моделей, в свою очередь, являются
графическими блоками и моделями, которые содержатся в ряде библиотек и с помощью мыши могут переноситься в основное окно и соединяться друг с другом необходимыми связями. В состав моделей могут
включаться источники сигналов различного вида, виртуальные регистрирующие приборы, графические средства анимации. Двойной щелчок мышью на блоке модели выводит окно со списком его параметров,
которые пользователь может менять. Запуск имитации обеспечивает математическое моделирование построенной модели с наглядным визуальным представлением результатов. Пакет основан на построении
блочных схем путем переноса блоков из библиотеки компонентов в окно редактирования создаваемой пользователем модели. Затем модель
запускается на выполнение. На рис. 88 показан процесс моделирования
простой системы – гидравлического цилиндра. Контроль осуществляется с помощью виртуальных осциллографов – на рис. 88 видны экраны
двух таких осциллографов и окно простой подсистемы модели. Возможно моделирование сложных систем, состоящих из множества подсистем.
Simulink составляет и решает уравнения состояния модели и позволяет подключать в нужные ее точки разнообразные виртуальные измерительные приборы. Поражает наглядность представления результатов
моделирования. Более подробное описание пакета расширения MatLab
Simulink представлено в учебно-методическом пособии «Информационные технологии. Работа в MatCAD и MatLab».
Основным нововведением является обработка матричных сигналов.
Добавлены отдельные пакеты повышения производительности Simulink,
такие как Simulink Accelerator для компиляции кода моделей, Simulink
profiler для анализа кода и т.д.
275
Рис. 88. Пример моделирования системы гидравлического цилиндра
с помощью расширения Simulink
276
8.3. Вопросы для самоконтроля
1. Учёный, который первый задумал и первоначально написал
Mathcad?
2. Панель инструментов, содержащая функции работы с матрицами в MathCAD.
3. Наиболее используемые программные комплексы, сравнимые с
MathCAD.
4. Последовательность действий при построении графика функции
в декартовой системе координат в пакете MathCAD.
5. Результат работы программы при x=5
6. Виды программирования, реализованные в MatLab.
7. Основные типы данных MatLab.
8. Каким знаком разделяются строки матриц при их записи в пакете MatLab?
9. Чем M-файл функция отличается от M-файла скрипта, созданные в MatLab?
10.Для каких целей используется пакет расширения Simulink пакета MatLab?
277
СПИСОК ЛИТЕРАТУРЫ
1. Дьяконов В. Математические пакеты расширения MATLAB.
Специальный справочник / В. Дьяконов, В. Круглов. – СПб.: Питер,
2001. – 480 с.
2. Дьяконов В.П. MATLAB 6/6.1/6.5 + Simulink 4/5: Основы применения: полное руководство пользователя. – М.: СОЛОН-Пресс, 2002.
– 768 с.
3. Дьяконов В. SIMULINK 4. Специальный справочник. – СПб.:
Питер, 2002. – 528 с.
4. Херхагер М. MathCAD 2000: полное руководство: пер. с нем. /
М. Херхагер, Х. Партолль. – Киев: Издательская группа BHV, 2000. –
416 с.
5. Математический пакет MathCad [Электронный ресурс]. – Режим
доступа: http://ru.wikipedia.org/wiki/MathCad (дата обращения: 30.09.2011).
6. Матричная лаборатория MatLab [Электронный ресурс]. – Режим
доступа: http://www.matlab6.ru/ (дата обращения: 28.09.2011).
7. Мэтьюз Д.Г. Численные методы. Использование MATLAB: пер.
с англ. / Д.Г. Мэтьюз, К.Д. Финк.– М.: Изд. Дом «Вильямс», 2001. –
720с.
8. Компьютерная математика [Электронный ресурс]. – Режим доступа: http://pers.narod.ru/study/mathcad/01.html (дата обращения: 30.09.2011).
9. Шафрин Ю.А. Информационные технологии: в 2-х т. Ч. 1. Основы информатики и информационных технологий. – М.: Лаборатория базовых знаний, 1999. – 320 с.
10. Шафрин Ю.А. Информационные технологии: в 2-х т. Ч. 2.
Офисная технология и информационные системы. – М.: Лаборатория
базовых знаний, 1999. – 336 с.
11.Определения информационных технологий [Электронный ресурс].
– Режим доступа: http://kon-maksim.narod.ru/ (дата обращения: 29.09.2011).
12. Электронный учебник по MathCad [Электронный ресурс]. –
URL: http://detc.usu.ru/Assets/aMATH0021/L6.htm (дата обращения:
28.09.2012).
278
Учебное издание
МАМОНОВА Татьяна Егоровна
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
Учебное пособие
Издано в авторской редакции
Научный редактор
доктор технических наук,
профессор А.М. Малышенко
Редактор
Компьютерная Верстка Л.А. Егорова
Дизайн обложки А.И. Сидоренко
Отпечатано в Издательстве ТПУ в полном соответствии
с качеством предоставленного оригинал-макета
Подписано к печати
Формат 60×84/16.
Бумага «Снегурочка». Печать Xerox.
Усл. печ.л. 15,70. Уч.-изд.л. 14,21.
Заказ
. Тираж
экз.
Национальный исследовательский
Томский политехнический университет
Система менеджмента качества
Издательства Томского политехнического университета сертифицирована
NATIONAL QUALITY ASSURANCE по стандарту BS EN ISO 9001:2008
. 634050, г. Томск, пр. Ленина, 30.
Тел./факс: 8(3822)56-35-35, www.tpu.ru
279
Похожие документы
Скачать