ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования «Уральский государственный университет им. А.М. Горького» ИОНЦ «Бизнес - информатика» Математико-механический факультет Кафедра вычислительной математики ПРИКЛАДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ДЛЯ РЕШЕНИЯ ЭКОНОМИЧЕСКИХ ЗАДАЧ Учебно-методическое пособие Екатеринбург 2008 Методическое пособие подготовлено кафедрой вычислительной математики Данное пособие предназначено для студентов специальности «Бизнес – информатика» дневной формы обучения. В нем рассматриваются некоторые экономические модели, их реализация с помощью популярных математических пакетов. Описаны основные возможности математических пакетов MS EXCEL, MAPLE, MATHCAD. Приведен необходимый минимум теоретического материала по математическому моделированию экономических процессов и рассмотрено достаточное количество примеров, что поможет студентам в самостоятельной работе по освоению данного курса и будет полезно при выполнении лабораторных работ. © Коврижных А.Ю., Конончук Е.А., Лузина Г.Е., Меленцова Ю.А. 2 ОГЛАВЛЕНИЕ ВВЕДЕНИЕ ................................................................................................................5 ЭКОНОМИЧЕСКОЕ МОДЕЛИРОВАНИЕ СРЕДСТВАМИ MS EXCEL....7 1.ВИЗУАЛИЗАЦИЯ ДАННЫХ. ......................................................................................7 2. РЕШЕНИЕ УРАВНЕНИЙ С ПОМОЩЬЮ ПРОЦЕДУРЫ «ПОДБОР ПАРАМЕТРА»..........19 3. РЕШЕНИЕ ЗАДАЧ ЛИНЕЙНОЙ АЛГЕБРЫ. ...............................................................23 4. ЗАДАЧИ ОПТИМИЗАЦИИ.......................................................................................41 5. AППРОКСИМАЦИЯ ЭКСПЕРИМЕНТАЛЬНЫХ ДАННЫХ ...........................................52 6. РЕШЕНИЕ ЗАДАЧИ КОММИВОЯЖЕРА....................................................................68 7. РЕШЕНИЕ ЗАДАЧИ О МАКСИМАЛЬНОМ ПОТОКЕ И МИНИМАЛЬНОМ РАЗРЕЗЕ.......72 8. РЕШЕНИЕ ЗАДАЧИ О ПОИСКЕ КРАТЧАЙШЕГО ПУТИ .............................................75 ЭКОНОМИЧЕСКОЕ МОДЕЛИРОВАНИЕ СРЕДСТВАМИ MAPLE ........79 1. ВОЗМОЖНОСТИ ПАКЕТА. .....................................................................................79 1. Пользовательский интерфейс .....................................................................79 2. Графика на плоскости ..................................................................................89 3. Решение задач линейной алгебры.................................................................98 4. Решение уравнений и неравенств ............................................................. 102 5. Нахождение эстремумов функции........................................................... 112 6. Интегрирование.......................................................................................... 112 7. Решение дифференциальных уравнений................................................... 114 2. ПРИЛОЖЕНИЕ ПАКЕТА MAPLE К РЕШЕНИЮ ЭКОНОМИЧЕСКИХ ЗАДАЧ. ........... 119 1. Использование алгебры матриц................................................................ 119 2. Использование систем линейных уравнений............................................ 123 4. Графики функций и их приложения.......................................................... 125 4. Использование понятия производной ....................................................... 126 5. Задачи на экстремум. ............................................................................... 129 6. Определенный интеграл и его приложения ............................................. 133 7. Дифференциальные уравнения. ................................................................. 136 ЭКОНОМИЧЕСКОЕ МОДЕЛИРОВАНИЕ СРЕДСТВАМИ ПАКЕТА MATHCAD ............................................................................................................ 139 1. ВОЗМОЖНОСТИ ПАКЕТА. .................................................................................. 140 1. Элементы пользовательского интерфейса............................................. 140 2. Простые вычисления в MathCAD ............................................................. 142 3. Построение графиков функций................................................................. 143 3 4. Матричные вычисления ............................................................................. 146 5. Решение алгебраических уравнений.......................................................... 147 6. Решение систем линейных алгебраических уравнений ........................... 149 7. Дифференцирование в MathCAD............................................................... 150 8. Интегрирование в MathCAD ..................................................................... 151 2. МОДЕЛИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ СРЕДСТВ MATHCAD ........................ 152 1. Статические балансовые модели............................................................. 152 2. Некоторые модели экономической динамики ......................................... 156 3. Паутинообразная модель рынка............................................................... 157 4. Модель экономического роста.................................................................. 162 5. Финансовые расчеты в среде MathCAD. ................................................. 165 СПИСОК ЛИТЕРАТУРЫ ................................................................................. 169 4 ВВЕДЕНИЕ Математика играет важную роль в естественнонаучных, инженерно-технических и гуманитарных исследованиях. Она является не только орудием количественного расчета, но также методом точного исследования и средством предельно четкой формулировки понятий и проблем. Математический аппарат широко используется в современных экономических приложениях. В настоящее время для решения прикладных задач используется различное программное обеспечение, в частности, электронные таблицы, которые позволяют представлять таблицы в электронной форме и обрабатывать данные без проведения расчетов вручную (наиболее распространенным средством работы с таблицами является программа Microsoft Excel), и программные системы символьной компьютерной математики (наиболее известны MathСad, Derive, Maple). Использование математического обеспечения при решении экономических задач: − упрощает процесс вычисления; − позволяет использовать предложенный набор операторов для решения многих однотипных задач; − позволяет решать задачи с параметрами и проводить анализ и подбор параметров. Но, несмотря на удобства, предоставляемые пакетами прикладных программ, все рассмотренные примеры демонстрируют, что, не овладев предметной областью и фундаментальными математическими понятиями, решить их невозможно. Моделирование является одним из методов научного познания. Математическая модель позволяет экономить материальные ресурсы и предоставляет возможность изучать поведение системы в заданных экспериментатором условиях. Использование математических методов в 5 экономике восходит к работам Ф. Кенэ («Экономическая таблица»), А. Смита (классическая макроэкономическая модель), Д. Риккардо (модель международной торговли). Моделированию рыночной экономики посвящены работы Л. Вальраса, О. Курно, В. Парето. С применением В.В. Леонтьева, математических Р. Солоу, методов П. Самуэльсона, Д. Хикса, связаны работы В.С Немчинова, В.В Новожилова, Л.В. Канторовича и многих других выдающихся ученых. Примерами экономических моделей являются модели фирмы, модели экономического роста, модели потребительского выбора, модели равновесия на финансовых и товарных рынках. Построение экономической модели требует выполнения ряда шагов. Сначала формулируется предмет и цель исследования. Затем экономисты выявляют структурные и функциональные элементы модели, взаимосвязи между ними, существенные факторы, отвечающие цели исследования и отбрасывают то, что несущественно для решения задачи. На заключительном этапе проводятся расчеты математической модели и анализ полученного решения. При этом по могут применяться средства пакетов прикладных программ. Цель данного пособия – продемонстрировать возможности задач, возникающих в экономическом моделировании, решения с использованием специализированных пакетов. Далее мы рассмотрим, как используется математический аппарат в экономике, и какие возможности для решения этих задач предоставляют MS Excel, MathCAD и Maple. 6 ЭКОНОМИЧЕСКОЕ МОДЕЛИРОВАНИЕ СРЕДСТВАМИ MS EXCEL Существует значительное количество специализированных математических пакетов. Все они позволяют проводить подавляющее большинство необходимых математических расчетов. Однако самостоятельное освоение этих пакетов достаточно трудоемкая задача. В то же время в курс информатики в большинстве вузов включено изучение электронной таблицы Excel. Поэтому представляется актуальным рассмотрение материала учебного пособия по применению математических методов в экономике именно с помощью пакета Excel. Конечно, это программное средство значительно уступает специализированным математическим пакетам. Тем не менее, большое количество экономико-математических задач может быть решено с его помощью. Для выполнения рассмотренных примеров желательно предварительное знакомство с пакетом MS Excel, хотя их описание дается достаточно подробно. Все приведенные примеры даны с решениями в русифицированной версии MS Excel 2003. 1.Визуализация данных. MS Excel предоставляет широкие возможности визуализации различных зависимостей. В нем удобно осуществлять построение кривых на плоскости и поверхностей в пространстве. В MS Excel для построения кривых и поверхностей используется специальный инструмент — Мастер диаграмм. Для построения с его помощью графика функции необходимо ввести точки соответствующие аргументам и значениям функции в рабочую таблицу, вызвать Мастер диаграмм, задать тип диаграммы, диапазоны данных и подписей по оси х, ввести названия осей. Более подробно с применением Мастера диаграмм познакомимся в ходе решения конкретных примеров. 7 Пример 1.1. Рассмотрим построение графика функции на примере кривой Лоренца, которая по данным исследований о распределении доходов в одной из стран может 2 быть описана уравнением: y = 1 − 1 − x , где x – доля населения, y – доля доходов населения. для значений x из диапазона [0, 1], если аргумент изменяется с шагом h = 0,1. Решение. Задача построения любой диаграммы в Ехсеl обычно разбивается на несколько этапов. Пусть после запуска пакета открыт чистый рабочий лист. 1. Ввод данных. Необходимо составить таблицу данных (х и у) в рабочем окне таблицы Excel. Пусть в рассматриваемом примере в первом столбце будут значения х, а во втором — соответствующие значения у. Для этого в ячейку А1 вводим текст: Значение аргумента, а в ячейку B1 — текст: Значение функции. Начнем с введения значений аргумента. В ячейку А2 вводится первое значение аргумента — левая граница диапазона (0). В ячейку A3 вводится второе значение аргумента — левая граница диапазона плюс шаг построения (0,1). Затем, выделив блок ячеек А2:АЗ, с помощью автозаполнения, получаем все значения аргумента (за маркер автозаполнения указатель мыши с нажатой левой клавишей протягиваем до ячейки А12). Далее вводим значения функции. В ячейку В2 вводим ее формулу: =1- СТЕПЕНЬ(1-A2*A2;0,5). Затем с помощью автозаполнения копируем эту формулу в диапазон В2:В12. В результате должна быть получена следующая таблица (рис. 1.1). Рис.1.1 8 2. Выбор типа диаграммы. На панели инструмента Стандартная необходимо нажать кнопку Мастер диаграмм. В появившемся диалоговом окне «Мастер диаграмм (шаг 1 из 4): тип диаграммы» указать тип и вид диаграммы. В диалоговом окне слева приведен список типов диаграмм, справа дается вид вариантов. Для указания типа диаграммы необходимо вначале выбрать тип в левом списке (с помощью указателя мыши и щелчка левой кнопкой), а затем выбрать подтип диаграммы в правом окне (щелчком левой кнопки мыши на выбранном подтипе). В рассматриваемом примере выберем тип – Точечная, вид – График с маркерами. Рис.1.2 После чего нажимаем кнопку Далее в диалоговом окне (рис. 1.2). 3. Указание диапазона. В появившемся диалоговом окне «Мастер диаграмм (шаг 2 из 4): источник данных» диаграммы необходимо выбрать вкладку Диапазон данных и в поле Диапазон указать интервал данных, то есть ввести ссылку на ячейки, содержащие данные, которые необходимо представить на диаграмме. Это можно сделать, выделив столбцы таблицы, содержащие координаты точек. Можно сделать это и до вызова Мастера диаграмм. 9 Рис.1.3 Определение диапазона (интервала) данных является самым ответственным моментом построения диаграммы. Здесь необходимо указать только те данные, которые должны быть изображены на диаграмме. Кроме того, для введения поясняющих надписей (легенды), они также должны быть включены в диапазон. Значения из самого левого столбца автоматически становятся значениями аргумента. Рис.1.4 4. Введение заголовков. В третьем окне «Мастер диаграмм (шаг 3 из 4): параметры диаграммы» требуется ввести заголовок диаграммы и названия осей. Для этого необходимо выбрать вкладку Заголовки, щелкнув на ней указателем мыши. Далее, в том же окне необходимо выбрать вкладку Легенда и указать необходима ли легенда (смысловая расшифровка значений 10 на графике). Щелчком мыши устанавливаем флажок в поле Добавить легенду. После чего нажать кнопку Далее. Рис.1.5 5. Выбор места размещения. В четвертом окне «Мастер диаграмм (шаг 4 из 4): размещение диаграммы» необходимо указать место размещения диаграммы. Для этого переключатель Поместить диаграмму на листе установить в нужное положение (на отдельном или текущем листе). Рис.1.6 6. Завершение. Если диаграмма в демонстрационном поле имеет желаемый вид, необходимо нажать кнопку Готово. В противном случае следует нажать кнопку Назад и изменить установки. В нашем примере нажимаем кнопку Готово и на текущем листе должна появиться следующая диаграмма (рис 1.7). 11 Кривая Лоренца Доля доходов населения 1 0,9 0,8 0,7 0,6 0,5 0,4 0,3 0,2 0,1 0 0 0,2 0,4 0,6 0,8 1 Доля населения Рис.1.7 Таким же способом можно построить графики нескольких функций в одной координатной сетке. Пример 1.2.Рассмотрим построение графика двух функций на примере: у1 =x2 - 2x + 1 и у2 = 2sinx + 1. Пусть необходимо построить графики для значений x из диапазона [-2, 3], если аргумент изменяется с шагом h = 0,25. Решение. Пусть в рассматриваемом примере первый столбец будет значениями х, второй и третий соответствующими значениями у1 и у2. Для этого в ячейку А1 вводим текст: Значение аргумента, в ячейку B1 — текст: Значение функции1, в ячейку C1 — текст: Значение функции2. Начнем с введения значений аргумента. В ячейку А2 вводится первое значение аргумента — левая граница диапазона (-2). В ячейку A3 вводится второе значение аргумента — левая граница диапазона плюс шаг построения (0,25). Затем, выделив блок ячеек А2:АЗ, с помощью автозаполнения, получаем все значения аргумента. Далее вводим значения функции1. В ячейку В2 вводим ее формулу: =А2^2 – 2*А2 + 1. Затем с помощью автозаполнения копируем эту формулу в диапазон В2:В22. Вводим значения функции2: в ячейку С2 вводим ее 12 формулу: =2*sin(А2) + 1. Затем с помощью автозаполнения копируем эту формулу в диапазон C2:C22. В результате должна быть получена следующая таблица (рис. 1.8). Рис.1.8 Выполним последовательно все перечисленные примере 1.1. этапы. При отдельном размещении мы получим новый лист рабочей книги, который по умолчанию называется «Диаграмма1». На нем представлены графики двух заданных функций, различающиеся по цвету (рис.1.9). Рис.1.9 13 Графическое решение систем уравнений Системы уравнений с двумя неизвестными могут быть приближенно решены графически. Их решением являются координаты точки пересечения линий, соответствующих уравнениям системы. При этом точность решения будет определяться величиной шага дискретизации (чем шаг меньше, тем точность выше). Рассмотрим примеры графического решения системы двух уравнений. Пример 1.3. Пусть необходимо найти решение системы ⎧⎪ y = 2 cos x ⎨ y = sin x ⎪⎩ 2 Для 0 ≤ х ≤ 3, изменяющимся с шагом h = 0,2. Решение. Для построения графиков функций правых частей первого и второго уравнений воспользуемся приемом из примера 1.2. Получим следующую картинку (рис.1.10). Рис.1.10 Если подвести указатель мыши к точке пересечения графиков, всплывет координата этой точки – значение x решения системы. Для уточнения решения можно изменить параметры сетки, с помощью диалогового окна (рис.1.11). Оно вызывается из контекстного меню, возникающего при щелчке правой кнопкой по линии сетки. 14 Рис.1.11 Подобным образом можно изменить другие характеристики графика. Пример 1.4. Зависимость спроса (у) на некоторый товар от его цены (х) выражается уравнением y= 2 + 2, x а зависимость предложения от цены товара — уравнением z = x2 + 1. Необходимо найти точку равновесия в диапазоне x ∈ [0.2; 3] с шагом h = 0.2. Решение. Точка равновесия — это точка пересечения кривых спроса и предложения. Для построения этих кривых, прежде всего, необходимо ввести данные в рабочую таблицу. Вводим в ячейку А1 слово Цена. Затем в ячейку А2 — первое значение аргумента — 0.2. Далее будем вводить значения аргумента с шагом 0.2. Далее требуется ввести значения функции (спроса). В ячейку В1 заносим слово Спрос и устанавливаем табличный курсор в ячейку В2. Здесь должно оказаться значение спроса соответствующее значению цены в ячейке А2. Для получения значения спроса вводим формулу, которая выглядит следующим образом: 15 = 2/А2 + 2 Нажимаем клавишу Enter. В ячейке В2 появляется 12. Теперь необходимо скопировать формулу из ячейки В2 в ячейки ВЗ:В1. Осуществляем это автозаполнением. Аналогично получаем значения предложения. В ячейку С1 вводим имя функции — Предложение. Устанавливаем табличный курсор в ячейку С2. Для получения значения предложения вводим формулу, которая выглядит следующим образом: =А2^2 + 1. Нажимаем клавишу Enter. В ячейке С2 появляется 1,04. Теперь необходимо скопировать формулу из ячейки С2 в ячейки С3:С16. Осуществляем это автозаполнением. Далее по введенным в рабочую таблицу данным необходимо построить диаграмму. Делаем это подобно предыдущему примеру. В результате получено изображение кривых спроса и предложения (рис.1.12). Рис.1.12 Как видно из диаграммы, система имеет точку равновесия (это есть точка пересечения), и она единственная (в заданном диапазоне имеется только одна точка пересечения). Таким образом, решением системы в заданном диапазоне являются координаты точки пересечения кривых. Для их нахождения необходимо навести указатель мыши на точку пересечения и щелкнуть левой кнопкой. Появляется надпись с указанием искомых координат. Итак, 16 приближенное решение — точка равновесия имеет координаты : x = 1.6;у = 3.25. Построение плоскости. MS Excel позволяет выполнять построение и пространственных объектов. Рассмотрим эту возможность на примере построения плоскости Уравнение вида: Ах + Ву + Cz + D = 0 (1.1) называется общим уравнением плоскости. Мастер диаграмм может быть также использован и для построения плоскостей. Для этого необходимо ввести точки плоскости в рабочую таблицу, вызвать Мастер диаграмм, задать тип диаграммы, диапазоны данных и подписей оси. Пример 1.5. Рассмотрим построение плоскости в Excel, если она задана уравнением вида (1.1): 2·х – 4·у – 2·z + 2 = 0. Пусть необходимо построить часть плоскости, лежащей в первой четверти х ∈ [0; 6] с шагом h1 = 0.5, .у ∈ [0; 6] с шагом h2 = 1). Решение. Вначале необходимо разрешить уравнение относительно переменной z. В нашем примере z =·х – 2·у + 1. 1. Введем значения переменной х в столбец А (начиная с ячейки А2). 2. Значения переменной у вводим в строку 1 (начиная с ячейки В1). 3. Далее вводим значения переменной z. В ячейку В2 вводим ее уравнение = $A2 + 2*В$1 + 1. Обращаем внимание, что символы $ предназначены для фиксации адреса столбца А — переменной х и строки 1 — переменной у. Затем автозаполненнем копируем эту формулу вначале в диапазон В2:Н2. после чего — в диапазон ВЗ:Н14 (протягиванием вниз) 4. В результате должна быть получена следующая таблица (рис.1.13). 17 Рис.1.13 5. Выделяем мышью диапазон А1:Н14. Обращаемся к Мастеру диаграмм. В появившемся диалоговом окне Мастер диаграмм (шаг 1 из 4): тип диаграммы указываем тип диаграммы – Поверхность, и вид — Проволочная (прозрачная) поверхность (правую верхнюю диаграмму в правом окне). После чего нажимаем кнопку Далее. Рис.1.14 6. В этом примере переключатель Ряды установим в положение «в столбцах». Затем указываем название диаграммы и осей. Полученная диаграмма имеет вид (рис.1.15) 18 Плоскость 20 18 16 14 12 значения z 10 8 6 4 2 0 0 значения x 6 5 4 3 3 2 1 0 6 значения y Рис.1.15 2. Решение уравнений с помощью процедуры «подбор параметра». В MS Excel для решения уравнений вида f(x) = 0 используется удобный и простой для понимания инструмент Подбор параметра. Процесс решения с помощью процедуры Подбор параметра распадается на два этапа: 1. Задание на рабочем листе ячейки, содержащей значение независимой переменной решаемого уравнения (так называемой влияющей ячейки), и ячейки содержащей формулу уравнения (зависящей или целевой ячейки). 2. Ввод адресов влияющей и целевой ячеек в диалоговом окне Подбор параметра и получение ответа (или сообщения о его отсутствии или невозможности нахождения, поскольку уравнение может не иметь решений или алгоритм решения (оптимизации) может оказаться 19 расходящимся в конкретных условиях). Рассмотрим этот процесс на конкретном примере. Пример 2.1. Найти решение уравнения ln(x)=0. Решение: Первый этап 1. Открываем новый рабочий лист (команда Вставка → Лист). 2. Заносим в ячейку А1 ориентировочное значение корня, например, 3. 3. Заносим в ячейку В1 левую часть уравнения, используя в качестве независимой переменной ссылку на ячейку Al. Для этого нажимаем на панели инструментов Стандартная кнопку Вставка функции; в появившемся диалоговом окне Мастер функций в рабочем поле Категория выбираем Математические, а в рабочем поле Функция имя функции LN. После чего щелкаем на кнопке ОК; в рабочее поле Число щелчком мыши на ячейке А1 вводим ее адрес. Затем, нажимаем на кнопку ОК. В ячейке В1 появляется число 1,098612(рис.2.1). Рис.2.1 Второй этап 1. Вызываем процедуру Подбор параметра (команда Сервис → Подбор параметра). 2. В поле Установить в ячейке мышью указываем В1, в поле Значение задаем 0 (правая часть уравнения), в поле Изменяя значение ячейки мышью указываем на А1 (рис.2.2). 20 Рис.2.2 3. Щелкаем на кнопке ОК и получаем результат подбора, отображаемый в диалоговом окне Результат подбора параметра. Щелкаем на кнопке ОК. чтобы сохранить порученные значения ячеек, участвовавших в операции. В ячейке Al получаем приближенное значение х = 0,999872 (рис.2.3). При этом обратим внимание на погрешность решения (значение правой части уравнения) — вместо 0 в ячейке В1 получаем 0,00013. Рис.2.3 Таким образом, при значении х = 0,999872 правая часть уравнения lп(х) = 0 приближается к нулю (-0,00013). Принимая во внимание, что полученный корень это приближенное решение, его можно округлить до 1, то есть х = 1, что и является известным аналитическим решением этого уравнения. При решении уравнений, имеющих несколько действительных корней, имеет смысл предварительно построить график левой части (функции f(x) ). Это позволит правильно подобрать начальные значения параметра. Пример 2.2. Найти решение уравнения х2 - 4х +2 = 0. Решение. 2 1. Строим график функции y = х - 4х +2 (рис.2.4). 21 8 7 6 5 4 3 2 1 0 2 -1 0 2 4 6 -2 -3 Рис.2.4 Из него следует, что уравнение имеет два действительных корня Решение начинаем с нахождения первого корня. 2. Открываем новый рабочий лист (команда: Вставка → Лист). 3. Заносим в ячейку А1 ориентировочное значение первого корня, например, 3. 4. Заносим в ячейку В1 левую часть уравнения, используя в качестве независимой переменной ссылку на ячейку А1. Соответствующая формула будет иметь вид: =А1^2-4*А1+2. 5. Вызываем процедуру Подбор параметра (команда Сервис → Подбор параметра). 6. В поле Установить в ячейке указываем В1, в поле Значение задаем 0 (правая часть уравнения), в поле Изменяя значение ячейки указываем ячейку А1. 22 Рис.2.5 7. Щелкаем на кнопке 0К и получаем результат подбора, отображаемый в диалоговом окне Результат подбора параметра. Щелкаем на кнопке 0К, чтобы сохранить полученные значения ячеек, участвовавших в операции. Таким образом, в ячейке А1 получаем приближенное значение х1 = 3,414212 (рис.2.5). При этом обратим внимание на точность решения (значение правой части уравнения): вместо 0 в ячейке В1 получаем: -5,7Е-06 (-0,0000057). 8. Повторяем расчет для второго корня х2, задавая в ячейке А1 другое начальное значение, например -3. Получаем значение второго корня уравнения х2 = 0,5857730 ; значение функции правой части для него равно 3,78705E-05 (рис.2.6) Рис.2.6 3. Решение задач линейной алгебры. Средства MS Excel оказываются полезны и для решения задач линейной алгебры, прежде всего для операций с матрицами и для решения систем линейных уравнений. МАТРИЦЫ. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ. Значительная часть математических моделей различных объектов и процессов записывается в достаточно простой и компактной матричной форме. В частности, при решении линейных уравнений мы имеем дело с матрицами и арифметическими действиями с ними. 23 Матрицей размера т X п называется прямоугольная таблица чисел, содержащая т строк и п столбцов. Матрицы обозначаются заглавными буквами латинского алфавита. Числа, составляющие матрицу, называются элементами матрицы и обозначаются строчными буквами с двойной индексацией: аi,j где i — номер строки, j — номер столбца. Например, матрица А размера т X п может быть представлена в виде: ⎛ а11 ⎜ ⎜ а 21 А=⎜ ... ⎜ ⎜а ⎝ n1 а12 а 22 ... аn 2 ... а1m ⎞ ⎟ ... а 2 m ⎟ = (аi , j ) ... ... ⎟ ⎟ ... а nm ⎟⎠ Где i = 1,..., n; j = 1,..., m. Две матрицы А и В одного размера называются равными, если они совпадают поэлементно, го есть аi , j = bi , j для любых i = 1,..., n; j = 1,..., m. Матрица, состоящая из одной строки, называется матрицей (вектором) – строкой : А = ( а 1 , а 2 ,…, а m ) а из одного столбца — матрицей (вектором) – столбцом : ⎛ b1 ⎞ ⎜ ⎟ ⎜b ⎟ b=⎜ 2⎟ ... ⎜⎜ ⎟⎟ ⎝ bn ⎠ Если число строк матрицы равно числу столбцов и равно n, то такую матрицу называют квадратной n - го порядка. Например, квадратная матрица 2-го порядка: ⎛ 1 3⎞ A = ⎜⎜ ⎟⎟ ⎝5 4⎠ Если у элемента матрицы номер столбца (j) равен номеру строки (i), то такой элемент называется диагональным. Диагональные элементы образуют главную диагональ матрицы. Квадратная матрица с равными нулю элементами вне главной диагонали называется диагональной. Квадратная матрица называется единичной, если она диагональная, и нее диагональные элементы равны единице. Единичная матрица имеет следующий вид: 24 ⎛ 1 0 ... 0 ⎞ ⎜ ⎟ ⎜ 0 1 ... 0 ⎟ Е =⎜ ... ... ... ... ⎟ ⎜⎜ ⎟⎟ ⎝ 0 0 ... 1 ⎠ Матрица любого размера называется нулевой или нуль – матрицей, если все ее элементы равны нулю. ОПЕРАЦИИ НАД МАТРИЦАМИ Как и над числами, над матрицами можно проводить ряд операций, причем в случае с матрицами некоторые из операций являются специфическими. Транспонирование Транспонированной называется матрица (Ат), в которой столбцы исходной матрицы (А) заменяются строками с соответствующими номерами. В сокращенной записи, если А = (ai,j), то Aт= (aj,i). Например, пусть ⎛ 1 2 3⎞ ⎜ ⎟ A = ⎜ 4 5 6⎟ . ⎜ 7 8 9⎟ ⎝ ⎠ Тогда имеем: ⎛ 1 4 7⎞ ⎟ ⎜ A = ⎜ 2 5 8⎟ ⎜ 3 6 9⎟ ⎠ ⎝ т Транспонированием называется операция перехода от исходной матрицы (А) к транспонированной (АТ). Из определения транспонированной матрицы следует, что если исходная матрица А имеет размер n х m, то транспонированная матрица АТ имеет размер m x n. Для осуществления транспонирования в Excel используется функция ТРАНСП, которая позволяет поменять ориентацию массива на рабочем листе с вертикальной на горизонтальную и наоборот. Функция имеет вид: ТРАНСП(массив). Здесь массив — это транспонируемый массив или диапазон ячеек из рабочем листе. Транспонирование массива заключается в том, что первая строка массива становится первым столбцом нового массива, вторая строка массива становится вторым столбцом нового массива и т. д. Рассмотрим это на примере Пример 3.1. Предположим, что в диапазон ячеек А1:Е2 введена матрица размера 2x5 ⎛ 1 2 3 4 5⎞ A = ⎜⎜ ⎟⎟ ⎝ 6 7 8 9 0⎠ Необходимо получить транспонированную матрицу. Решение. 25 Выделите (указателем мыши при нажатой левой кнопке) блок ячеек под транспонированную матрицу (5 х 2). Например, А4:В8. Рис.3.1 1. Нажмите на панели инструментов Стандартная кнопку Вставка функции. 2. В появившемся диалоговом окне Мастер функций в рабочем поле Категория выберите Ссылки и массивы, а в рабочем поле Выберите функцию — имя функции ТРАНСП (рис.3.1). После чего щелкните по кнопке ОК. 3. Введите диапазон исходной матрицы А1:Е2 в рабочее поле Массив Рис.3.2. 26 Рис.3.3 После чего нажмите сочетание клавиш CTRL+SHIFT+ENTER В результате в диапазоне А4:В8 появится транспонированная матрица. (рис.3.3). Вычисление определителя матрицы Важной характеристикой квадратных матриц является их определитель. Определитель матрицы —это число, вычисляемое на основе значений элементов массива. Определитель матрицы А обозначается | А | или ∆(А), В MS Excel для вычисления определителя квадратной матрицы используется функция МОПРЕД. Функция имеет вид МОПРЕД(массив). Здесь массив — это числовой массив, в котором хранится матрица с равным количеством строк и столбцов. При этом массив должен быть задан как интервал ячеек, например, А1:С3; или как массив констант, например, {1;2;3;4;5;6;7;8;9;}. Рассмотрим пример нахождения определителя матрицы. Пример 3.2. Предположим, что в диапазон ячеек А1:СЗ введена матрица: ⎛ 1 2 3⎞ ⎟ ⎜ А = ⎜ 0 2 3⎟ ⎜ 1 0 3⎟ ⎠ ⎝ Необходимо вычислить определитель этой матрицы. Решение 1. Табличный курсор поставьте а ячейку, в которой требуется получитьзначение определителя, например: А4; 2. Нажмите на панели инструментов Стандартная кнопку Вставка функции. 3. В появившемся диалоговом окне Мастер функций в рабочем поле Категория выберите Математические, а в рабочем поле Функция — имя функции МОПРЕД. После этого щелкните на кнопке ОК. 27 Рис.3.4 4. Введите диапазон значений элементов исходной матрицы А1:СЗ в рабочее поле Массив. Нажмите кнопку ОК (рис.3.5). Рис. 3.5. В ячейке.А4 появится значение определителя матрицы — 6. Рис.3.6 Нахождение обратной матрицы 28 Матрица А-1 называется обратной по отношению к квадратной матрице А, если при умножении этой матрицы на данную как слева, так и справа получается единичная матрица: А· А-1 = А-1 · А = Е. Как следует из определения, обратная матрица является квадратной того же порядка, что и исходная матрица. Необходимым и достаточным условием существования обратной матрицы является невырожденность исходной матрицы. Матрица называется невырожденной или неособенной, если ее определитель отличен от нуля (|А| ≠ 0); в противном случае (при |А | = 0) матрица называется вырожденной или особенной. В MS Excel для нахождения обратной матрицы используется функция МОБР, которая вычисляет обратную матрицу для матрицы, хранящейся в таблице в виде массива. Функция имеет вид МОБР (массив). Здесь массив — это числовой массив с равным количеством строк и столбцов. Массив может быть задан как диапазон ячеек, например А1:СЗ; как массив констант, например {1;2;4;5;6;7;8;9} или как имя диапазона или массива. Рассмотрим пример нахождения обратной матрицы. Пример 3.3. Пусть в диапазон ячеек А1:СЗ введена матрица ⎛ 1 2 3⎞ ⎟ ⎜ А = ⎜ 0 2 3⎟ ⎜ 1 0 3⎟ ⎠ ⎝ Необходимо получить обратную матрицу. Решение 1. Выделите блок ячеек под обратную матрицу, например, блок ячеек А5:С7 (указателем мыши при нажатой левой кнопке). 2. Нажмите на панели инструментов Стандартная кнопку Вставка функции. В появившемся диалоговом окне Мастер функций в рабочем поле Категория выберите Математические, а в рабочем поле Функция — имя функции МОБР. Щелкните на кнопке ОК. 3. Введите диапазон исходной матрицы А1:СЗ в рабочее поле Массив (указателем мыши при нажатой левой кнопке). 29 Рис. 3.7 4. Нажмите сочетание клавиш CTRL+SHIFT+ENTER. В результате в диапазоне А5:С7 появится обратная матрица: Рис.3.8 Сложение и вычитание матриц Складывать (вычитать) можно матрицы одного размера. Суммой матриц А = (ai,j) и B = (bi,j) размера n х n называется матрица С = А+В, элементы которой ci,j = ai,j + bi,j В MS Excel для выполнения операций суммирования и вычитания матриц могут быть использованы формулы, вводимые в соответствующие ячейки. Пример 3.4. Пусть даны матрицы: ⎛1 2 7 ⎞ ⎛ 0 − 4 − 3⎞ A = ⎜⎜ ⎟⎟ , введена в диапазон А1:С2, и матрица B = ⎜⎜ ⎟⎟ — в ⎝ 9 − 1 13⎠ ⎝ 5 − 19 31 ⎠ диапазон А4:С5. Необходимо найти матрицу С, являющуюся их суммой. Решение 30 1. Табличный курсор установите в левый верхний угол результирующей матрицы, например в А7. Введите формулу для вычисления первого элемента результирующей матрицы =А1 + А4. 2. Скопируйте введенную формулу в остальные ячейки результирующей матрицы: установите табличный курсор в ячейку А7; наведите указатель мыши на точку в правом нижнем углу ячейки, так чтобы указатель мыши принял вид тонкого крестика; при нажатой левой кнопке мыши протяните указатель до ячейки С7; затем так же протяните указатель мыши до ячейки С8. Рис.3.9 3. В результате в ячейках А7:С8 появится матрица, равная сумме исходных матриц. Рис.3.9 Подобным же образом вычисляется разность матриц (2.1), только в формуле для вычисления первого элемента вместо знака + ставится знак –. Умножение матриц. Для нахождения произведения двух матриц в Excel используется функция МУМНОЖ (матрицы хранятся в массивах). Функция имеет вид МУМНОЖ (массив1;массив2). Здесь массив1 и массив2 — это перемножаемые массивы. При этом количество столбцов аргумента массив1 должно быть таким же, как количество строк аргумента массив2, и оба массива должны содержать только числа. Результатом является массив с таким же числом строк, как массив1 и с таким же числом столбцов, как массив2. 31 Массив С, который является произведением двух массивов А и В, определяется следующим образом: ci,j= ∑ a ik bkj где i — номер строки, а j — k номер столбца. Рассмотрим примеры умножения матриц. Пример 3.5. Пусть матрица А введена в диапазон A1:D3, а матрица В — в диапазон А4:В7. Необходимо найти произведение этих матриц С. Решение. 1) Выделим блок ячеек под результирующую матрицу. Для этого требуется найти размер матрицы-произведения. Ее размерность будет, в данном примере, 3х2. Например, выделим блок ячеек F1:G3. 2) Нажмем на панели инструментов Стандартная кнопку Вставка функции. 3) В появившемся диалоговом окне Мастер функций в поле Категория выберите Математические, а в поле Функция — имя функции МУМНОЖ. После этого щелкните на кнопке ОК. Рис.3.10 Введем диапазон исходной матрицы А — A1:.D3 в рабочее поле Массив1, а диапазон матрицы В — А4:В7 в рабочее поле Массив2 (рис.3.10). После этого нажмем сочетание клавиш CTRL+SHIFT+ENTER. Рис.3.11 32 В результате в диапазоне F1:G3 появится произведение матриц: Пример 3.6 Предприятие выпускает продукцию трех видов: Р1, Р2, РЗ и использует сырье двух типов S1 и S2. Нормы расхода сырья характеризуются матрицей ⎛3 2⎞ ⎟ ⎜ А = ⎜1 4⎟ , ⎜5 2⎟ ⎠ ⎝ где каждый элемент показывает, сколько единиц сырья каждого типа расходуется на производство единицы продукции. Стоимость единицы каждого типа сырья задана матрицей-столбцом ⎛ 50 ⎞ С = ⎜⎜ ⎟⎟ . ⎝ 40 ⎠ Определить стоимость затрат сырья на единицу продукции. Решение. Каждая строка матрицы соответствует определенному виду продукции, а столбец – виду сырья. Таким образом, чтобы решить задачу необходимо перемножить А и С, результат – ветор-столбец из трех элементов, каждый из которых и определяет стоимость затрат сырья на единицу каждого вида продукции. 1. Зададим элементы А в диапазоне А2:В4, А элементы С в диапазоне А7:А8. 2. Для результата выделим диапазон А12:А14. 3. Вставим функцию МУМНОЖ, указав диапазоны исходных данных. В результате имеем (рис.3.12): стоимость затрат сырья на единицу продукции Р1 равна 170; стоимость затрат сырья на единицу продукции Р2 равна 190; стоимость затрат сырья на единицу продукции Р3 равна 230. Рис.3.12 33 Решение систем линейных уравнений Многие прикладные задачи в технике, экономике и других областям сводятся к решению систем линейных уравнений, поэтому особенно важно уметь их решать. Пусть дана линейная система n уравнений с n неизвестными, где aij(„(i = 1,2....,n ;j = 1.2.....п) – коэффициенты при переменных и bi - свободные члены уравнений. ⎧ a11 x1 + a12 x 2 + ... + a1n xn = b1 ⎪ a x + a x + ... + a x =b ⎪ 21 1 22 2 2n n 2 ⎨ ⎪ ............................................. ⎪⎩a n1 x1 + a n 2 x 2 + ... + a nn x n = bn (3.1) Решением системы (1) называется такая совокупность п чисел (x1, x2,. . . ,xn ), при подстановке которых каждое уравнение системы обращается в верное равенство. Две системы уравнений являются равносильными или эквивалентными, если они имеют одно и то же множество решений. Система, равносильная данной может быть получена с помощью элементарных преобразований системы (1). Систему (1) можно также записать в виде матричного уравнения: А·х=b (3.2) где А - матрица коэффициентов при переменных, или матрица системы; x — вектор – столбец неизвестных: b — вектор – столбец свободных членов: Предполагая использование MS Excel для проведения вычислений, рассмотрим решение системы (1) в общем виде (метод обратной матрицы), Будем считать, что квадратная матрица системы (А) является невырожденной, то есть ее определитель отличен от 0. В этом случае существует обратная матрица А-1. Умножая слева обе части матричного равенства (3.2) на обратную матрицу А-1, получим: А-1·А·х = А-1· b, Е·х = А-1· b т.к. Е·х = х, решением системы (3.2) методом обратной матрицы будет столбец: х = А-1 b (3.3) 34 Таким образом, для нахождения вектора х необходимо найти обратную матрицу коэффициентов и умножить се справа на вектор свободных членов. Выполнение этих операций в пакете Excel рассмотрено ранее. Пример 3.7. Пусть необходимо решить систему ⎧ 3x + 2 y = 7 ⎨ ⎩4 x − 5 y = 40 (3.4) Решение: 1) Введем матрицу А (в данном случае размера 2 × 2) в диапазон А1:В2 2) Вектор b введем в диапазон С1:С2. 3) Найдем обратную матрицу А-1 . Для этого: 9 Выделим блок ячеек под обратную матрицу. Например, блок АЗ:В4. 9 нажмем на панели инструментов Стандартная кнопку Вставка функции; 9 в появившемся диалоговом окне Мастер функций в рабочем поле Категория выберем Математические. а и рабочем поле Функция — имя функции МОБР. 9 введем диапазон исходной матрицы А1:В2 в рабочее поле Массив. 9 Нажмем сочетание клавиш CTRL+SHIFT+ENTER; если обратная матрица не появилась в диапазоне А3:84, то следует щелкнуть указателем мыши в Строке формул и повторить нажатие CTRL+SHIFT+ENTER. Рис.3.13. В результате в диапазоне А3:В4 появится обратная матрица (рис3.13): ⎛ 0,217391 0,086957 ⎞ ⎟⎟ А −1 = ⎜⎜ ⎝ 0,173913 - 0,13043⎠ 35 4) Умножением обратной матрицы А-1 на вектор b найдем вектор x. Для этого: 9 выделим блок ячеек под результат (вектор x).. Например, СЗ:С4 ; 9 нажмем на панели инструментов Стандартная кнопку Вставка функции; 9 в появившемся диалоговом окне Мастер функций в рабочем поле Категория выберите Математические, .а в рабочем поле Функция имя функции — МУМНОЖ. Щелкните на кнопке 0К; 9 в появившемся диалоговое окно МУМНОЖ введем диапазон обратной матрицы А-1 в рабочее поле Массив1, .а диапазон столбца b (С1:С2) — в рабочее поле Массив2. После этого нажмем сочетание клавиш CTRL+SHIFT+ENTER; 9 если вектор x не появился в диапазоне СЗ:С4, то следует щелкнуть указателем мыши в строке формул и повторить нажатие CTRL+SHIFT+ENTER. Рис.3.14 В результате в диапазоне С3:С4 появится вектор x (рис.3.14). Причем х = 5 будет находиться в ячейке СЗ, а y = 4. в ячейке С4. Можно осуществить проверку найденного решения. Для этого найденный вектор x необходимо подставить в матричное уравнение А·х=b . Проверка производится следующим образом:• 1) Выделим блок ячеек под вектор b . Например, блок ячеек D1:D2; 2) Нажмем на панели инструментов Стандартная кнопку Вставка функции. 3) В появившемся диалоговом окне Мастер функций в рабочем поле Категория выберем Математические, а в рабочем поле Функция — имя функции МУМНОЖ.;ОК. 36 4) В появившееся диалоговое окно МУМНОЖ введем диапазон исходной матрицы А в рабочее поле Macсив1, а диапазон вектора x в рабочее поле Массив2. После этого нажмем сочетание клавиш CTRL+SHIFT+ENTER. В результате в диапазоне D1:D2 появится вектор b, и, если система решена правильно, появившийся вектор будет равен исходному (7, 40). Рис.3.15 Рис.3.16 Пример 3.8. Ресторан специализируется на выпуске трех видов фирменных блюд: В1, В2, ВЗ. При этом используются ингредиенты грех типов S1, S2, S3. Нормы расхода каждого из них на одно блюдо и объем расхода ингредиентов на 1 день заданы таблицей: Расход Нормы расхода ингредиентов Ингредиент ингредиентов на одно блюдо (у. е.) B1 B2 B3 на 1 день(у. е.) S1 5 3 4 2700 S2 2 1 1 800 S3 3 2 2 1600 Нужно найти ежедневный объем выпуска фирменных блюд каждого вида. 37 Решение. Пусть ежедневно ресторан выпускает x1 блюд вида B1, x2 блюд вида В2 и x3 блюд вида ВЗ. Тогда в соответствии с расходом ингредиентов каждого типа имеем систему: ⎧5 x1 + 3x 2 + 4 x3 = 2700 ⎪ ⎨ 2 x1 + 1x 2 + 1x3 = 800 . ⎪3x + 2 x + 2 x = 1600 2 3 ⎩ 1 Решаем систему аналогично решению предыдущего примера. 1) Введем матрицу системы в А1:С3; 2) Находим матрицу, обратную матрице системы в диапазоне A4:C6; 3) Умножим ее на столбец свободных членов;. Процесс решения отображен на рисунке 3.17 Рис.3.17 Получен ответ : (0, 500, 300) Система m линейных уравнений с n неизвестными. Система m линейных уравнений с n неизвестными имеет вид: ⎧ a11 x1 + a12 x 2 + ... + a1n x n = b1 ⎪ a x + a x + ... + a x =b ⎪ 21 1 22 2 2n n 2 ⎨ .......... .......... .......... .......... ..... ⎪ ⎪⎩a m1 x1 + a m 2 x 2 + ... + a mn x n = bm (3.5) Как и система (3.1), система (3.5) может быть представлена в матричном виде 38 А·х=b Возможны следующие три случая: m<n, m = n и m>n. Случай, когда m = n. рассмотрен ранее. В случае если m > n обычно применяют метод наименьших квадратов. Для этого обе части матричного уравнения системы (3.5) умножаем слева на транспонированную матрицу системы AT. АT·А·х = АT· b ; Затем обе части уравнения умножаем слева на матрицу (АT·А)-1. Если эта матрица существует, то система определена. С учетом того, что (АT·А) (АT·А)-1 = E, получаем x = (АT·А)-1 АT· b (3.6) Матричное уравнение (3.6) определяет приближенное решение системы m линейных уравнений с n неизвестными при m > n. Пример 3.9 . Пусть необходимо решить систему ⎧ 3x + 2 y = 7 ⎪ ⎨4 x − 5 y = 40 ⎪ 3x + 3 y = 3 ⎩ Решение. 1) Введем матрицу А в диапазон А1:ВЗ 2) Вектор b = (7, 40, 3) введем в диапазон C1:C3 3) Найдем транспонированную матрицу АT с помощью функции ТРАНСП. в диапазоне А4:С5 (рис.3.18) Рис.3.18 4) Найдем произведение АТ b в диапазоне Е4:Е5 (рис.3.19), оно равно (190,177)T; 39 Рис.3.19 5) Аналогично находим произведение АТА в диапазоне А7:В8 Рис.3.20 ⎛ 34 − 5 ⎞ А Т А = ⎜⎜ ⎟⎟ − 5 38 ⎠ ⎝ 6) Находим обратную матрицу ( АТА)-1. в диапазоне A10:B11 Рис.3.21 7) Теперь умножением обратной матрицы (АTА)-1 на вектор АTb находим вектор x. В результате в диапазоне D1:D2 появится вектор решения системы по методу наименьших квадратов. (рис.3.22). Причем х= 5 будет находиться в ячейке D1, а у = -4 — в ячейке D2. 40 Рис.3.22 4. Задачи оптимизации. Очень широкий класс задач составляют задачи оптимизации или, как их еще называют, экстремальные задачи. Обычно их решение сопряжено с большим количеством вычислений, что затруднительно выполнять вручную. Задачи линейного программирования. Будем рассматривать задачу линейного программирования, которая заключается в нахождении n переменных, x1, x2, . . . ,xn , минимизирующих данную линейную функцию (целевую функцию): Z = f(x1, x2, . . . ,xn)= c1· x1+ c2·x2+ . . .+cn·xn (4.1) При m линейных ограничениях – равенствах: ai1x1 + ai2x2 +. . .+ainxn = bi, где i = 1,2,3,…,m (4.2) и n линейных ограничениях – неравенствах; xk ≥ 0, где k = 1,2,3, . . .,n Допустимым решением (4.3) (планом) задачи линейною программирования является упорядоченное множество чисел ( x1, x2, . . . ,xn.). удовлетворяющих ограничениям (4.2) и (4.3). Чаще всего оптимальное решение, если оно существует, является единственным. Однако возможны случаи, когда оптимальных решений бесчисленное множество. Процесс решения задачи линейного программирования обычно состоит из следующих этапов: 41 1) Осмысление задачи, выделение наиболее важных качеств, свойств, величин, параметров. 2) Введение обозначений неизвестных. 3) Создание целевой функции. 4) Составление системы ограничений, которым должны удовлетворять введенные величины. 5) Решение задачи на компьютере. Инструментом для поиска решений задач оптимизации в Excel служит процедура Поиск решения. Алгоритм использования процедуры поиска решения. 1) Сформулируйте задачу. 2) В меню Сервис выберите команду Поиск решения. 3) Если команда Поиск решения отсутствует в меню Сервис, установите надстройку Поиск решения. 4) В поле Установить целевую ячейку введите ссылку на ячейку или имя конечной ячейки. Конечная ячейка должна содержать формулу. 5) Выполните одно из следующих действий: 9 чтобы максимизировать значение конечной ячейки путем изменения значений влияющих ячеек, установите переключатель в положение максимальному значению; 9 чтобы минимизировать значение конечной ячейки путем изменения значений влияющих ячеек, установите переключатель в положение минимальному значению; 9 чтобы установить значение в конечной ячейке равным некоторому числу, установите переключатель в положение значению и введите в соответствующее поле требуемое число. 6) В поле Изменяя ячейки введите имена или ссылки на изменяемые ячейки, разделяя их запятыми. Изменяемые ячейки должны быть прямо или косвенно связаны с конечной ячейкой. Допускается задание до 200 изменяемых ячеек. 42 7) Чтобы автоматически найти все ячейки, влияющие на формулу модели, нажмите кнопку Предположить. 8) В поле Ограничения введите все ограничения, накладываемые на поиск решения. Добавление ограничения 1) В разделе Ограничения диалогового окна Поиск решения нажмите кнопку Параметры. 2) В поле Ссылка на ячейку введите адрес или имя ячейки, на значение которой накладываются ограничения. 3) Выберите из раскрывающегося списка условный оператор ( <=, =, >=, цел или двоич ), который должен располагаться между ссылкой и ограничением. Если выбрано цел, в поле Ограничение появится «целое». Если выбрано двоич, в поле Ограничение появится «двоичное». 4) В поле Ограничение введите число, ссылку на ячейку или ее имя либо формулу. 5) Выполните одно из следующих действий: a. Чтобы принять ограничение и приступить к вводу нового, нажмите кнопку Добавить. b. Чтобы принять ограничение и вернуться в диалоговое окно Поиск решения, нажмите кнопку OK. Примечания Условные операторы типа цел и двоич можно применять только при наложении ограничений на изменяемые ячейки. Флажок Линейная модель в диалоговом окне Параметры поиска решения позволяет задать любое количество ограничений. При решении нелинейных задач на значения изменяемых ячеек можно наложить более 100 ограничений, в дополнение к целочисленным ограничениям на переменные. Изменение и удаление ограничений 43 1) В списке Ограничения диалогового окна Поиск решения укажите ограничение, которое требуется изменить или удалить. 2) Выберите команду Изменить и внесите изменения либо нажмите кнопку Удалить. 3) Нажмите кнопку Выполнить и выполните одно из следующих действий: a. чтобы сохранить найденное решение на листе, выберите в диалоговом окне Результаты поиска решения вариант данные, выберите вариант Сохранить найденное решение; b. чтобы восстановить исходные Восстановить исходные значения. 4) Чтобы прервать поиск решения, нажмите клавишу ESC. Лист Excel будет пересчитан с учетом найденных значений влияющих ячеек. Если решение будет найдено, выберите тип отчета в списке Отчеты и нажмите кнопку ОК. Отчет будет помещен на новый лист книги Рассмотрим примеры решения некоторых задач оптимизации Пример 4.1. В ресторане готовятся фирменные блюда трех видов (блюдо А. блюдо В и блюдо С), с использованием при приготовлении ингредиентов трех видов (ингредиент 1, ингредиент 2 и ингредиент 3). Расход ингредиентов в граммах на блюдо задается следующей таблицей. Вид ингредиента блюдо А блюдо В Блюдо С ингредиент 1 20 50 10 ингредиент 2 20 0 40 ингредиент 3 20 10 10 Стоимость приготовления блюд одинакова (например, 100 руб.). Ежедневно в ресторан поступает 5 кг ингредиента 1 и по 4 кг ингредиентов видов 1 и 3. Каково оптимальное соотношение дневного производства блюд различного вида, если производственные мощности ресторана позволят использовать весь запас поступивших продуктов Решение. 44 Для решения задачи введем обозначения: х1 - дневной выпуск блюда А: х2, дневной выпуск блюда В; х3 - дневной выпуск блюда С. Составим целевую функцию — она заключается в стоимости выпушенных рестораном блюд: Z = 100· x1 + 100· x2 + 100· x3 Определим имеющиеся ограничения (руководствуясь таблицей): 1) 20·x1 + 50·x2 + 10·x3 ≤ 5000; 2) 20·x1 + 0·x2 + 40·x3 ≤ 4000; 3) 20·x1 + 10·x2 + 10·x3 ≤ 4000. Кроме того, поскольку нельзя реализовать часть блюда и количество блюд не может быть отрицательным, добавим еще ряд ограничений: 1. x1 ≥ 0; 2. x2≥ 0; 3. x3 ≥ 0; 4. x1 – целое; 5. x2– целое ; 6. x3 – целое; Теперь можно приступить к решению задачи с помощью Excel. 1. Откроем новый рабочий лист. 2. В ячейки А2, А3 и А4 занесем дневной запас продуктов (5000, 4000 и 4000 соответственно). 3. В ячейки С1, D1 и E1 занесем начальные значения неизвестных x1, x2, x3 (нули) – в дальнейшем значения этих ячеек будут подобраны автоматически. 4. В ячейках диапазона С2:E4 разместим таблицу расхода ингредиентов. 5. В ячейках В2:В4 укажем формулы для расчета расхода ингредиентов по видам. В ячейке В2 формула будет иметь вид = $С$1*С2 + $D$1*D2+$E$l*E2, а остальные формулы можно получить методом автозаполнения. 6. В ячейку F1 занесем формулу целевой функции =100*(С1 + Dl + El) Результат ввода данных в рабочую таблицу представлен на рисунке ниже. 45 Рис.4.1 Выполним команду Сервис → Поиск решения – откроется диалоговое окно Поиск решения. В поле Установить целевую ячейку укажем ячейку, содержащую оптимизируемое значение (F1). Установим переключатель Равной в положение максимальному значению (требуется максимальный объем производства). 7. В поле Изменяя ячейки зададим диапазон подбираемых параметров: С1:Е1. 8. Чтобы определить набор ограничений, щелкнем на кнопке Добавить. В диалоговом окне Добавление ограничения в поле Ссылка на ячейку укажем диапазон В2:В4. В качестве условия зададим <=. В поле Ограничение зададим диапазон А2:А4. Это условие указывает, что дневной расход ингредиентов не должен превосходить запасов. Щелкнем на кнопке ОК. 9. Снова щелкнем на кнопке Добавить. В поле Ссылка на ячейку укажем диапазон С1:Е1. В качестве условия зададим >=. В поле Ограничение зададим число 0. Это условие указывает, что число приготавливаемых блюд неотрицательно. Щелкнем на кнопке ОК. 10. Снова щелкнем на кнопке Добавить. В поле Ссылка на ячейку укажем диапазон С1:Е1. В качестве условия выберем цел. Это условие не позволяет производить доли блюд. Вид окна на рис.4.2. Щелкнем на кнопке ОК. Рис.4.2 46 11. Щелкнем на кнопке Выполнить. По завершении оптимизации откроется диалоговое окно Результаты поиска решения. Рис.4.3 12. Установим переключатель в положение Сохранить найденное решение, после чего щелкнем на кнопке ОК. В результате получится набор оптимальных значений переменных (оптимальное количество приготавливаемых фирменных блюд) при данных ограничениях (при данном количестве ингредиентов): блюда А — 184 порции (x1), блюда В — 24 порции (х2) и блюда С — 8 порций (x3). При этом общая стоимость блюд (Z) будет максимальной и равной 21600 руб. Кроме того останутся неизрасходованными 40г первого ингредиента (рис.4.4). Рис. 4.4 Проанализируем полученное решение. Проверить его оптимальность можно, экспериментируя со значениями ячеек С1:Е1. Например, допустим, что решили приготовить количества блюд, соответственно 184, 23, 9. Тогда при той же общей стоимости блюд будет перерасход второго ингредиента на 40г, что, естественно, недопустимо. Можно рассмотреть и другие варианты. Чтобы восстановить оптимальные значения, можно в любой момент повторить операцию поиска решения. 47 Пример 4.2. Туристская фирма заключила контракты с турбазами в г. Сухуми и другом городе. Они могут принять, соответственно, 200 и 150 человек. Туристам для осмотра предлагается обезьяний питомник в городе, ботанический сад и поход в горы. Составьте маршрут движения туристов так, чтобы это обошлось турфирме возможно дешевле, если: обезьяний питомник принимает в день 70 человек; ботанический сад — 180 человек,; в горы в один день могут пойти 110 человек. О стоимость одного посещения выражается таблицей: Турбаза ОП БС Поход 1 5 6 20 2 10 12 5 Решение. Для решения задачи введем обозначения: пусть х1 — число туристов из турбазы в Сухуми, посещающих обезьяний питомник; х2 — число туристов из турбазы в Сухуми, посещающих ботанический сад; х3 — число туристов из турбазы в Сухуми, отправляющихся в поход; х4 — число туристов из другой турбазы, посещающих обезьяний питомник; х5 — число туристов из другой турбазы, посещающих ботанический сад; х6 — число туристов из другой турбазы, отправляющихся в поход. Составим целевую функцию — она заключается в минимизации стоимости дневных мероприятий турфирмы: Z= 5 ·х1 + 6 · х2 + 20 · х3 + 10· х4 + 12 · х5 + 5 · х6. Определим имеющиеся ограничения (руководствуясь условиями задачи): 1. х1 + х4 ≤ 70; 2. х2 + х5 ≤ 180; 3. х3 + х6 ≤ 110; 4. х1 + х2 + x3 = 200; 5. х4 + х5 + х6 = 150. 48 Кроме того, поскольку турист неделим и количество туристов, участвующих в каждом мероприятии, не может быть отрицательным, добавим еще ряд ограничений: 1) x1 ≥ 0 2) x2 ≥ 0 3) x3 ≥ 0 4) x4 ≥ 0 5) x5 ≥ 0 6) x6 ≥ 0 7) x1 – целое; 8) x2 – целое; 9) x3 – целое; 10) x4 – целое; 11) x5 – целое; 12) x6 – целое; Теперь можно приступить к решению задачи. 1. Откроем новый рабочий лист 2. В ячейки А2, A3 и А4 занесем дневное количество посетителей различных мероприятий — числа 70,180 и 110, соответственно. 3. В ячейки А5 и А6 занесем количество туристов в обеих турбазах — числа 200, и 150, соответственно. 4. В ячейки С1:Н1 занесем начальные значения неизвестных х1, х2, ...,x:6(нули) — в дальнейшем значения этих ячеек будут подобраны автоматически. 5. В ячейках диапазона С2:Н6 разместим таблицу коэффициентов основных ограничений: • 1,0,0,1,0,0; • 0,1,0,0,1,0; • 0,0,1,0,0,1; • 1,1,1,0,0,0; • 0,0,0,1,1,1. 49 6. В ячейках В2;Вб укажем формулы для расчета ограничений. В ячейке В2 формула будет иметь вид=$С$1*С2 + $D$1*D2 + $Е$1*Е2 + $F$1*F2 + $G$1*G2 + + $Н$1*Н2, а остальные формулы можно получить методом автозаполнения. 7. В ячейку I1 занесем формулу целевой функции =5*С1 + 6*D1 + 20*Е1 + 10*F1 + 12*G1+5*H1. Рис.4.5 8. Выполним Сервис → Поиск решения — откроется диалоговое окно Поиск решения. 9. В поле Установить целевую ячейку укажем ячейку, содержащую оптимизируемое значение (I1). Установим переключатель Равной в положение минимальному значению (требуется минимальный объем затрат). 10. В поле Изменяя ячейки зададим диапазон подбираемых параметров — С1:Н1. 11. Чтобы начать определять набор ограничений, щелкнем на кнопке Добавить. В диалоговом окне Добавление ограничения в поле Ссылка на ячейку укажем диапазон В2:В4. В качестве условия задайте <=. В поле Ограничение зададим диапазон А2:А4. Это условие указывает, что дневное количество посетителей мероприятий не должно превосходить их возможностей. Щелкнем на кнопке ОК. 12. Для продолжения определения набора ограничений щелкнем на кнопке Добавить. В диалоговом окне Добавление ограничения в поле Ссылка на ячейку укажем диапазон В5:В6. В качестве условия зададим =. В поле Ограничение зададим диапазон А5:А6. Это условие указывает, что дневное количество посетителей мероприятий должно быть равно количеству туристов. Щелкните на кнопке ОК 50 13. Снова щелкнем на кнопке Добавить. В поле Ссылка на ячейку укажем диапазон С1:Н1. В качестве условия зададим >=. В поле Ограничение зададим число 0. Это условие указывает, что число участников мероприятий неотрицательно. Щелкнем на кнопке ОК. 14. Снова щелкнем на кнопке Добавить. В поле Ссылка на ячейку укажите диапазон С1:Н1. В качестве условия выберем цел. Это условие указывает, что турист неделим. Щелкните на кнопке ОК. Рис.4.6 15. Щелкнем на кнопке Выполнить. По завершении оптимизации откроется диалоговое окно Результаты поиска решения. 16. Установим переключатель Сохранить найденное решение, после чего щелкнем на кнопке ОК. Рис.4.7 В результате получится набор оптимальных значений переменных (оптимальное количество туристов для участия в каждом мероприятии из каждой турбазы) при данных ограничениях (при заданных возможностях мероприятий): число туристов из турбазы в Сухуми, посещающих обезьяний 51 питомник (х1 = 30), ботанический сад (х2 = 170) и отправляющихся в поход (x3 = 0); число туристов из окрестной турбазы, посещающих обезьяний питомник (x4 = 40), посещающих ботанический сад (х5 = 0) и отправляющихся в поход (х6= 110). При этом суммарные расходы турфирмы (Z) составят 2120 руб. и будут минимальными. Другими типовыми примерами задач линейного программирования являются задачи: ¾ О рационе питания. ¾ Об оптимальных перевозках. ¾ Об оптимальном плане пошивочной мастерской. ¾ О рациональном использовании сырья. Их можно выполнить в качестве лабораторных работ. 5. Aппроксимация экспериментальных данных На практике часто приходится сталкиваться с задачей о сглаживании экспериментальных зависимостей или задачей аппроксимации. Аппроксимацией называется процесс подбора эмпирической формулы φ(х) для установленной из опыта функциональной зависимости y = f(x). Эмпирические формулы служат для аналитического представления опытных данных. Функция одной переменной. Обычно задача аппроксимации распадается на две части. Сначала устанавливают примерный вид зависимости y = f(x) и, соответственно, вид эмпирической формулы, то есть решают, является ли она линейной, квадратичной, логарифмической или какой-либо другой. После этого определяются численные значения неизвестных параметров выбранной эмпирической формулы, для которых приближение к заданной функции оказывается наилучшим. Если нет каких-либо теоретических соображений для подбора вида формулы, обычно выбирают функциональную зависимость из числа наиболее простых, сравнивая их графики с графиком заданной функции. 52 После выбора вида формулы определяют ее параметры. Для наилучшего выбора параметров задают меру близости аппроксимации экспериментальных данных. Существуют различные меры близости и, соответственно, способы решения этой задачи. Обычно определение параметров при известном виде зависимости осуществляют по методу наименьших квадратов. При этом функция φ(х) считается наилучшим приближением к f(x), если для нее сумма квадратов невязок имеет наименьшее значение. n ∑ [ f ( x ) − ϕ (x )] i =0 2 i i → min (5.1) Используя методы дифференциального исчисления, метод наименьших квадратов формулирует аналитические условия достижения суммой квадратов отклонений своего наименьшего значения. В простейшем случае задача аппроксимации экспериментальных данных выглядит следующим образом. Пусть есть какие-то данные, полученные практическим путем (в ходе эксперимента или наблюдения), которые можно представить парами чисел (x,у). Зависимость между ними отражает таблица: x x1 x2 ..... xn y y1 y2 ..... yn На основе этих данных требуется подобрать функцию у = φ(х), которая наилучшим образом сглаживала бы экспериментальную зависимость между переменными и, по возможности, точно отражала общую тенденцию зависимости между x и у, исключая погрешности измерений и случайные отклонения. В MS Excel аппроксимация экспериментальных данных осуществляется путем построения их графика (x – отвлеченные величины) или точечного графика (x имеет конкретные лечения) с последующим аппроксимирующей функции (линии Тренда). подбором подходящей Возможны следующие варианты функции: 53 1. Линейная : у = а·х+ b. Обычно применяется в простейших случаях, когда экспериментальные данные возрастают или убывают с постоянной скоростью. 2. Полиномиальная : у = a0 + a1x + a2x2 +… + anxn, где n ≤ 6, ai, — константы. Используется для описания экспериментальных данных, попеременно возрастающих и убывающих. Степень полинома определяется количеством экстремумов (максимумов или минимумов) кривой. Полином второй степени может описать только один максимум или минимум, полином третьей степени может иметь один или два экстремума, четвертой степени — не более трех экстремумов и т. д. 3. Логарифмическая : у = a·lnx + b, где а и b — константы. Функция применяется для описания экспериментальных данных, которые вначале быстро растут или убывают, а затем постепенно стабилизируются. 4. Степенная: у = bxa, где а и b — константы. Аппроксимация степенной функцией используется для экспериментальных данных с постоянно увеличивающейся (или убывающей) скоростью роста. Данные не должны иметь нулевых или отрицательных значений. 5. Экспоненциальная: у = bеax, где а и b — константы, е — основание натурального логарифма. Применяется для описания экспериментальных данных, которые быстро растут или убывают, а затем постепенно стабилизируются. Часто ее использование вытекает из теоретических соображений. Степень близости аппроксимации экспериментальных данных выбранной функцией оценивается коэффициентом детерминации (R2). Таким образом, если есть несколько подходящих вариантов аппроксимирующих функций, можно выбрать функцию с большим коэффициентом детерминации (его значение наиболее близко к 1). Для осуществления аппроксимации на диаграмме экспериментальных данных необходимо щелчком правой кнопки мыши вызвать выплывающее 54 контекстное меню и выбрать пункт Добавить линию тренда. В появившемся диалоговом окне аппроксимирующей Линия тренда функции, а на на вкладке Тип выбирается вкладке Параметры вид задаются дополнительные параметры, влияющие на отображение аппроксимирующей кривой. Пример 5.1. Исследовать характер изменения уровня производства некоторой продукции с течением времени и подобрать аппроксимирующую функцию, располагая следующими данными: Год Производство продукции 1997 17,1 1998 18,0 1999 18,9 2000 19,7 2001 19,7 Решение 1) Для построения диаграммы, прежде всего, необходимо ввести данные в рабочую таблицу. Вводим в ячейку А1 слово Год. Затем в ячейки А2:А6 последовательно вводим годы, начиная с 1997. Далее в ячейку В1 заносим слово Продукция и устанавливаем табличный курсор в ячейку В2. Здесь должно оказаться значение 17,1 соответствующее значению года в ячейке А2. Аналогично заполняем ячейки В3:В6. 2) Далее по введенным в рабочую таблицу данным необходимо построить диаграмму. Выделим исходные данные – диапазон B1:B6. Щелчком указателя мыши на кнопке на панели инструментов вызываем Мастер диаграмм. В появившемся диалоговом окне выбираем тип диаграммы и ее вид. Выберем диаграмму График, т.к. необходимо отобразить динамику изменений производства, не привязываясь к конкретному году. Выберем вкладку Ряд и с помощью мыши вводим диапазон подписей по оси x. Далее, вводим название 55 диаграммы — Производство продукции, названия осей. Нажимаем кнопку Готово. Получен график экспериментальных данных. 3) Осуществим аппроксимацию полученной кривой полиномиальной функцией второго порядка, поскольку кривая довольно гладкая. Для этого указатель мыши устанавливаем на одну из точек графика и щелкаем правой кнопкой. В появившемся контекстном меню выбираем пункт Добавить линию тренда. Рис. 5.1. Появляется диалоговое окно Линия тренда (Рис.5.2). Рис.5.2 Рис.5.3 56 В этом окне на вкладке Тип выбираем тип линии тренда — Полиномиальная и устанавливаем степень — 2, Затем открываем вкладку Параметры (рис. 5.3) и устанавливаем флажки в поля Показывать уравнение на диаграмме и Поместить на диаграмму величину достоверности аппроксимации (R^2). После чего нужно щелкнуть на кнопке ОК. В результате получим на диаграмме аппроксимирующую кривую (рис.5.4). Производство продукции 20 19,5 19 Годы 18,5 Продукция 18 17,5 2 y = -0,1357x + 1,5043x + 15,66 17 Полиномиальный (Продукция) 2 R = 0,9864 16,5 16 15,5 1997 1998 1999 2000 2001 Условные единицы Рис.5.4 Как видно, уравнение наилучшей полиномиальной аппроксимирующей функции для некоторых отвлеченных значений х (1, 2, 3, . ..) выглядит как y = -0,1357x2 + 1,5043x + 15,66 При этом точность аппроксимации достаточно высока — R2 = 0,986. 4) Попробуем улучшить качество аппроксимации выбором другого типа функции. Здесь возможным вариантом представляется логарифмическая функция. Для этого в окне Линия тренда на вкладке выбираем тип линии тренда — Логарифмическая. В результате получим другой вариант аппроксимации — логарифмической кривой (рис. 5.5) 57 Рис.5.5 Как можно видеть на рисунке, уравнение наилучшей логарифмической аппроксимирующей функции несколько уступает по точности аппроксимации полиномиальной кривой — R2 = 0,9716 < 0,986. Поэтому если нет каких-либо теоретических соображений, то можно считать, что наилучшей аппроксимацией является аппроксимация полиномиальной функцией второй степени (из двух рассмотренных вариантов). Пример 5.2. После выброса ядовитого вещества его концентрация (мг/л) в водоеме изменялась в соответствии со следующей таблицей: Время после выброса (час) Концентрация вещества (мг/л) 1 8,0 3 2,8 5 1,0 8 0,3 Определить вид функциональной зависимости изменения концентрации вещества от времени и оценить его концентрацию в водоеме в момент выброса. 58 Решение. 1) Для построения диаграммы, прежде всего, необходимо ввести данные в рабочую таблицу. Вводим в ячейку А1 слово Время. Затем в ячейки А2:А5 последовательно вводим время: 1, 3, 5, 8. Далее в ячейку В1 заносим слово Концентрация и в диапазон В2:В5 вводим соответствующие концентрации вещества. 2) Далее по введенным в рабочую таблицу данным необходимо построить диаграмму. Выделяем диапазон исходных данных – A1:B5. Поскольку здесь необходимо строить динамику изменений концентрации вещества в соответствии с изменениями времени — будем строить диаграмму Точечная. Щелчком указателя мыши на кнопке на панели инструментов вызываем Мастер диаграмм. В появившемся диалоговом окне выбираем тип диаграммы Точечная, вид — левый верхний. Нажав кнопку Далее, вводим название диаграммы — Концентрация вещества, название осей X и У: Время и Концентрация, соответственно. Нажимаем кнопку Готово. Получен график экспериментальных данных. 3) Осуществим аппроксимацию полученной кривой. Поскольку кривая напоминает экспоненту и из теоретических соображений наиболее вероятный закон изменения — экспоненциальный, целесообразно аппроксимировать кривую изменения концентрации экспоненциальной функцией. Для этого указатель мыши устанавливаем на одну из точек графика и щелкаем правой кнопкой. В появившемся контекстном меню выбираем пункт Добавить линию тренда. Появляется диалоговое окно Линия тренда. В этом окне на вкладке Тип выбираем тип линии тренда — Экспоненциальная. Затем открываем вкладку Параметры и устанавливаем флажки в поля показывать уравнение на диаграмме и поместить на диаграмму величину достоверности аппроксимации (R^2). Кроме этого, для того, чтобы оценить концентрацию вещества в водоеме в момент выброса в поле Прогноз 59 назад на устанавливаем 1 период. После чего щелкаем на кнопке ОК. В результате получим на диаграмме аппроксимирующую кривую (рис. 5.6). Рис. 5.6. Как видно из рисунка, уравнение наилучшей экспоненциальной аппроксимирующей функции для зависимости концентрации от времени выглядит как y = 11,844e-0,4695x При этом точность аппроксимации очень высокая — R2 = 0,9951, что позволяет считать описание процесса изменения концентрации вещества в водоеме экспоненциальной функцией адекватным. Расчетная оценка концентрации вещества в момент выброса, как видно из графика, составляет около 12 мг/л. Более точные цифры могут быть получены из уравнения при х = 0 (у0 = 11,84 мг/л). Несколько независимых переменных В тех случаях, когда аппроксимируемая переменная у зависит от нескольких независимых переменных х1 х2,…, xn , подход с построением линии тренда не дает решения. Здесь могут быть использованы следующие специальные функции MS Excel: ЛИНЕЙН и ТЕНДЕНЦИЯ для аппроксимации линейных функций вида: у = а0+ а1х1 + а2х2 +... + апхп (5.2) 60 ЛГРФПРИБЛ и РОСТ для аппроксимации показательных функций вида: у = а0 а1х1а2х2. . .апхп (5.3) Функции ЛИНЕЙН и ЛГРФПРИБЛ служат для вычисления неизвестных коэффициентов а0, а1 ..., ап в выражениях (5.2) и (5.3) соответственно, а также коэффициентов детерминации (R2), и ряда других показателей. Обе функции имеют одинаковые параметры: ЛИНЕЙН (известные _значения_у;известные_значения__х;конст;статистика) ЛГРФПРИБЛ (известные_значения_у;известные_значения_х;конст;статистика) Здесь: 9 Известные_значения_y — множество наблюдаемых значений у; 9 Известные_значения_x: — множество наблюдаемых значений х1 х2 ..., хп. Причем, если массив известные_значения_у имеет один столбец, то каждый столбец массива известные_значения_х интерпретируется как отдельная переменная, а если массив известные_значения_у имеет одну строку, то тогда каждая строка массива известные_значения_х интерпретируется как отдельная переменная; 9 конст — логическое значение, которое указывает, требуется ли, чтобы константа а0 была равна 0 (для функции ЛИНЕЙН) или 1 (для функции ЛГРФПРИБЛ). При этом, если конст имеет значение ИСТИНА или опущено, то а0 вычисляется обычным образом, а если конст имеет значение ЛОЖЬ, то а0 полагается равным 0 или 1; 9 статистика — логическое значение, которое указывает, требуется ли вычислять дополнительную статистику по регрессии, если введено значение ИСТИНА, то дополнительные параметры вычисляются, если ЛОЖЬ, то — нет . 61 Функции ТЕНДЕНЦИЯ и РОСТ позволяют находить точки, лежащие на аппроксимирующих кривых (5.2) и (5.3), соответственно, для значений коэффициентов а0, а1 ..., ап, найденных функциями ЛИНЕЙН и ЛГРФПРИБЛ. Обе функции имеют одинаковые аргументы: ТЕНДЕНЦИЯ(известные_значения_у;известные_значения_х;новые_зиачения _х; конст); РОСТ(известные_значения_у;известные__значения_х;новые_значения_х;конс т). Здесь: 9 Известные_значения_у — множество значений у; 9 известны _значения_х — множество значений х; 9 новые_значения_х — те значения, для которых необходимо определить соответствующие аппроксимирующие или предсказанные значения у. Новые_зна-чения_х должны содержать столбец (или строку) для каждой независимой переменной, как и известные_значения_х. Если аргумент новые_значения_x опущен, то предполагается, что он совпадает с аргументом известные_значения_х; 9 конст — логическое значение, которое указывает, требуется ли, чтобы константа m была равна 0 (для функции ТЕНДЕНЦИЯ) или 1 (для функции РОСТ). При этом, если конст имеет значение ИСТИНА или опущено, то а0 вычисляется обычным образом, а если конст имеет значение ЛОЖЬ, то а0 полагается равным 0 или 1 (рис. 8). Пример 5.3. Источник радиоактивного излучения помещен в жидкость. Датчики расположены на расстоянии (х{) 20, 50 и 100 см от источника. Измерения интенсивности излучения (у, мРн) проводились через 1,5 и 10 суток (х2) после установки источника. Результаты измерений (у) приведены в таблице: 62 X1 X2 1 5 10 20 61,2 43,6 28,3 50 33,6 24,0 15,6 100 12,3 8,8 5,7 Необходимо аппроксимировать данные функцией вида (5.3) и найти неизвестные параметры. Решение 1. Введем данные в рабочую таблицу: в ячейку А1 — символ х1 в ячейку В1 — х2 , в ячейку С1 — y. В диапазон ячеек А2:А10 внесем значения х1, в диапазон В2:В10 — значения х2и в диапазон С2:С10 — значения y (рис.5.7). Рис.5.7 2. Выделяем блок ячеек D1:F5 под массив результатов. 3. Поскольку функция для вычисления интенсивности излучения имеет степенной характер (5.3), вызываем функцию ЛГРФПРИБЛ (панель инструментов Стандартная, кнопка Вставка функции, рабочее поле Категория тип Статистические, рабочее поле Функция вид ЛГРФПРИБЛ). 63 4. Заполняем рабочие поля: Изв_знач_у — С2:С10, Изв_знач_х — А2:В10, Стат =1 Рис.5.8 Нажимаем сочетание клавиш CTRL+SHIFT+ENTER. 5. В результате в диапазоне D1:F5 получим следующие данные: Рис.5.9 Здесь первая строка — значения коэффициентов а2, а1, а0, соответственно, вторая строка — стандартные ошибки этих коэффициентов, третья строка — коэффициент детерминации R2 и стандартная ошибка y, четвертая строка — значение критерия Фишера и число степеней свободы и нижняя строка — сумма квадратов регрессии и остаточная сумма квадратов. Таким образом, искомое аппроксимирующее уравнение имеет вид: y = 99,7·0,98x1·0,92x2. Причем точность аппроксимации очень высокая — R2 = 0,99998. Пример 5.4. В бассейне проводится ежедневная частичная смена воды. Имеются данные семидневных наблюдений зависимости уровня воды в 64 бассейне (у) от продолжительности заполнения водой (x1)и времени выпуска воды (х2). x1 х2 y (заполнение) (выпуск) 120 20 3,2 100 25 2,8 130 20 3,3 100 15 3,0 110 23 3,1 105 26 2,9 112 16 3,1 Необходимо найти значения уровня воды в бассейне в зависимости от длительностей заполнения х1 ∈ [100; 130] и выпуска воды х2 ∈ [15; 25] с шагом ∆ = 5 минут. Построить поверхность. Решение 1) Введем данные в рабочую таблицу: в ячейку А1 — символ х1 в ячейку Bl — х2 ,в ячейку С1 — у. В диапазон ячеек А2:А8 внесем значения х1 в диапазон В2:В8 — значения х2 и в диапазон С2:С8 — значения у. 2) Введем значения х1 и х2 для получения расчетных значений у в соответствии с заданием: х1 ∈ [100; 130] в диапазон А10:А30, а х2 ∈ [15; 25] в диапазон В10:В30 3) Выделим блок ячеек С10:С30 под массив расчетных (предсказанных) значений у. 4) Поскольку уравнение для вычисления уровня воды близко к линейному (5.2), вызываем функцию ТЕНДЕНЦИЯ (панель инструментов Стандартная, кнопка Вставка функции, рабочее поле Категория тип Статистические, рабочее поле Функция вид ТЕНДЕНЦИЯ). 65 5) Заполняем рабочие поля: Изв_знач_у — С2:С8, Изв_знач_х – А2:В8, Нов_знач_х — А10:В30. Нажимаем сочетание клавиш CTRL + SHIFT + ENTER. Рис.5.10 6) В результате в диапазоне С10:С30 получим предсказанные значения у (рис.5.11). Рис.5.11 66 Для построения поверхности построим таблицу в диапазоне E4:H11, где в столбце E поместим значения x1, а значения x2 – в первой строке. Значения у поместим в ячейки на пересечении соответствующих строк и столбцов (рис.5.12). Получилась таблица: Рис.5.12 Применим прием построения поверхности, рассмотренный в разделе 1. Получим следующую диаграмму: Изменение уровня воды 3,40 3,30 3,20 3,10 3,00 2,90 2,80 2,70 2,60 2,50 100 25 105 110 115 120 заполнение 125 130 15 выпуск Рис.5.13 67 6. Решение задачи коммивояжера. Приведем математическую модель задачи. Пусть переменная хij означает наличие дуги вида (i, j) в гамильтоновом контуре, а аij интерпретируется как длина указанной дуги. Тогда математическая модель задачи имеет вид (Рис.1): n n ∑∑ a ij (1) ⎯→ min xij ⎯ i =1 j =1 (2) ⎧n ⎪∑ xij == 1 (∀j ∈ {1,2,3..., n}); ⎪ i =n1 ⎪ x == 1 (∀i ∈ {1,2,3..., n}); ⎪∑ ij ⎨ j =1 ⎪ui − u j + n ⋅ xij ≤ n − 1 (∀i, j ∈ {2,3..., n}, i ≠ j ); ⎪ ⎪ xij ∈ {0,1} (∀i, j ∈ {1,2,3..., n}); ⎪⎩ui ∈ R1 (∀i ∈ {2,3..., n}). (3) (4) (5) (6) Рис.1 Ограничения (2) – (3) означают, что из каждой вершины можно выйти только один раз и, аналогично, войти в нее можно только один раз. Так как решением задачи должен быть гамильтонов контур, то ограничения (4) обеспечивают невозможность распадения контура-решения на отдельные контуры. Ограничения (5) указывают, что переменные хij являются булевыми, то есть принимают значения только 0 или 1. Ограничения (6) указывает на принадлежность переменных ui множеству вещественных чисел. Задание. Найти решение задачи коммивояжера для графа с заданной (Рис.2) матрицей расстояний с использованием надстройки «Поиск решения». 1 2 3 4 5 6 1 ∞ 20 28 12 39 32 2 21 ∞ 15 9 17 27 3 30 25 ∞ 45 29 47 4 7 52 40 ∞ 15 1 5 60 46 11 5 ∞ 34 6 11 45 14 21 30 ∞ Рис.2 68 Выполнение. Воспользуемся приведенной выше моделью для представления исходных данных, целевой функции и ограничений на рабочем листе MS EXCEL (рис. 3). Рис.3 На рис. 4 приведены формулы, находящиеся в ячейках G8:G13, A14:F14, B17:F21 соответственно. Рис.4 69 На рис.5 – 7 приведены состояние окна диалога надстройки «Поиск решения» и его параметров, а также рабочего листа MS EXCEL. Рис.5 Рис.6 70 Рис.7 На рис.8 показано полученное значение целевой функции. Оно полностью совпадает с расчетным значением. Рис.8 Полученный контур можно увидеть на рис.7 в ячейках, соответствующих изменяемым ячейкам: 1 в изменяемых ячейках на рис.7 означает включение соответствующей дуги в контур. При расчетах с помощью MS EXCEL получен контур, приведенный на рис.9 справа. Рис.9 71 7. Решение задачи о максимальном потоке и минимальном разрезе. Для получения математической модели задачи введем неотрицательные целочисленные переменные xij, которые интерпретируются как величина потока по дуге (i, j). Тогда математическая модель может иметь, например, такой вид, как на рис.1. Ограничение (2) требует, чтобы величина потока, выходящего из источника s, была равна величине потока, пришедшего в вершину t. Ограничение (4) требует, чтобы искомый путь был связным, то есть проходил через вершины графа G. Ограничение (5) требует, чтобы все переменные модели были неотрицательными целочисленными переменными. n ∑x j =1 sj (1) → max, x∈∆ β n ⎧n − x ⎪∑ sj ∑ xii = 0; i =1 ⎪ j =1 n ⎪n ⎪ x − ⎨∑ ij ∑ x ji = 0 (∀i ∈ {1, 2, ..., n}, i ≠ s, i ≠ t ); i =1 ⎪ i =1 ⎪0 ≤ xij ≤ cij ⎪ ⎪⎩ xij ∈ Z 1 (∀i, j ∈ {1, 2, ..., n}). (2) (3) (4) (5) Рис.1 Задание. Используя приведенную на рис.2 сеть, найти максимальный поток с использованием надстройки «Поиск решения». 72 Рис.2 Выполнение. Расположим исходные данные на рабочем листе так, как на рис.3. В столбец Е введены ограничения в соответствии с моделью для данной индивидуальной задачи. На рис.4 приведено окно диалога надстройки «Поиск решения», а на рис. 5 – полученное решение. Величина максимального потока в точности равна полученному значению при использовании алгоритма ФордаФалкерсона. Рис.3 73 Рис.4 Рис.5 74 8. Решение задачи о поиске кратчайшего пути Для получения математической модели задачи введем булевы переменные xij, которые интерпретируются следующим образом: xij=1, если дуга (i, j) входит в маршрут; xij=0, если дуга (i, j) не входит в маршрут. Тогда математическая модель может иметь, например, такой вид, как на рис.1. Ограничение (2) требует, чтобы искомый путь начинался в вершине s. Ограничение (3) требует, чтобы искомый путь заканчивался в вершине t. Ограничение (4) требует, чтобы искомый путь был связным, то есть проходил через вершины графа G. Ограничение (5) требует, чтобы все переменные модели были булевыми. n n ∑∑ c x i =1 j =1 ij ij → min, (1) x∈∆ β n ⎧n ⎪∑ x sj − ∑ xis = 1; i =1 ⎪ j =1 n ⎪n ⎪∑ xtj − ∑ xit = −1; i =1 ⎨ j =1 ⎪n n ⎪∑ xij − ∑ x ji = 0 (∀i ∈ {1, 2, ..., n}, i ≠ s, i ≠ t ); ⎪ i =1 i =1 ⎪ x ∈ {0,1}(∀i, j ∈ {1, 2, ..., n}). ⎩ ij (2) (3) (4) (5) Рис.1 Задание. Используя приведенный на рис.2 граф, найти кратчайший путь между вершинами 1 и 10 с использованием надстройки «Поиск решения». Выполнение. В заданном графе 10 вершин и 16 дуг. Следовательно, переменными математической модели этой индивидуальной задачи о построении кратчайшего пути являются 16 переменных: x12 , x15 , x 23 , x 24 , x34 , x35 , x 46 , x54 , x57 , x 69 , x 6,10 , x 67 , x 78 , x 7 ,10 , x8,10 , x9,10 . 75 Рис.2 Математическая постановка такой индивидуальной задачи имеет следующий вид: 5 x12 + 6 x15 + 4 x 23 + 9 x 24 + 3x 34 + 2 x35 + 3x 46 + 4 x54 + 5 x57 + 7 x 69 + + 6 x 6,10 + 5 x 67 + 2 x 78 + 8 x 7 ,10 + 7 x8,10 + 10 x 9,10 → min, x∈∆ β где множество ограничений выглядит так, как на рис.3. Воспользуемся надстройкой «Поиск решения», входящей в состав MS EXCEL. Расположим исходные данные на рабочем листе, например, так, как на рис.4. В ячейках показаны формулы, связывающие переменные модели. Целевая функция находится в ячейке Е19. На рис.5 приведено окно диалога надстройки перед запуском на выполнение. На рис.6 показан результат работы надстройки, а на рис.7 – путь из вершины 1 в вершину 10 минимальной длины. Это значение совпадает с решением, полученным в соответствии с алгоритмом Дейкстры. 76 ⎧ x12 + x15 = 1; ⎪ x + x + x + x = 1; 7 ,10 8,10 9 ,10 ⎪ 6,10 ⎪ x12 − x23 − x24 = 0; ⎪ ⎪ x23 − x34 − x35 = 0; ⎪ x + x − x = 0; 24 46 ⎪ 34 ⎪⎪ x35 + x15 − x54 − x57 = 0; ⎨ x − x − x − x = 0; 67 69 6 ,10 ⎪ 46 ⎪ x57 + x67 − x78 − x7 ,19 = 0; ⎪ ⎪ x78 − x8,10 = 0; ⎪ x − x = 0; 9 ,10 ⎪ 69 ⎪ x12 , x15 , x23 , x24 , x34 , x35 , x46 , x54 , x57 , x69 , x6,10 , x67 , ⎪ ⎪⎩ x78 , x7 ,10 , x8,10 , x9,10 . ∈ {0, 1}. Рис.3 Рис.4 77 Рис.5 Рис.6 Рис.7 78 ЭКОНОМИЧЕСКОЕ МОДЕЛИРОВАНИЕ СРЕДСТВАМИ MAPLE 1. Возможности пакета. 1. Пользовательский интерфейс Пакет Maple – интерактивная программа, позволяющая проводить аналитические выкладки и вычисления, снабженная средствами двумерной и трехмерной графики, имеющая мощный язык программирования и богатую библиотеку математических формул и сведений. Работа с Maple заключается в том, что пользователь вводит математическое выражение и инструкции (команды), а система пытается их выполнить и представить ответ. Получив (или не получив) ответ, пользователь вводит новые инструкции и так далее – взаимодействие с пакетом происходит в диалоговом режиме. Благодаря собственному языку программирования высокого уровня, введенные выражения и инструкции, а также результаты выполнения команд – формулы, графики, таблицы и числа – запоминаются в едином документе (worksheet). Это обеспечивает уникальную технологию работы, когда чуть ли не все этапы математического исследования можно отразить в одном документе. Запуск системы Запуск Maple производится, как обычно, из меню Пуск. Найдя строчку Maple , необходимо открыть подменю и щелкнуть на команде Maple Интерфейс системы Maple. Обзор интерфейса Maple Как у всех приложений под Windows интерфейс Maple имеет ряд характерных элементов, перечисленных ниже: • строка заголовка (сверху); • строка главного меню; • главная панель инструментов; • контекстная панель инструментов, вид которой зависит от режима работы с Maple; • окно ввода и редактирования документов; 79 • строка состояния (в самом низу окна). Рис.1 Пользовательский интерфейс Maple позволяет готовить документы, содержащие одновременно текстовые комментарии, команды входного языка (с возможным преобразованием их в естественную математическую форму), результаты вычислений в виде обычных математических формул и графические данные. Это обеспечивает понятное представление исходных данных и результатов вычислений, а также удобство их повторного использования. В основе пользовательского интерфейса Maple лежит графический многооконный интерфейс операционной системы Windows. Управление системой Maple возможно с помощью главного меню, панелей инструментов и палитр, а также «горячих» клавиш. Поддерживаются также многие возможности мыши, присущие приложениям под Windows. Пользователь Maple работает с документами, которые являются одновременно описаниями алгоритмов решения задач, программами и 80 результатами их исполнения. Все данные команды и результаты размещаются в соответствующих ячейках. Графические построения выполняются как в ячейках документа, так и в отдельных окнах, и имеют свои меню для оперативного управления параметрами. Меню системы Maple Наиболее полные возможности управления предоставляет главное меню системы Maple. Оно, как обычно, расположено непосредственно под строкой заголовка. Меню предоставляет доступ к основным операциям и параметрам пользовательского интерфейса системы. Ниже дан перечень меню, доступных при наличии открытого документа: • File — работа с файлами и печатью документов; • Edit — команды редактирование документа и операции с буфером обмена; • View — управление видом пользовательского интерфейса; • Insert — операции вставки; • Format — операции задания форматов; • Spreadsheet — операции задания таблиц; • Options — задание параметров; • Window — управление окнами; • Help — работа со справочной системой. • Главное меню Maple является контекстно-зависимым. Это означает, что его вид может меняться в зависимости от текущего состояния (контекста) системы. Например, если все документы закрыты, то главное меню содержит только три заголовка меню: File, Options и Help. При этом место для окон документов пусто и окрашено в серый цвет. Вид меню также меняется в зависимости от того, какие объекты в документе выделены. Меню File Меню File содержит основные операции для работы с файлами и печати документов. • New - создать новый документ; 81 • Open - открыть существующий документ; • Open URL - открыть URL-адрес; • Save - сохранить активный документ; • Save As — сохранить активный документ под новым именем; • Export As — экспортировать файл; • Close — закрыть окно активного документа; • Save Settings — запись конфигурации (установок) Maple; • AutoSave Settings — автоматическая запись конфигурации. • Print Preview — предварительный просмотр документа перед печатью; • Print — печать документа; • Printer Setup — установка параметров принтера. • Exit (Alt+F4) - выйти из Maple 7. Меню Edit Меню Edit содержит различные операции редактирования. Undo — отменить последнюю операцию редактирования; • Redo — восстановить последнюю отмененную операцию; • Cut — переместить выделенный фрагмент в буфер обмена; • Copy — скопировать выделенный фрагмент в буфер обмена; • Copy As Maple Text — копирование выделения в буфер обмена в формате Maple-текста; • Paste — вставить содержимое буфера обмена в документ; • Paste Maple Text — вставить данные из буфера обмена в формате Maple-текста; • Delete Paragraph - удаление параграфа (строки); • Select All - выделение всех объектов документа. • Find (Ctrl+F5) — выводит окно поиска заданной строки и ее замены на другую строку; • Hyperlinks — редактирование гиперссылок; • Object — редактирование объекта; 82 • Unit Converter — перевод между различными единицами измерения; • Complete Command — подсказка для завершения текущей незаконченной команды Maple-языка; • Entry Mode (F5) — переключение режима ввода. • Split or Join — разделение или объединение объектов; • Execute — исполнение выделенных или всех строк документа; • Remove Output — удаление вывода для выделенных или всех строк документа. Меню View Для управления видом интерфейса и документа служит меню View. Оно содержит ряд флажков и несколько команд управления общим видом программы. Установленные флажки, управляющие показом элементов интерфейса, распространяют свое действие на все открытые документы. При выходе из системы (командой Exit) все установки сохраняются, так что при новом запуске системы внешний вид интерфейса будет определяться именно ими. • Toolbar — управление показом панели инструментов; • Context Bar — управление показом контекстной панели; • Status Line — управление показом строки состояния. • Symbol Palette — палитра символов; • Expression Palette — палитра выражений; • Matrix Palette — палитра шаблонов матриц; • Vector Palette — палитра шаблонов векторов. • Show All Palettes — показать все палитры; • Hide All Palettes — скрыть все палитры. • Zoom Factor — задание масштаба просмотра документа; • Bookmarks — установка закладок. • Back — переход обратно по последней пройденной гиперссылке; • Forward — команда, обратная команде Back. 83 • Hide Spreadsheets — скрыть электронные таблицы; • Hide Input — скрыть ввод; • Hide Output — скрыть вывод; • Hide Graphics — скрыть графические объекты • Show Invisible Characters — показ непечатаемых символов; • Show Section Ranges (Shift+F9) — показ областей секций; • Show Group Ranges — показ областей групп; • Show OLE type — показ объектов OLE. • Expand All Sections — раскрыть все секции; • Collapse All Sections — свернуть все секции. Меню Insert В меню Insert сосредоточены основные команды по обеспечению вставки различных объектов в редактируемый документ. Это позволяет быстро модифицировать документ и добиться его большей выразительности. Следует отметить, что меню Insert является контекстно-зависимым. К примеру, оно исчезает, если выделен график. • Text — ввод текста; • Standard Math — ввод неисполняемых математических выражений; • • Maple Input — ввод исполняемых выражений в Maple-формате; Standard Math Input — ввод выражений в математической форме в строку ввода. • Execution Group — вставка исполняемой ячейки до или после маркера ввода; • Plot — вставка пустого шаблона двумерного или трехмерного графика; • Spreadsheet — вставка электронной таблицы; • Paragraph — вставка текстовой области (абзаца); • Section — вставка кнопки секции; • Subsection — вставка кнопки подсекции; 84 • HyperLink — вставка гиперссылки; • Object — вставка связанного или внедренного объекта; • Page Break — вставка разрыва страниц. Меню Format Операции форматирования служат для придания отдельным объектам и документу в целом определенного стиля путем изменения как общего вида объектов, так и ряда их частных характеристик, например цвета и размера надписей, выбранного набора шрифтов и т. д. При этом возможна подстройка под вкус любого пользователя и подготовка документов высокого полиграфического качества. Стиль является центральным понятием для современных документов, будь то документы текстового процессора класса Word или системы символьной математики Maple 7. • Styles — установка стилей для всех объектов; • Page Numbers — задание параметров нумерации страниц. • Italic — задание курсивного начертания; • Bold — задание полужирного начертания; • Underline — задание подчеркнутого начертания. • Left Justify — по левому краю; • Center — по центру; • Right Justify — по правому краю. • Paragraph — форматирование абзаца; • Character — форматирование символов. И наконец, в пятой группе имеются еще две команды: • Indent — внедрение текущей строки в секцию; • Outdent — выведение текущей строки из секции. • Convert to — перевод из одной метрической системы в другую. Меню Spreadsheet Для работы с таблицами в Maple 7 появилось отдельное меню Spreadsheet. Оно содержит набор команд, обеспечивающих работу с табличными данными: 85 • Evaluate Selection — вычисление выражения в выделенной ячейке; • Evaluate Spreadsheet — вычисление выражений по всем ячейкам таблицы; • Row — работа со строками (вставка, удаление и т. д.); • Column — работа со столбцами (вставка, удаление и т. д.); • Fill — автоматическое заполнение ячеек; • Import data — импорт данных из других программ (например, из MATLAB); • Export data — экспорт данных в другие программы; • Properties — просмотр свойств ячеек; • Show Border — управление показом обрамления таблицы; • Resize to Grid — изменение размеров видимой таблицы с обрезанными ячейками до размера таблицы с целыми ячейками (дополнение идет по линиям раздела ячеек). Меню Options В меню Options сосредоточены средства для установки некоторых глобальных параметров ввода и вывода документов. Их число в Maple 7 существенно увеличено. • Replace Output — управляет характером вывода;, • Insert Mode — устанавливает режим вставки при вводе. • Export — параметры экспорта документов. • Input Display — управление показом выражений в строке ввода; • Output Display — управление показом результатов вычислений; • Assumed Variables — контроль за предполагаемыми переменными; • Plot Display — управление отображением графиков; • Display 2D-legends — управление показом подписей обозначений двумерной графики; • Print Quality — управление качеством печати. • Palette Size — управление размером палитр; • AutoSave — управление автоматическим сохранением документа. 86 Меню Window При серьезной работе в среде Maple 7 пользователь нередко вынужден работать одновременно с несколькими документами. Удобства такой работы зависят от того, как окна расположены в пределах экрана. Maple 7 дает возможность расположить их любым стандартным способом. Основные команды по установке расположения окон сосредоточены в меню Window. Это меню содержит следующие команды: • Cascade — каскадное расположение окон; • Tile — расположение окон мозаикой; • Horizontal — расположение окон по горизонтали; • Vertical — расположение окон по вертикали; • Arrange Icons - упорядочение расположения икон; • Close All — закрытие всех окон документов; • Close All Help - закрытие всех окон справочной системы. Среда Maple. Математический пакет Maple предназначен как для символьных математических, так и для численных вычислений. Синтаксис Maple в значительной степени похож на синтаксис языка программирования Паскаль или Си. Обязательно имеются операторы присваивания, богатый набор управляющих структур, возможности определения процедур и другое, одним словом, весь арсенал классических языков программирования, необходимый для записей алгоритмов. Всю информацию, как по синтаксису, так и по назначению команд, можно получить, используя команды: ? (help) – помощь; ?? (usage) – проверка синтаксиса; ??? (example) – пример для данной команды или меню. Программы Maple состоят из набора простых операторов (предложений), выполняемых последовательно. Предложения могут состоять из чисел, переменных, операторов и знаков арифметических (и других) операций. 87 Работа с пакетом Maple происходит в режиме интерпретатора. При загрузке программы автоматически загружается новый рабочий лист (worksheet), на котором присутствует приглашение для ввода команды > (prompt). Выполняемую команду заканчивают символом точка с запятой или двоеточие и нажимают клавишу Enter. При этом команда будет обработана программой, и результат будет выведен на экран. То, что при этом появляется на экране, условно разделяется на три части: область ввода (Input Region), которая состоит из набираемых предложений, область вывода (Output Region) и тексты комментариев. Область вывода может включать результаты выполнения математических и алгоритмических операций, а также графические образы (двумерная и трехмерная графика). Командную строку легко преобразовать в текстовую, нажав кнопку с изображением буквы Т на панели инструментов или отметив пункт Text в разделе Insert строки меню. Тогда с того места, где находится курсор будет вводится текстовая информация (комментарии), которая не будет восприниматься командным процессором при вводе команды. Область ввода и вывода вместе с соответствующими комментариями называется группой (Group). Группы разделяются сепараторами в виде квадратной скобки в крайнем левом положении рабочего поля [ (Separator). Чтобы продолжить запись предложения на следующей строке, используют комбинацию клавиш Shift+Enter. Обнаружив ошибку, Maple выводит сообшение о ней в следующей строке. При синтаксической ошибке символом ^ отмечается первая неузнанная литера. Приведем простейшие примеры использования арифметических выражений, математических функций, оператора присваивания и команд Maple. Пример выполнения арифметических действий и вывода результата: > 2*3^5-x^2*sin(y-Pi); 486 + x 2 sin(y) 88 Можно присваивать имена вводимым выражениям при помощи оператора присваивания :=, например > R:=5/Pi*exp(x); R := 5ex p Теперь можно ввести предыдущее выражение, просто записав присвоенное ему имя > R; 5ex p Следующий пример иллюстрирует действие команды combine, с помощью которой можно упростить тригонометрическое выражение: > combine (sin(x)^4-cos(x)^4); -cos(2 x) 2. Графика на плоскости Для построения двумерных графиков служит функция plot. Она задается в виде: plot(f, h, v) plot(f, h, v, о) где f —функция (или функции), график которой строится; h — диапазон по горизонтальной оси (Ох), задается в виде x=xmin..xmax; v — необязательный параметр, указывающий диапазон по вертикальной оси (Оу), задается в виде y=ymin..ymax; о — необязательный параметр или набор параметров, задающих стиль построения графика (толщину и цвет кривых, тип кривых, метки на них и т. д.). В двумерные графики можно включать дополнительные параметры: • параметр numpoints позволяет изменить количество точек графика. Значение этого параметра по умолчанию – 49; • параметром color можно задать цвет точек графика; 89 • параметр title добавляет заголовок; • параметром axes задается тип осей (рамка – FRAME, прямоугольник - BOXED, ортогональные – NORMAL или без осей NONE); • параметры xtickmarks и ytickmarks управляют числами меток на • параметр style применяется для задания интерполяции кривой по осях; заданным точкам (line - выводится интерполяционная кривая, point выводятся точки). Самыми простыми формами задания этой функции являются следующие: plot(f) — построение графика функции f, заданной только своим именем; plot(f(x), x=xmin..xmax) — построение графика функции f(x), при изменении независимой переменной х в диапазоне от значения xmin до значения xmax. Разумеется, имя х здесь дано условно — независимая переменная может иметь любое допустимое имя. Помимо построения самой кривой у(х) или f(x) необходимо задать ряд других свойств графиков, например вывод координатных осей, тип и цвет линий графика и др. Это достигается применением параметров графика — специальных указаний для Maple. Графики обычно (хотя и не всегда) строятся сразу в достаточно приемлемом виде. Это достигается тем, что многие параметры задаются по умолчанию и пользователь, по крайней мере начинающий, может о них ничего не знать. Однако язык общения и программирования Maple позволяет задавать управляющие параметры и в явном виде. Пример построения графика функции sin(x), заданной только своим именем: > plot(sin); 90 Рис.1 Пример построения графика функции sin(x) с указанием диапазона изменения аргумента: > plot(sin(x), x=-3/2*Pi..3/2*Pi); Рис.2 91 При построении графиков одной функции могут быть введены описание диапазонов и различные параметры, например: для задания цвета кривой, толщины линии, которой строится график функции, и др. К примеру, запись в списке параметров color=black задает вывод кривых черным цветом, а запись thikness=2 задает построение графика линией, удвоенной по сравнению с обычной толщиной. Пример построения графика с заданием параметров линии > plot(x*sin(x), x=-3*Pi..3*Pi, color=BLUE, thickness=2); Рис.3 Графики функций с разрывами Некоторые функции, например tan(x), имеют при определенных значениях х разрывы, причем случается, что значения функции в этом месте устремляются в бесконечность. Функция tan(x), к примеру, в точках разрывов устремляется к +∝ и -∝. Построение графиков таких функций нередко дает плохо предсказуемые результаты. Графический процессор Maple не всегда в состоянии определить оптимальный диапазон по оси ординат, а график функции выглядит весьма непредставительно. Пример построения графика функции tg(x) в интервале [-π, π]. 92 > plot(tan(x), x=-Pi..Pi); Рис.4 Следует отметить, что вид графика можно улучшить, просто задав диапазон по оси у. При этом в точках разрыва могут появиться вертикальные линии. Пример построения графика функции tg(x) в интервале [-π, π] с заданием диапазона изменения значения у. > plot(tan(x), x=-Pi..Pi, y=-4..4); Рис.5 93 Среди аргументов функции plot есть специальный параметр discont. Если задать его значение равным true, то качество графиков существенно улучшается. Улучшение достигается разбиением графика на несколько участков, на которых функция непрерывна, и более тщательным контролем за отображаемым диапазоном. При discont=false данный параметр отключен и строятся обычные графики. Пример построения графика функции tg(x) в интервале [-2π, 2π] с заданием диапазона изменения значения у и использованием параметра discont. > plot(tan(x), x = -2*Pi..2*Pi, y = -4..4, discont = true); Рис.6 График функции, заданной таблично. Пусть нам необходимо построить точки (Х,У) таблично заданной функции. Х 2 4 6 8 10 У 3 5 4 6 5 94 Для этого следует задать вектора значений переменных Х и У и построить заданные точки с помощью функции plot. > x:=vector([2,4,6,8,10]); x := [ 2 , 4 , 6 , 8 , 10 ] > y:=vector([3,5,4,6,5]); y := [ 3 , 5 , 4 , 6 , 5 ] > plot([x[i],y[i],i=1..5],x=1..10,y=0..7,style=point,color=black); Рис.7 Графики нескольких функций на одном рисунке Важное значение имеет возможность построения в одной системе координат графиков нескольких функций. В простейшем случае для построения таких графиков достаточно перечислить нужные функции в квадратных скобках через запятую и установить для них общие интервалы изменения. Пример построения графиков двух функций линиями одного цвета > plot([sin(x), sin(x)/x], x=-10..10, color=black); 95 Рис.8 Пример построения графиков двух функций линиями разных цветов и стилей: > plot([sin(x), sin(x)/x], x=-10..10, color=[black,red], style=[line,point]); Рис.9 96 Двумерная быстрая графика — smartplot В последние реализации системы Maple введены новые функции быстрого построения графиков. Функция smartplot(f) предназначена для создания двумерных графиков. Параметр f может задаваться в виде одиночного выражения или набора выражений, разделяемых запятыми. Задание управляющих параметров в этих графических функциях не предусмотрено; таким образом, их можно считать первичными, или черновыми. Для функции построения двумерного графика по умолчанию задан диапазон изменения аргумента -10.. 10. Пример применения функции smartplot для построения двух (нижний пример) графиков функций на одном рисунке. > smartplot(sin(x), sin(x)/x); Рис.10 Построение двумерных графиков типа implicitplot В математике часто встречается особый тип задания геометрических фигур, при котором переменные х и у связаны неявной зависимостью. Например, окружность задается выражением х2 + у2 =R2, где R — радиус 97 окружности. Для задания двумерного графика такого вида служит функция импликативной графики: implicitplot(eqn,x=a..b,y=c..d,options) > with(plots): implicitplot(x^2+y^2=1, x=-1..1, y=-1..1); Рис.11 3. Решение задач линейной алгебры. Для решения задач линейной алгебры в Maple используется пакет linalg. Его подключают с помощью команды with(linalg). Это один из самых обширных и мощных пакетов в области решения задач линейной алгебры. Он содержит свыше ста функций: > with(linalg) Warning, inserted missing semicolon at end of statement, with(linalg); [BlockDiagonal, GramSchmidt, JordanBlock, LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, coldim, colspace, colspan, companion, concat, cond, copyinto, crossprod, curl, definite, delcols, delrows, det, diag, diverge, dotprod, eigenvals, eigenvalues, eigenvectors, eigenvects, entermatrix, equal, exponential, 98 extend, ffgausselim, fibonacci, forwardsub, frobenius, gausselim, gaussjord, geneqns, genmatrix, grad, hadamard, hermite, hessian, hilbert, htranspose, ihermite, indexfunc, innerprod, intbasis, inverse, ismith, issimilar, iszero, jacobian, jordan, kernel, laplacian, leastsqrs, linsolve, matadd, matrix, minor, minpoly, mulcol, mulrow, multiply, norm, normalize, nullspace, orthog, permanent, pivot, potential, randmatrix, randvector, rank, ratform, row, rowdim, rowspace, rowspan, rref, scalarmul, singularvals, smith, stackmatrix, submatrix, subvector, sumbasis, swapcol, swaprow, sylvester, toeplitz, trace, transpose, vandermonde, vecpotent, vectdim, vector, wronskian] Ниже мы рассмотрим более подробно наиболее часто используемые функции из этого пакета. С деталями синтаксиса (достаточно разнообразного) для каждой из указанных функций можно ознакомиться в справочной системе Maple. Для этого достаточно использовать команду ?name; где name — имя функции (из приведенного списка). Создание векторов и матриц. Имеются следующие функции для задания векторов и матриц: vector(n,list) — сoздание вектора с n элементами, заданными в списке list; matrix(n,m,list) — создание матрицы с числом строк n и столбцов m с элементами, заданными списком list. Ниже показано применение этих функций: Есть некоторые отличия в правилах оперирования программы Maple с массивами по сравнению с менее сложными объектами. Если вы присвоили массиву имя переменной, а затем захотите вывести значение этой переменной, просто записав ее имя в виде команды, то результатом будет не сам массив, а имя переменной, которое ему присвоено. Для вывода самого массива нужно использовать одну из команд: op или evalm (для матриц). 99 На отдельные элементы массива можно ссылаться, указав номер строки и столбца, в которых находится элемент: > M[1,2]; 2 > M[2,2]; 5 Можно также переопределять элементы после того, как массив уже создан: Функции для работы с векторами и матрицами Для работы с векторами и матрицами Maple имеет множество функций, входящих в пакет linalg. Ограничимся приведением краткого описания наиболее распространенных функций этой категории. Операции со структурой отдельного вектора V и матрицы М: − coldim(M) — возвращает число столбцов матрицы М; − rowdim(M) — возвращает число строк матрицы М; − vectdim(V) — возвращает размерность вектора V; 100 − col(M, i) — возвращает i-й столбец матрицы М; − row(M, i) — возвращает i-ю строку матрицы М; − minor(M, i, j) — возвращает минор матрицы М для элемента с индексами i и j; − delcols(M, i .. j) — удаляет столбцы матрицы М от i-ro до j-ro; − delrows (V, i ..j) — удаляет строки матрицы М от i-й до j-й; − extend (М, m, n, х) — расширяет матрицу М на m строк и n столбцов с применением заполнителя х. Основные векторные и матричные операции: − dotprod(U, V) — возвращает скалярное произведение векторов U и V; − crossprod(U, V) — возвращает векторное произведение векторов U и V; − norm(V) или norm(M) — возвращает норму вектора или матрицы; − copyinto(A, B, i, j) — копирует матрицу А в В для элементов последовательно от i до j; − concat(M1, M2) — возвращает объединенную матрицу с горизонтальным слиянием матриц Ml и М2; − matadd(A, B) и evalm(A+B) — возвращает сумму матриц А и В; − multlply(A, B) и evalm(A&*B) — возвращает произведение матриц А и В; − det(M) — возвращает детерминант (определитель) матрицы М; − Eigenvals(M, vector) — инертная форма функции, возвращающей собственные значения матрицы М и (при указании необязательного параметра vector) соответствующие им собственные векторы; − trace(M) — возвращает след матрицы М; − rank(M) — возвращает ранг матрицы М; − transpose(M) — возвращает транспонированную матрицу М; − inverse(M) или evalm(l/M) — возвращает матрицу, обратную к М; 101 4. Решение уравнений и неравенств Основная функция solve Maple имеет мощные средства для решения линейных и нелинейных уравнений и неравенств. Так, для решения линейных и нелинейных уравнений в аналитическом виде используется достаточно универсальная и гибкая функция solve(eqn, var) или so1ve({eqnl,eqn2,.. .}.{varl,var2,...}), где eqn — уравнение, содержащее функцию ряда переменных, var — переменная, по которой ищется решение. 102 Если при записи eqn не используются знак равенства или знаки отношения, считается, что solve ищет корни уравнения eqn=0. Пример 1. Решить алгебраическое уравнение: x2 + 1 x2 −1 − = 23 . x−4 x+3 Решение. Вводим заданное уравнение и решаем его с помощью функции solve. Ответ: { − 55 ,5 } 16 Более компактное решение этого же уравнения выглядит так: Пример 2. Решить алгебраическое уравнение: 5 x 2 + x + 7 − 13 = 0 . Решение. Представим уравнение в виде отдельной переменной eg. Решим его с помощью функции solve. > eg:=5*x^2+abs(x+7)-13=0; eg := 5 x 2 + x + 7 − 13 = 0 > solve(eg,x); 1, -6 5 Сделаем проверку решения с помощью функции подстановки subs. Команда подстановки subs(a=b, выражение) позволяет заменить в математическом выражении один операнд (а) другим (b), в частности числом. > subs(x=1,eg); −8 + 8 = 0 > subs(x=-6/5,eg); − 29 29 + =0 5 5 103 Ответ: { − 6 ,1 } 5 Функция solve старается дать решение в аналитическом виде. Для получения корней уравнений в численном виде необходимо затем использовать функцию evalf. Пример 3. Решить уравнение ln( x) = 2 . Решение. Применим функцию solve. > solve(sqrt(ln(x))=2,x); e4 Для получения корней уравнений в численном виде используем функцию evalf. > evalf(%); 54.59815003 В решениях уравнений нередко появляется функция RootOf, означающая, что корни нельзя выразить в радикалах. Для получения решений вида RootOf в численном виде может также использоваться функция evalf. Пример 4. Решить уравнение x 4 + x + 1 = 0 . Решение. > solve(x^4+x+1,x); RootOf (_Z 4 + _Z + 1, index = 1), RootOf (_Z 4 + _Z + 1, index = 2), RootOf (_Z 4 + _Z + 1, index = 3), RootOf (_Z 4 + _Z + 1, index = 4) > evalf(%); 0.7271360845 + 0.9340992895 I, -0.7271360845 + 0.4300142883 I, -0.7271360845 - 0.4300142883 I, 0.7271360845 - 0.9340992895 I x Пример 5. Решить уравнение e = sin x > solve(exp(x)=sin(x),x); RootOf (_Z - ln(sin(_Z ))) > evalf(%); 0.3627020561 - 1.133745919 I 104 Функция solve может использоваться для решения тригонометрических уравнений. Приведем несколько примеров: Однако из приведенных примеров видно, что при этом найдено только одно (главное) решение. Периодичность тригонометрических функций и связанная с этим множественность решений оказались проигнорированы. Однако можно попытаться найти все периодические решения, выполнив следующую команду: > _EnvAllSolutions:=true; Указанная в ней системная переменная отвечает за поиск всех периодических решений, когда ее значение равно true, и дает поиск только главных решений при значении false, принятом по умолчанию. Так что теперь можно получить следующее: В решениях встречаются переменные _В1- и _Z1~, означающие ряд натуральных чисел. Благодаря этому через них можно представить периодически повторяющиеся решения. Решение систем линейных уравнений Функция solve также может с успехом решать системы линейных уравнений. Такое решение в силу простоты записи функции может быть предпочтительным. Для решения система уравнений и перечень неизвестных задаются в виде множеств, функция solve возвращает решение в виде значений неизвестных х и у. 105 Пример. Решить систему уравнений ⎧3 x + 5 y = 15 . ⎨ ⎩ y = x −1 > sys:={3*x+5*y=15, y=x-1}; sys := {3 x + 5 y = 15, y = x - 1} > solve(sys, {x,y}); {y = 3/2, x = 5/2} Приведем геометрическую интерпретацию решения этой системы двух линейных уравнений, имеющей единственное решение: > with(plots): > implicitplot(sys, x=-10..10, y=-10..10, color=black); Рис.1 Нетрудно заметить, что в этом случае геометрическая интерпретация решения сводится к нахождению точки пересечения двух прямых, отображающих два уравнения. При этом имеется единственное решение, дающее значения х и у. Приведем пример системы двух линейных уравнений, не имеющих решения. В этом случае функция solve решения не возвращает: > sys:={5*x+3*y=30, 10*x+6*y=-30}; sys := {5 x + 3 y = 30, 10 x + 6 y = -30} > solve(sys, {x,y}); 106 > with(plots): > implicitplot(sys, x=-10..10, y=-10..10, color=black); Рис.2 Следующий пример демонстрирует попытку решения системы двух линейных уравнений, имеющих бесконечно много решений: > sys:={5*x+3*y=30, 10*x+6*y=60}; sys := { 5 x + 3 y = 30, 10 x + 6 y = 60 } > implicitplot(sys, x=-10..10, y=-12..12, color=black); Рис.3 107 > solve(sys, {x,y}); { x = x, y = − 5x + 10 } 3 Приведем пример решения систем линейных уравнений с применением функций, входящих в пакет linalg. 108 Решение неравенств Неравенства в математике встречаются почти столь же часто, как и равенства. Они вводятся знаками отношений, например: > (больше), < (меньше) и т. д. Решение неравенств существенно расширяет возможности функции solve. При этом неравенства задаются так же, как и равенства. Приведенные примеры поясняют технику решения неравенств. Решение неравенств находится в следующей форме — представлены критические значения аргумента, вплоть до не включаемых значений области действия неравенства (они указываются словом Open). Всегда разумным является построение графика выражения, которое задает неравенство, — это позволяет наглядно убедиться в правильности решения. Рассмотрим решения типовых неравенств и систем неравентсв. Пример 1. Решить алгебраическое неравенство: 1 5 + <1. 2−x 2+ x > solve(1/(2-x)+5/(2+x)<1,x); RealRange ( −∞ , Open ( -2 ) ) , RealRange ( Open ( 2 ) , ∞ ) Чтобы наглядно убедиться в правильности решения, построим график функции, которая записана в левой части неравенства: > plot(1/(2-x)+5/(2+x),x=-10..10,y=-10..5); Рис.4 109 Ответ: (-∞,-2)U(2,+∞). Пример 2. Найти целые решения системы неравенств: x+5 ⎧ x − 1 2x + 3 x ⎪ 2 − 3 + 6 <2− 2 ⎨ x+5 4−x x +1 ⎪1 − + < 3x − 8 2 4 ⎩ Находим все множество решений системы: > solve({(x-2)/2-(2*x+3)/3+x/6<2-(x+5)/2,1-(x+5)/8+(4-x)/2<3*x-(x+1)/4},x); { x < 3, 7 < x} 9 Выбираем отсюда целые значения: х=1, х=2. Однако можно сразу применить функцию isolve, которая возвращает целочисленные решения уравнений и неравенств: > isolve({(x-2)/2-(2*x+3)/3+x/6<2-(x+5)/2,1-(x+5)/8+(4-x)/2<3*x-(x+1)/4},x); { x = 2 }, { x = 1 } Пример 3. Решить алгебраическое неравенство, содержащее модуль: 3x + 1 <3 x−3 > solve(abs((3*x+1)/(x-3))<3,x); 4 RealRange ⎛⎜⎜ −∞ , Open ⎜⎜⎛ ⎟⎟⎞ ⎟⎟⎞ ⎝ ⎝3⎠⎠ Можно построить графики функций, задающих левую и правую части неравенства, и наглядно убедиться в правильности решения. > plot(abs((3*x+1)/(x-3))-3,x=-10..10,y=-10..10); 110 Рис.5 Решение систем нелинейных и трансцендентных уравнений Функция solve может использоваться для решения систем нелинейных и трансцендентных уравнений. Для этого система уравнений и перечень неизвестных задаются в виде множеств. Пример 1. Решить систему двух уравнений с параметрами a и b ⎧ xy = a ⎨ ⎩x + y = b . > s:={x*y=a, x+y=b}; s := { x y = a, x + y = b } > solve(s,{x,y}); { y = RootOf ( _Z 2 − _Z b + a ), x = −RootOf ( _Z 2 − _Z b + a ) + b } > allvalues(%); 1 1 1 1 b2 − 4 a , x = b − b 2 − 4 a }, b+ 2 2 2 2 1 1 1 1 b2 − 4 a , x = b + b2 − 4 a } {y = b − 2 2 2 2 {y = Пример 2. Решить систему двух уравнений ⎧ xy = 2 . ⎨ ⎩x + y = 3 > s:={x*y=2, x+y=3}; s := { x y = 2, x + y = 3 } 111 > solve(s,{x,y}); { x = 2, y = 1 } , { y = 2, x = 1 } 5. Нахождение эстремумов функции. Для исследования экстремумов функции как одной, так и многих переменных используется команда extrema(expr, constr, vars, nv), где expr – выражение, экстремумы которого нужно найти, constr – ограничения, vars – переменные, по которым разыскивается экстремум, а nv – имя переменной, которой будут присвоены координаты точек экстремумов. Пример 1. Определить экстремумы функции y = x 3 − 6x 2 + 9x − 1 . > extrema( x^3-6*x^2+9*x-1,{},x,'s' );s; {-1, 3} {{x = 1}, {x = 3}} Пример 2. Определить экстремумы функции y = arctg ( x) − 1 ln(1 + x 2 ) . 2 > extrema( arctan(x)-1/2*ln(1+x^2),{},x,'s' );s; 6. Интегрирование. Аналитическое интегрирование. Как определенные, так и неопределенные интегралы в программе Maple вычисляются при помощи команды int (параметр1, параметр2), где параметр1 – интегрируемое выражение, параметр2 – переменная интегрирования. Результат интегрирования, если он найден, выводится без произвольной постоянной. Этим достигается возможность многократного использования результата в дальнейших вычислениях. Если команда int не находит интеграла, то возвращается исходная запись интеграла. В определенных интегралах ко второму параметру команды int добавляют 112 пределы интегрирования. Далее некоторые примеры нахождения неопределенных и определенных интегралов. Пример 1. Найти неопределенный интеграл ∫ 2x Пример 2. Вычислить определенный интеграл 2 dx . 2 ∫ 2x 2 dx . 1 Среди значений пределов интегрирования может быть бесконечность, обозначаемая как infinity. +∞ ∫x Пример 3. Вычислить интеграл −∞ 2 1 dx . + 6 x + 12 Если команда int не находит интеграла, то возвращается исходная запись интеграла. Пример 4. Найти интеграл ∫e 1 x2 +x dx . Для выполнения численного интегрирования используется команда evalf. 113 7. Решение дифференциальных уравнений. Для решения системы простых дифференциальных уравнений и систем используется команда dsolve(уравнения, переменные, опции), где уравнения – заданные дифференциальные уравнения, переменные – те переменные, по отношению к которым ищется решение, опции – необязательные опции, задаваемые в виде: ключевое слово=значение. Если задана опция type=exact, то команда пытается найти аналитическое решение – эта опция задана по умолчанию. Другие возможные значения этой опции type=series (в этом случае решение ищется в виде рядя) и type=numeric (в этом случае ищется численное решение). Можно задать еще несколько опций, которые определяют, будет ли решение искаться в явном виде или нет (explicit=true или explicit=false), задают метод решения (например method=laplace). Если задана опция type=numeric, то можно также задать метод численного решения, например: metod=rkf45 – метод Рунге-Кутта четвертого-пятого порядка, method=dverk78 - метод Рунге-Кутта седьмого-восьмого порядка, method=classical – содержит несколько классических методов (Эйлера, Рунге-Кутта третьего порядка и некоторые другие), method=gear и method=mgear – одношаговый и многошаговый методы Гира. Команда dsolve способна решать аналитически большое количество дифференциальных уравнений. 114 По умолчанию функция dsolve автоматически выбирает наиболее подходящий метод решения дифференциальных уравнений. Однако в параметрах функции dsolve в квадратных скобках можно указать предпочтительный метод решения дифференциальных уравнений. Допустимы следующие методы: quadrature linear Bernoulli separable inverse homogeneous Chini lin_sym exact Abel pot_sym linear Информацию о каждом методе можно получить, используя команду Tdsolve, method и указав в ней конкретный метод. Например, команда Tdsolve,linear вызовет появление страницы справочной системы с подробным описанием линейного метода решения дифференциальных уравнений. Производные при записи дифференциальных уравнений могут задаваться функцией diff или оператором D. Пример 1. Найти общее решение дифференциального уравнения с разделяющимися переменными: y′ 1 − x 2 = 1 + y 2 . > eg:=diff(y(x),x)*sqrt(1-x^2)=1+y(x)^2; d eg := ⎛⎜⎜ y( x ) ⎟⎟⎞ ⎝ dx ⎠ 1 − x 2 = 1 + y( x ) 2 > dsolve(eg,y(x)); y( x ) = tan ( arcsin ( x ) + _C1 ) Если требуется получить не общее решение, а общий интеграл обыкновенного дифференциального уравнения, то добавляется параметр implicit. > dsolve(diff(y(x),x)*sqrt(1-x^2)=1+y(x)^2,y(x),implicit); arcsin ( x ) − arctan ( y( x ) ) + _C1 = 0 Пример 2. Решить уравнение Бернулли: y ′ = yctgx + y2 sin x > eg:=diff(y(x),x)=y(x)*cos(x)/sin(x)+y(x)^2/sin(x); 115 eg := d y( x ) cos ( x ) y( x ) 2 y( x ) = + dx sin( x ) sin( x ) > dsolve(eg,y(x)); y( x ) = − sin( x ) x − _C1 Начальные условия в дифференциальных уравнениях задаются через запятую, при этом уравнение и начальные условия объединяются фигурными скобками в множество. Производные в начальных условиях записываются в операторном виде как D(D(y))(0). Пример 3. Найти частное решение дифференциального уравнения, удовлетворяющее заданному начальному условию: π y ′tgx = y, y ( ) = 1 . 2 > dsolve({diff(y(x),x)*tan(x)=y(x),y(Pi/2)=1},y(x)); y( x ) = sin( x ) Пример 4. Найти частное решение однородного дифференциального уравнения 1-го порядка, удовлетворяющее заданному начальному условию: xy ′ = y ln y , y (1) = 1 . x > dsolve({diff(y(x),x)*x=y(x)*ln(y(x)/x),y(1)=1},y(x)); y( x ) = e (1 − x) x Система дифференциальных уравнений вместе с начальными данными записывается в виде последовательности выражений в фигурных скобках в аргументе команды dsolve. Пример 5. Решить систему дифференциальных уравнений с заданными начальными условиями: ⎧ y′ = 2z − y − x ⎪z ′ = y ⎪ . ⎨ ⎪ y (0) = 0, ⎪⎩ z (0) = 1 116 Решение этой же системы можно найти в виде степенных рядов: > dsolve({sys,y(0)=0,z(0)=1},fcn,type=series); 3 2 7 3 13 4 9 5 x + x − x + x + O( x 6 ), 2 6 24 40 1 7 4 13 5 z( x ) = 1 + x 2 − x 3 + x − x + O( x 6 ) } 2 24 120 { y( x ) = 2 x − Численное решение той же системы можно найти, установив опцию type=numeric. При этом решение возвращается в виде специальной процедуры, по умолчанию реализующей метод решения дифференциальных уравнений Рунге—Кутта порядков 4 и 5 (в зависимости от условий адаптации решения к скорости его изменения). Эта процедура называется rkf45 и символически выводится (без тела) при попытке решения заданной системы дифференциальных уравнений. > f:=dsolve({sys,y(0)=0,z(0)=1},fcn,numeric); f := proc (x_rkf45 ) ... end proc Указанная процедура возвращает особый тип данных, позволяющих найти решение в любой точке или построить график решения (или решений). Чтобы найти решение при значении независимой переменной x, равном, например, 1, достаточно записать: > f(1); [ x = 1., y( x ) = 1.29331471710991396 , z( x ) = 1.71248355331200930 ] Для графического отображения в Maple используется функция plot[odeplot] из пакета odeplot, предназначенного для визуализации решений дифференциальных уравнений. > plots[odeplot](f,[x,z(x)],0..2.5,labels=[x,z],color=black); 117 Рис.1 > plots[odeplot](f,[x,y(x)],0..2.5,color=black); Рис.2 118 2. Приложение пакета Maple к решению экономических задач. 1. Использование алгебры матриц. Задача 1. Предприятие выпускает ежесуточно четыре вида изделий, основные производственно-экономические показатели заданы таблицей. Таблицу удобно построить с помощью программы Microsoft Excel. Вид изделия № Количество изделий, ед. Расход сырья, кг. Норма времени изготовления, ч/изд Цена изделия ден.ед./изд. 1 2 3 4 20 50 30 40 5 2 7 4 10 5 15 8 30 15 45 20 Таб. 1. Требуется определить следующие ежесуточные показатели: 1. расход сырья S, 2. затраты рабочего времени T, 3. стоимость выпускаемой продукции P. Решение. По данным таблицы составим четыре вектора, характеризующие весь производственный цикл: ⎛ 20 ⎞ ⎜ ⎟ ⎜ 50 ⎟ q = ⎜ ⎟ ─ вектор ассортимента, 30 ⎜⎜ ⎟⎟ ⎝ 40 ⎠ ⎛5⎞ ⎜ ⎟ ⎜ 2⎟ s = ⎜ ⎟ ─ вектор расхода сырья, 7 ⎜⎜ ⎟⎟ ⎝ 4⎠ ⎛10 ⎞ ⎛ 30 ⎞ ⎜ ⎟ ⎜ ⎟ ⎜5 ⎟ ⎜15 ⎟ t = ⎜ ⎟ ─ вектор затраты рабочего времени, p = ⎜ ⎟ ─ ценовой вектор. 15 45 ⎜⎜ ⎟⎟ ⎜⎜ ⎟⎟ ⎝8 ⎠ ⎝ 20 ⎠ Тогда искомые величины будут представлять собой соответствующие скалярные произведения S = s q, T = t q, P = p q . Таким образом, S = s q =100+100+210+160=570 кг, T=1220 ч, P=3500 ден. ед. 119 В системе Maple для решения задач линейной алгебры создан пакет linalg. Для использования функций этого пакета нужно выполнить команду >with(linalg) Посмотрим, как S, T, P находятся с помощью Maple. Подключим пакет linalg. > with(linalg): Создадим векторы s, t, p, q. > s:=vector(4,[5,2,7,4]); s := [ 5, 2, 7, 4 ] > t:=vector(4,[10,5,15,8]); t := [ 10 , 5, 15 , 8 ] > p:=vector(4,[30,15,45,20]); p := [ 30 , 15 , 45 , 20 ] > q:=vector(4,[20,50,30,40]); q := [ 20 , 50 , 30 , 40 ] Функция dotprod(u,v) вычисляет скалярное произведение векторов u, v. > S:=dotprod(s,q); S := 570 > T:=dotprod(t,q); T := 1220 > P:=dotprod(p,q); P := 3500 Задача 2. Предприятие выпускает 4 вида изделий с использованием 4-х видов сырья. Нормы расхода сырья заданы в таблице 2. Сырье 1 Сырье 2 Сырье 3 Сырье 4 Изделие 1 2 3 4 5 Изделие 2 1 2 5 6 Изделие 3 7 2 3 2 Изделие 4 4 5 6 8 Таб. 2. 120 Известен план выпуска изделий: 60, 50, 35, 40 единиц соответственно. Требуется найти затраты каждого вида сырья при заданном плане выпуска изделий. Решение. Составим матрицу A и вектор q : ⎛2 ⎜ ⎜1 A = ⎜ 7 ⎜⎜ ⎝4 3 4 2 5 2 3 5 6 5⎞ ⎟ 6⎟ 2⎟ ⎟ 8 ⎟⎠ q =(60,50,35,40). Для отыскания затрат каждого вида сырья требуется перемножить матрицы q и A. Получится матрица-строка b= q A, где b[i]─затраты i-го вида сырья. ⎛2 ⎜ ⎜1 b = (60,50,35,40)⎜ 7 ⎜⎜ ⎝4 3 2 2 5 4 5 3 6 5⎞ ⎟ 6⎟ = 2⎟ ⎟ 8 ⎟⎠ =(120+50+245+160, 180+100+70+200, 240+250+105+240, 300+300+70+320)= =(575, 550, 835, 990) Посмотрим, как находятся затраты каждого вида сырья с помощью Maple. Подключим пакет linalg. > with(linalg): Создадим матрицу A > A:=matrix(4,4,[[2,3,4,5],[1,2,5,6],[7,2,3,2],[4,5,6,8]]); ⎡2 ⎢⎢ 1 A := ⎢⎢ ⎢⎢ 7 ⎢4 ⎣ 3 2 2 5 4 5 3 6 5⎤ ⎥ 6⎥⎥ ⎥ 2⎥⎥ 8⎥⎦ Создадим матрицу-строку, соответствующую вектору q > q:=matrix(1,4,[ 60,50,35,40]); q := [60 50 35 40 ] Функция multiply(U,V) умножает матрицу U на матрицу V. Найдем матрицу b= q A > b:= multiply(q,A); 121 b := [575 550 835 990 ] Задача 3. Пусть затраты 4-х видов сырья на выпуск 4-х видов продукции определяются таблицей 3. План выпуска продукции такой же, как в задаче 2. Требуется найти • затраты на сырье, необходимое для производства одного изделия для каждого вида продукции, и на перевозку этого сырья • общие затраты на сырье и его транспортировку если известны себестоимости каждого вида сырья и его доставки (соответственно 4, 6, 5, 8 и 2, 1, 3, 2 ден.ед.). Решение. Составим матрицу себестоимостей сырья и его доставки ⎛4 6 5 8⎞ C = ⎜⎜ ⎟⎟ . ⎝ 2 1 3 2⎠ Тогда, чтобы ответить на первый вопрос, нужно умножить матрицу A на транспонированную матрицу C T : ⎛2 ⎜ ⎜1 T AC = ⎜ 7 ⎜⎜ ⎝4 3 2 2 5 4 5 3 6 5 ⎞⎛ 4 ⎟⎜ 6 ⎟⎜ 6 2 ⎟⎜ 5 ⎟⎜ 8 ⎟⎠⎜⎝ 8 2 ⎞ ⎛ 86 ⎟ ⎜ 1 ⎟ ⎜ 89 = 3 ⎟ ⎜ 71 ⎟ ⎜ 2 ⎟⎠ ⎜⎝140 29 ⎞ ⎟ 31 ⎟ 29 ⎟ ⎟ 47 ⎟⎠ Суммарные затраты на сырье и его доставку при векторе-плане выпуска продукции q определяются произведением вектора q на матрицу AC T : ⎛ 86 ⎜ ⎜ 89 q AC T = (60,50,35,40)⎜ 71 ⎜⎜ ⎝140 29 ⎞ ⎟ 31 ⎟ = (17695,6185) . 29 ⎟ ⎟ 47 ⎟⎠ С помощью Maple получим: > with(linalg): > A:=matrix(4,4,[[2,3,4,5],[1,2,5,6],[7,2,3,2],[4,5,6,8]]); ⎡2 ⎢⎢ 1 A := ⎢⎢ ⎢⎢ 7 ⎢4 ⎣ 3 2 2 5 4 5 3 6 5⎤ ⎥ 6⎥⎥ ⎥ 2⎥⎥ 8⎥⎦ 122 > C:=matrix(2,4,[[4,6,5,8],[2,1,3,2]]); 4 6 5 8⎤ C := ⎡⎢⎢ ⎥ ⎣2 1 3 2⎥⎦ > q:=matrix(1,4,[ 60,50,35,40]); q := [60 50 35 40 ] Функция transpose(M) возвращает транспонированную матрицу. Произведение матриц A и C T обозначим через G. > G:= multiply(A, transpose(C)); ⎡ 86 ⎢⎢ 89 G := ⎢⎢ ⎢⎢ 71 ⎢140 ⎣ 29 ⎤ ⎥ 31 ⎥⎥ ⎥ 29 ⎥⎥ 47 ⎥⎦ Таким образом, найдены затраты на сырье, необходимое для производства одного изделия для каждого вида продукции, и на перевозку этого сырья. Пусть n─вектор, указывающий общие затраты на сырье и его транспортировку, т. е. n = q AC T . > n:= multiply(q,G); n := [17695 6185 ] 2. Использование систем линейных уравнений. Задача 4. Прогноз выпуска продукции по запасам сырья. Предприятие выпускает три вида продукции, используя сырье трех типов. Необходимые характеристики производства указаны в таблице 3. Вид Расход сырья по видам продукции, Запас сырья, сырья вес.ед./изд. вес.ед. 1 2 3 1 6 4 5 2400 2 4 3 1 1450 3 5 2 3 1550 Таб. 3. 123 Требуется определить объем выпуска продукции каждого вида при заданных запасах сырья. Решение. Обозначим неизвестные объемы выпуска продукции через x1 , x 2 , x3 . Тогда при условии полного расхода запасов для каждого вида сырья можно записать балансовые соотношения, которые образуют систему трех уравнений с тремя неизвестными: ⎧6 x1 + 4 x 2 + 5 x3 = 2400 ⎪ ⎨4 x1 + 3x 2 + x3 = 1450 . ⎪5 x + 2 x + 3x = 1550 2 3 ⎩ 1 Решая эту систему уравнений любым способом (например, по правилу Крамера или методом Гаусса), находим, что при заданных запасах сырья объемы выпуска продукции составят по каждому виду соответственно x1 = 150, x 2 = 250, x3 = 100 . Для использования системы Maple для решения системы вспомним, что нужно составить матрицу из коэффициентов системы ⎛ 6 4 5⎞ ⎛ 2400 ⎞ ⎜ ⎜ ⎟ ⎟ A = ⎜ 4 3 1 ⎟ , вектор-столбец свободных членов системы b = ⎜ 1450 ⎟ . ⎜ 5 2 3⎟ ⎜ 1550 ⎟ ⎝ ⎝ ⎠ ⎠ ⎛ x1 ⎞ ⎜ ⎟ Тогда вектор-решение x = ⎜ x2 ⎟ определится по формуле x = A−1b , где A−1 ─ ⎜x ⎟ ⎝ 3⎠ матрица, обратная к матрице A, для отыскания которой в системе Maple имеется функция inverse(A). > with(linalg): > A:=matrix(3,3,[[6,4,5],[4,3,1],[5,2,3]]); ⎡⎢ 6 A := ⎢⎢ 4 ⎢⎢ ⎣5 4 3 2 5⎤ ⎥ 1⎥⎥ ⎥ 3⎥⎦ > b:= vector(3,[2400,1450,1550]); b := [ 2400 , 1450 , 1550 ] > x:= multiply(inverse(A),b); x := [ 150 , 250 , 100 ] 124 4. Графики функций и их приложения Задача 5. Кривые спроса и предложения. Точка равновесия. Рассмотрим зависимость спроса D и предложения S от цены P. Чем меньше цена, тем больше спрос при постоянной покупательной способности населения. Обычно зависимость D от P имеет вид ниспадающей кривой, которую можно задать формулой D = P a + c , где c, a ─ константы, a<0. Предложение растет с увеличением цены на товар, и потому зависимость S от P имеет форму S = P b + d , где d, b ─ константы, b≥1. Для экономики представляет интерес условие равновесия, т. е. когда спрос равен предложению. Это условие дается уравнением D(P)=S(P) и соответствует точке пересечения кривых D и S. Значение P0, при котором кривые пересекаются, называется равновесной ценой. Найдем приближенно значение равновесной цены при a=-1/2, b=2, c=2 ,d=1, 0.1<P<3. Рассмотрим графики этих кривых при a=-1/2, b=2, c=2 ,d=1, 0.1<P<3. Решение. Графики D(P) и S(P) нетрудно получить с помощью программы Maple. Они строятся так: Зададим параметры a, b, c, d: > a:=-0.5: b:=2: c:=2: d:=1: Определим функции D(P) и S(P): > D(P):=P^a + c: S(P):= P^b + d: Для построения графиков используется функция plot > plot([D(P), S(P)], P=0.1..3, color=black); Получим графики D(P) и S(P): 125 По графику нетрудно определить приближенное значение P0. Равновесная цена приближенно равна 1,35. Заметим, что с помощью программы Maple легко провести исследование поведения кривых спроса D и предложения S при разных значениях параметров a, b, c, d и посмотреть, как при этом меняется значение равновесной цены P0. Для того, чтобы найти значение равновесной цены P0 более точно, нужно решить уравнение D(P)=S(P). В системе Maple для отыскания действительных решений уравнения используется функция fsolve > a:=-0.5: b:=2: c:=2: d:=1: > D(P):=P^a + c: S(P):= P^b + d: > eq:=D(P)=S(P); eq := 1 + 2 = P2 + 1 .5 P > fsolve(eq,P); 1.362598578 4. Использование понятия производной Задача 6. Объем продукции u (усл.ед.) цеха в течение рабочего дня представляет функцию u = −t 3 − 5t 2 + 75t + 425 , где t ─ время (ч). Найти производительность труда через 2 часа после начала работы. 126 Решение. Пусть функция u=u(t) выражает количество произведенной продукции u за время t. Необходимо найти производительность труда в момент t0. За период времени от t0 до t0+∆t количество произведенной продукции изменится от значения u(t0) до значения u(t0+∆t). Тогда средняя u(t0 + ∆t ) − u(t0 ) . ∆t производительность труда за этот период времени равна Производительность труда в момент t0 можно определить как предельное u(t0 + ∆t ) − u(t0 ) , а это производная ∆t → 0 ∆t значение средней производительности lim u ' (t0 ) . Таким образом, чтобы найти производительность труда через 2 часа после начала работы, вычислим производную u ' = (− t 3 − 5t 2 + 75t + 425) = ' = − 3t 2 − 10t + 75 и найдем ее значение при t=2. Получим, что производительность труда через 2 часа после начала работы равна 43 усл.ед./ч. В системе Maple производные вычисляются очень легко. Для отыскания производной используется функция diff. Функция diff (f(x),x) вычисляет производную от f(x) по переменной x . Функция Diff используется для математической записи значка производной: Diff (f(x),x) выводит на экран ∂ f ( x) . ∂x > Diff (-t**3-5*t**2+75*t+425,t)= diff (-t**3-5*t**2+75*t+425,t); ∂ ( −t 3 − 5 t 2 + 75 t + 425 ) = −3 t 2 − 10 t + 75 ∂t Для вычисления значения производной при конкретном значении t присвоим переменной y1 выражение, равное производной. > y1:=diff (-t**3-5*t**2+75*t+425,t); y1 := −3 t 2 − 10 t + 75 Вычислим ее значение при t, равном 2. > subs(t=2,y1); 43 127 Задача 7. Зависимость между себестоимостью единицы продукции y (тыс. руб.) и выпуском продукции x (млн. руб.) выражается функцией y=-0,5x +80. Найти эластичность себестоимости при выпуске продукции, равном 60 млн. руб. Решение. Эластичностью функции E x ( y ) называется предел отношения относительного приращения функции y к относительному приращению переменной x при ∆x → 0 : ⎛ ∆y E x ( y ) = lim ⎜⎜ ∆x →0 ⎝ y ∆x ⎞ x ∆y x ' = ⋅y. ⎟⎟ = lim x ⎠ y ∆x→0 ∆x y Эластичность функции показывает приближенно, на сколько процентов изменится функция y=f(x) при изменении независимой переменной x на 1%. В задаче 7 эластичность себестоимости определяется так: Ex ( y) = x x . ( −0,5) = − 0,5 x + 80 x − 160 При x=60 эластичность равна -0,6, т.е. при выпуске продукции, равном 60 млн. руб., увеличение его на 1% приведет к снижению себестоимости на 0,6%. С помощью системы Maple получим > y(x):=-0.5*x+80; y( x ) := −.5 x + 80 > y1:= diff(y(x),x); y1 := -.5 > E:=x/y(x)*y1; E := −.5 x −.5 x + 80 Чтобы упростить полученное выражение используется функция simplify > simplify(%); x x − 160. Чтобы найти эластичность себестоимости при выпуске продукции, равном 60 млн. руб., определим переменную E1, равную полученному выражению. > E1:= %; 128 E1 := x x − 160. > subs(x=60.,E1); -.6000000000 5. Задачи на экстремум. Задача 8. Капитал в 1 млрд. рублей может быть размещен в банке под 50% годовых или инвестирован в производство, причем эффективность вложения ожидается в размере 100%, а издержки задаются квадратичной зависимостью. Прибыль облагается налогом в p%. При каких значениях p вложение в производство является более эффективным, чем чистое размещение капитала в банке? Решение. Пусть x (млрд. рублей) инвестируется в производство, а 1-x − размещается под проценты. Тогда размещенный капитал через год станет равным (1 − x )⎛⎜1 + ⎝ 50 ⎞ 3 3 ⎛ 100 ⎞ ⎟ = − x , а капитал, вложенный в производство: x⎜1 + ⎟ 100 ⎠ 2 2 ⎝ 100 ⎠ =2x. Издержки составят αx 2 (α > 1) , т.е. прибыль от вложения в производство p , т.е. чистая прибыль окажется равной C = 2 x − αx 2 . Налоги составят (2 x − αx 2 ) 100 ( ) p ⎞ ⎛ 2 ⎜1 − ⎟ 2 x − αx . 100 ⎠ ⎝ Общая сумма через год составит A( x) = − x + ⎛⎜1 − 3 2 ⎡ 3⎤ 3 2 ⎝ ( ) p ⎞ 2 ⎟ 2 x − αx = 100 ⎠ ⎞ ⎛ ⎞ 2 = + ⎢2⎛⎜1 − ⎟ − ⎥ x − α ⎜1 − ⎟ x . Требуется найти максимальное значение этой 2 ⎣ ⎝ 100 ⎠ 2 ⎦ ⎝ 100 ⎠ 3 p p функции на отрезке [0;1]. Найдем A ' ( x) = 2⎛⎜1 − ⎝ p ⎞ 3 p ⎞ ⎛ ⎟ − − 2α ⎜1 − ⎟x . 100 ⎠ 2 ⎝ 100 ⎠ 129 p ⎞ 3 ⎛ 2⎜ 1 − ⎟− p ⎞ 100 ⎠ 2 ⎝ Она равна нулю при x0 = . A '' ( x) = −2α ⎛⎜1 − ⎟ < 0 , т.е. согласно p ⎞ 100 ⎠ ⎛ ⎝ 2α ⎜1 − ⎟ ⎝ 100 ⎠ второму достаточному условию экстремума x0 − точка максимума. Чтобы x0 принадлежало отрезку [0;1], необходимо выполнение условия p ⎞ 3 p ⎞ ⎛ ⎛ 0 < 2⎜1 − ⎟ − < 2α ⎜1 − ⎟ . Отсюда p < 25 . ⎝ 100 ⎠ 2 ⎝ 100 ⎠ Таким образом, если p ≥ 25 , то выгоднее ничего не вкладывать в производство и разместить весь капитал в банк. Если p < 25 , то можно показать, что при x = x0 2 ⎡ ⎛ p ⎞ 3⎤ ⎢2⎜1 − 100 ⎟ − 2 ⎥ 3 ⎝ ⎠ ⎦ > 3 = A(0) , A( x0 ) = + ⎣ p ⎞ 2 2 ⎛ 4α ⎜1 − ⎟ ⎝ 100 ⎠ т.е. вложение в производство является более выгодным, чем чистое размещение в банке под проценты. С помощью системы Maple получим следующее. Для отыскания точек локального экстремума воспользуемся тем, что в точке экстремума производная обращается в 0. Выполним следующие действия: определим функцию A(x ) (α=alp); переменной dA присвоим значение производной от функции A(x); с помощью функции solve решим уравнение A' ( x ) = 0 и найдем точку экстремума x0 ; найдем максимальное значение функции A(x ) , равное A( x0 ) . > A:=(x)->(1-x)*3/2+(2*x-alp*x^2)*(1-p/100); A := x → 3 3 1 − x + ( 2 x − alp x2 ) ⎛⎜⎜ 1 − 2 2 100 ⎝ p ⎞⎟⎟ ⎠ > dA:=diff(A(x),x); dA := − 3 1 + ( 2 − 2 alp x ) ⎛⎜⎜ 1 − 2 100 ⎝ p ⎞⎟⎟ ⎠ > x0:=solve(dA,x); 130 x0 := −25 + p alp ( −100 + p ) > A(x0); 3 3 −25 + p −25 + p ( −25 + p ) 2 ⎞ ⎛ 1 ⎛⎜ ⎟ ⎜1 − − − + 2 2 2 alp ( −100 + p ) ⎜⎝ alp ( −100 + p ) alp ( −100 + p ) 2 ⎟⎠ ⎜⎝ 100 p ⎞⎟⎟ ⎠ > simplify(%); 1 −15000 alp + 150 alp p − 625 + 50 p − p 2 100 alp ( −100 + p ) Рассмотрим, когда x0 удовлетворяет условию x 0 > 0 . Этот анализ придется провести самим. Поскольку p<100, -25+p должно быть меньше 0, т.е. p<25. Таким образом, если налогообложение меньше 25%, в производство следует вложить x 0 (млрд. рублей). Задача 9. Прибыль от производства разных видов товара. Пусть x1 , x2 ,..., xm ─ количества производимых m разновидностей товаров, а их цены─ соответственно P1 , P2 ,..., Pm (все Pi ─ постоянные величины). Пусть затраты на производство этих товаров задаются функцией издержек C = S ( x1 , x2 ,..., xm ) . Тогда функция прибыли имеет вид П = P1 x1 + P2 x2 + ... + Pm xm − S ( x1 , x2 ,..., xm ) . Требуется найти оптимальные количества производимых товаров и максимальную прибыль. Максимум прибыли естественно искать как условие локального экстремума функции многих переменных при ограничениях xi ≥ 0 . Тогда т.е. Pi − ∂П = 0, i = 1,..., m , ∂xi ∂S = 0, i = 1,..., m . ∂xi Полученная система уравнений реализует известное правило экономики: предельная стоимость (цена) товара равна предельным издержкам на производство этого товара. Решение системы зависит от вида функции издержек и может быть достаточно сложным. Рассмотрим конкретный пример. Пусть производятся два вида товара и C = x12 + x1 x2 + x22 ─ функция затрат. Тогда прибыль равна 131 П = P1 x1 + P2 x2 − x12 − x1 x2 − x22 . системе линейных Условия локального экстремума приводят к алгебраических уравнений ⎧2 x1 + x 2 = P1 . ⎨ ⎩ x1 + 2 x 2 = P2 Нетрудно убедиться, что выполняются достаточные условия локального максимума: ∂2П = −2 , 2 ∂x1 2 ⎛ ∂2П ⎞ ∂2П ∂2П ⎜⎜ ⎟⎟ − = 1 − 4 = −3 . Решив систему второго порядка, 2 2 ∂x1 ∂x 2 ⎝ ∂x1∂x 2 ⎠ найдем x 01 = оптимальные 2 P1 − P2 , 3 должны x02 = производимых товаров: 2 P2 − P1 . Из того, что x01 > 0 и x 0 2 > 0 следует, что P1 и P2 3 удовлетворять 2 количества неравенствам P1 < P2 < 2 P1 . 2 Тогда максимальная 2 P − P1 P2 + P2 прибыль равна 1 . 3 Применим для решения задачи систему Maple. Для отыскания экстремума функции в системе Maple существует функция extrema, которая вычисляет экстремальное значение. Ей надо передать выражение, для которого отыскивается экстремальное значение; ограничения (если они отсутствуют, пишут {}); переменные, по которым ищется экстремум; 's'. Переменная s содержит координаты точки экстремума. Определим функцию прибыли > prib:=(x1,x2)->P1*x1+P2*x2-x1^2-x1*x2-x2^2; prib := ( x1, x2 ) → P1 x1 + P2 x2 − x1 2 − x1 x2 − x2 2 > extrema(prib(x1,x2),{},{x1,x2},'s'); {− 1 1 1 P1 P2 + P1 2 + P2 2 } 3 3 3 > s; { { x2 = − 1 2 1 2 P1 + P2 , x1 = − P2 + P1 } } 3 3 3 3 132 6. Определенный интеграл и его приложения Задача 10. Пусть функция z=f(t) описывает изменение производительности некоторого производства с течением времени. Нужно найти объем продукции u, произведенной за промежуток времени [0,T]. Если производительность не изменяется с течением времени (f(t)─ постоянная функция), то объем продукции ∆u, произведенной за некоторый промежуток времени [t,t+∆t], задается формулой ∆u=f(t)∆t. Разбивая отрезок [0,T] на промежутки времени точками: 0 = t0 < t1 < ... < tn = T и считая, что на каждом промежутке времени [ti −1 , ti ] производительность постоянна и равна f (ξ i ) , где ξ i ∈ [ti −1 , ti ] , получим, что объем продукции ∆ui , произведенной за промежуток времени [ti −1 , ti ] , задается формулой ∆ui = f (ξ i )∆ti , n n i =1 i =1 i=1,2,…,n. Тогда u ≈ ∑ ∆ui = ∑ f (ξ i )∆ti . Чем меньше max ∆ti , тем точнее i n получается u. Поэтому u = lim ∑ f (ξ i )∆ti , а по определению определенного max ∆t →0 i i i =1 T интеграла u = ∫ f (t )dt . 0 Таким образом, если f(t)─ производительность труда в момент t, то T ∫ f (t )dt 0 есть объем выпускаемой продукции за промежуток времени [0,T]. Производственная функция Кобба─Дугласа отражает зависимость объема выпуска продукции Q от затрат трудовых ресурсов L и затрат капитала K: Q = AK α L1−α , где A─ параметр производительности конкретно взятой технологии. Если производительность труда f(t) определяется функцией Кобба─Дугласа, в которой затраты труда линейно зависят от времени ( L1−α = a1 t + b1 ), затраты капитала неизменны и A = e k t , то объем выпускаемой продукции за T T лет составит Q = ∫ (a t + b)e k t dt . Этот интеграл вычисляется по частям и равен 0 1 (ak T − a + bk )e k T − − a +2 bk . 2 k k 133 1 9 При a =b =1, k =3 и T =4 Q = (14e12 − 2) ≈ 253 ⋅ 103 (усл.ед.) С помощью системы Maple получим следующее. Для записи интеграла используется функция Int, для вычисления ─ int. > Int((a*t+b)*exp(k*t),t=0..T)= int((a*t+b)*exp(k*t),t=0..T); T (k t) e ⌠ (a t + b) e dt = ⎮ ⎮ ⌡0 (k T) akT−e (k T) a+e k2 (k T) bk+a−bk > a:=1:b:=1: k:=3:T:=4: > Int((a*t+b)*exp(k*t),t=0..T)= int((a*t+b)*exp(k*t),t=0..T); 4 (3 t) 14 12 2 ⌠ e − (t + 1) e dt = ⎮ ⎮ 9 9 ⌡0 > evalf(%); 253173.8978 = 253173.8978 Задача 11. Кривая Лоренца ─ это зависимость доли населения y от доли доходов x. Пусть кривая Лоренца y(x) имеет вид, изображенный на рис. 3. Тогда, как видно из графика, половиной доходов владеет четвертая часть населения, семьюдесятью процентами дохода владеет примерно половина населения. При равномерном распределении кривая Лоренца 1,1 доходов A 1 вырождается 0,9 доля населения в Лоренца прямую ─ Джини k биссектрису. 0,8 Коэффициентом 0,7 0,6 называется 0,5 0,4 фигуры 0,3 B 0,2 0,1 0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 доля дохода отношение между площади биссектрисой и кривой Лоренца OAB к площади С 0 O кривая 1 треугольника OAC. Этот коэффициент характеризует степень неравенства в распределении 134 доходов населения. Чем выше коэффициент Джини, тем больше неравенство в обществе. Решение. Очевидно, коэффициент Джини k = SOAB S = 1 − OBAC = 1 − 2 SOBAC , S ∆OAC S ∆OAC 1 2 так как S ∆OAC = . Из геометрического смысла определенного интеграла 1 следует, что SOBAC = ∫ y ( x )dx . Таким образом, задача отыскания коэффициента 0 Джини сводится к вычислению определенного интеграла. Пусть кривая Лоренца может быть описана уравнением y = 1 − 1 − x 2 , где x─ доля доходов, а y ─ это доля населения, владеющего этой частью дохода. 1 ( ) 1 1 1 0 0 0 Тогда SOBAC = ∫ 1 − 1 − x 2 dx = ∫ dx − ∫ 1 − x 2 dx = 1 − ∫ 1 − x 2 dx . Последний интеграл 0 можно вычислить с помощью замены k=2 π 4 −1 = π 2 x = sin t . Он равен π 4 . Итак, − 1 ≈ 0,57 . Достаточно высокое значение k показывает существенно неравномерное распределение доходов среди населения. Воспользуемся услугами системы Maple. Определим функцию, задающую кривую Лоренца > y(x):=1-sqrt(1-x*x); y( x ) := 1 − 1 − x2 > Int(y(x),x=0..1)= int(y(x),x=0..1); 1 1 ⌠ 1 − 1 − x2 dx = − π + 1 ⎮ ⎮ 4 ⌡0 > evalf(%); .2146018366 = .2146018365 135 7. Дифференциальные уравнения. Задача 12. Модель эффективности рекламы. Предположим, что для успешной реализации некоторого товара фирма провела рекламную акцию. Через t обозначим время, прошедшее с момента рекламы. Пусть N – число потенциальных покупателей товара и во время рекламы о товаре узнало N β ( β > 1 ) человек. Информация о товаре начала распространяться. Через x(t) обозначим число покупателей, знающих о товаре в момент t. Тогда число покупателей, не проинформированных о товаре к моменту t, равно (N-x(t)). Можно считать, что скорость изменения числа знающих о продукции, пропорциональна как числу покупателей, знающих о товаре, так и числу покупателей, о нем еще не знающих. Приходим к дифференциальному уравнению (k - x ' = kx( N − x) положительный коэффициент пропорциональности) с начальным условием x(0) = N β . Итак, для того, чтобы знать число покупателей, проинформированных о товаре к моменту t , необходимо решить задачу Коши. Дифференциальное уравнение является уравнением с разделяющимися переменными. Разделив переменные, получим обе части равенства: dx = kdt . Проинтегрируем x( N − x ) dx ∫ x( N − x ) = ∫ kdt + ln C . Вычисляя интеграл, стоящий слева, 1 представим подынтегральное выражение в виде суммы двух дробей, а справа вместо постоянной ln C1 возьмем другую ─ 1 ln C1 . Получим N 1 ⎛1 1 ⎞ 1 ⎜ + ⎟dx = kt + ln C . После вычисления интегралов имеем ∫ N ⎝ x N − x⎠ N ln x = kNt + ln C . Отсюда найдем общее решение дифференциального N−x CNe kNt . Для решения задачи Коши вспомним, что во время уравнения: x = 1 + Ce kNt рекламы о товаре узнало N β ( β > 1 ) человек, т.е. x (0) = N β . Подставляя 136 начальное условие в общее решение, найдем, что в момент t о рекламе будут знать x = N человек. 1 + ( β − 1)e − k N t Интегральная кривая, соответствующая найденному решению, называется логистической кривой. Анализируя полученный результат, видим, что e − k N t → 0 при t → 0 и, следовательно, x(t ) → N при t → 0 . Таким образом, число покупателей, знающих о товаре, возрастает от N β и со временем приближается к N. Воспользуемся для решения этой задачи услугами системы Maple. Присвоим переменной deq в качестве значения исходное дифференциальное уравнение. Функция dsolve позволяет найти общее решение уравнения и, если задано начальное условие, решение задачи Коши. Найдем их. Далее зададим k, N и beta конкретные значения: k = 1 , 80 N = 10000, beta = 8 , найдем решение задачи Коши и построим график логистической кривой. > deq:=diff(x(t),t)=k*x(t)*(N-x(t)); deq := ∂ x( t ) = k x( t ) ( N − x( t ) ) ∂t > dsolve(deq,x(t)); x( t ) = N 1+e ( −k N t ) _C1 N > dsolve({deq,x(0)=N/beta},x(t)); x( t ) = N 1+e ( −k N t ) (β − 1) > k:=1/80;N:=10000;beta:=8; k := 1 80 N := 10000 β := 8 > ss:=dsolve({deq,x(0)= N/beta },x(t));assign(ss); ss := x( t ) = 10000 1 1+7e ( −125 t ) 137 Функцию assign мы написали для того, чтобы воспользоваться полученной зависимостью x(t) и построить график логистической кривой. > plot(x(t),t=0..0.25,color=black); В заключение снова отметим, что прикладные программы являются важным подспорьем для специалиста. 138 ЭКОНОМИЧЕСКОЕ МОДЕЛИРОВАНИЕ СРЕДСТВАМИ ПАКЕТА MATHCAD Система MathCAD является интегрированной программной системой автоматизации математических расчетов. С одной стороны, это программная среда для решения задач, относящаяся к классу PSE (problem solution environment) приложений. С другой стороны, аббревиатура CAD (Computer Aided Disign) в названии пакета говорит о принадлежности к системам автоматизированного проектирования. Перечислим лишь ряд основных возможностей, предоставляемых данной системой: • мощный текстовый редактор для подготовки научно-технической документации, позволяющий редактировать не только текст, но и математические выражения; • вычислительный процессор для проведения численных расчетов с использованием встроенных численных методов; • символьный процессор, для аналитических вычислений; • справочная система, содержащая огромное количество справочной и интерактивной информации, представленной в формате электронных книг. При экономико-математическом моделировании в MathCAD удобно производить вычисление результатов математических операций (в том числе дифференцировать и интегрировать), численно и аналитически решать уравнения и системы алгебраических уравнений (неравенств), производить статистические расчеты и анализ данных, строить двумерные и трехмерные графики, решать дифференциальные уравнения, проводить серии расчетов с различными значениями начальных условий и параметров модели. Настоящая глава включает первоначальное знакомство с системой, и технологией работы в MathCAD, а также некоторые примеры, показывающие возможности пакета при экономико-математическом моделировании. 139 1. Возможности пакета. 1. Элементы пользовательского интерфейса После запуска приложения появляется окно, которое имеет ту же структуру, что и большинство приложений Windows. Окно содержит заголовок, строку меню, панели инструментов, рабочую область документа. С помощью меню View (Вид) можно включить панели инструментов. Основные из панелей показаны на рисунке. Standard (Стандартная) – служит для выполнения операций с файлами, редакторской правке, вставке объектов и доступа к справочной системе. Formatting (Форматирование) – для форматирования текста и формул. Math (Математика) – для вставки математических символов и операторов в документы. Controls (Элементы управления) – для вставки в документ элементов управления интерфейса пользователя (флажков проверки, полей ввода и т.п.). 140 Resources (Ресурсы) – для быстрого вызова ресурсов пакета (примеров, электронных учебников, книг и т.п.). Debug (Отладка) – для управления отладкой программ. С помощью меню Math можно включить ещё девять математических панелей инструментов. Эти панели инструментов служат для вставки основных математических операций, графиков, вычислениями и матриц и матричных программирования, для операторов, вставки управления операторов дифференцирования и интегрирования, булевых и символьных операторов, греческих символов и операторов преобразования чисел. 141 2. Простые вычисления в MathCAD Для проведения простых расчетов следует учитывать, что результат вычисления может быть представлен в аналитической форме или в численном виде. Порядок действий следующий: 1. Определяется место в документе, где должно появиться выражение с помощью щелчка мыши в рабочей области. 2. Вводится левая часть выражения. 3. Для получения численного результата вводится знак равенства = (клавиша <=>), для получения аналитического выражения – если это возможно, вводится знак символьного равенства → (сочетание клавиш <Ctrl>+<.>). В примере показано, что осуществлять набор можно с помощью подходящих панелей инструментов. Чтобы осуществить присваивание некоторой переменной значения используется оператор (:=) или оператор глобального присваивания (≡). В последнем случае, даже если записать присваивание в любой части документа (например, в конце), то переменная будет автоматически определена в любой части документа. 142 3. Построение графиков функций Для построения графика функции или поверхности, требуется задать функцию, воспользоваться меню Insert→Graph и выбрать одну из строк следующего меню Пример построения поверхности. 4 z( x, y ) := x + y 3 z Пример построения графика функции 143 u ( t) := 20 sin ( t) + t 2 150 100 u(t) 50 0 − 10 − 5 0 5 10 t Пример построения нескольких функций 200 100 u( t ) − u( t ) 0 − 100 − 200 − 10 −5 0 5 10 t Следующий пример показывает, как получить декартов график, путем формирования векторов данных, которые будут отложены вдоль осей. 144 145 4. Матричные вычисления Настоящий пакет предоставляет широкие возможности для проведения матричных вычислений. Пример элементарных операций приведен на следующей иллюстрации с использованием панели инструментов Matrix. Существует также большой набор специальных операций с матрицами, предоставляемый возможностями системы. Среди них, такие как поиск собственных значений и чисел обусловленности матриц, вычисление ранга и норм матриц, векторизация, вычисление векторного произведения сортировка элементов матриц и многие другие, о которых здесь лишь только упомянем. 146 5. Решение алгебраических уравнений Значительное число задач, возникающих в экономико-математическом моделировании, связано с решением нелинейных алгебраических уравнений. В этих случаях имеется или одно алгебраическое уравнение f ( x) = 0 , или система из n алгебраических уравнений ⎧ f1 ( x1 , x2 K, xm ) = 0, ⎪ ⎨L ⎪ f ( x , x K , x ) = 0. m ⎩ n 1 2 Требуется найти корни – все значения x, или, в случае системы – все векторы x , которые при подстановке в уравнение или систему дают верные числовые равенства. В MathCAD для решения уравнений и систем предлагаются аналитические и численные методы. На практике в большинстве случаев приходится решать системы и уравнения численно. Однако обсуждение возможностей начнем с аналитических методов. Решение систем осуществляется в MathCAD посредством специального вычислительного блока Given/Find, который состоит из трех последовательных частей: ключевого слова Given, затем системы или уравнения, записанного логическими операторами в виде равенств (возможно неравенств), затем встроенной функции Find(x1, x2,…,xm) для решения системы уравнений, относительно переменных x1, x2,…,xm. Заметим, что, вставлять логические операторы следует, пользуясь панелью инструментов Boolean. При вводе с клавиатуры знак равенства вводится сочетанием клавиш <Ctrl>+<=>. Решение выводится в виде матрицы решения, с количеством строк, отвечающим числу аргументов функции Find. Пример. 147 При численном решении уравнений средствами пакета MathCAD следует предварительно локализовать корни, т.е. определить их существование, а также найти их количество и примерное расположение. Перед вычислительным блоком Given/Find должны быть заданы начальные значения для всех неизвестных. Именно с этих численных значений будет начинаться поиск корней. Приведем далее пример решения системы с использованием встроенного численного метода, задавая предварительно начальные значения. 148 6. Решение систем линейных алгебраических уравнений Будем рассматривать систему линейных алгебраических уравнений в матричной форме Ax = b , где A - матрица размерности n×n, x – вектор неизвестных, b – вектор правых частей. Будем предполагать, что матрица A является невырожденной (её определитель не равен нулю). Для решения системы в случае небольшой размерности матрицы A можно воспользоваться или вычислительным блоком Given/Find или встроенной функцией lsolve, реализующей точный алгоритм Гаусса решения системы. В случае если матрица системы имеет большую размерность, то для реализации вычислений требуется её хорошая обусловленность. Пример. Решение системы записанной в матричной форме. 149 Пример. Использование функции lsolve. Наряду с рассмотренными примерами пакет MathCAD позволяет находить семейства решений недоопределенных систем линейных алгебраических уравнений, а также находить псевдорешения переопределенных систем (метод наименьших квадратов). 7. Дифференцирование в MathCAD Дифференцирование осуществляется в численной и аналитической форме. Для аналитического дифференцирования надо задать функцию f(x). Далее требуется ввести оператор дифференцирования от искомой функции. И ввести оператор символьного исчисления для получения ответа. Пример. 150 Для определения значения производной в точке требуется сначала задать функцию, а потом задать значение аргумента. После этого вводится оператор дифференцирования, и производятся вычисления. Пример. 8. Интегрирование в MathCAD Интегрирование в среде MathCAD может производиться в численной и аналитической форме. Следует помнить, о том, что не всякую функцию можно проинтегрировать аналитически. Пакет реализует операции неопределенного интегрирования, вычисления интегралов с переменными пределами интегрирования, осуществляет символьное и численное интегрирование кратных интегралов. 151 Пример. 2. Моделирование с использованием средств MathCAD 1. Статические балансовые модели Системы линейных алгебраических уравнений применяются в макроэкономике для проведения балансового анализа многоотраслевого хозяйства. Цель балансового анализа — ответить на вопрос, каким должен быть объем производства каждой из отраслей хозяйства, чтобы удовлетворить все потребности в продукции этой отрасли? Предполагается, что каждая отрасль выступает одновременно как производитель некоторого вида продукции и как потребитель продукции других (в том числе своей) 152 отраслей. Процесс производства рассматривается за некоторый период времени, например, за год. Предположим, что производственная сфера хозяйства состоит из n отраслей. Каждая из этих отраслей производит однородный продукт. Часть продукции идет на производственное потребление данной отраслью и другими отраслями, а другая часть предназначена для потребления вне сферы материального производства. Далее примем следующие обозначения: xi — общий объем продукции i – й отрасли (или её валовой объем), i=1,2,…,n; xij — объем продукции i – й отрасли, потребляемый j – й отраслью в процессе производства, i,j=1,2,…,n; yi — объем продукции i – й отрасли, предназначенный к потреблению в непроизводственной сфере (объём конечного потребления). В этот объём входят личное потребление граждан, создаваемые хозяйственные запасы, экспорт, инвестиции, обеспечение общественных потребностей. Уравнения баланса выражают тот факт, что валовой выпуск xi расходуется на производственное потребление, равное хi1 + хi 2 + ... + хin и непроизводственное потребление, равное yi . Таким образом, имеем n xi = ∑ хij + y i , i = 1,..., n . (1.1) j =1 В зависимости от того, в каких единицах измерения записываются соотношения баланса, различают натуральный или стоимостной межотраслевые балансы. Рассмотрим величины aij = xij xj , i, j = 1,..., n , (1.2) которые называют коэффициентами прямых затрат. Дело в том, что эти величины остаются постоянными в течение ряда лет, поскольку технологии производства также остаются постоянными или мало меняются за указанный промежуток времени. На это важное обстоятельство было указано В. 153 Леонтьевым при исследовании развития американской экономики в предвоенный период. Согласно предположению (1.2) уравнения (1.1) принимают вид n xi = ∑ aij х j + yi , i = 1,..., n (1.3) j =1 Записывая (1.3) в матричной форме получаем x = Ax + y (1.4) где ⎛ a11 ⎜ ⎜a A = ⎜ 21 K ⎜⎜ ⎝ a n1 a12 K a1n ⎞ ⎟ a22 K a2 n ⎟ , K K K⎟ ⎟ a n 2 K ann ⎟⎠ ⎛ x1 ⎞ ⎜ ⎟ ⎜x ⎟ x = ⎜ 2 ⎟, K ⎜⎜ ⎟⎟ ⎝ xn ⎠ ⎛ y1 ⎞ ⎜ ⎟ ⎜y ⎟ y = ⎜ 2 ⎟. K ⎜⎜ ⎟⎟ ⎝ yn ⎠ Обозначая символом E - единичную матрицу, получаем ( E − A) x = y . (1.5) Если существует обратная матрица ( E − A) −1 , то из (1.5) следует равенство x = ( E − A) −1 y . (1.6) Решение системы (1.4) требует применения численных методов. Из экономического смысла задачи вытекает, что все компоненты матрицы A и вектора y являются неотрицательными ( A ≥ 0 , y ≥ 0 ). Все компоненты вектора x также должны быть неотрицательны ( x ≥ 0 ). Матрица A называется продуктивной, если для любого вектора y ≥ 0 существует решение x ≥ 0 уравнения (1.4). При этом модель Леонтьева называется продуктивной. Справедливы следующие критерии. 1) Матрица A ≥ 0 продуктивна тогда и только тогда, когда матрица ( E − A) −1 существует и неотрицательна. 154 2) Матрица A ≥ 0 продуктивна тогда и только тогда, когда сходится бесконечный ряд E + A + A2 + . (1.7) Доказывается, что если бесконечный ряд (из матриц) E + A + A 2 + K, сходится, то его сумма есть матрица ( E − A) −1 . Отметим, что если сумма элементов любого столбца неотрицательной матрицы меньше 1, то матрица А продуктивна. Действительно, пусть q – наибольшая из указанных сумм, q < 1 . Тогда все элементы матрицы не превосходят q. Оценим элемент матрицы A 2 ( A2 )ij = ai1a1 j + ai 2 a2 j + ... + ain anj ≤ q 2 Аналогично получаем, что (A ) 2 ij ≤ q 3 , и т.д. Значит ряд (1.7) сходится и матрица A продуктивна. Пример решения задачи в среде MathCAD приведен далее для заданной матрицы продуктивности небольшой размерности. 155 2. Некоторые модели экономической динамики Динамические процессов во модели времени. характеризуют Моделирование изменение может экономических осуществляться с использованием дискретного и непрерывного подхода. В настоящем разделе даются два примера такого моделирования. Эти примеры являются абстрактными. Однако в рассматриваемых случаях их решение может быть найдено в явном виде, что позволяет проанализировать особенности поведения решения для различных случаев соотношения параметров моделирования. 156 3. Паутинообразная модель рынка Эта модель объясняет феномен регулярно повторяющихся циклов изменения объемов продажи и цен товаров на рынке. Хорошо известно, что основными категориями рыночных отношений являются спрос и предложение. Эти категории зависят от многих факторов, главным из которых является цена товара. Примем обозначения. Пусть p – цена товара (от английского price цена), d –объем спроса (demand – спрос), s – предложение (supply). Предполагаем, что s(p) и d(p) являются непрерывными функциями, при этом, если цена p – мала, то d ( p ) − s ( p ) > 0 (спрос превышает предложение), а при больших ценах d ( p ) − s ( p ) < 0 и предложение превышает спрос. При данных предположения существует равновесная цена p* , удовлетворяющая равенству d ( p* ) = s ( p* ) . Паутинная модель рынка – простейшая модель поиска равновесной цены. Отметим сразу, что с математической точки зрения, решение уравнения d ( p) = s( p) (2.1) может быть проведено методом простой итерации при сведении его к виду p = ϕ ( p) (2.2) и получению последовательных приближений p n = ϕ ( p n ), n = 1,2,... . (2.3) Так, если ϕ ( p ) - дифференцируемая функция и ϕ ′( p ) < 1 , то lim p n = p* . n →∞ Однако, переход от уравнения (2.1) к уравнению (2.2) может быть осуществлен множеством способов, и теперь уравнение (2.2) представляет собой описание модели рынка с уже другими функциями спроса и предложения d ( p ) = p , s ( p) = ϕ ( p ) , хотя и с той же равновесной ценой p* . Поэтому, такой подход целесообразен лишь для поиска равновесной цены, но не является приемлемым для исследования циклов изменения объемов продажи и цен исходной модели с уравнением (2.1). 157 Предположим, производители определяют величину объема производства (предложение объема товара) в текущем году на основе цен, установившихся в предшествующем периоде. Например, площадь, отводимую под посев зерновых культур, выбирают в зависимости от цены, сложившейся в предыдущем году. Таким образом, в функции предложения должен быть учтен временной лаг продолжительностью в единицу времени (в данном случае год). Действительно, предложение появится на рынке по окончании данного цикла, т.е., через год после принятия решения. Согласно данным предположениям опишем динамику цены уравнениями qts = st ( pt −1 ), qtd = d t ( pt ), qtd = qts , (2.4) где первое из уравнений как раз учитывает временной лаг в предложении. Справедливо равенство d t ( pt ) = s t ( pt −1 ) . (2.5) Проиллюстрируем применение данного подхода на конкретных примерах. Пусть теперь заданы функции s( p) = ψ ( p) , (2.6) d ( p) = c − ep , (2.7) где ψ ( p ) - заданная непрерывная функция, c > 0, e > 0 - заданные параметры, такие, что существует равновесная цена p* . Следуя уравнениям (2.4) - (2.5) динамики построим последовательности {q n } и {p n } (здесь n = t и обозначает дискретные моменты времени). Построение будет происходить рекуррентно в согласии с (6) – (7), и выбранным начальным значением q0 по следующим формулам: p0 = d −1 ( q0 ) = c − q0 , e ⎛ c − q0 ⎞ q1 = s ( p0 ) = ψ ( p0 ) = ψ (d −1 (q0 )) = ψ ⎜ ⎟, e ⎝ ⎠ ⎛ c − q0 ⎞ c −ψ ⎜ ⎟ c − q1 ⎝ e ⎠, = p1 = d −1 (q1 ) = e e 158 ⎛ ⎛ c − q0 ⎞ ⎞ ⎜ c −ψ ⎜ e ⎟ ⎟ ⎝ ⎠ ⎟, q2 = s ( p1 ) = ψ ⎜ e ⎜ ⎟ ⎜ ⎟ ⎝ ⎠ ⎛ ⎛ c − q0 ⎞ ⎞ ⎜ c −ψ ⎜ e ⎟ ⎟ ⎝ ⎠⎟ c −ψ ⎜ e ⎜ ⎟ ⎜ ⎟ c − q2 ⎝ ⎠, −1 = p2 = d (q2 ) = e e и так далее. Возможные значения qi и pi , показаны на рисунке 1. Рис.1 Предположим, что s ( p ) = a + bp , тогда рекуррентные соотношения, приведенные выше, позволяют получить явные формулы для элементов qi ,: i = 1,2,.. q1 = a + lc − lq0 , l = b / e, q2 = (a + lc)(1 − l ) + q0l 2 , q3 = ( a + lc )(1 − l + l 2 ) + q0l 3 , q4 = (a + lc )(1 − l + l 2 − l 3 ) + q0l 4 , и, наконец, получаем 159 qn = (a + lc)(1 − l + l 2 − l 3 + K + (−1) n−1 l n−1 ) + (−1) n l n q0 = n −1 (a + lc)⎛⎜1 + ∑ (−1) i −1 l i −1 ⎞⎟ + (−1) n l n q0 ⎝ i =2 ⎠ При этом справедливо равенство pn = c − qn . Возможны случаи. e Если l < 1 то справедливо равенство lim qn = n →∞ (a + lc) = q* . 1+ l В этом случае равновесие является устойчивым. При l = 1 получаем q1 = a + c − q0 , q2 = q0 , q3 = a + c − q0 , q4 = q0 , и так далее. Здесь значения qi чередуются вокруг равновесного состояния. Если l > 1 то {qn } расходится и равновесие не является устойчивым. Далее приводится пример моделирования, в котором иллюстрируется процесс установления рынка к равновесным значениям p и q. 160 161 4. Модель экономического роста. Пусть некоторая отрасль производит продукцию, объём которой x(t) реализуется к моменту времени t. Предположим, что вся продукция реализуется по фиксированной цене p (рынок в этом случае ненасыщаем). Тогда доход отрасли к моменту времени t составит X (t ) = px (t ). (2.8) Далее обозначим символом I(t) величину инвестиций и предположим, что скорость выпуска продукции пропорциональна величине инвестиций x′(t ) = sI (t ) . (2.9) При этом величина инвестиций есть фиксированная часть дохода, а значит I (t ) = mX (t ) = mpx(t ) . (2.10) Здесь m – норма дохода инвестиций, постоянная величина, 0 < m < 1 . 162 Непосредственно из (2.9) с учетом (2.8) и (2.10) получаем дифференциальное уравнение x ′(t ) = kx (t ), k = smp . (2.11) Решение этого уравнения можно найти по формуле x (t ) = x 0 exp( k (t − t 0 )), x 0 = x (t 0 ) . В условиях конкурентного рынка естественно предполагать, что кривая спроса p = p(x) является функцией убывающей. Действительно, с увеличением объема произведенной продукции её цена падает в результате насыщения рынка. Получаем уравнение x ′ = smp ( x ) x, x > 0, p ( x ) > 0 (2.12) После разделения переменных получаем dx x ∫ p( x) x = sm(t − t 0 ). (2.13) x0 Аналитически вычислить интеграл в (2.13) не всегда представляется возможным (все зависит от вида функции p = p (x) ). Это означает, что при решении уравнения (2.12) в общем случае, необходимо применять численные методы интегрирования. Проанализируем поведение решения x = x(t ) уравнения (2.12). Дифференцируя по времени, имеем ⎛ dp ⎞ x ′′ = smx ′⎜ x + p (x) ⎟ . ⎝ dx ⎠ (2.14) Принимая во внимание определение эластичности спроса относительно цены, которое задается формулой E p ( x) = p dx , x dp запишем (2.14) в виде ⎛ 1 ⎞ x ′′ = smx ′p⎜⎜ + 1⎟⎟ . ⎝ E p ( x) ⎠ (2.15) Условие x ′′ = 0 означает, что E p ( x) = −1 . Возможны случаи: 163 1) E p ( x) > 1 , x ′′ > 0 - спрос эластичен. 2) E p ( x) < 1 , x ′′ < 0 - спрос не эластичен. Рис.2 Решение уравнения (2.15) изображается логистической кривой (см. Рис.2). Далее приводится пример решения уравнения (2.12) моделирования в случае, когда кривая спроса является функцией убывающей. В качестве метода интегрирования выбран численный метод Рунге-Кутты с фиксированным шагом, предлагаемый пакетом MathCAD. Этот метод подходит для интегрирования нежестких систем обыкновенных дифференциальных уравнений. 164 5. Финансовые расчеты в среде MathCAD. Рассмотрим ряд примеров из финансовой математики, где требуется применение методов вычислений. Определение уровня процентной ставки. 165 Пусть в течение n лет фирма перечисляет в банк p раз в году средства в размере R/p денежных единиц (R – величина суммарного годового платежа) с целью создания фонда накопления. Банк начисляет проценты на данные взносы m раз в году по сложной процентной ставке j. Определим наращенную сумму (величину фонда накопления) такого потока платежей на момент окончания выплат. Вычислим S= R R ⎛ j⎞ + ⋅ ⎜1 + ⎟ p p ⎝ m⎠ m⋅ 1 p + R ⎛ j⎞ ⋅ ⎜1 + ⎟ p ⎝ m⎠ m⋅ 2 p + ... + R ⎛ j⎞ ⋅ ⎜1 + ⎟ p ⎝ m⎠ m⋅ np −1 p . Данная сумма представляет собой сумму геометрической прогрессии с первым элементом x1 = R p и знаменателем m p j⎞ ⎛ q = ⎜1 + ⎟ ⎝ m⎠ . Применяя формулу суммы первых n членов геометрической прогрессии, получаем m ⎡ ⎤ p j ⎛ ⎞ ⎢ 1 − ⎜1 + ⎟ ⎥ ⎢⎝ m ⎠ ⎥ 1 − q np R ⎦ S = x1 ⋅ = ⋅ ⎣ m p 1− q j ⎞p ⎛ 1 − ⎜1 + ⎟ ⎝ m⎠ np mn j⎞ ⎛ 1 − ⎜1 + ⎟ R m⎠ = ⋅ ⎝ m p j ⎞p ⎛ 1 − ⎜1 + ⎟ ⎝ m⎠ Предположим теперь, что величины S, R, p, m, n известны, требуется найти уровень процентной ставки j, обеспечивающий создание фонда накопления при данных параметрах сделки. Для этого требуется решить нелинейное уравнение Φ ( S , R , p , m, n , j ) = 0 где 166 mn j⎞ ⎛ 1 − ⎜1 + ⎟ R m⎠ Φ( S , R, p, m, n, j ) = S − ⋅ ⎝ m p j ⎞p ⎛ 1 − ⎜1 + ⎟ ⎝ m⎠ Уравнение решается с использованием численных методов. Вычисление наращенных сумм на основе непрерывных процентных ставок 167 Силой роста называется специальная процентная ставка, характеризующая относительный прирост наращенной суммы. Согласно данному определению на бесконечно малом промежутке имеем ∆S ∆t → 0 S f (t ) = lim Здесь f(t) - сила роста, а ∆S=S(t+∆t)-S(t) - прирост наращенной суммы за время ∆t. Пусть срок сделки составляет n лет. Тогда имеет место равенство ⎛n ⎞ S = S (n) = S (0) exp ⎜ ∫ f (t )dt ⎟ ⎝0 ⎠ За исключением тривиальных случаев, когда сила роста является постоянной, дискретной или линейной по времени функцией, для вычисления наращенной суммы требуется применения методов численного интегрирования. 168 СПИСОК ЛИТЕРАТУРЫ 1. М.С. Красс, Б.П. Чупрынов. Основы математики и ее приложения в экономическом образовании.─ М., “Дело”, 2001. 2. Кремер Н.Ш. и др. Высшая математика для экономистов. ─ М., “ЮНИТИ”, 1998. 3. Дьяконов В.П. Maple 9.5/10 в математике, физике и образовании. М.: СОЛОН-Пресс, 2006. 4. О.А.Сдвижков. Математика на компьютере. М.: СОЛОН-Пресс, 2003. 5. Джон Уокенбах. Excel 2003.Библия пользователя . 2004г. М.: Издательский дом «Вильямс». 6. В. Я. Гельман. Решение математических задач средствами Excel. Практикум. — СПб: Питер. 2003 7. Высшая математика для экономистов / Ред. Н. Ш. Кремер. М.: Банки и биржи. 1999. 8. Пикуза В., Геращенко А. Экономические и финансовые расчеты в Excel: Самоучитель. СПб.: Питер, 2002. 9. Математика для экономистов на базе Mathcad : [Учеб. пособие для вузов] / А. А. Черняк, В. А. Новиков, О. И. Мельников, А. В. Кузнецов. — СПб. : БХВ-Петербург, 2003. — 496 с. : ил. — (Учебное пособие). 10. Семененко, Марина Геннадиевна. Математическое моделирование в MathCad / М. Г. Семененко. — М. : Альтекс-А, 2003. — 206 с. : ил. — Указ. — Библиогр.: с. 203-205. — ISBN 5-94271-012-0. 11. Кирьянов, Дмитрий Викторович. Самоучитель Mathcad 12 / Дмитрий Кирьянов. — СПб. : БХВ-Петербург, 2004. — 559 с. : ил. — (Самоучитель). — ISBN 5-94157-408-8. 12. Кирьянов Д.В. MathCAD 14 . - CПб.: БВХ-Петербург, 2007. – 704 с. 169