Вы находитесь на странице: 1из 110

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ


УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ»

кафедра высшей математики

В. Ю. Дорофеев, Г. В. Савинов

«Mathematica»
ДЛЯ ЛИНЕЙНЫХ
ЭКОНОМИЧЕСКИХ МОДЕЛЕЙ

Учебное пособие

ИЗДАТЕЛЬСТВО
САНКТ-ПЕТЕРБУРГСКОГО ГОСУДАРСТВЕННОГО
ЭКОНОМИЧЕСКОГО УНИВЕРСИТЕТА
2018
ББК 22.1
Дорофеев В. Ю., Савинов Г. В. «Mathematica» для линейных экономи-
ческих моделей, 110 с., 2018.
Цель данного пособия – перебросить мостик от теоретических курсов
«Линейная алгебра» и «Методы оптимальных решений» к практическому
их использованию для анализа и принятия управленческих решений. Зна-
комство с возможностями программного комплекса «Wolfram
Mathematica» дает инструменты решения практических задач, отличаю-
щихся большой размерностью и требующих для своего анализа больших
вычислительных затрат. Приведенные в пособии примеры анализа эконо-
мических проблем являются типовыми и полезны как для закрепления ма-
тематических знаний студентов, так и для выработки навыков применения
эффективных современных математических методов решения экономиче-
ских задач.
Учебное пособие предназначено для студентов факультета экономики
СПбГЭУ.
The course is designed to bridge a gap between the theoretical courses
«Linear Algebra» and «Methods of Optimal Solutions» and their practical use
for analysis and decision-making. The course also introduces to the basics of
working with software package «Wolfram Mathematica» which provides the
tools to address complex problems in business, such as those characterized by
high dimensionality, requiring substantial computational costs. To strengthen the
understanding of the course as well as to develop the skills of applying modern
mathematics for solving arising business problems, the course is supplemented
with business cases and full-blown solutions for them.
The course is for the curriculum of the faculty of Economics, St. Petersburg
State University of Economics.

Рецензент: д. физ.-мат. н., проф. Хазанов В. Б.

Дорофеев В. Ю., Савинов Г. В., 2018.


СПбГЭУ, 2018.
3

Введение
Математика, это та наука, которая всегда оказывается в авангарде про-
гресса технических специальностей, предлагая новые методы и подходы,
новые идеи. С другой стороны, освоение математики требует правильного
баланса классического подхода – с карандашиком и листком бумаги – и ис-
пользованием самых современных средств. Программные продукты, такие
как «Wolfram Mathematica», «Maple», «MathCad» и многие другие, «научи-
лись» символьному языку, то есть ставишь задачу: решить уравнение x + a
= 0 и получаешь ответ x = – a, или спрашиваешь, чему равна производная
sin 4x, а тебе пишут 4cos 4x. Но эта возможность программ не заменит пер-
вичного обучения основным математическим знаниям. С другой стороны,
появляются новые возможности освоения тех разделов, которые первона-
чально являлись узко специальными в виду сложности расчётов. Для реше-
ния именно этой задачи было задумано данное учебное пособие, круг задач
в котором определялся линейными моделями в курсе высшей математики,
читаемым в СПбГЭУ.
Использование математических пакетов при анализе моделей в этом
пособии сделано на примере «Wolfram Mathematica», хотя практически та-
кими же возможностями обладают и другие пакеты. Научившись работать
в каком-то одном, нетрудно будет освоить и любой другой. Авторы отдали
предпочтение именно «Wolfram Mathematica» или просто «Mathematica».
(Этот пакет можно скачать с официального сайта для бесплатного 2-х не-
дельного использования.) Им можно также воспользоваться в режиме on-
line, если перейти на «WolframAlpha» с помощью режима поиска (пример
такого подхода здесь также рассмотрен).
Предлагаемый в данном пособии анализ моделей авторы постарались
сделать максимально самодостаточным: даётся постановка задачи и приво-
дятся математические теоремы и утверждения, описывающие модель с не-
обходимыми пояснениями.
Литература, которая посвящена освоению символьных пакетов, и в том
числе пакету «Mathematica», столь велика, что мы не рискнём её воспроиз-
водить, тем более, что её не трудно найти в интернете. Тем не менее хоте-
лось бы отметить, дабы окончательно не «потонуть» в потоке информации,
что есть небольшие, но очень ёмкие (примерно в 70 страниц) справочники
по командам – как [1], и более фундаментальные с описанием свойств и
возможностей функций – такие как [2], а имеются более «приземлённые»,
как и это пособие, рассчитанные на исследование определённого класса за-
дач [3].
4

Общий подход к применению пакета «Wolfram Mathematica»


«Mathematica» организована таким образом, чтобы его функциями
можно было бы воспользоваться, не читая предварительно литературу по
обучению пакета. Достаточно запустить «Mathematica», выбрать из предла-
гаемых вариантов «New Notebook» в случае первого использования пакета
или «Open» с нужным названием файла, если выбирается ранее подготов-
ленный материал, и приступить к работе.
В нашем случае первого использования пакета «Mathematica» выби-
раем опцию «New Notebook». В дальнейшем для каждого типа заданий
удобно сохранить свой рабочий файл под уникальным названием, отража-
ющим характер работы.
Появляется окно для ввода рассчитываемых заданий. Удобно расчёты
сопровождать комментариями в текстовом режиме кириллической рас-
кладки клавиатуры. Комментарии заключаются в кавычках “…”, затем
опускаемся на строку ниже для записи требуемых команд (клавишей
«Ввод»).
Для правильной записи набора вводимых команд можно воспользо-
ваться помощью в меню. Для этого нажимаем «Help» в верхней строчке
меню и выбираем первую строку «Wolfram Documentation». В предлагае-
мой строке поиска указываем искомую команду. Изучаем предлагаемые ва-
рианты и копируем подходящий. Например, выделяем образец и копируем
в память командой «Ctrl C», а затем командой «Ctrl V» вставляем в откры-
тый документ «New Notebook». (Копировать и вставлять можно правой
кнопкой мышки.)
Умение программировать для записи команд в пакете «Mathematica»
не требуется и большая часть его возможностей может быть использована
обращением к «Help». Но некоторые программные возможности использо-
вать разумно, пользуясь, например, аналогией в их использовании в рас-
смотренных примерах.
Отдельно стоит обратить внимание на использование команды очистки
памяти истории операций. Дело в том, что введённые ранее присвоения
«Mathematica» «помнит» всю сессию. Это удобно, чтобы не повторять ко-
манды. Но имеется и свой минус – память «загрязняется». В случае, когда,
казалось бы, всё должно работать, программа отказывается «правильно»
отображать результат. В этом случае полезно в Evaluation Главного Меню
выбрать Quit Kernel. Ещё раз выбрать Quit Kernel в опции Local. Нередко
после этого программа начинает работать правильно.
Частые ошибки у неопытного пользователя возникают с некорректным
обращением с математическим объектами. Например, может оказаться, что
5

программа отказывается «работать» с матрицами. Такая ситуация может


возникнуть, если в процессе обращений статус матрицы изменился. Убе-
диться в этом позволяет команда проверки статуса матрицы MatrixFormQ[],
которая даёт ответ либо как true, либо как false. (Понятно, что в квадратные
скобки необходимо подставить обозначение проверяемой матрицы.) Про-
верка на то, что объект является вектором производится похожей командой
VectorQ[].
Упрощающим фактором набора команд в «Mathematica» является воз-
можность переноса записей команд из, например, Word в Notebook про-
стым копированием. Конечно для этого нужно иметь соответствующий
файл. В случае текстового файла на бумаге может помочь программа ска-
нирования и распознавания. Важная опция «Mathematica» – возможность
копировать результат работы пакета в текстовый документ с помощью
обычных операций копирования и вставки. Это можно делать не только с
вычислительными результатами, но, что особенно важно, с графиками и
другими более сложными фигурами. Важно отметить, что копирование в
«Word» текстовых или численных объектов из «Mathematica» сохраняет их
формат. Чтобы от него избавиться полезно сделать промежуточное копиро-
вание в какой-то текстовый редактор, например, в «Блокнот» – стандартной
программы Windows.
Команды в «Mathematica» начинаются с заглавной буквы, а их выпол-
няемая часть стоит в квадратных скобках. Если команда является состав-
ной, например, Matrix[Form[A]], то она может образовывать одну команду
MatrixForm[A], но самостоятельно образовывать такую последователь-
ность команд не рекомендуется – предпочтительно проверять правильность
написания команды и записи её аргументов с помощью Help.
Пакет «Mathematica» является постоянно развивающимся, расширяю-
щим свои возможности. Что-то при этом меняется. Данное пособие напи-
сано, когда основной версией была 11. Авторы старались использовать
язык понятный не специалисту по математике и тем более программирова-
ния, поэтому те команды, которые здесь используются, поясняются на при-
мерах и только в объёме, требуемом для решения конкретной задачи. Хотя
возможности программирования в «Mathematica» тоже имеются, они здесь
не рассматриваются, но иногда демонстрируются, с обязательным альтер-
нативным не программным аналогом. Наконец, следует указать, что прак-
тически все возможности команд «Mathematica» работают и в более ранних
версиях, чем «Wolfram Mathematica 11».
6

Линейная алгебра
Линейные пространства
Любая совокупность элементов образует множество M. Множество M
называется пространством, если для любых двух элементов x, y этого мно-
жества и любого вещественного числа , во-первых, определена операция
суммы элементов, обозначаемая как x + y, и умножение произвольного эле-
мента пространства x на число  , обозначаемое как x или x, во-вторых, x
+ y, x и x также являются элементами этого множества, при этом  x = x.
Пространство называется линейным пространством L, если для любых
элементов x, y, z этого пространства и произвольных вещественных чисел1
,  выполняются следующие свойства:
A1. x + y = y + x.
A2. x + (y + z) = (x + y) + z.
A3. Особенная роль вещественной единицы: 1 · x = x.
A4. ( x) = (x).
A5. Существует нулевой элемент, который обозначается символом 0,
что x + 0 = x.
A6. Для всякого элемента x существует противоположный элемент x*
этого пространства такой, что: x + x* = 0.
A7. ( + )x = x +x.
A8. (x + y) = x + y.
Элементы линейного пространства L называются векторами.
Упорядоченное множество элементов вида x = (x1, x2, … , xn), где все xi
– вещественные числа, называемые координатами, над которыми введены
операции сложения и умножения на число по правилу:
1). x + y = (x1, x2, … , xn) + (x1, x2,… , xn) = (x1 + y1, x2 + y2, … , xn + yn)
2). x ·  =  · x =  · (x1, x2,… , xn) = (x1, x2,… , xn)
называется n-мерным вещественным линейным пространством или просто
– пространством Rn. (Нетрудно убедиться, что свойства A1 – A8 выполня-
ются, при этом нулевой вектор – это вектор с нулевыми координатами, а
противоположный вектор – это вектор, умноженный на – 1.) Два вектора
называются равными, если они имеют одинаковые координаты.

1
В пособии рассматривается только вещественное линейное пространство.
7

Операции сложения векторов и умножениях на число называются ли-


нейными операциями. Применяя линейные операции, можно составлять
суммы векторов, умноженные на числа:
1a1 + 2a2 + … + nan
Выражение такого вида называется линейной комбинацией векторов.
Числа, входящие в линейную комбинацию, называются коэффициентами.
Над n-мерными векторами x и y определена операция скалярного про-
изведения (x, y) по правилу
(x, y) = x1 y1 + x2y2 +…+ xn yn
Пример 1. Вычислить скалярное произведение векторов a = (1, – 2,
5) и b = (4, 3, – 4).
Решение. Воспользуемся программой «Mathematica». В меню «Help»
выбираем «Wolfram Documentation» и набираем слово vector, где находим
операцию умножения Dot. Открываем Dot. Видим, что вектор вводится как
набор чисел в фигурных скобках, а скалярное произведение векторов обо-
значается точкой между ними. Соответственно набираем векторы из усло-
вия. Нажимаем одновременно «Shift» + «Enter», что означает команду вы-
полнения и получим

Ответ: (a, b) = – 22.


Заметим, что между векторами поставлена
точка с запятой, что является указанием для пакета
не выводить на экран результат операции. Если бы
захотели увидеть, как понимает нашу команду па-
кет, то соответственно точку с запятой не ставим,
но каждую команду вводим с новой строки.
В дальнейшем считается, что «Mathematica»
открыта. Сохраняем рабочий файл под именем
linalgebra.
8

n-мерный вектор при n = 1, 2 или 3 представляется как направленный


отрезок на прямой, на плоскости или в пространстве. Для этого в декарто-
вой системе координат вводится отрезок, для которого начало системы ко-
ординат определяется как начало вектора, а компоненты вектора как коор-
динаты конца вектора. Вектор в виде направленного отрезка называется
геометрическим вектором. Длина a геометрического вектора
a  (a1 , a 2 , a3 ) находится по следующей формуле

a  a12  a22  a32


а косинус угла между двумя ненулевыми геометрическими векторами
a  (a1 , a 2 , a3 ) и b  (b1 , b 2 , b3 ) – по формуле

a b
cos(a, b )  , где a  b  (a , b ), a  (a , a ) (1)
a  b
Пример 2. Найти длину векторов a  (1, 2, 2) и b  (2,3, 4) и угол
между ними в градусах.

Комментарий к решению:
– число  вставляется с помощью Basic Math Assistant в группе Calcu-
lator в её подгруппе Basic. Basic Math Assistant подключается из главного
меню из опции Palettes;
– ArcCos[] даёт ответ в радианах, поэтому произведён перевод в гра-
дусы;
– использована команда ответа в виде десятичного числа N[].
9

Векторы a1, a2, …, an называются линейно независимыми, если суще-


ствует набор чисел 1, 2, … , n, что их линейная комбинация равна нулю:
1a1 + 2a2 + … + nan = 0
в противном случае – линейно зависимыми.
Максимальное число линейно независимых векторов системы {a1, a2,
…, an } = Sn называется рангом этой системы.
Два линейно зависимых вектора называются коллинеарными.
Пример 3. Векторы a1 = (1, 5, –4, 6, 2), a2 = (4, 5, 1, 6, -3) и a3 = (6, 15,
– 7, 18, 1) линейно зависимы, так как 2a1 + a2 – a3 = 0. Так как среди векто-
ров a1, a2, a3 нет пропорциональных, то ранг системы равен двум, то есть
Rang {a1, a2, a3 } = 2.
Пример 4. Найти число ли-
нейно независимых векторов си-
стемы S5 = {a1, a2, a3, a4, a5}, если
a4 = (6, 8, 3, 9, -7), a5 = (11, 25, –
10, 30, 0), три других вектора
взяты из предыдущего примера.
Решение. Ранг системы век-
торов находится с помощью ко-
манды MatrixRank. Чтобы эту команду применить к векторам необходимо
перечислить векторы в фигурных скобках команды. Т. о. Rang{S5} = 3.
Ответ. Система S5 содержит три линейно независимых вектора.
Всякий n-мерный вектор может быть изображён на прямой, а через лю-
бые два n-мерных вектора можно провести плоскость, в которой определён
геометрический угол между ними. Тем самым формула (1) косинуса угла
между двумя векторами оказывается верной и в случае двух произвольных
n-мерных векторов.
Матрицы
Матрицей размера m  n называется прямоугольная таблица чисел,
обозначаемая как A = (aij), где i – номер строки (i = 1, 2, … , m) и j – номер
столбца (j = 1, 2, … , n). Над матрицами определены следующие операции:
1) умножение на число k, когда на число умножаются все элементы
матрицы: k(aij) = (kaij).
2) если матрицы имеют одинаковое число строк и столбцов, то при сло-
жении складываются их соответствующие элементы:
10

A + B = (aij) + (bij) = (aij + bij)


3) если число столбцов матрицы (aij) равно числу строк матрицы (bij),
то при умножении матрицы A на матрицу B получается матрица (cij), эле-
менты которой cij равны ai1b1j + ai2b2j + … + ainbnj. (Такой способ умножения
называется ещё умножением «строки на столбец».)
Элементы aii матрицы A = (aij) образуют главную диагональ матрицы.
Две матрицы называются равными, если они имеют одинаковый раз-
мер и их соответствующие элементы равны. Нетрудно убедиться, что так
определённые матрицы удовлетворяют свойствам A1 – A8, поэтому они об-
разуют линейное пространство.
Пример 5. Вычислить произведение AB матриц, если
 4 7 2 5
  
, B   3  2 9 1 
4 3 3
A 
1  2 5  5 9 2 8 
 
Решение. Так как наши матрицы имеет маленький размер, то удобно
набирать их визуально. Пишем «A = (». Создаём позиции для элементов
матрицы одновременным нажатием Ctrl и клавиши «запятой» – в резуль-
тате получится два квадратика. Затем ещё раз нажмём одновременно Ctrl и
клавишу «запятой» – в результате получится три квадратика. Затем нажи-
маем одновременно Ctrl и клавишу «ввод» – в результате получится вторая
строка, после чего закрываем скобку. Теперь можно заполнять её элемен-
тами. Аналогично вводим матрицу B. В результате получим

Здесь была добавлена ещё одна команда MatrixForm, которая представ-


ляет матрицу в виде строк и столбцов. (Ввести матрицу можно и иначе –
это будет сделано далее.)
Над матрицами определена операция транспонирования – замена ме-
стами строк и столбцов.
Пример 6. Транспонировать ранее введённую матрицу B.
11

Решение. Вводим мат-


рицу B копируя операцией
«Ctrl + C» (одновременное
нажатие клавиш Ctrl и C) в
память компьютера. Для
этого необходимо предва-
рительно выделить мат-
рицу, что делается нажа-
той левой кнопкой мышки.
Затем вставляем операцией Ctrl + V в место, отмеченное мышкой (предва-
рительно необходимо нажать левой кнопкой мыши на пустое место блок-
нота – Notebook). Команда Transpose транспонирует матрицу.
Если число строк матрицы совпадает с числом её столбцов, то такую
матрицу называют квадратной, а число её строк – порядком. Квадратная
матрица, у которой по главной диагонали стоят единицы, а остальные числа
равны нулю, называется единичной матрицей. Если E – единичная матрица
и матрица A имеет такой же размер как и E, то AE = EA = A.
8 3 6 
Пример 7. Проверить равенство AE = EA для матрицы 1 9 4  .
 
6 7 2
 
Решение. Введём единичную матрицу (3  3) командой Identity[n] и за-
готовку матрицы A командой Array[a, {n, n}].

Новая матрица обозначена новым идентификатором K (идентифика-


тор – это последовательность латинских букв и арабских цифр, начинаю-
щаяся с буквы).
12

Вставим вместо элементов k[i, j] соответствующие числа. Скопируем


матрицу e и умножим матрицу K на e слева и справа. Добавим команду
представления в матричном виде MatrixForm к каждой из операций. Резуль-
тат видим на экране.

Матрица B называется обратной матрице A, если их произведение даёт


единичную матрицу и AB = BA = E.
Если квадратная матрица имеет обратную, то про такую матрицу гово-
рят, что она не вырожденная, если нет, то это вырожденная матрица.
4 3 3
Пример 8. Найти обратную матрицу для L  1  2 5  .
 
6  2 9
 
Решение. Введём мат-
рицу L построчно. В этом
случае каждая строка за-
писывается в фигурных
скобках. Все строки матрицы также отделя-
ются фигурными скобками. Обратная матрица
вычисляется с помощью команды Inverse.
Всякая квадратная матрица порядка n яв-
ляется совокупностью вектор-строк, то есть
векторов, на которых можно построить парал-
лелепипед, имеющий ориентированный объём, называемый определите-
лем матрицы. Ориентированный объём отличается от обычного объёма
13

знаком, так как он может быть как отрицательным, так и положительным,


в зависимости от порядка строк матрицы, то есть порядка векторов, обра-
зующих параллелепипед. Чтобы поменять знак определителя достаточно
поменять местами любые две его строки. Определитель является важной
характеристикой n-системы n-мерных векторов: если он оказывается рав-
ным нулю, то система линейно зависима. Это хорошо понятно на примере
3-х векторов: если три ненулевых вектора лежат в одной плоскости, то они
не образуют параллелепипед, поэтому объём, сопоставляемый этим трём
векторам, должен быть равен нулю.
Пример 9. Найти объём, построенный на векто-
рах системы L.
Решение. Система L задана в примере 8. Найдём
её определитель командой Det. Видим Det[L] = – 65.
Следовательно, объём равен 65 ед.
Теорема 1. Матрица имеет обратную тогда и только тогда, когда
она квадратная и её определитель отличен от нуля.
2 5 
Пример 10. Выяснить, имеет ли матрица T    обратную.
 4 10 
Решение. Введём матрицу T с помощью
Basic Math Assistant группы Typesetting её 1-
ой подгруппы. (Наведение курсора на соот-
ветствующую позицию нам подскажет ранее
используемый способ введения матрицы.) Так
как определитель матрицы равен нулю, то обратной матрицы для T не су-
ществует. Это понятно и из геометрического представления матрицы как
объёма: так как строки матрицы пропорциональны, то геометрические век-
торы, сопоставляемые первой и второй строкам матрицы лежат на одной
прямой и не образуют параллелограмма.
Так как матрица, как уже было сказано, является совокупностью век-
тор-строк, то для неё также можно найти ранг. Например, Rang (L) = 3. С
другой стороны, матрицу можно рассматривать как совокупность вектор-
столбцов. Оказывается, что ранг вектор-столбцов и вектор-строк одинако-
вый, так как
Теорема 2. Ранг матрицы не меняется при транспонировании.
14

2 4 6 1  4
1 7 2  3 5 
Пример 11. Найти ранг матрицы  .
3 8 1 2 6
 
1 10 9 7 0 

Решение. Запишем матрицу как совокупность столбцов и найдём её


ранг с помощью команды MatrixRank.

Убедимся, что её ранг не меняется при транспонировании. В примере


ниже найдены ранги матрицы A и её транспонированной, а также приведён
их матричный вид. Видим, что ранг при транспонировании не изменился,
что подтверждает утверждение теоремы.

Заметим, что транспонированная матрица в примере введена как AT.


Этого можно добиться специальной командой
«клавиша esc» tr «клавиша esc»
Этот же результат получится обычной командой B = Transpose[A].
(Для наглядности результата воспользуемся командой печати Print[],
которая печатает текст – то есть изображает его на мониторе, если он за-
ключён в кавычки, или печатает значение переменной, – если кавычек нет.
Принцип работы Print понятен из приведённого примера.)
15

Собственные значения и собственные векторы матрицы


Пусть A – квадратная матрица. Если существует вещественное число
, что уравнение
AX=X (2)
имеет ненулевое решение X, где X – вектор, то число  называется соб-
ственным значением матрицы A, а вектор X называется собственным век-
тором матрицы A.
Замечая, что X = E X, перепишем (2) в виде уравнения
(A –  E) X = 0 (3)
для которого по условию необходимо найти ненулевое решение X.
Допустим определитель квадратной матрицы (A – E) отличен от нуля.
Тогда у неё существует обратная и, умножая на неё левую и правую части
(3), получим
X = (A–  E)–10 = 0
то есть решение только нулевое. Поэтому для нахождения собственных
значений  необходимо положить определитель матрицы (A –  E) равным
нулю, то есть решить уравнение
Det(A –  E) = 0
которое называется характеристическим уравнением и является многочле-
ном n-ой степени по . По основной теореме алгебры данное уравнение
имеет не более чем n различных корней.
Из характеристического уравнения найдём собственные значения , а
из матричного уравнения A X =  X найдём собственные векторы X = X(),
отвечающие этим собственным значениям.
Пример 12. Найти собственные значения и собственные векторы матриц:
 3 12  4   1 1  1  1  1 1 
A1   1  3 1  , A2   1 1 1  , A3  1 1  1 
 1  12 6   0 0 1  2 1 0 
     
Найдём собственные значения с помощью функции Eigenvalues[],
вводя матрицы Ai как векторы A[i], i = 1, 2, 3. Такой способ введения поз-
волит «автоматизировать» работу с ними.
16

Найдём собственные векторы с помощью функции Eigenvectors[].

Мы воспользовались очень удобной функцией повторения действий –


функцией цикла Do[]:
Do[то, что выполняется в цикле – тело цикла, {i – параметр
цикла, 1 – число, с которого начинается цикл, n – число, которым
заканчивается цикл}]
Оказывается, что собственные значения определены неоднозначно.
Теорема 3. Собственный вектор, соответствующий данному соб-
ственному значению, определяется с точностью до постоянного множи-
теля.
Действительно, если A X =  X, то для любого числа k:
A(k X) = k (A X) = k ( X) =  (k X).
Следовательно ответ «Mathematica» не полон. Пакет даёт только один
из собственных векторов, а полный ответ получается умножением данного
на произвольное число. Этот пример показывает необходимость с осторож-
ностью воспринимать программные решения.
17

Теорема 4. Если все собственные векторы матрицы различны, то соб-


ственные векторы, соответствующие этим собственным значениям ли-
нейно независимы.
В том случае, когда собственные значения матрицы одинаковы необ-
ходимо с ещё большей осторожностью относиться к результатам про-
граммы. Случай кратности собственных значений (их равенства) требует
дополнительного исследования, но подробное исследование этого вопроса
здесь не проводится.
Собственные значения матрицы и её собственные векторы могут быть
найдены одной командой Eigensystem[]. Приведём пример применения
этой команды в режиме on-line. Для этого перейдём на нужный ресурс
«Wolfram Alpha»
http://www.wolframalpha.com/
Запишем задание нахожде-
ния собственных значений и соб-
ственных функций
eigensystem[{{1, – 1, 1}, {1, 1,
– 1}, {2, – 1, 0}}]
(Заметим, что команда начи-
нается с маленькой буквы.)
В результате получим более
наглядный, чем в «Mathematica»
результат, в котором собствен-
ные векторы матрицы также при-
ведены без умножения на произ-
вольную постоянную. (Будем
надеяться, что последующие вер-
сии пакета исправят такого рода
недочёт, так как результат оказы-
вается частным, хотя претензии
пакета «Mathematica» на пред-
ставление объектов в самом об-
щем символьном виде.)
Системы линейных уравнений
Рассмотрим систему m линейных уравнений с n неизвестными, в кото-
рой aij, bi – известные действительные числа, i, j = 1, 2, … , m, n, а xj – пере-
менные (неизвестные величины). Числа aij называются коэффициентами, а
числа bi – свободными членами.
18

a11 x1  a12 x2  ...  a1n xn  b1


a x  a x  ...  a x  b
 21 1 22 2 2n n 2
 (4)
 ......

am1 x1  am 2 x2  ...  amn xn  bm
Решением системы линейных уравнений (4) (СЛУ) называется упоря-
доченная совокупность чисел x*1, x*2, … , x*n, при подстановке которых в
(4) вместо неизвестных (x1, x2, … , xn ) = x каждое уравнение системы ста-
новится верным числовым равенством.
Система уравнений называется совместной, если она имеет хотя бы
одно решение. В противном случае система называется несовместной.
Совместная система называется определённой, если она имеет един-
ственное решение. В противном случае система называется неопределён-
ной.
Система уравнений называется однородной, если все её свободные
члены равны нулю. Однородная система линейных уравнений обладает
важным свойством
Теорема 5. Система однородных уравнений всегда имеет решение.
Оказывается, что совместная система линейных уравнений может быть
только определённой или неопределённой, так как справедлива
Теорема 6. Если система линейных уравнений имеет два различных ре-
шения, то она имеет бесконечно много решений.
Определим вектор-столбец неизвестных x, вектор-столбец свободных
членов b и основную матрицу A данной системы уравнений, составленную
из коэффициентов при неизвестных, формулами:
 x1   b1   a11 a12 ... a1n 
     
 x2  b  a21 a22 ... a2 n 
x , b   2 , A
 ...   ...   ... 
     
 n
x  bm   m1
a a m2 ... amn 

Тогда рассматриваемую систему линейных уравнений можно записать


в матричном виде A · X = B, так как система (4) следует из правила умно-
жения матриц и их равенства – в данном случае равенства двух вектор-
столбцов.
19

Расширенной матрицей системы линейных уравнений (4) называется


матрица, составленная из основной матрицы с приписанным к ней справа
столбцом свободных членов:
 a11 a12 ... a1n b1 
 
a a ... a2 n b2 
A   21 22
p
 ... ... 
 
 am1 am 2 ... amn bm 

Заметим, что у расширенной матрицы системы m линейных уравнений


с n неизвестными число строк равно m, а число столбцов – n+1.
Имеет место основная теорема теории систем линейных уравнений.
Теорема 7. (Кронекера-Капелли). Для того, чтобы система линейных
уравнений (4) имела решения, необходимо и достаточно, чтобы ранг ос-
новной матрицы равнялся бы рангу расширенной матрицы.
Пример 13. Исследовать на совместность СЛУ
2 x1  5 x2  4 x3  7 x4  6 x5  9
10 x  x  3x  2 x  18 x  4
 1 2 3 4 5

3x1  5 x2  4 x3  7 x4  6 x5  8
5 x1  9 x2  11x3  12 x4  6 x5  3

Решение. Будем вводить матрицу коэффициентов СЛУ по столбцам.

И видим, что ранги основной


матрицы и расширенной различны
(ранг матрицы A равен трём, а ранг
матрицы B равен четырём), поэтому
система решений не имеет.
20

Теорема Кронекера-Капелли о системе линейных уравнений (4) помо-


гает ответить на вопрос о существовании решений, но остаётся открытым
вопрос об их количестве. Из Теоремы 6 следует, что в этом случае воз-
можны два варианта: либо одно решение, либо бесконечно много решений.
О том, какой из этих двух случаев имеет место, отвечает нижеследующая
Теорема 8. Пусть система линейных уравнений имеет решение, то-
гда:
– системы линейных уравнений имеет одно решение тогда и только
тогда, когда ранг основной матрицы равен числу неизвестных;
– системы линейных уравнений имеет бесконечно много решений то-
гда и только тогда, когда ранг основной матрицы меньше числа неизвест-
ных.
Пример 14. Исследовать на совместность систему линейных уравне-
ний и в случае её совместности определить число решений.
4 x1  3x2  2 x3  5 x4  9 x5  9
5 x  12 x  3x  6 x5  4
 1 2 3

3x1  18 x2  7 x3  10 x4  12 x5  14
 x1  48 x2  17 x3  20 x4  18 x5  24

Решение.
21

Ответ. Так как ранги матрицы коэффициентов и расширенной мат-


рицы одинаковы, то система совместна. Система имеет бесконечно много
решений, так как ранг матрицы коэффициентов меньше числа неизвестных
(rang(A) = 2 < n = 5).
Рассмотрим неопределённую СЛУ. По теореме 8 в этом случае ранг
основной матрицы меньше числа переменных системы. Число столбцов ос-
новной матрицы можно уменьшить, если исключить часть её столбцов, что
равносильно тому, что соответствующие этим столбцам переменные пола-
гаются равными нулю. Допустим найдены все переменные, исключение ко-
торых из системы (точнее соответствующих им столбцов) оставляет ранг
матрицы коэффициентов неизменным. Такие переменные называются сво-
бодными, а все оставшиеся – базисными. Из определения базисных и сво-
бодных переменных видна их неоднозначность – однозначно только их
число: число базисных переменных совместной СЛУ равно рангу матрицы,
а число свободных переменных равно разности между числом переменных
и рангом матрицы. Так, в примере 14 имеются 2 базисные переменные и 3
переменные – свободные.
Свободные переменные могут принимать произвольные значения, а
базисные переменные выражаются через свободные переменные и свобод-
ные члены. Решение СЛУ, в котором базисные переменные выражаются
через свободные называется общим решением СЛУ. Если в общем решении
СЛУ свободные переменные положить равными некоторым числовым зна-
чениям, то полученное решение СЛУ называется частным.
Пример 15. Решить систему линейных уравнений примера 14. Выпи-
сать общее и частное решения.
Решение. Воспользуемся ранее введенными матрицами A и B. Неиз-
вестные можно вести вручную, например, так: vars = {x1, x2, x3, x4, x5}, но
можно воспользоваться командой, приведённой ниже. Сделаем ещё одну
полезную операцию, позволяющую контролировать правильность работы
с пакетом – визуализируем систему уравнений командой
Thread[sA.vars == B] // TableForm
Ответ (представлен ниже): переменные x3, x4, x5 – свободные перемен-
ные, переменные x1, x2 – базисные. В Out[25] указано общее решение СЛУ
примера 14, которое можно записать также в следующем виде:
40 22 25 1 29 5 20
x(  C1  C2  C1 ,   C1  C2  2C3 , C1 , C2 , C3 )
21 63 63 3 63 21 21
22

Частное решение может быть получено, если положить свободные пе-


40 29
ременные равными нулю: x  ( ,  , 0, 0, 0) . Постоянные C1, C2, C3 –
21 63
произвольные вещественные числа.

Теорема 9. (Критерий линейной независимости векторов.) Пусть в


пространстве Rm задана система векторов Sn = {a1, a2, … , an}.
Если ранг матрицы координат равен числу векторов, то эти векторы
линейно независимы, если меньше, то эти векторы линейно зависимы.
В частности, из примера 4 следует, что система векторов S5 является
линейно зависимой, так как число векторов системы равно 5, а ранг мат-
рицы координат равен 3.
Аналитическая геометрия
Cовокупность всевозможных линейных комбинаций системы векторов
Sn: a1 , a2, … , an в линейном пространстве L называется линейной оболочкой
системы Sn. Например, пусть на плоскости заданы два коллинеарных век-
тора a2 = (2, 3) и b = (4, 6). Тогда их линейная оболочка имеет вид 1a + 2b
= (21+42, 31+62) = (1+22) · (2, 3) = k (2, 3) = (2k, 3k). Обозначая x =
2k, y = 3k получим совокупность пар (x, y), которая изображается прямой y
= 1.5x. Если бы векторы a и b были бы линейно независимы, то они обра-

2
Геометрический вектор обозначается жирным шрифтом.
23

зовывали бы всё двумерное пространство. Аналогично тройка компланар-


ных (или линейно зависимых) векторов в трёхмерном пространстве пред-
ставима в виде плоскости, проходящей через начало координат.
На плоскости имеет место общее уравнение прямой
l : Ax  By  C (5)
при этом вектор N = (A, B) перпендикулярен прямой l и называется векто-
ром нормали.
Пример 16. Нарисовать на плоскости прямую 2x + 3y = 6 и изобразить век-
тор, ей перпендикулярный.
Решение. Команда ContourPlot позволяет строить на плоскости пары
точек (x, y) в указанных пределах изменения переменных. Для определения
вектора необходимо задать точки его начала и конца в команде Arrow.
Чтобы этот вектор изобразить в системе координат используем команду
Graphics.

Команда Show позволяет изобразить на одном рисунке несколько гра-


фиков.
24

Заметим, что уравнение прямой в команде ContourPlot записывается с


помощью двойного равенства так как это не является присваиванием левой
части правого выражения.
Вектор нормали к прямой (5) обладает важным свойством.
Теорема 10. Вектор нормали N = (A, B) (A2 +B2 > 0) показывает
направление перемещения прямой l: Ax + By = C параллельно самой себе,
при котором увеличивается значение постоянной C.
Утверждение теоремы следует из анализа рисунка внизу.
5

N A, B
y
4

M x ,y
3

2
l : Ax By C
t

1 P a, b
l: Ax By C
x
0

1
1 0 1 2 3 4 5

Действительно, прямая l: Ax + By = C проходит через точку P(a, b),


поэтому выполняется равенство Aa + Bb = C. Прямая l*, параллельная пря-
мой l, проходит через точку M(x*, y*), поэтому выполняется равенство Ax*
+ By* = C*. Вычитая из второго равенства первое, получим A(x* – a) + B(y*
– b) = C* – C. С другой стороны, левая часть равенства возникает, если ска-
лярно умножить векторы N = (A, B) и PM = (x* – a, y* – b). Так как (N, PM)
= ||N||·||PM|| · cos t, то для острого угла 0 < t < 900 , это произведение по-
ложительно, а для тупого угла 90 < t < 1800 – отрицательно. Следовательно,
для точек M(x*, y*), находящихся в полуплоскости, для которых угол
между векторами PM и N острый, величина C* – C положительна, а для
точек M(x*, y*), находящихся в полуплоскости, что угол t тупой, получим
C* – C < 0. Теорема доказана.
25

Множество решений неравенства Ax + By  C образует область реше-


ний неравенства, называемая областью допустимых значений (ОДЗ).
Из Теоремы 10 следует, что решением неравенства Ax + By  C явля-
ется полуплоскость, ограниченная прямой Ax + By = C.
Пример 17. Решить неравенство 2x + 5y  10 и отметить множество его
решений в первом квадранте.
Решение. Команда RegionPlot[] выделяет решения неравенств в указан-
ной области изменения переменных.

Результат выполнения команды видим справа.


Множество называется выпуклым, если для
любых двух точек множества всякий отрезок, их
соединяющий, также принадлежит множеству.
Теорема 11. Область допустимых решений
системы линейных неравенств образует выпук-
лое множество.
2 x  3 y  12

Пример 18. Изобразить решение системы неравенств  x  3 y  3 на
5 x  2 y  10

плоскости. Решение. Команда

позволяет получить нужный результат (сделайте это самостоятельно).


26

Модель обмена
Пусть дана экономическая система, состоящая из n производителей и
n видов продуктов, для которой выполнены требования:
1. Каждый производитель производит только один продукт.
2. Экономика замкнута, т. е. весь продукт, произведённый каждым про-
изводителем, потребляется внутри системы.
3. Каждый производитель весь свой продукт обменивает только на про-
дукцию, производимую внутри системы (т. е. нет никаких внешних поступ-
лений).
4. Продукция, произведённая каждым производителем за плановый пе-
риод, например, за год, принимается за единицу.
Экономическая система, в которой выполняются требования 1 – 4,
называется простой моделью обмена или моделью международной тор-
говли. Обозначим через αij количество продукта, потребляемое потребите-
лем за плановый период.

Из аксиом 1 – 4 следуют равенства: i 1ij  1, j  1, 2, ..., n. Матрица


n

A = (αij) называется матрицей обмена и имеет вид:


 11 12 ... 1n 
 
  22 ...  2 n  n
A   21 , где  ij  0,   ij  1, i, j  1, 2,..., n.
 ...  i 1
 
  n1 n2 ...  nn 

Обозначим через pi цену единицы продукта i-го производителя, она же


является его доходом за год. Расход такого производителя составляет
 j 1ij p j . Будем говорить, что цены P = (p1, p2,… ,pn) такие, что (P ≥ 0)
n

обеспечивают равновесие системы, если расход каждого производителя не


превышает его дохода (запись P ≥ 0, равносильна тому, что для всех i = 1,
2, … , n, pi ≥ 0):
n


j 1
ij p j  pi , i  1, 2,..., n.

Справедливы следующие утверждения [6]


Теорема 12. Если элементы αij, i, j = 1, 2, … , n образуют матрицу
обмена в простой модели обмена, в которой доход производителя не пре-
вышает его расхода, то доход каждого производителя равен его расходу:
27


j 1
ij p j  pi , i  1, 2,..., n.

Теорема 13. Если в простой модели обмена существуют цены, в кото-


рых доход равен расходу, то их можно выбрать неотрицательными.
Итак, вектор равновесных цен – это неотрицательный вектор P = ( p1,
p2, … , pn), координаты которого удовлетворяют системе уравнений:
11 p1  12 p2  ...  1n pn  p1
 p   p  ...   p  p
 21 1 22 2 2n n 2

 ...
 n1 p1   n 2 p2  ...  ann pn  pn

или в матричной форме: A P = P.


Таким образом, задача отыскания вектора равновесных цен сводится к
нахождению собственного вектора матрицы обмена, отвечающего соб-
ственному значению  = 1. В простой модели обмена такой вектор всегда
существует, что следует из
Теорема 14. Если сумма элементов каждого вектор-столбца квад-
ратной матрицы равна единице, то эта матрица имеет собственное зна-
чение, равное единице.
Пример 19. Пусть экономическая система состоит из двух производи-
 0.5 0.9 
телей и двух видов продуктов с матрицей обмена A    . Найти рав-
 0.5 0.1 
новесный вектор цен.
Решение. Так как сумма элементов в каждом столбце матрицы обмена
равна единице, то собственное значение , равное единице, существует.
Найдём собственный вектор, соответствующий собственному значению 
= 1, который и будет вектором равновесных цен.
 0.5 0.9  1 0   0.5 0.9 
A  1 E  A  E     
 0.5 0.1   0 1   0.5  0.9 
Тогда для нахождения равновесного вектора цен p1, p2 имеем:
0.5 p1  0.9 p2  0
  0.5 p1  0.9 p2 .
 0.5 p1  0.9 p2  0
Пусть p2 = C, тогда P = ( 1.8C, C) = C( 1.8, 1). Равновесные цены p2 =
C, p1 = 1.8 C определены с точностью до коэффициента C, который можно
рассматривать как единицу масштаба цен. Например, если второй продукт
имеет цену 1 млн. руб., то для того, чтобы обеспечить равновесие в простой
28

модели обмена, необходимо установить цену первого продукта равной 1


млн. 800 тыс. рублей.
Пример 20. Найти равновесный вектор цен для экономической си-
стемы, состоящей из 6 производителей и 6 видов продуктов с матрицей об-
мена
 0.1 0.2 0.1 0.2 0 0.1 
 
 0.3 0 0.1 0.3 0.1 0.1 
 0 0.2 0.1 0.1 0.3 0.1 
A 
 0.2 0.1 0.4 0.1 0.2 0 
 0.1 0.3 0 0.3 0.3 0.2 
 
 0.3 0.2 0.3 0 0.1 0.5 
Решение. Равновесный вектор цен является собственным вектором
матрицы обмена, соответствующий собственному значению единица. По-
этому задачу можно было бы решить командой Eigensystem[], но пойдём
другим путём, демонстрирующим способ решения однородных уравнений
пакетом «Mathematica».

Комментарий. Матричное уравнение A P = P мы представляем в виде


системы линейных уравнений командой Thread[a == b], которая объединяет
части a и b. TableForm полученные равенства представляет в виде строк.
Само матричное уравнение A P = P решаем командой Reduce, позволяющей
решать уравнения с бесконечным множеством решений.
29

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


В качестве этой неизвестной команда Reduce использовала первую пере-
менную p1.
Нетрудно представить программу для произвольной размерности n.
Как и ранее введём матрицу обмена A. Затем введём вектор переменных –
вектор цен P. Для этого определим первый вектор p[1] как одномерный эле-
мент списка. Затем присоединим к нему все оставшиеся переменные p[2],
… , p[n] с помощью оператора цикла Do и функции присоединения Ap-
pend[a, b]. Наконец решим систему AP = P.

Этого же результата можно добиться без оператора цикла Do и присо-


единения, если использовать строку: vars = (x# &) / @ Range@n, что пока-
жем на примере матрицы обмена
 0.3 0.2 0 
 
A   0.5 0.1 0.9 
 0.2 0.7 0.1
 
30

Линейная балансовая модель


Рассмотрим экономическую систему, состоящую из n взаимосвязан-
ных отраслей производства при условии, что каждая отрасль выпускает
только один продукт.
Пусть: xi – валовая продукция i-ой отрасли, yi – конечный продукт i-ой
отрасли, xij – часть продукции i-ой отрасли, которая потребляется j-ой от-
раслью для выпуска продукции xj, i, j = 1, 2, …, n.
Математическая модель системы имеет вид:
 x1  ( x11  x12  ...  x1n )  y1
 x  ( x  x  ...  x )  y
 2 21 22 2n 2

 ...
 xn  ( xn1  xn 2  ...  xnn )  yn

Эти равенства называются балансовыми. Они содержат n2 + 2n пере-


менных, поэтому не имеет содержательного исследования. Оказывается,
что в одном частном случае можно предложить изящное решение, предло-
женное ещё в 1939 году видным математиком русского происхождения В.
В. Леонтьевым: в том случае, когда внутри отраслей не происходят струк-
xij xij '
турных изменений, отношения   aij постоянны. Итак, имеем усло-
xj xj '
вие линейности прямых затрат:
xij
aij  , xij  aij x j (6)
xj

когда затраты i-ой отрасли в j-ую пропорциональны валовому выпуску j-ой


отрасли. Подставим (6) в балансовые равенства и получим линейные балан-
совые уравнения:
 x1  (a11 x1  a12 x2  ...  a1n xn )  y1
 x  (a x  a x  ...  a x )  y
 2 21 1 22 2 2n n 2
 (7)
 ...

 xn  (an1 x1  an 2 x2  ...  ann xn )  yn
31

содержащую уже n неизвестных. Введя некоторые общепринятые обозна-


чения: Y – ассортиментный вектор, X – вектор-план и A – матрица пря-
мых затрат, где
 y1   x1   a11 a12 ... a1n 
     
y a a ... a
Y   , X   2 , A   
2 x 21 22 2 n
 ...   ...   ... 
     
 n
y  n
x  n1 n 2
a a ... a nn 

линейные балансовые уравнения запишем в матричном виде: ( E  A) X  Y .


Итак, линейная балансовая модель позволяет по заданному вектор-
плану X находить ассортиментный вектор Y (конечный продукт). Однако
более интересна обратная задача: нахождение вектор-плана X по заданному
вектору Y. Будем считать, что матрица E – A не вырожденная, тогда
X  ( E  A)1Y  SY
где S  ( E  A)1 – матрица полных затрат.
В том случае, если матрица полных затрат существует и неотрица-
тельна (то есть все sij ≥ 0), модель называется продуктивной. Имеется
Теорема 15. Если модуль всех собственных значений матрицы A
меньше единицы, то модель продуктивна.
Элементы матрицы S = (sij) называются коэффициентами полных за-
трат продукции i-ой отрасли. Они показывают, сколько валовой продук-
ции i-ой отрасли идёт на изготовление единицы конечной продукции j-ой

n
отрасли. В самом деле, xi  s y j , где отдельное слагаемое суммы –
j 1 ij
это количество валового продукта i-ой отрасли необходимое для изготов-
ления конечной продукции j-ой отрасли в объёме yj. Если yj = 1, то sij – ко-
личество продукции i-ой отрасли, необходимое для изготовления единицы
конечной продукции j-ой отрасли. Величины (sij – aij) называются косвен-
ными затратами.
Рассмотрим экономическую систему, для которой определены коэф-
фициенты прямых затрат aij. Кроме того, пусть известны затраты труда
(например, в часах), идущего на единицу валового продукта
xn 1 j
an 1 j  (8)
xj
32

– затраты труда j-ой отрасли в некоторый плановый период, а xj – валовый


продукт j-ой отрасли за тот же плановый период. Найдём полные затраты
труда xn+1 по известному вектор-плану на новый плановый период.


n
Пусть объём продукции равен xi  s y j . Тогда из (8) следует
j 1 ij

n
xn 1  an 11 x1  an 12 x2  ...  an 1n xn   an 1i xi 
i 1
n n
 n n
 n
  an 1i  sij y j    an 1i sij  y j  sn 1 j y j
i 1 j 1 j 1  i 1  i 1

Следовательно по известным коэффициентам прямых затрат труда an+1j


находятся коэффициенты полных затрат труда sn1 j  i 1 an1i sij .
n

Аналогично решается задача о нахождении, например, полных капита-


ловложений xn+2 и т. д. В этом случае требуется знать вектор an+2 = (an+21,
xn  2 j
an+21, … ,an+2n), где an  2 j  – капиталовложения в j-ую отрасль на еди-
xj
ницу валового продукта j -ой отрасли. Здесь, как и ранее, xj – валовый про-
дукт j -ой отрасли в некоторый плановый период, а xn+2j – объём капитало-
вложений в ту же отрасль за тот же период. Тогда
n n n
 n n
 n
xn 2   an 2i xi  an 2i  sij y j    an 2i sij  y j  sn 2 j y j
i 1 i 1 j 1 j 1  i 1  i 1

Здесь sn 2 j  i 1 an 2i sij – коэффициенты полных капиталовложений.


n

В результате получим расширенную матрицу Sp и Xp – расширенный


вектор валового продукта:

 s11 s12 ... s1n   s11 s12 ... s1n 


   
 s s ... s   s21 s22 ... s2 n   y1 
  y2 
21 22 2 n
   ...
 
...
Sр  , X S Y 
p p

 n1 n 2
s s ... s nn   sn1 sn 2 ... snn   ... 
 s s ... s   s s ... s  y 
 n 11 n 12 n 1n
  n 11 n 12 n 1n
 n 
s  s 
 n  21 n  22
s ... s n2n   n  21 sn  22 ... sn  2 n 
33

Пример 21. Экономическая система состоит из двух отраслей и за


предшествующий период характеризуется следующей таблицей межотрас-
левых потоков:
N отрасли Потребление Конечный
I II продукт
1. 100 160 240
2. 275 40 85
Требуется найти валовый вектор продукции, полные затраты труда и
капиталовложений, если задан вектор-план Y = (480, 170) и известны век-
тора затрат труда a3 = (15, 20) и капиталовложений a4 = (10, 30) на единицу
продукции.
Для решения задачи нам нужны следующие данные:
по 1 отрасли 100 + 160 = 260
– затраты:
по 2 отрасли 275 + 40 = 315
по 1 отрасли 260 + 240 = 500
– валовой выпуск:
по 2 отрасли 315 + 85 = 400
Представим исходную таблицу в таком виде:
N от- Потребление Конечный Итого за- Валовый
расли продукт трат выпуск
1. 100 160 240 260 500
2. 275 40 85 315 400
Найдём матрицу коэффициентов прямых затрат (матрица A):
x11 100 x12 160
a11    0.2 a12    0.4
x1 500 x2 400
x21 275 x12 40
a21    0.55 a12    0.1
x1 500 x2 400
Из единичной матрицы вычтем матрицу A:
1 0   0.2 0.4   0.8  0.4 
   
 0 1  0.55 0.1   0.55 0.9 
и найдём ей обратную
1.8 0.8 
S  ( E  A)1   .
1.1 1.6 
34

Найдём элементы s3j и s4j (j = 1, 2) расширенной матрицы.


s31 = 15 1.8 + 20 1.1 = 49, s32 = 15 0.8 + 20 1.6 = 44,
s41 = 10 1.8 + 30 1.1 = 51, s42 = 10 0.8 + 30 1.6 = 56.
Вычислим расширенный план Xp на будущий период, если требуется
изготовить 480 единиц продукции 1-ой и 170 единиц продукции 2-ой от-
расли:
1.8 0.8   1000 
   
1.1 1.6   480   800 
X  SY   . 
 49 44  170   31000 
   
 51 56   34 000 
Ответ: для изготовления конечного продукта в размере Y = (480,170)
при сохранении структуры производства необходимо запланировать вало-
вый продукт в объёме: X = (1 000, 800), при этом потребуется 31 000 затрат
труда и 34 000 капиталовложений.
Решим эту же задачу в программе «Mathematica».
1. Укажем порядок нашей квадратной матрицы межотраслевых пото-
ков с помощью переменной n. Введём матрицу межотраслевых потоков x =
(xij), вектор-столбцы вектор-плана k, соответствующий периоду заданных
межотраслевых потоков и k1 – планируемый вектор-план и вектор-столбцы
затрат труда r1 и капиталовложений r2
n = 2; x = {{100.0, 160}, {275.0, 40}}; k = {240, 85};
k1 = {480, 170}; r1 = {15, 20}; r2 = {10, 30};
Заметим, что два числа введены как десятичные – это 100.0 и 275.0. Это
сделано для того, чтобы последующие числа имели десятичное представле-
ние.
Находим затраты. Для этого введём вспомогательный вектор затрат z,
суммируя элементы строк матрицы x. Операцию суммирования осуще-
ствим с помощью функции Sum, а автоматический перебор строк произве-
дём операцией Do:
Do[z[i] = Sum[x[[i, j], {j, 1, n}], {i, 1, n}]
Определяем столбец вектора затрат. Для n = 2 он должен иметь вид
v = { z[1]+k[[1]], z[2]+k[[2]]}
но удобно написать вектор затрат для матрицы произвольного вида. Это
можно сделать с помощью функции цикла Do и операции присоединения
35

Append[a1, a2]. Чтобы было что к чему присоединять необходимо опреде-


лить первый список v[1], а его значения запишем в фигурных скобках,
чтобы образовать сам список – в данном случае вектор из одной компо-
ненты, затем к нему будем присоединять элементы строки. Сказанное
должно быть понятно из написанного ниже
v[1] = {z[1] + k[[1]]}; Do[v[i] = Append [v[i-1], z[i]+k[[i]]], {i, 2, n}]
Здесь необходимо учесть, что вектор-план k в «Mathematica» – это мат-
рица из одной строки, поэтому необходимо было указать так называемую
глубину списка двойными квадратными скобками, а вектор затрат z по
определению (так как мы пишем z[i]) имеет глубину первого уровня.
Находим матрицу A коэффициентов прямых затрат. Для этого её опре-
делим как матрицу, состоящую из элементов a[i, j], затем воспользуемся
формулой (6). Для самоконтроля полезно увидеть матрицу прямых затрат
A в виде таблицы. С этой целью можно добавить команду MatrixForm[A]
A = Array[a, n, n]; Do[a[i, j] = x[[i, j]]/ v[n][[j]],{j, 1, n},{i, 1, n}];
MatrixForm[A]
Ведём единичную матрицу e: e = IdentityMatrix[n];
Находим матрицу S – полных затрат, как обратную для матрицы e – A
S = Inverse[e – A];
Определяем расширенную матрицу. Для этого сначала найдём строку
zt – расширенной матрицы затрат труда:
zt = r1.s
и присоединим её к расширенной матрице S, обозначив её как st:
st = Append[s, zt],
затем найдём строку расширенной матрицы капиталовложений sk:
zk = r2.s
и присоединим её к расширенной матрице S, обозначив результат как sr:
sr = Append[s, zr]
Наконец находим окончательный валовый выпуск val на новый плано-
вый период val = sr.k1, где в качестве строки получим валовый выпуск рас-
ширенной матрицы затрат {1000, 800, 31000, 34000}.
36
37

Линейное программирование
1. Основные задачи линейного программирования.
Одной из первых постановок задачи линейного программирования в
виде предложения по составлению оптимального плана перевозок, была
дана советским экономистом А. Н. Толстым в 1930 году, а в 1931 году вен-
герский математик Б. Эгервари рассмотрел математическую постановку и
решил задачу линейного программирования «проблема выбора», хотя, как
таковая математическая теория линейного программирования, восходит
ещё к работам Фурье (1826) и к фундаментальным работам Фаркаша. В
1939 г. Л. В. Канторович для решения транспортной задачи ввёл «метод
разрешающих множителей». Он же совместно с М. К. Гавуриным в 1949
году разработал «метод потенциалов», а Дж. Данциг предложил симплекс-
метод. Все эти задачи объединял общий подход и метод исследования.
Линейное программирование – это наука о методах исследования и
отыскания наибольшего и наименьшего значений линейной функции, на
неизвестные которой наложены линейные ограничения. Таким образом, за-
дачи линейного программирования относятся к задачам на условный экс-
тремум функции. Выделяют два основных типа задач линейного програм-
мирования.
Задача 1. Определение оптимального ассортимента продукции.
Пусть предприятие может производить два вида изделий P1 и P2, рас-
полагая для их изготовления ограниченными ресурсами материалов Q1, Q2
в количествах 420 и 200 единиц и оборудования Q3 в количестве 360 еди-
ниц. Затраты ресурсов и оборудования на изготовление одного изделия P1
и P2 равны 2 и 3, 2 и 1, 4 и 1 соответственно. Известно, что прибыль, кото-
рую получает предприятие от выпуска одного первого изделия равна 40
единицам, а от одного второго изделия равна 50 единицам.
Требуется определить, сколько изделий P1 и P2 должно производить
предприятие, чтобы достичь наибольшей прибыли. Для решения задачи со-
ставим её математическую модель, записав условие в виде таблицы.
вид затраты на1 ед. продукции объём
ресурсов P1 P2 ресурсов
Q1 2 3 420
Q2 2 1 200
Q3 4 1 360
прибыль 40 50
38

Обозначим число изделий P1 и P2, которые должно производить пред-


приятие через неотрицательные переменные x1 и x2. Неизвестные x1 и x2
удовлетворяют условиям, что расход ресурса не превышает имеющихся
объёмов:
2 x1  3x2  420
2 x  x  200
 1 2
 (9)
4 x1  x2  360
 x1 , x2  0

Любая пара значений x1 и x2, удовлетворяющая (9), определяет один из


допустимых планов предприятия по выпуску данных изделий, которых бес-
численное множество, а вся совокупность таких пар образует область до-
пустимых значений. Согласно условию задачи, необходимо выбрать такой,
чтобы суммарная прибыль предприятия оказалась наибольшей. Этот план
назовём оптимальным. Прибыль предприятия, которую обозначим как z,
находится из равенства
z  40 x1  50 x2  max (10)
Функция z называется целевой функцией.
Таким образом, среди множества решений системы неравенств (9)
необходимо найти такое решение (такую пару значений x1 и x2), для кото-
рого целевая функция z в (10) достигнет наибольшего значения.
Математическая модель задачи, заданная выражениями (9 – 10), полу-
чила название линейной модели, так как во все выражения неизвестные x1 и
x2 входят только в первой степени. Подобные задачи называются задачами
линейного программирования, при этом вторая часть термина – слово «про-
граммирование» – отражает алгоритмический метод нахождения наилуч-
шего решения.
Решив задачу (9 – 10) методами, о которых будет идти речь в дальней-
шем, найдём оптимальный план: x1 = 45 и x2 = 110, z = 7300.
Задача 2. Нахождение оптимальной диеты.
Для кормления животных необходимо составить дневной рацион (ди-
ету), пользуясь набором из трёх видов кормов. Требуется, чтобы этот днев-
ной рацион содержал необходимое количество белка (не менее 2000 г), уг-
леводов (не менее 20 г) и кальция (не менее 100 г) и при этом оказался бы
наиболее выгодным по себестоимости. Нижеследующая таблица характе-
ризует содержание белка, углеводов и кальция в одной единице каждого
вида корма и себестоимость кормов:
39

компоненты вид кормов мин. содер.


рациона сено – P1 силос – P2 конц. – P3 компонент
белки – Q1 0.5 0.2 1.0 20
углеводы – Q2 40 10 200 2000
кальций – Q3 5 4 3 100
себестоимость 2 1 4
Для составления математической модели обозначим различные виды
кормов, составляющие искомый рацион, через x1, x2 и x3. Тогда, на основа-
нии условий задачи и того, что переменные x1, x2 и x3 должны быть неот-
рицательными возникают ограничения:
0.5 x1  0.2 x2  1.0 x3  20
40 x  10 x  200 x  2000
 1 2 3
 (11)
5 x1  4 x2  3x3  100
 x1 , x2 , x3  0

Среди бесчисленного множества решений (11) нужно выбрать рацион,


обладающий наименьшей себестоимостью. Обозначим через z суммарную
себестоимость дневного рациона
z  2 x1  x2  4 x3  min (12)
Сформулируем задачу следующим образом:
найти совокупность значений x1, x2 и x3, удовлетворяющих неравен-
ствам (11), для которых функция z из (12) достигала бы наименьшего зна-
чения.
Оптимальным рационом в данной задаче оказывается рацион для ко-
торого x1 = 33.3, x2 = 0 и x3 = 3.3, z = 80.
Область допустимых решений задачи линейного программирования
(ЗЛП) называется областью планов.
Теорема 16. Экстремум задачи линейного программирования лежит
на границе области планов.
Справедливость теоремы продемонстрируем на примере графического
метода, в котором оптимальное значение находится обязательно в угловой
точке. Оказывается, это является общим свойством задачи линейного про-
граммирования с произвольным числом переменных, разве что требуется
40

дополнительное определение угловой точки в случае большего, чем три


числа переменных [8].
2. Графический метод.
В случае, когда в задаче линейного программирования всего две пере-
менные, для её решения можно воспользоваться графическим методом.
Этот способ наглядно демонстрирует основные идеи линейного програм-
мирования.
Из сформулированных ранее основных типов задач ЛП, задача о диете
содержит три переменных, а задача определения оптимального ассорти-
мента продукции – две, поэтому решим задачу определения оптимального
ассортимента продукции графическим методом.
К неравенствам (9) добавим уравнения границ:
l1 : 2 x1  3x2  420 (1')
l2 : 2 x1  x2  200 (2') (13)
l3 : 4 x1  x2  360 (3')
Для нахождения решения неравенств (9) воспользуемся Теоремой 10,
из которой следует, что если какая-то точка плоскости (только если это
точка не лежит на границе) принадлежит (не принадлежит) области реше-
ния неравенства (9), то и вся полуплоскость, содержащая эту точку, также
принадлежит (не принадлежит) области решений неравенства (9).
Вначале рассмотрим первое неравенство системы (9):
2x1 + 3x2  420 (9’)
Границей области решений этого неравенства является прямая l1 (13).
Нарисуем её, проведя её через две точки. Точки получим, подставляя в (13)
нулевые значения одной координаты, находя другую координату:
если x1 = 0, то x2 = 420/3 = 140 – получим точку A (0, 140),
если x2 = 0, то x1 = 420/2 = 210 – получим точку E (210, 0).
Через точки A и E проведём прямую l1. Изобразим в системе координат
(x1, x2) прямую l1 (x1 = x, x2 = y).
Известно, что решением неравенства (9’) является полуплоскость,
ограниченная прямой l1. Чтобы найти, какая из двух полуплоскостей, на ко-
торые делит плоскость X1OX2, является решением (9’) достаточно подста-
вить координаты какой-либо из точек полуплоскостей в неравенство (9’) и
посмотреть, выполняется ли оно в выбранной точке. Если выполняется, то
решением неравенства является полуплоскость, содержащая эту точку, в
41

противном случае – другая полуплоскость. В качестве «тестовой точки»


обычно берут начало координат – О(0,0). В нашем случае будет
3 · 0 + 4 · 0 = 0  150 – верно.
Следовательно, решением первого неравенства (9’) является полуплос-
кость, содержащая точку О(0, 0) и ограниченная прямой l1 (Рис. 1).

140
l1
120

100

80 l2

60

40

20 l3

0
0 20 40 60 80 100
Рис. 1 Рис. 2
Рис 1 получим в пакете «Mathematica» следующим образом:
– введём уравнение прямой l1.
ContourPlot[2x + 3y == 420, {x, 0, 250}, {y, 0, 150}]
Заштрихуем область планов.
RegionPlot[{2x + 3y < 420 && x>0 && y > 0}, {x, 0, 260}, {y, 0, 160}]
после чего добавим изображение точек A(0, 140) и E(210, 0), которые впи-
сываем непосредственно в рамке графика «Mathematica» после двойного
начатия левой кнопки мышки.
Аналогично решаем оставшиеся четыре неравенства системы (9), обо-
значая прямые, соответствующие второму и третьему из неравенств (9), как
l2 и l3 соответственно. В результате получим область, заштрихованную на
Рис. 2, которую осуществляем командой
r = RegionPlot[{2x + 3y < 420 && 2x + y < 200 && 4x + y < 360 && x>0
&& y > 0}, {x, 0, 260}, {y, 0, 160}, PlotStyle  Gray]
Перейдём к поиску оптимального решения, которое соответствует мак-
симуму целевой функции (10).
42

Рис 3. Рис. 4.
Воспользуемся Теоремой 10, по ко-
торой направление возрастания целевой функции совпадает с нормалью к
прямой. Этот же результат можно получить из курса математического ана-
лиза функции многих переменных, где показано, что направление наиболь-
шего возрастания функции нескольких переменных в окрестности точки из
области определения функции совпадает с градиентов функции. Так как
градиент функции z, определяется как вектор, компоненты которого равны
частным производным grad z  ( z 'x1 , z 'x2 ) , то для линейной зависимости
градиент функции совпадает с нормалью к прямой
N  grad z  40i1  50i2
где введены единичные векторы i1 , i2 – орты на плоскости X1OX2. В резуль-
тате приходим к Рис. 3, который получается командой
r1 = Graphics[Arrow[{{0, 0},{40,50}}]]
Show[r, r1]
Т. о. в задаче линейного программирования градиент z(x1, x2) не зависит
от точки, поэтому перемещение из любой точки плоскости в области опре-
деления функции в направлении градиента приведёт к увеличению значе-
ния целевой функции. Отметим другой важный факт – при перемещении
перпендикулярно градиенту значение целевой функции не изменится.
На плоскости X1OX2, через точку О(0, 0) проведём прямую l0,: 50x1 +
40x2 = 0 перпендикулярно вектору N. Для всех точек этой прямой значение
43

целевой функции будет постоянно, так как перемещение по ней равно-


сильно движению, перпендикулярному градиенту. Линия, вдоль которой
значение целевой функции не изменяется называется линией уровня.
Перемещая линию уровня в направлении вектора N параллельно самой
себе, находим крайнюю точку области, которую обозначим как C – в этой
точке целевая функция достигает наибольшего значения.
Последовательность команд
z = 7000; r3 = ContourPlot[40x + 50y == z, {x, 0, 100}, {y, 0, 150}];
Show[r, r1, r2]
позволяет визуализировать построение на Рис.4. Отметим, что значение z =
7 000 здесь взято произвольным образом – наудачу. Видно, что прямую l0’
необходимо двигать выше, чтобы получить оптимальное значение.
Из рис. 4 видим, что эта точка является точкой пересечения прямых l1
и l2. Найдём координаты этой точки, решая систему уравнений:
2 x1  3x2  420 2 x2  210  x1  45 (14)
  
2 x1  x2  200 4 x1  180  x2  110
При данных значениях x1 и x2 находим z = 7300.
То же самое решаем в «Mathematica».

«Mathematica» позволяет анимировать перемещение прямой l0 вверх в


системе координат XOY командой

Результат видим на Рис. 5.


44

Рис. 5.
Ответ: при изготовлении изделий P1 в количестве 45 единиц, а изделий
P2 – 110 единиц фирма получит наибольшую прибыль в размере 7300 еди-
ниц.
Замечание 1. Из метода решения следует, что наибольшее значение це-
левой функции задачи линейного программирования всегда достигается на
границе области в её угловой точке. В связи с этим справедлив альтерна-
тивный подход, основанный на методе перебора значения целевой функции
в угловых точках. Так, в нашем случае:
z(O) = 0, z(A) = 7000, z(C) = 7300, z(B) = 5600, z(D) = 3600
Этот способ решения удобно сочетать с изложенным выше, когда име-
ются сомнения в точности нахождения оптимальной точки, связанные с
близким к параллельному расположению линии уровня и линии границы
области.
45

Замечание 2. В том случае, когда требуется минимизировать значение


целевой функции, необходимо линию уровня двигать в направлении, про-
тивоположном градиенту целевой функции, сохраняя все остальные рас-
суждения прежними.
Замечание 3. Может оказаться, что линия уровня совпадёт с одной из
граничных линий области. В этом случае решением задачи будет вся часть
границы, являющейся пересечением линии уровня и границы области, при
этом говорят, что задача имеет альтернативный экстремум. Понятно, что
геометрически альтернативный экстремум на плоскости имеет вид отрезка.
Пусть, например, решением является отрезок [F, G], где F = (x1F, x2F) и G =
(x1G, x2G). Тогда отрезок записывается как множество точек (x1P, x2P), пере-
бираемых параметром   [0, 1], следующим образом:
x1P   x1F  (1   ) x1G , x2 P   x2 F  (1   ) x2G (15)
Замечание 4. Перед нами стояла задача разобраться в решении, но ре-
шить можно сразу с помощью встроенных программ в «Mathematica»,
например, воспользовавшись командой NMaximize

получим, как видим, тот же ответ.


3. Анализ на чувствительность в графическом методе
Найденное графическим методом решение задачи линейного програм-
мирования статично и может оказаться, что в реальных условиях оно «уста-
реет» к моменту, когда это решение получено, так как условия задачи могут
измениться. В связи с этим важно уметь анализировать влияние изменения
запасов исходных продуктов или изменение цен на них – подобный анализ
называется анализом на чувствительность.
Рассмотрим три задачи на чувствительность.
1-я задача анализа на чувствительность.
Исследование влияния изменения запасов. Особенно важно проанали-
зировать следующие два аспекта:
1). На сколько можно увеличить запас одного ресурса для улучшения
полученного оптимального значения целевой функции?
46

2). На сколько можно уменьшить запас некоторого ресурса при сохра-


нении полученного оптимального решения?
Прежде, чем ответить на поставленный вопрос, классифицируем огра-
ничения линейной модели как связывающие и не связывающие ограниче-
ния.
Договоримся, что прямая, проходящая через оптимальную точку, опре-
деляет связывающее ограничение. В противном случае эта прямая будет
определять не связывающее ограничение.
Ограничения модели определяются ресурсами, формируя их статус.
Если ограничение является связывающим, то соответствующий ресурс
называется дефицитным, так как он используется полностью, в противном
случае ресурс называется не дефицитным.
Решим 1-ю задачу на чувствительность на примере задачи на опреде-
ление оптимального ассортимента продукции.
Обращаясь к рис. 4, соответствующему решённой в предыдущем пара-
графе задачи 1, видим, что ресурс (3) является не дефицитным, а ресурсы
(1) и (2) – дефицитными.
Найдём точку пересечения прямых l1 и l3. Пусть это будет точка K. Ко-
ординаты точки K находятся как решение системы линейных уравнений:
2 x1  3x2  420  x1  66
 
4 x1  x2  360  x2  96

Можно найти значение целевой функции в точке K «вручную»


z(K) = 40 · 66 + 50 · 96 = 7440
На Рис. 6 отметим область допустимых значений системы (9) OACBD
и координаты точек A, C, K, D, а также вектор N из уравнения целевой функ-
ции l0: 40 x1 + 50 x2 = 6 000 (число 6 000 взято для примера).
47

Рис. 6. Рис. 7
Из Рис. 6 видно, что при увеличении правой части дефицитного ре-
сурса (2’) линия l2 будет подниматься вверх по графику – соответственно
значение целевой функции в точке максимума будет также увеличиваться,
а многоугольник области решений OACBD стянется в четырёхугольник
OAKD. Дальнейшее увеличение второго ресурса не приведёт к увеличению
значения целевой функции, при этом ресурс (2’) станет избыточным. На
Рис. 7 изобразим новое положение линии границы второго ресурса (2’), ко-
торая будет проходить через точку K. Видим, что максимально допустимое
значение второго ресурса a2max, определяется точкой K. Найдём его, подста-
вив координаты точки K в (2’).
a2max (K) = 2 · 66 + 1 · 96 = 228
при этом, как вычислено ранее, произойдёт увеличение значения целевой
функции до z (K) = 7440.
Если уменьшать значение ресурса a2, то, как видно из Рис. 6, будет
уменьшаться и максимальное значение целевой функции (когда линия l2
опускается вниз – точка максимума C тоже опускается вниз, против направ-
ления вектора N, указывающего направление роста целевой функции).
Точка C будет по-прежнему оставаться точкой максимума и являться пере-
сечением прямых l1 и l2, пока она не дойдёт до оси OY, то есть до точки A.
48

Дальнейшее уменьшение второго ресурса сделает первый ресурс не дефи-


цитным, т. е. статусы ресурсов изменятся.
Найдём максимально возможное уменьшение второго ресурса и соот-
ветственно максимально возможное уменьшение целевой функции при
уменьшении второго ресурса, сохраняющее статусы ресурсов. Для этого
найдём значение a2 в точке A
a2min = 2 · 0 + 1 · 140 = 140
z(A) = 40 · 0 + 50 · 140 = 7000
На Рис. 8 и Рис. 9 изображено соответствующее уменьшение ресурса
a2. от положения прямой l2 до её нового положения l’2.

Рис. 8. Рис. 9.
Аналогичное рассуждение проводим для первого ресурса (2x1 + 3x2 
420). Обозначим его значения как a1:
2x1 + 3x2 = a1 (1’)
Из Рис. 8 видно, что при увеличении a1 прямая l1 будет подниматься
вверх. Точку пересечения прямых l1, l2 и оси OY обозначим как G. Оче-
видно её координаты G(0, 200).
49

Максимально допустимое значение первого ресурса a1max, оставляю-


щее статусы ресурсов, находим, подставив в первое уравнение координаты
точки G(0, 200) в (1’):
a1max = 2 · 0 + 3 · 200 = 600
при этом произойдёт увеличение значения целевой функции до
z(G) = 40 · 0 + 50 · 200 = 10 000
Из Рис. 8 видно, что при уменьшении a1 прямая l1 будет опускаться
вниз пока не пересечётся с прямой l3 в точке B. Найдём координаты точки
B как пересечения прямых l3 и l2 и z(B) = 5200:

Прямая l1 проходит через точку B, если a1min (B) = 2 · 80 + 3 · 40 = 280.

Рис. 10. Рис. 11.


50

На Рис. 10 и Рис. 11 изображено соответствующее уменьшение первого


ресурса от 420 до 280.
Третий ресурс является избыточным. Если его уменьшать до тех пор как
прямая l3 будет проходить через точку B, то это не повлияет на статус тре-
тьего ресурса.
Дальнейшее его уменьшение превратит третий ресурс в дефицитный.
Найдём значение третьего ресурса a3min (B) = 4 · 45 + 1 · 110 = 290, делаю-
щее его дефицитным из условия прохождения прямой l3 через точку B:
Результат проведения исследования запишем в
таблицу

ресурс max изменение min изменение max изм. прибыли


ресурса ресурса
1 600 – 420 = 180 280 – 420 = – 140 10 000 – 7 300 = 2 700
2 280 –200 = 28 140 – 200 = – 60 7 440 – 7300 = 140
3  –360 =  290 – 360 = – 70 7 300 – 7 300 = 0

В таблице указано, во-первых, что увеличение до бесконечности вто-


рого ресурса не меняет статусы ресурсов; во-вторых, найдено изменение
целевой функции от оптимального 7 300 до улучшенного, а не от мини-
мального до максимального при неизменном статусе ресурсов.
Вспомним вопросы первой задачи на чувствительность и запишем их
ответы.
1). На сколько можно увеличить запас одного ресурса для улучшения
полученного оптимального значения целевой функции?
а). Первый ресурс можно увеличивать от 420 ед. до 600 ед., при этом
прибыль возрастёт от 7 300 ед. до 10 000 ед., увеличившись на 2 700 ед.
б). Второй ресурс можно увеличивать от 200 ед. до 280 ед., при этом
прибыль возрастёт от 7 300 ед. до 7 440 ед., увеличившись на 140 ед.
в). небольшие изменения третьего ресурса не влияют на оптимальное
значение прибыли.
2). На сколько можно уменьшить запас некоторого ресурса при сохра-
нении полученного оптимального решения?
а). Третий ресурс можно уменьшить от 360 до 290, при этом прибыль
не изменится.
51

б). малые уменьшения первого или второго ресурсов приводят к умень-


шению прибыли.
2-я задача анализа на чувствительность.
Увеличение объёма какого из ресурсов наиболее выгодно?
Введём характеристику ценности i-го ресурса:
max приращение оптимального значения z z opt .
i   (16)
max допустимое приращение объёма i  го ресурса bi
(В этом определении под максимально допустимым приращением по-
нимается приращение, не изменяющее статус ресурса.)
Решим 2 задачу на чувствительность на примере задачи на определе-
ние оптимального ассортимента продукции.
Найдём ценность ресурсов, опираясь на данные последней таблицы:
2700 140 0
1   15, 2   5, 3  0
180 28 70
и составим таблицу ценности ресурсов.
ресурс тип ресурса ценность рес.
1 дефицитный 15
2 дефицитный 5
3 не дефицитный 0
Результаты свидетельствуют о том, что дополнительные вложения в
первую очередь следует направлять на увеличение первого ресурса и лишь
затем на увеличение второго. Что касается не дефицитного ресурса, то как
и следовало ожидать его увеличивать не следует.
3-я задача анализа на чувствительность.
В каких пределах изменение коэффициентов целевой функции не вли-
яет на оптимальные значения использования ресурсов.
Из рис. 11 видно, что изменение значения коэффициентов целевой
функции приведёт к изменению наклона линии уровня. Следовательно, ва-
риация коэффициентов целевой функции может привести к изменению
точки, где достигается оптимальное значение целевой функции и как след-
ствие – к изменению статуса ресурсов.
Решим 3 задачу на чувствительность на примере задачи на определе-
ние оптимального ассортимента продукции.
52

Найдём диапазон изменений коэффициентов целевой функции, при ко-


тором точка оптимума остаётся прежней. Для этого вспомним, что общее
уравнение прямой на плоскости XOY, проходящей через точку C(xC, yC)
имеет вид
A(x – xC) + B(y – yC) = 0,
тогда линию уровня l’0: z = c1x1 + c2x2, проходящую через точку C(45, 110),
запишется в следующем виде:
c1
c1 ( x1  45)  c2 ( x2  110)  0 или ( x1  45)  x2  110.
c2
Приведём к подобному виду уравнения прямых l1 и l2, после чего все
три уравнения для прямых l1, l’0, l2 можно записать так:
2
l1 : 2( x1  45)  3( x2  110)  420 или ( x1  45)  x2  140 (1'')
3
c
l0 ' : 1 ( x1  45)  x2  110 (17)
c2
l2 : 2( x1  45)  x2  110  200 или 2( x1  45)  x2  200 (2'')
Заметим, что угол наклона определяется отношением коэффициентов
c1 и c2, поэтому, как видно из (17), при увеличении коэффициента c1 или
уменьшении коэффициента c2 линия уровня будет вращаться вокруг точки
C(45,110). Таким образом точка C(45,110) остаётся оптимальной до тех пор,
пока наклон линии уровня z не выйдет за пределы, определяемым наклоном
прямых (1’’) и (2’’).
Когда наклон прямой z станет равным наклону прямой для ограниче-
ния (2”), получим две альтернативные оптимальные точки C(45, 110) и
B(80,40). Когда же наклон прямой z станет равным наклону прямой для
ограничения (1”), получим две альтернативные оптимальные точки C(45,
110) и A(0,140). Найдём пределы изменения коэффициентов целевой функ-
ции z, при которых точка оптимума остаётся неизменной.
Пусть c2 = 50 – постоянно.
Из исследования на стр. 53 видно, что значение c1 можно увеличивать
до тех пор, пока прямая l0’ не совпадёт с прямой (2’) или уменьшать до тех
пока прямая l0’ не совпадёт с прямой (1’). Из условия параллельности пря-
мых найдём искомые пределы изменения коэффициента c1
c1max c1min 2 1
 2  c1  100,
max
  c1min  33
50 50 3 3
53
54

1
Следовательно, если 33  c1  100 , а коэффициенте c2 не меняется, то
3
точка C(45, 110) остаётся единственной оптимальной точкой.
Как только коэффициент c1 станет равным одному из крайних значений
1
интервала (33 ;100) статус ресурсов изменяется и появляются альтерна-
3
тивные решения. Но при этом оптимальное значение прибыли будет zmax 
(45 · 100/3 + 110 · 50, 45 · 100 + 110 · 50 ) = (7 000, 10 000).
Аналогичные вычисления можно провести для коэффициента c2 и по-
лучить, что при неизменном значении коэффициента c1 = 40 и неизменной
точки оптимума значение коэффициента c2 может изменяться в пределах
(20, 60), в чём рекомендуем убедиться самостоятельно.
4. Двойственность в линейном программировании
Каждой задаче линейного программирования можно поставить в соот-
ветствие некоторую другую задачу линейного программирования, называ-
емую двойственной по отношению к первой. При этом оказывается, что ис-
ходная задача (её будем называть прямой задачей) и двойственная к ней
задача образуют пару взаимно двойственных задач, и любую из них можно
рассматривать как исходную или прямую задачу.
В качестве примера построим двойственную задачу для задачи об оп-
тимальном использовании сырья и оборудования при планировании произ-
водства, которая в математической форме имеет следующий вид:
n
z ( x)   ci xi  max, x  ( x1 , x2 ,..., xn ) (18)
i 1

при ограничениях
n
  a ji xi  b j , j  1, 2,..., m
i 1 (19)
 xi  0, i  1, 2,..., n

По тем же исходным данным дадим экономическую формулировку
двойственной задачи.
Пусть предприятие решило не выпускать готовую продукцию, а реали-
зовать имеющиеся ресурсы, получив выручку за них не менее той суммы,
которую можно получить при изготовлении готовой продукции, миними-
зируя общую стоимость реализованных ресурсов. Необходимо установить
оптимальные цены y1, y2, … , ym на эти ресурсы, которые удовлетворяли бы
указанным условиям, что в математической форме имеет вид:
55

m
f ( y )   b j y j  min, y  ( y1 , y2 ,..., ym ) (20)
j 1

при ограничениях
n
  y j a ji  ci , i  1, 2,..., n
i 1 (21)
 y j  0, j  1, 2,..., m

Задачи (18 – 19) и (20 – 21) образуют пару симметричных взаимно-
двойственных задач. Здесь целевая функция (20) описывает затраты пред-
приятия, приобретающего сырье по ценам y1, y2, … ,ym, а ограничения-нера-
венства (21) – условия того, что выручка предприятия, реализующего сырье
по условным ценам, будет не меньше той, которую может оно получить,
изготавливая продукцию и реализуя её.
В матричном виде прямая и двойственная задачи имеют вид:
прямая задача : двойственная задача :
z ( x)  (c, x)  max f ( y )  (b, y)  min
при ограничениях при ограничениях (22)
 Ax  b  Aт y  c
 
x  0  y  0
(22) называется принципом соответствия прямой и двойственной задач.
Замечание. Равенства в системе ограничений могут быть записаны в
виде системы неравенств так, как, например, уравнение 4x1 + 5x2 = 6 равно-
сильно системе неравенств
4 x1  5 x2  6 4 x1  5 x2  6 4 x1  5 x2  6
  
4 x1  5 x2  6 4 x1  5 x2  6 4 x1  5 x2  6
поэтому можно считать, что двойственная задача может быть составлена
для прямой задачи с любым типом ограничений.
Анализируя модели двойственных задач, устанавливаем следующие
связи между ними.
1. Свободные члены ограничений прямой задачи служат коэффициен-
тами целевой функции двойственной задачи, а коэффициенты целевой
функции прямой задачи – свободными членами ограничений двойственной.
56

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


няется минимизацией (максимизацией) целевой функции двойственной за-
дачи.
2. Матрицей коэффициентов ограничений двойственной задачи служит
матрица, полученная транспонированием матрицы коэффициентов ограни-
чений прямой.
Иногда прямая задача несколько отличается от приведённой в (18) тем,
что в целевой функции имеется постоянная величина, отражающая, напри-
мер, основные фонды. В этом случае полезной оказывается следующая
ниже теорема, которая получается из (22).
Теорема 17. Двойственными являются задачи линейного программи-
рования
z ( x)  с0  (c, x)  max f ( y )  с0  (b, y )  min
при ограничениях при ограничениях
 Ax  b  A' y  c
 и 
x  0 y  0
Для анализа прямой и двойственной задач полезными оказываются
следующие утверждения теории двойственности, изучающей их взаимо-
связь.
Теорема 18. (Первая теорема двойственности.) Если x и y – два про-
извольных плана прямой и двойственной задач (22) соответственно, то
для значений целевых функций z и f на этих планах выполняется неравен-
ство:
z(x)  f(y)
Теорема 19. (Достаточный признак оптимальности.) Если x* и y* до-
пустимые планы взаимнодвойственных задач (21), для которых выполня-
ется равенство:
z(x*) = f(y*)
то x* – оптимальный план прямой задачи, а y* – оптимальный план двой-
ственной задачи.
Неравенства A' y  c определялись как стоимости ресурсов. Разность
же
n
 y j a ji  ci (23)
i 1
57

имеет экономический смысл приведённых издержек j-го продукта. В том


случае, если имеется необходимость сделать j-ый вид производственной де-
ятельности более прибыльным необходимо снизить соответствующую ему
оценку ресурсов (23). При этом главное внимание уделяется интенсивности
потребления ресурсов akj, ассоциированной с наибольшей по величине
двойственной переменной yk. Технический аспект, связанный с уменьше-
нием величины akj, определяется внутренними характеристиками исследу-
емой системы.
Теорема 20. (Вторая теорема двойственности.) Если одна из двой-
ственных задач имеет оптимальный план, то и другая также имеет оп-
тимальный план, причём для любых оптимальных планов x* и y* выполня-
ется равенство
z(x*) = f(y*)
Можно показать, что из второй теоремы двойственности в ЗЛП следует
формула определения ценности ресурса на оптимальном решении.
Теорема 21. Ценность i-го ресурса равна изменению оптимального
значения целевой функции при изменении объёма i-го ресурса на единицу
при сохранении объёмов других ресурсов или
ценность i-го ресурса = i  y*i

Из (16) следует, что ценность не дефицитных ресурсов равна нулю.


5. Анализ на чувствительность в симплекс-методе.
Графический метод решения задачи линейного программирования
пригоден только к задачам с двумя переменными либо к задачам к ним сво-
димым. Если число переменных больше двух, то необходимо применять
симплекс-метод. «Пройдёмся» по нему, чтобы разобраться как он работает.
Рассмотрим произвольную ЗЛП, содержащую как равенства, так и не-
равенства. Достаточно ограничиться случаем, когда свободные перемен-
ные bi неотрицательны, иначе такое неравенство умножим на любое отри-
цательное число. В ограничения с неравенствами добавим переменную
(либо со знаком плюс, либо со знаком минус, превращая ограничение в ра-
венство). Эта переменная называется вспомогательной. Целевая функция
при этом не меняется. Очевидно, что исходная ЗЛП и таким образом полу-
ченная, которую назовём ЗЛП с равенствами (ЗЛПР), эквивалентны.
Очевидно, СЛУ ЗЛПР не имеет решение тогда и только тогда, когда
область планов ЗЛП пуста. Поэтому пусть область планов ЗЛП не пуста,
ЗЛП сведена к СЛУ ЗЛПР, свободные члены bi не отрицательны и ищется
максимум целевой функции z = z(x1, x2,… , xn).
58

a11 x1  a12 x2  ...  a1n xn  b1


a x  a x  ...  a x  b
 21 1 22 2 2n n 2

 ... (24)
a x  a x  ...  a x  b
 m1 1 m 2 2 mn n m
 x1 , x2 ,..., xn  0

z  c1x1  c2 x2  ...  cn xn  max (25)


Так как область планов (24) СЛУ не пуста, то имеется решение, но це-
левая функция (25) может оказаться неограниченной, что понимаем как от-
сутствие решения. В дальнейшем будем считать, что ЗЛПР имеет решение
и ранг системы равен числу неизвестных.
Пусть система (24) имеет решение и её ранг равен r  n. Матрица коэф-
фициентов A системы (24) может быть представлена как совокупность век-
тор-столбцов Ai, i = 1, 2, … , n. Пусть вектор-столбцы Aik , k  1, 2,..., r ли-
нейно независимы. Каждому такому вектор-столбцу Aik соответствует пе-
ременная xik – базисные. Для k = r + 1, r + 2, … , n положим xik  0 (сво-
бодные). Тогда система (24) будет иметь единственное решение – это ре-
шение называется опорным.
Теорема 22. Оптимальное решение ЗЛП является выпуклой комбина-
цией опорных решений.
Теорема 23. Опорное решение образует угловые точки вершин обла-
сти планов ЗЛП.
Геометрически область планов ЗЛПР (24) образует выпуклый много-
гранник, а решение ЗЛП (24 – 25) находится в угловой точке этого много-
гранника либо в их выпуклой комбинации.
Симплекс-метод это метод гауссовых преобразований системы (24 –
25) от одного опорного решения к следующему, улучшающему значение це-
левой функции.
В силу конечности опорных решений этот метод позволяет достаточно
быстро найти оптимальное решение.
Гауссовы преобразования в симплекс-методе осуществляются не
только с системой (24), но и с целевой функцией, при этом значение z целе-
вой функции рассматривается как самостоятельная переменная, поэтому
вместо (24 – 25) в качестве исходной задачи рассматривается система
59

a11 x1  a12 x2  ...  a1n xn  b1



 ...
am1 x1  am 2 x2  ...  amn xn  bm (26)
c x  c x  ...  c x  z  0
 11 2 2 n n
 x1 , x2 ,..., xn  0
По условию считаем, что система (26) имеет решение. Оно может быть
получено методом Гаусса, которым приведём систему к виду, когда базис-
ные переменные xik входят в каждый столбец системы с коэффициентом +1
и только в одну строку. Такой вид системы называется системой с единич-
ным базисом. При этом считаем, что и в целевой функции коэффициент пе-
ред базисной переменной равен нулю. Этого можно добиться, если из це-
левой функции исключить базисные переменные подстановкой соответ-
ствующих уравнений из (26). С другой стороны, этот же результат будет
получен, если метод Гаусса расширить на систему (26), приводя её к еди-
ничному базису.
Разберём критерий оптимальности ЗЛП по [5], ограничившись слу-
чаем, положительности всех свободных переменных.
Если все коэффициенты aik основной системы (26) отрицательны, то
очевидно других базисных решений нет, так как предположение об обрат-
ном приводило бы к тому, что решение содержало бы отрицательные зна-
чения переменных (система с единичным базисом). Задача решена.
Пусть в целевой функции (26) имеется отрицательный коэффициент ck
при свободной переменной xk и пусть имеется aik > 0. Уменьшим базисную
переменную xk на бесконечно малую величину, а свободную переменную
xi в этой же строке увеличим, сохраняя в строке равенство. Одновременно
бесконечно мало изменим все другие базисные переменные, сохраняя ра-
венство в остальных строках. Тем самым получим новое допустимое реше-
ние. Но так как коэффициент при свободной переменной xi в целевой функ-
ции (26) отрицательный, то новое решение увеличит значение целевой
функции. Следовательно, в оптимальном решении ЗЛП на максимум все
коэффициенты целевой функции в (26) должны быть положительны либо
равны нулю. Аналогичными рассуждениями получим, что в оптимальном
решении ЗЛП на минимум все коэффициенты целевой функции в (26)
должны быть отрицательны либо равны нулю.
Если в оптимальном решении в целевой функции перед какой-то сво-
бодной переменной коэффициент равен нулю и имеется соответствующее
60

aik > 0, то задача имеет альтернативный экстремум, так как указанным


выше способом можно получить новое базисное решение.
Таким образом после пошаговых симплекс-преобразований (гауссовы
преобразования, увеличивающие значение целевой функции) приходим к
системе (27) – оптимальной симплекс таблице, где значения со звёздочкой
– это преобразованные значения коэффициентов и свободных членов
a11
*
x1  xi1  ...  a1*n xn  b1*

 ...
 *
am1 x1  ...  xim  arn xn  bm
* *
(27)
 *
c1 x1  ...  cn* xn  z  z opt
 x , x ,..., x  0
 1 2 n

Переменные xik , k  1,2,..., m образуют единичный базис.

Можно показать, что всякому линейному преобразованию СЛУ мето-


дом Гаусса соответствует невырожденная матрица, умножение на которую
исходной расширенной матрицы, эквивалентно данному гауссовому преоб-
разованию [5], т. е.
Теорема 24. Для всякого линейного преобразования расширенной мат-
рицы СЛУ методом Гаусса существует невырожденная матрица, при
умножении которой на расширенную исходную матрицу получится соот-
ветствующая расширенная матрица.
Зная исходную расширенную матрицу и оптимальный план ЗЛП не-
трудно восстановить оптимальный вид (27) СЛУ.
Пример 22. Найти оптимальную симплекс-таблицу Задачи 1.
Систему (9 – 10), записанную в стандартном виде перепишем к ЗЛПР
 2 x1  3x2  x3  420
 2x  x  x4  200
 1 2
 (28)
 4 x1  x2  x5  360
40 x1  50 x2 z 0
и решим специальной командой решения ЗЛП LinearProgramming[c, B, b] с
матрицей коэффициентов системы линейных неравенств B, которая решает
двойственную задачу на минимум (22). Синтаксис этой команды позволяет
решать не только неравенства вида , но и равенства = и неравенства , что
61

указывается (если необходимо) в ограничениях. Например, {420, 0} озна-


чает, что правая часть имеет вид (22), {420, – 1} – как в (9), а {100, 1} – как
в (11). В нашем случае находится максимум, поэтому умножаем целевую
функцию z = c.x на «– 1». В результате приходим к следующей команде

Видим, что базисными переменными оптимальной симплекс-таблицы


являются x1, x2 и x5. Им соответствуют опорные вектор-столбцы A1, A2 и A5,
к которым припишем столбец {0, 0, 0, 1}. По Теореме 24 существует мат-
рица преобразования S (эта матрица называется обратной матрицей сим-
плекс-преобразований или просто обратной матрицей [7]), что
 2 3 0 0  1 0 0 0
 2 1 0 0   0 1 0 0 
S  
 4 1 1 0  0 0 1 0
   
 40  50 0 1  0 0 0 1

Умножение матрицы S на исходную


расширенную матрицу Ar даст оптималь-
ную симплекс-таблицу. Исходную расши-
ренную матрицу Ar строим следующим об-
разом:
– вводим столбец целевой функции zr = {0,
0, 0, 1};
– к столбцу свободных членов b присоединяем первоначальное значе-
ние целевой функции – в нашем случае оно равно нулю – которое
пишем в фигурных скобках, так как элементы b также записаны в
фигурных скобках, то есть пишем команду Join[b, {0}];
62

– к матрице A присоединяем строку целевой функции c, но с противо-


положным знаком Join[A, {– c}];
– так как свободные члены и zr это столбцы, а матрица A записана как
совокупность строк, то присоединяем столбцы свободных членов и
zr к транспонированной матрице, обозначая её как расширенную
матрицу Ar = Join[Join[A, {– c}]т, {zr}, {Join[b, {0}]}];
– транспонируем матрицу Ar и умножаем её на найденную ранее об-
ратную матрицу справа: S.Arт.
Находим оптимальную симплекс-таблицу.

Нижняя строка оптимальной симплекс-таблицы называется индексной.


Крайний правый столбец является ответом симплекс-метода. Задача ре-
шена.
1-я и 2-я задачи анализа на чувствительность
Предположим, что первый ресурс изменился на b1. Задача состоит в
нахождении изменения объёма первого ресурса, при неизменном статусе
всех ресурсов задачи. Так как первый ресурс дефицитный, то его изменение
изменит решение x* = (x1*, x2*, … , xn*) на x = (x1, x2, … , xn), что из-
менит целевую функцию на
z = c1 x1 + c2x2 + … + cnxn.= b1y1*
(вторая теорема двойственности). Заметим, что ценность y1 при этом не ме-
няется, так как находится из неравенств (21), где в правой части стоят сто-
имости ci, не меняющиеся по условию. Приведённое рассуждение доказы-
вает Теорему 21. Таким образом для нахождения ценностей ресурсов
можно решить двойственную задачу. (Оказывается, что мы увидим в даль-
нейшем, достаточно решить прямую задачу и найти обратную матрицу
симплекс-преобразования.)
63

Ценность первого ресурса равна 15, ценность второго ресурса равна 5,


и они оба дефицитные. Так как ценность третьего ресурса равна нулю, то
это не дефицитный ресурс. Заметим, что ценности ресурсов указаны в ин-
дексной строке оптимальной симплекс-таблицы прямой задачи.
Найдём z при изменении b на b. Решение x* мы нашли симплекс-
методом, то есть методом Гаусса – методом линейных преобразований
уравнений. Пусть чуть-чуть изменилась правая часть (столбец свободных
членов) исходной расширенной матрицы, но новое решение определяется
тем же набором базисных переменных. Следовательно, преобразования
остаются теми же, тем самым сохраняется матрица линейных преобразова-
ний S. Таким образом, чтобы найти новую оптимальную симплекс-таблицу
необходимо умножить матрицу линейных преобразований S на изменён-
ную расширенную матрицу.
(Вводим новый столбец свободных членов – новый ресурс в виде b1.)

(Заметим, что коэффициент при b1 в Out[12] – это ценность первого ре-
сурса.)
64

Итак, новое оптимальное значение z = 1000 + 15(420 +b1) = 7300


+15b1 (вторая теорема двойственности) соответствует новому оптималь-
ному плану x* = (45 – b1/4, 110 +b1 /2, 70 + b1 /2). План x* допустим,
если x*  0. Равенство нулю необходимо исключить, так как приведёт к из-
менению статусов ресурсов. Итак, находим пределы изменения ресурсов,
оставляющих неизменными их статусы.
 1
 45  b1  0
4 b1  180

 1 
110  b1  0  b1  140
 2 z  7300  15  b
 1  1
 70  b1  0
2
Откуда находим, что при b1  (420 – 140, 420 + 180) = (280, 600) ста-
тусы ресурсов не изменятся, что совпадает с результатом, найденным гра-
фическим методом.
Одновременно с изменением объёма первого ресурса произойдёт изме-
нение прибыли zmax  (7 300 – 15 · 140, 7 300 + 15 · 180) = (5 200, 10 000).
Аналогично находим новое решение при изменении b2. Заметим, что
нет необходимости умножать матрицу линейных преобразований S на ис-
ходную расширенную матрицу, что было сделано при нахождении измене-
ний b1, достаточно умножить на изменённый вектор-столбец с приписан-
ным в конце начальным значением целевой функции (в нашем случае это
ноль).

 3
 45  b2  0
4 b2  60

 1 
110  b2  0  b2  28
 2 z  7300  5  b
 5  2
 70  b2  0
2
Откуда при b2  (140, 228) статусы ресурсов не изменятся, при этом
z max
 (7 300 – 5 · 60, 7 300 + 5 · 28) = (7 000, 7 440). Наконец,
65

При b3 > – 70 или при b3  (290, +) оптимальное решение не изме-
нится.
3-я задача анализа на чувствительность
Пусть коэффициент c1 целевой функции изменился на с1. Подставим
новое значение целевой функции в качестве исходных условий и с помо-
щью матрицы линейных преобразований найдём соответствующую по-
следнюю симплекс-таблицу.

(Мы воспользовались ранее определённым векторов ресурсов b, матри-


цей A, вектор-столбцом целевой функции zr, а также найденной обратной
матрицей S.) В результате получим.

Видим, что симплекс-таблица не оптимальная, так как в индексной


строке под базисной переменной стоит величина на с1 вместо нуля. Усло-
вия оптимальности добьёмся прибавлением первой строки, умноженной на
с1 к индексной строке. Осталось потребовать положительность ненулевых
оценок в индексной строке
 1
 15  c1  0 c1  60
4 
   20
3
5  c  0 c1   3
 4 1
z  7300  45  c1
Следовательно при – 20/3 < c1 < 60 или при c1  (100/3, 100) опти-
мальный план не изменится. Но при этом оптимальное значение прибыли
будет zmax  (7 300 – 45 · 20/3, 7 300 + 45 · 60) = (7 000, 10 000).
66

Аналогично находим возможные изменения цены второго ресурса, не


влияющие на оптимальный план.

На этот раз вторую строку умножаем на c2 и прибавляем к индексной


строке
 1
 15  c2  0
2 c2  30
  
5  1 c  0 c2  10
 2 2
z  7300  110  c2
Следовательно при – 30 < c2 < 10 или при c2  (20, 60) оптимальный
план не изменится. Но при этом оптимальное значение прибыли будет zmax
 (7 300 – 110 · 30, 7 300 + 110 · 10) = (4 000, 8 400).
Пример 23. Решить и провести анализ на чувствительность ЗЛП:
2 x1  3x2  8 x3  5 x4  4 x5  8
3x  2 x  4 x  6 x  8 x  7
 1 2 3 4 5

5 x1  2 x2  4 x3  9 x4  7 x5  24 (29)
 x1 , x2 , x3 , x4  0
f  12 x1  8 x2  4 x3  2 x4  9 x5  max
Решение. Вводим задачу в том виде, в котором она задана в условии
(29). Помня, что команда LinearProgramming ищет минимум, умножаем це-
левую функцию z = c.x на «– 1».
67

Из решения видим x2 = x4 = 0, но не понятно, в какой из строк достига-


ется равенство, а в какой – оказывается строгое неравенство. Тем самым из
найденного решения невозможно провести исследования на чувствитель-
ность. (Хотя в данном конкретном случае понятно, что все ресурсы дефи-
цитные, так как для трёх строк получились три ненулевые базисные пере-
менные.)
Таким образом для исследования задачи на чувствительность необхо-
димо исходную задачу привести к системе линейных уравнений и уже
именно для неё проводить исследование.
 2 x1  3x2  8 x3  5 x4  4 x5  x6 8

 3x1  2 x2  4 x3  6 x4  8 x5 7
 5x  2 x  4 x  9 x  7 x  x7  24
 1 2 3 4 5
f ( x)  12 x1  8 x2  4 x3  2 x4  9 x5  0 x6  0 x7  max
Записывая «правильную» матрицу A и «правильную» строку c целевой
функции f(x), получим:

Действительно переменные x1, x3 и x5 являются базисными и все три


ресурса дефицитные.
68

Угловая точка определяется первым, третьим и пятым столбцами. Но


для исследования на чувствительность целевая функция также должна вхо-
дить в расширенную матрицу.
Приводим задачу к виду
 2 x1  3x2  8 x3  5 x4  4 x5  x6 8
 3x  2 x  4 x  6 x  8 x 7
 1 2 3 4 5
 (30)
 5 x1  2 x2  4 x3  9 x4  7 x5  x7  24
12 x1  8 x2  4 x3  2 x4  9 x5  0 x6  0 x7  z 0
Находим обратную матрицу S по 1, 3, 5 и 8 столбцам, которые обра-
зуют вспомогательную матрицу An.

Основная часть задания выполнена. Теперь можно проводить исследо-


вание решения на чувствительность. Для наглядности представим решение
в десятичном виде

1-я и 2-я задачи анализа на чувствительность.


Из условия видно, что все три ресурса являются дефицитными (так как
на три строки условия равенства и неравенств получено три ненулевых зна-
чения переменных, то есть ранг системы равен числу её строк. Ранг мат-
рицы, равный трём, следует также из вида расширенной матрицы (30), в
69

которой линейно независимы последние три столбца матрицы коэффици-


ентов.)
Исследуем влияние изменения объёма ресурсов на оптимальное значе-
ние целевой функции. Для этого изменим каждый из ресурсов на bi, i = 1,
2, 3 и введём в задачу новый вектор ресурсов b0, после чего умножим об-
ратную матрицу на расширенную:

(Вектор-столбец zr «отвечает» за столбец целевой функции.)

Видим, что на самом деле было бы достаточно умножить обратную


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

(31)
(Здесь было использовано свойство транспонирования (SB т)т = BSт,
чтобы записать результат столбцом, хотя свободные члены b0 образуют
строку.)
Осталось решить неравенство bn > 0, для каждого bi, i = 1, 2, 3.
Найдём пределы изменения первого ресурса и его ценность. Полагаем
в (31) b2 = b3 = 0.
70

175 1
 44  88 b1  0 b1  350
  142
 71 61  b 
 b  0 
1
61
176 352 1
   72
9 23
  b  0 b1   23
11 88 1 
 2353 23  2353  23 b
  b1  44 88
1
 44 88
Следовательно, при b1  (8 – 72/23, 8 + 142/61) = (112/23, 630/61) ~
(4.87, 10.33) статусы ресурсов не изменятся. Одновременно с изменением
объёма первого ресурса произойдёт изменение прибыли zmax  (2353/44 –
23/88 · 142/61, 2353/44 +23/88 · 72/23) = (3225/61, 2389/44) ~ (52.87, 54. 30).
Ценность первого ресурса отрицательна и, как следует из формулы
(16), находится из индексной строки и равна y1 = –23/88, т. е. увеличение
объёма первого ресурса уменьшит оптимального значения прибыли.
Найдём пределы изменения второго ресурса и его ценность. Полагаем
в (31) b1 = b3 = 0.
175 5
 44  44 b2  0 b2  35
 
 71  3 b  0  b 
71
176 176 2  2 3
  
 9  1 b  0 b2  9
11 11 2
 2353 27
 2353 27   b2
  b2  44 44
 44 44
Следовательно, при b2  (7 – 35, 7 + 9) = (-28, 16) статусы ресурсов не
изменятся. Одновременно с изменением объёма второго ресурса произой-
дёт изменение прибыли zmax  (2353/44 – 27/44 · 35, 2353/44 +27/ · 9) =
(3225/61, 2389/44) ~ (52.87, 54. 30).
Ценность второго ресурса положительна и аналогично нахождению
ценности первого ресурса получим y2 = 27/44, что означает, что увеличение
объёма второго ресурса приведёт к увеличению оптимального значения
прибыли.
Найдём пределы изменения третьего ресурса и его ценность. Полагаем
в (31) b1 = b2 = 0.
71

175 3
 44  22 b3  0 b3  175 / 6
 
 71  7 b  0 b3   71
176 88 3
 14
  
 9  1 b  0 b3  9
11 11 3
 2353 47
 2353 47   b3
  b3  44 22
 44 22
Следовательно, при b3  (24 – 71/14, 24 + ) = (265/14, + ) ~ (18.93 ,
+ ) статусы ресурсов не изменятся. Одновременно с изменением объёма
третьего ресурса произойдёт изменение прибыли zmax  (2353/44 – 27/44 ·
35, + ) = (2259/44, + ) ~ (51.34, + ).
Ценность третьего ресурса положительна и аналогично нахождению
ценности первого и второго ресурсов и равна y2 = 47/22, что означает, что
увеличение объёма второго ресурса приведёт к увеличению оптимального
значения прибыли.
Так как ценность третьего ресурса выше ценности второго ресурса, то
увеличение его на единицу объёма более выгодна, чем увеличение второго
или уменьшение на единицу третьего ресурсов.
Так как все ресурсы дефицитные, то изменение запасов какого-либо
одного из ресурсов приведёт к изменению оптимального значения при-
были.
3-я задачи анализа на чувствительность.
Исследуем влияние изменения какого-либо одного коэффициент целе-
вой функции на оптимальное значение прибыли. Для этого введём малые
изменения ci, i = 1, 2, 3 в целевую функцию условия (29), после чего умно-
жим обратную матрицу на расширенную матрицу системы (30) и получим
оптимальную матрицу симплекс-метода с изменёнными значениями коэф-
фициентов целевой функции.
72

Так как в результате оказывается, что индексная строка не приведена к


оптимальному виду (оценки базисных переменных не равны нулю), то
умножим первую, второю и третью строки на ci, i = 1, 2, 3 соответственно.
В результате получим индексную строку оптимальной матрицы симплекс-
метода, которую обозначим как Gn.

(Команда G[[i]] выделяет i-ю строку матрицы G.)


Исследуем коэффициент c1. Для этого положим c2 = c3 = 0 в Gn и
потребуем выполнение критерия оптимальности индексной строки: все
оценки должны быть не отрицательны. Нулевое значение также необхо-
димо исключить, так как приводит к появлению альтернативных решений.
 367 7
 88  88 c1  0

1077  43 c  0
 88 88 1 c1  367 / 7
  
 23  1 c  0 c1  47 / 3
 88 88 1
 47 3
  c1  0
 22 22
2353 175
z  c1
44 44
73

Следовательно, при c1  (12 – 47/3, 12 + 367/7) = ( – 11/3, 451/7) ~ ( –


3.67 , 64.43) статусы ресурсов не изменятся и не возникают альтернативные
оптимумы. Одновременно с изменением коэффициента c1 произойдёт из-
менение целевой функции zmax  (2353/44 – 175/44 · 47/3, 2353/44 + 175/44
· 367/7) = ( – 53/6, 262) ~ (– 8.83, 262).
Исследуем коэффициент c3. Для этого положим c1 = c5 = 0 в Gn и
потребуем выполнение критерия оптимальности индексной строки: все
оценки должны быть не отрицательны. Нулевое значение также исклю-
чаем, чтобы не появились альтернативные решения.
 367 251
 88  352 c3  0
 c3  1468 / 251
 1077

17
c3  0 
 88 352 c3  4308
 23 61  17
 
  c3  0  c3  92 / 61
 88 352 c  188 / 7
 47 7  3

 22 88 3 c  0  2353 71
  44  176 c3
 2353  71 c
 44 176 3
Следовательно, при c3  ( – 4 – 92/61, – 4 + 1468/251) = ( – 336/61,
464/251) ~ ( –5.51 , 1.85) статусы ресурсов не изменятся и не возникают аль-
тернативные оптимумы. Одновременно с изменением коэффициента c3
произойдёт изменение целевой функции zmax  (2353/44 – 71/176 · 92/61,
2353/44 + 71/176 · 1468/251) = ( 3225/61, 14015/251) ~ (52.87, 55.84). Ана-
логично находим пределы изменения коэффициента c5.
 367 7
 88  11 c5  0
 c5  367 / 56
 1077 10
 c5  0 
 88 11 c5   1077
 23 1  80
 
c1  c3  0,   c5  0  c5  23/ 8
 88 11 c  47 / 2
 47 1  5

 22 11 5 c  0  2353 9
  44  11 c5
 2353  9 c
 44 11 5
74

При c5 (9 – 23/8, 9 + 367/56) = ( 49/8, 871/56) ~ (6.125, 15.55) статусы


ресурсов не изменятся и не возникают альтернативные оптимумы. Одно-
временно с изменением коэффициента c5 произойдёт изменение целевой
функции zmax  (2353/44 – 9/11 · 23/8, 2353/44 + 9/11 · 367/56) = ( – 409/8,
3295/56) ~ (518.125, 58.84).
Так как переменные x2 и x4 в оптимальном решении равны нулю, то
малые изменения коэффициентов целевой функции при этих переменных
не повлияют на наилучшее решение. С другой стороны, возникает вопрос:
на сколько можно изменить значение коэффициента свободной перемен-
ной, начиная с которого возникают альтернативные решения с другим ба-
зисом, либо выбирая их линейную комбинацию. Очевидно необходимо ис-
следовать изменения c2 и c4, начиная с которых в индексной строке появля-
ются нулевые оценки при соответствующей свободной переменной.
Положим новое, изменённое значение коэффициентов целевой функ-
ции задания как
c1 = (c1, c2 +c2, c3, c4 +c4, c5)
на которую умножим обратную матрицу.

Требование оптимальности симплекс-таблицы на максимум имеет вид


367 1077
 с2  0,  с4  0
88 88
75

Следовательно, при увеличении коэффициента c2 на c2 = 367/88 в оп-


тимальное решение можно включить свободную переменную x2, а при уве-
личении c4 на c4 = 1077/88 в оптимальное решение можно включить сво-
бодную переменную x2. При этом оптимальное значение целевой функции
не изменится. Для c2 < 367/88  4.17 и c4 < 1077/88  12.24 оптимальный
план не изменится.
Надо понимать, что при применении метод ЛП к решению практиче-
ских задач могут возникнуть сложности даже на фоне разработанных про-
граммных метод решения. Например, решение может оказаться неограни-
ченным. В этом случае изменение знака целевой функции должно привести
к появлению решения. Впрочем, необходимо внимательно читать сообще-
ния Mathematica для каждого конкретного случая. Может оказаться, что ре-
шение пустое – множество. В этом случае, в частности, полезно исследо-
вать ранги системы.
Другая трудность – это нулевое зна-
y
чение базисных переменных в оптималь-
l1
ном плане, при необходимости исследо-
вания решения, так как необходимо вы-
делить базисные столбцы для нахожде-
ния обратной матрицы. В этом случае
поможет расширенная опция ограниче-
ния xi  li переменных условия команды x
LinearProgramming[c, A, b, l] (описание
l2
опции находится в «Help»). Правда мо- l3 :x>e0
жет оказаться, что решение исчезнет, что
понятно из рисунка справа. В любом случае, вдумчивого использования ко-
манды LinearProgramming[c, A, b, l] и самостоятельный разбор приведён-
ных в этом пособии примеров решения задач ЛП должно быть достаточно
для решения задач любой сложности, возникающих при решении и анализе
ЗЛП.

Целочисленное программирование.
В ряде случаях требуется получить оптимальное целочисленное реше-
ние. Такого рода задача уже не является задачей линейного программиро-
вания, но её решение находится в области планов симплекс-метода. Не-
трудно убедиться, что простое округление как правило не даёт оптималь-
ного решения. В связи с этим разработан специальный метод – «метод вет-
вей и границ», позволяющие на основе симплекс-метода, с одной стороны,
и перебора целочисленных решений, с другой стороны, находить оптималь-
ный симплекс-план.
76

«Mathematica» в качестве своих опций имеет указание на дополнитель-


ные ограничения переменной или их целочисленных значений. Достаточно
рассмотреть пример ниже, чтобы понять, как находить целочисленные ре-
шения в «Mathematica».
Пример 24. При условии, что переменные x1, x2, x3, x4, x5, принимают
либо нулевые значения, либо натуральные максимизировать функцию при-
были z = 22x1 + 38x2 + 17x3 + 14x4 + 33x5, если
6 x1  5 x2  6 x3  7 x4  9 x5  28

 x1  8 x2  12 x3  4 x4  7 x5  30
7 x  8 x  11x  x  12 x  28
 1 2 3 5 5

Решение.

Таким образом прибыль составляет 145 единиц, при этом x4 и x5 равны


нулю. Сравним с результатом на всём множестве планов (не только цело-
численных).

Видим, что прибыль могла бы быть больше, что понятно, так как об-
ласть допустимых планов расширилась. Интересным является то обстоя-
77

тельство, что округление не дало бы результат целочисленного программи-


рования. Например, здесь видно, что x3 = 0, а x2 при округлении вообще
должно было бы давать три (а может быть и четыре!), но никак не два!
Наконец, интерес представляет и третий случай целочисленного про-
граммирования. Например, переменные представляют собой двоичные ре-
шения типа «да-нет». Такие задачи возникают в случае оценки в принятии
решения по проекту: «да» означает финансирование проекта и возникаю-
щая отсюда прибыль, «нет» – отказ от финансирования.
Считая, что все переменные принимают значения ноль или один, тогда

В этом случае оказывается невыгодным только пятый проект. Так как


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

Транспортная задача
Транспортная задача – задача о наиболее экономном плане перевозок
однородного или взаимозаменяемого продукта из пунктов отправления в
78

пункты назначения является важнейшей частной задачей линейного про-


граммирования, имеющей обширные практические приложения не только
к проблемам транспорта и выделяется наличием специфических методов
решения.
Простейшая формулировка транспортной задачи следующая: в n пунк-
тах отправления находится соответственно a1, a2, …, an единиц однородного
груза, который должен быть доставлен m потребителям в количествах b1,
b2, … , bm единиц. Известны транспортные издержки cij перевозок единицы
груза из i-го пункта отправления в j-ый пункт потребления. Требуется со-
ставить план перевозок, т. е. найти, сколько единиц груза должно быть от-
правлено из i-го пункта отправления в j-й пункт потребления так, чтобы
полностью удовлетворить потребности, и чтобы суммарные издержки на
перевозки были минимальными.
Для наглядности условия транспортной задачи представим в виде рас-
пределительной таблицы.
ПО \ b1 … bm
\ ПН
a1 c11 … c1m
x11 x1m
… … … …

an cn1 … cnm
xn1 xnm

Количество груза, перевозимого из i-го пункта отправления в j-й пункт


назначения, равно xij. Предполагается, что все xij  0.
Матрица C = (cij) называется матрицей тарифов.
Матрицу X = (xij) называют матрицей перевозок или планом транспорт-
ной задачи. Общие суммарные затраты, связанные с реализацией плана пе-
ревозок, можно представить целевой функцией
n m
z    cij xij  min (32)
i 1 j 1

Требования на переменные xij ограничений по запасам и условия их не


отрицательности приводят к равенствам
79

n
 j1 xij  ai , i  1, 2,..., m

m
  xij  b j , j  1, 2,..., n (33)
i 1
 xij  0, i  1, 2,..., m, j  1, 2,..., n

Всякое решение (33) называется допустимым планом.


Таким образом, математически транспортная задача формулируется
следующим образом. Даны система ограничений (33) и целевая функция
(32). Требуется среди множества решений системы (33) найти такое неот-
рицательное решение, называемое оптимальным планом, которое миними-
зирует функцию (32).
Различают два типа транспортных задач: закрытые, в которых суммар-
ный объём груза поставщиков равен суммарному спросу потребителей, т.
е. выполняется равенство:
n m
 ai   b j
i 1 j 1

и открытые, в которых суммарная производственная мощность поставщи-


ков превышает спрос потребителей или спрос потребителей больше факти-
ческой суммарной мощности поставщиков, т. е.
n m n m
 ai   b j или  ai   b j
i 1 j 1 i 1 j 1

Открытую модель, если это необходимо, можно преобразовать в за-


n m
крытую. Так, если  ai   b j , то в математическую модель транспортной
i 1 j 1
задачи вводится фиктивный (m+1) -й пункт назначения. Для этого в мат-
рице задачи предусматривается дополнительный столбец, для которого по-
требность равна разности между суммарной мощностью поставщиков и
фактическим спросом потребителей:
n m
bm 1   ai   b j
i 1 j 1
80

Все тарифы на доставку груза в этот пункт будем считать равными


нулю, так как реально груз никуда не перевозится. В результате матрица
тарифов расширится на один столбец. Этим самым открытая модель преоб-
разуется в закрытую. Для новой задачи целевая функция сохраняется, так
как цены на дополнительные перевозки равны нулю.
n m
Если же  ai   b j , то вводится фиктивный n + 1-й пункт отправления,
i 1 j 1
которому приписывают запас груза, равный
m n
an 1   b j   ai
j 1 i 1

Тарифы на доставку грузов от этого фиктивного поставщика также по-


лагаем равными нулю. В матрице добавится одна строка, которая опять же
на целевую функцию не повлияет.
Теорема 25. (Признак разрешимости транспортной задачи.) Для того
чтобы транспортная задача имела допустимые планы, необходимо и до-
статочно, чтобы она была закрытого типа.
Необходимость. Пусть xij допустимый план, удовлетворяющий ограни-
чениям (33). Сложим элементы xij, матрицы перевозок по строкам при фик-
n m n, m
сированном номере столбца b j   xij , затем по строкам  b j   xij .
i 1 j 1 i , j 1

Сложим те же элементы по столбцам при фиксированном номере


m n m, n
строки: ai   xij , затем по столбцам:  ai   xij . Но от перестановки
j 1 i 1 j ,i 1
слагаемых сумма не меняется, поэтому для любого допустимого плана обя-
зательно будет выполняться равенство (33).
n m ai b j
Достаточность. Пусть  ai   b j  M , тогда план xij   0 , где i
i 1 j 1 M
= 1, 2, …, n; j = 1, 2, …, m является допустимым. Проверим выполнение
(33):
n n ai b j n ai M
 xij    bj   bj  b j , j  1, 2,..., m
i 1 i 1 M i 1 M M
Аналогично получим и для ai, откуда следует существование допусти-
мого плана. Теорема доказана.
Рассмотрим решение транспортной задачи закрытого типа на примере.
81

Пример 25. На трёх складах имеется однородный груз (однородность


означает взаимозаменяемость): на первом складе – 15 т, на втором – 20 т и
на третьем – 10 т, который необходимо развезти по трём магазинам в объё-
мах – 10 т, 30 т, 5 т. соответственно. Стоимость доставки грузов со склада
1 3 5 
 
в магазин записана в виде матрицы стоимостей C = (ci)= С   2 3 1  ,
1 2 4 
 
где cik – стоимость доставка груза от i-го склада до j-ого магазина.
Требуется составить оптимальный план перевозок, минимизирующий
общую стоимость доставки грузов со всех складов до всех магазинов.
Решение. Прежде всего выясним: является ли данная задача задачей
«открытого» или «закрытого типа».
С этой целью найдём сумму имеющегося груза в ПО (в пунктах отправ-
ления – на складе): 15 т + 20 т + 10 т = 45 т и сумму требуемого груза в ПН
(в пунктах назначения – в магазинах): 10 т + 30 т + 5 т = 45 т. Так как обе
суммы оказались равными, то это задача «закрытого типа.
Будем решать задачу с помощью команды LinearProgramming[c, A, B].
Введём матрицу тарифов
c = {1, 3, 5, 2, 3, 1, 1, 2, 4}
столбец ограничений, то есть количество имеющегося и требуемого груза,
B = {15, 20, 10, 10, 30, 5}
и матрицу коэффициентов при неизвестных A. Для того, чтобы её пра-
вильно ввести полезно записать систему ограничений (33) задачи. Не-
трудно убедиться, что они имеют следующий вид:
 x11  x12  x13  15
 x21  x22  x23  20

 x31  x32  x33  10

 x11  x21  x31  10
 x12  x22  x32  30

 x13  x23  x33  5
82

Оптимальный план перевозок, имеющий стоимость 95 единиц, удобно


представить в виде таблицы:

ПО \ b1 = 10 b2 = 30 b3 = 5
\ ПН
a1 = 15 10 5

a2 = 20 15 5

a3 = 10 10

Несколько иначе составляется открытая транспортная задача. Способ


её решения легче понять на примере.

Пример 26. Туристическая фирма заключила контракт с двумя турба-


зами в г. Сухуми и в окрестных горах, рассчитанных соответственно на 200
человек каждая. Туристам для посещения предлагаются ботанический сад,
обезьяний питомник и поход в горы. Стоимость посещения дана в таблице:

Обезьяний Ботаниче-
Поход
питомник ский сад

С 1 тур. базы 5 6 20
Со 2 турбазы 10 12 5

Составьте самый дешёвый маршрут движения, если обезьяний питом-


ник принимает в день 60 человек, ботанический сад –180 чел., а в поход в
один день могут пойти 110 туристов.
83

Решение. Перепишем условие задачи в виде таблицы:

60 180 110
200 5 6 20

200 10 12 5

Найдём тип задачи. Вычислим общее количество человек, которые


могут принимать участие в экскурсиях и общее число мест на экскурсиях и
в походе:

200 + 200 = 400 60 + 180 + 110 = 350

Таким образом число желающих участвовать в экскурсиях и в походах


больше, чем имеется мест. Следовательно, часть туристов останется на тур-
базах, при этом все места на экскурсии и в поход будут заполнены. Обозна-
чая за неизвестные xij – число туристов, отправившихся с i-ой турбазы по j-
му маршруту, получим системы уравнений и неравенств:

 x11  x12  x13  200


 x21  x22  x23  200

 x11  x21  60

 x12  x22  180
 (34)
x13  x13  110

 x11 , x12 , x13 , x21 , x22 , x23  0
5 x11  6 x12  20 x13  10 x21  12 x22  5 x23  min
Хотя требования (33) не могут быть выполнены, команда LinearPro-
gramming найдёт правильное решение (34). Понятно, что найденный план
xij оптимальный, но не допустимый. Действительно, пусть xij – некоторое
решение с равенствами по столбцам. Добавим столбец, в который запишем
нулевую стоимость и добавим туда же xij’ > 0 до равенства по строкам. В
результате (33) выполнено и понятно, что это решение оптимально и допу-
стимо. Если было не так, то и оптимальный план LinearProgramming не оп-
тимальный, чего не может быть по построению. Аналогично решается слу-
чай со знаком  в (34) вместо .
Записываем программу и находим решение.
84

Ответ представим в виде таблицы: (при этом с 1 турбазы все туристы от-
правятся на экскурсии, а на 2 турбазе 50 туристов останется. Минимальная
стоимость всех экскурсионных поездок равна 2 130 ед.)
Обезьяний Ботаниче-
Поход
питомник ский сад
С 1 тур. базы 20 180
Со 2 тур. базы 40 110

Комментарий к решению. Вектор-столбец ограничений B имеет вид


{{a1, –1}, {a2, –1}, {b1, 0}, {b2, 0}, {b3, 0}}. Тем не менее в общем случае лучше
задачу свести к равенствам, что сделано в следующем примере.
Блокирование перевозок.
Может оказаться, что при решении практических задач необходимо
ввести дополнительные условия, согласно которым отдельные перевозки
должны быть запрещенными. Это означает, что в оптимальном решении
определённые клетки должны быть обязательно свободными. Такое допол-
нительное условие называется блокированием перевозок.
Рассмотрим приём блокирования перевозок на примере решённой ра-
нее транспортной задачи 25.
Пусть на оптимальное решение, указанное в таблице, наложено допол-
нительное условие: перевозки из третьего пункта во второй запрещена. Для
того, чтобы блокировать указанную клетку, увеличим коэффициент затрат
c31, сделав тем самым эту клетку наименее выгодной. Присвоим клетке (3,
2) очень большую стоимость M = 200 = c32, где M – достаточно большое
число в сравнении со всеми другими конкретными числами, с которыми
оно будет сопоставляться. Заметим, что в постановке данной задачи в Lin-
earProgramming можно сохранить знак неравенства.
85

Ответ представим в виде таблицы


ПО \ b1 = 10 b2 = 30 b3 = 5
\ ПН
a1 = 15 1 3 5
15
a2 = 20 2 3 1
15 5
a3 = 10 1 200 4
10
Минимальная стоимость перевозки равна 105 единицам.
Задача о назначении
Рассмотрим ситуацию, когда требуется распределить m исполнителей
по n работам, при этом известно, что i-я работа (i = 1, 2, … , n), выполняемая
на j-ом станке (j = 1, 2, … , m), связана с затратами cij. Задача состоит в таком
распределении работ по станкам (одна работа выполняется одним станком),
которое соответствует минимуму суммарных затрат. Такая задача известна
как задача о назначениях.
Эту задачу можно рассматривать как частный случаи транспортной за-
дачи. Здесь работы представляют «пункты отправления», а станки –
«пункты назначения», предложение и спрос объёма груза в каждом пункте
равны по 1, а стоимость перевозок – cij. Если какую-либо работу нельзя вы-
полнять на некотором станке, то соответствующая стоимость cij берётся
равной очень большому числу М.
Прежде чем решать задачу методами, ассоциированными с транспорт-
ной моделью, необходимо «ликвидировать» дисбаланс, добавив фиктивные
86

работы или станки в зависимости от начальных условий (m < n или m > n).
Поэтому без потери общности можно сразу положить m = n.
В задаче о назначениях переменная xij принимает всего два значения:
xij = 0, если j-я работа не выполняется на i-ом станке,
xij = 1, если j-я работа выполняется на i-м станке, поэтому соответству-
ющая задачи линейного программирования может быть сформулирована
следующим образом:
 n
 xij  1, j  1, 2,..., m
 i 1
m
при ограничениях  xij  1, i  1, 2,..., n
 j 1
 x  0 или x  1
 ij ij


n m
минимизировать z   cij xij
i 1 j 1

В качестве примера рассмотрим задачу с тремя работами и тремя стан-


ками. Для данного вида задач нет необходимости выписывать распредели-
тельную таблицу – достаточно выписать исходную матрицу стоимостей
 4 7 3
C   5 2 9  .
7 6 8
 
87

На самом деле решение можно было бы искать и при B = {1,1,1,1,1,1},


при котором условие ставится в виде неравенств вида , что объясняется
минимизацией целевой функции и положительности матрицы тарифов.

Матрица стоимостей имеет


вид, отражающий структуру си-
стемы ограничений задачи о назна-
чениях, поэтому полезно её пред-
ставить в матричном виде.
Ответ: первого рабочего необ-
ходимо поставить на 3-ю работу, 2-
го – на вторую, 3-его – на первую.
Минимальная стоимость составит
12 единиц.
88

Задания для самостоятельной работы


Собственные значения и собственные векторы
Найти собственные векторы и собственные значения матрицы.
 2 1 1  5  6 1   3 12  4   4 2 5 
       
1). 12  4  12  2). 1 0  1  3).  1  3 1  4).  6  1  6 
 4 1 5  0 0  6  1  12 6   8 3 9 
      
 0 1 0  2 1 2  0 1 0 1  1  1 
       
5).  4 4 0  6).  5  3 3  7).  0 0 1  8).  1 1 1
 2 1 2   1 0  2   6  11 6  0 1
       0
1  1 8  1 2  2  1 1 3  3 1 0 
       
9).  0 2 0  10). 1 0 3  11). 1 5 1 12).  4  1 0 
 1 0  1 1 3 0   3 1 1  4  8  2
       

Матрица обмена
Найти равновесный вектор цен, если задана матрица обмена.
 0.4 0.3 0.2   0.2 0.2 0 
 0.6 0.3   0.2 0.9     
1).  0.4 0.7  2).  0.8 0.1  3).  0.2 0.4 0.6  4).  0.4 0.2 0.7 
     0.4 0.3 0.2   0.4 0.6 0.3 
   
 0.2 0.1 0.2 0.4   0.3 0.4 0.2 0.1   0.2 0.2 0.4 0.1 
     
 0.2 0.4 0.6 0.1   0.1 0.1 0.2 0.5   0.3 0.5 0.2 0.3 
5).  0.3 0.5 0.2 0.3  6).  0.3 0.1 0.6 0.2  7).  0.2 0.1 0.3 0.3 
     
 0.3 0 0 0.2   0.3 0.4 0 0.2   0.3 0.2 0.1 0.3 

 0.2 0.4 0.5 0.3 0   0.1 0.2 0.1 0 0.4 


   
 0.1 0 0.3 0.3 0.3   0.2 0 0.1 0 0.2 
0 0.2 0.1 0.1 0.3  0 0.3 0.2 0.3 0.1 
8).   9).  
 0.2 0.1 0.1 0.1 0.2   0.4 0.1 0.6 0.5 0.1 
 0.5   0.3 0.4 0 0.2 0.2 
 0.3 0 0.2 0.2  
89

Линейная балансовая модель


1. Экономическая система состоит из двух отраслей и за предше-
ствующий период характеризуется следующей таблицей межотраслевых
потоков:

№ Потребление Конечный
отрасли I II продукт
I 30 40 30
II 10 20 20
труд. затраты 2 3
капитал. 26 34
Найти валовый вектор продукции, полные затраты труда и капитало-
вложений по вектор-плану Y = (40, 50).
2. Найти валовый вектор продукции, полные затраты труда и капита-
ловложений по вектор-плану Y = (30, 80), если
№ Потребление Конечный
отрасли I II продукт
I 110 60 30
II 30 60 10
трудовые за- 30 40
траты
капиталовложе- 20 50
ния
3. Найти валовый вектор продукции, полные затраты труда, капитало-
вложений и расход электроэнергии по вектор-плану Y = (60, 30), если
№ Потребление Конечный
отрасли I II продукт
I 200 150 50
II 90 80 30
электроэнергия 40 20
труд. затраты 50 30
капитал. 80 10
90

4. Найти валовый вектор продукции, полные затраты труда, капитало-


вложений и расход электроэнергии по вектор-плану Y = (30, 80), если
№ Потребление Конечный
отрасли I II продукт
I 60 80 60
II 50 10 40
электроэнергия 70 30
труд. затраты 40 10
капитал. 30 80

5. Экономическая система состоит из шести отраслей и за предше-


ствующий период характеризуется следующей таблицей межотраслевых
потоков:
№ Потребление Конечный
отрасли I II III IV V VI продукт
I 20 30 20 40 50 40 300
II 30 40 10 50 60 20 290
III 20 30 10 40 80 50 270
IV 10 10 60 30 20 20 50
V 40 40 40 40 30 40 270
VI 60 30 10 50 40 30 280
Найти валовый вектор продукции, полные затраты труда и капитало-
вложений, если задан вектор-план Y = (60, 10, 30, 20, 10, 40) и известны
вектора затрат труда x7 = (15, 20, 10, 20, 20, 50) и капиталовложений
x8 = (20, 30, 10, 40, 10, 30).

6. Найти валовый вектор продукции, полные затраты труда, капитало-


вложений и фондоёмкость, если задан вектор-план Y = (90, 10, 60, 80, 10,
40) и известны векторы затрат труда x7 = (15, 20, 10, 20, 20, 50), капитало-
вложений x8 = (20, 30, 10, 40, 10, 30) и фондоёмкости x9 = (80, 30, 10, 90, 60,
50), если экономическая система состоит из шести отраслей и за предше-
ствующий период характеризуется следующей таблицей межотраслевых
потоков:
91

№ от- Потребление Конечный


расли I II III IV V VI продукт
1 50 30 20 40 50 40 270
2 30 70 10 50 60 20 260
3 20 30 90 40 80 50 190
4 10 10 60 60 20 20 20
5 40 40 40 40 80 40 220
6 60 30 10 50 40 50 260
Графический и симплекс-методы
I. Решить графическим методом. Найти ценность ресурсов, их дефи-
цитность. Решите задачу и её двойственную, используя команду LinearPro-
gramming [c, A, b], и сравните результаты решения.
1. Завод выпускает обычные станки и станки с программным управле-
нием, затрачивая на один обычный станок 200 кг стали и 200 кг цветного
металла, а на один станок с программным управлением 700 кг стали и 100
кг цветного металла. Завод может израсходовать в месяц до 46 т стали и до
22 т цветного металла и имеет обязательное задание: выпускать в месяц не
менее 80 станков.
Сколько станков каждого типа должен выпустить за месяц завод,
чтобы объем реализации был максимальным, если один обычный станок
стоит 2000 руб., а станок с программным управлением 5000 руб.
ДУ: должно быть выпущено в месяц не менее 100 обычных станков.
2. Мастерская по покраске кузовов автомобилей рассчитана на по-
краску не более 160 кузовов в месяц. На покраску кузова «Audi» краска рас-
ходуется 4 кг, а кузова «Волга» – 7 кг. Мастерская располагает 820 кг
краски на месяц и имеет обязательный заказ на покраску 40 автомобилей
«Волга» и 30 автомобилей «Audi». Составить месячный план покраски ав-
томобилей, максимизирующий прибыль мастерской, если покраска одного
«Audi» дает 40 руб. прибыли, а одной «Волги» – 30 руб. прибыли.
ДУ: автомобилей «Audi» можно покрасить не более 110 штук.
3. Фабрика может выпускать пальто из ратина и из кожи, каждый вид
– тремя сортами. Цена ратинового пальто, в зависимости от сорта 150 руб.,
120 руб. и 200 руб., а кожаного, соответственно, 300 руб., 250 руб. и 100
руб. Общий объем реализации не должен превышать на пальто первого
сорта 45000 руб., второго – 47000 руб. и третьего 30 тыс. руб. Определить,
какое количество ратиновых и какое количество кожаных пальто должно
92

выпустить фабрика, чтобы получить наибольшую прибыль, если прибыль


от реализации одного ратинового пальто независимо от сорта, равна 16
руб., а кожаного – 20 руб.
ДУ: необходимо выпустить не менее 110 ратиновых пальто.
4. Завод выпускает два вида редукторов. На изготовление одного ре-
дуктора первого вида расходуется 3 т чугуна и 1 т стали, а на изготовление
одного редуктора второго вида 1 т чугуна и 2 т стали. Завод располагает на
месяц 160 т чугуна и 120 т стали и имеет обязательное задание – изготовить
не менее 60 редукторов обоих видов вместе. Составить месячный план про-
изводства редукторов, максимизирующий прибыль завода, если прибыль
от продажи одного редуктора первого вида равна 400 руб., а второго – 100
руб.
ДУ: оборудование завода позволяет выпустить за месяц не более 40
штук редукторов первого вида.
5. Мастерская ремонтирует трактора двух типов: 1 – мощностью 300 л.
с. и 2 – мощностью 200 л. с. За неделю мастерская может отремонтировать
не более 150 тракторов. За ремонт трактора 1 типа получают 2000 руб., 2
типа – 1000 руб. Составить недельный план ремонта тракторов, при кото-
ром мастерская получит не менее 100 000 руб. и суммарная мощность от-
ремонтированных тракторов будет наибольшей, если надо отремонтиро-
вать не менее 50 тракторов 2 типа.
ДУ: тракторов 1 типа можно отремонтировать не более 90 штук.
6. При откорме мясных свиней употребляется корм двух видов: К1 и К2.
Один кг корма К1 содержит 5 000 единиц белка, 700 ед. углеводов и 1 000
ед. жиров, а один кг корма К2, соответственно, 6 000 ед., 200 ед. и 1 300 ед.
По нормам животное должно получить не менее 960 000 ед. белка, 80 000
ед. углеводов и не более 160 000 ед. жиров. Цена 1 кг корма К1 – 3 руб.,
корма К2 – 2 руб. Составить наиболее дешевый рацион кормления свиней.
ДУ: корма К1 имеется только 80 кг.
7. Фабрика выпускает вязанные костюмы и кофты, используя шерстя-
ную и синтетическую пряжу. На один костюм идет 1300 г шерсти и 100 г
синтетики, а на одну кофту 500 г шерсти и 200 г синтетики. Фабрика имеет
на неделю 75 кг шерсти и 22 кг синтетики. Общее количество выпущенных
за неделю изделий должно быть не менее 70 штук.
Составить недельный план выпуска изделий, максимизирующий при-
быль фабрики, если костюм дает 40 руб., кофта 10 руб. прибыли.
ДУ: костюмов должно быть выпущено не более 40 штук.
93

8. В мастерской при изготовлении шкафа механическая пила использу-


ется в течение 8 часов, строгальный станок – 6 ч и сверлильный станок – 3
ч. При изготовлении стола нормы, соответственно, равны 2 ч, 3 ч и 2 ч. Не-
дельный фонд времени механических пил, имеющихся в мастерской 840
часов, строгальных станков – 870 ч и сверлильных станков – 560 ч. При-
быль от реализации шкафа 60 руб., стола 20 руб. Составить план производ-
ства, максимизирующий прибыль мастерской.
ДУ: должно быть произведено не менее 80 шкафов в неделю.
9. Совхоз располагает удобрениями двух видов: M и N. В одной т удоб-
рения М содержится 3000 ед. вещества В1, 6000 ед. вещества В2 и 9000 ед.
вещества В3, а в 1 т удобрения N, соответственно,1000, 6000 и 15000 ед. На
1 га должно быть внесено не более 20000 ед. вещества В1, 60 000 ед. В2 и
120000 ед В3. При соблюдении этих норм прибавка урожая от внесения од-
ной тонны удобрения М составит 4500 кг, удобрения N – 3500 кг. Какие
количества удобрений надо внести на 1 га, чтобы прибавка урожая была
наибольшей?
ДУ: совхоз имеет не более 3 т удобрения М на 1 га.
10. Фирма «Морские прогулки» может приобрести большие катера,
вместимостью 18 человек и быстроходные глиссеры на 5 человек. Глиссер
стоит 1100 руб., катер 1000 руб. Фирма может истратить на покупку 165
тыс. рублей и ожидает, что желающих совершить прогулку будет одновре-
менно не менее 900 человек. Сколько катеров и сколько глиссеров должна
приобрести фирма, чтобы получить наибольший доход, если билет на глис-
сер стоит 1 руб. 80 коп, а на катер – 1 руб. и если фирма уже договорилась
о приобретении не менее 50 глиссеров?
ДУ: катеров можно приобрести не более 66 штук.
11. В инструментальном цехе изготовляется два типа приспособлений.
При изготовлении приспособления первого типа затрачивается 3 ч работы
токаря, 3 ч слесаря и 2 часа сварщика, а при изготовлении приспособления
второго типа, соответственно, 2 ч, 3 ч и 5 ч. Месячный фонд рабочего вре-
мени токарей в цехе 273 ч, слесарей 300 ч и сварщиков 380 ч. Стоимость
приспособления первого типа 4000 руб., второго 500 руб. Составить план
выпуска приспособлений, максимизирующий общую стоимость выпущен-
ной продукции в месяц.
ДУ: должно быть произведено не менее 60 приспособлений 1-го типа.
12. Автозавод выпускает грузовики грузоподъемностью 3 т и 2 т. Об-
щая грузоподъемность грузовиков, выпущенных заводом за неделю должна
94

быть не менее 600 т. На производство одного трехтонного грузовика затра-


чивается 400 человеко-часов рабочего времени и 9 т металла, а одного двух-
тонного грузовика – 500 человеко-часов и 26 т металла. Предприятие рас-
полагает в неделю 400000 человеко-часов рабочего времени и 5400 т ме-
талла. Найти недельный план выпуска автомобилей, максимизирующий то-
варную продукцию завода, если трехтонный грузовик стоит 10 тыс. руб., а
двухтонный (повышенной проходимости) 30 тыс. руб.
ДУ: завод должен выпустить в неделю не менее 340 трехтонных грузо-
виков.
13. На сортировочной станции находится 136 плацкартных вагонов,
вмещающих по 48 пассажиров, 112 купированных – на 28 мест каждый и
80 мягких, имеющих 24 места. Можно составлять два типа поездов: 1 тип
состоит из 10 плацкартных, 4 купированных и 2 мягких вагонов, 2 тип – из
2 плацкартных, 8 купированных и 6 мягких. Сколько поездов того и другого
типа нужно составить, чтобы общее число пассажиров было максималь-
ным?
ДУ: поездов второго типа должно быть не более 10.
14. В магазине продаются простые и слаломные лыжи трех сортов. В
зависимости от сорта простые лыжи стоят 25 руб., 20 руб. и 15 руб., а сла-
ломные 150 руб., 125 руб. и 100 руб. Планом реализации предусматрива-
ется, что реализация лыж первого сорта не должна превысить 8500 руб.,
второго 7000 руб. и третьего – 5500 руб. Найти оптимальное количество
проданных простых и слаломных лыж, исходя из требования максимума
прибыли, если прибыль от продажи пары простых лыж, независимо от
сорта равна 2 руб., а слаломных – 12 руб.
ДУ: в магазин поступило только 80 пар простых лыж.
15. На звероферме могут выращиваться норки и хорьки.
Ежедневная норма корма
Вид корма норка хорёк Всего
А 2 4 75
B 3 8 134
C 5 5 90
D 5 3 80
Прибыль 6 7
95

Для обеспечения нормальных условий их выращивания используются


четыре вида кормов. Количество корма в граммах каждого вида, которое
должны ежедневно получать животные, приведено в таблице. В ней же ука-
заны общее количество корма каждого вида, которое может быть исполь-
зовано зверофермой, и прибыль от реализации одной шкурки норки, хорька
и соболя.
Определить, сколько животных каждого вида следует выращивать на
звероферме, чтобы прибыль от реализации их шкурок (в таб. указана в тыс.
руб.) была максимальной. Найти дефицитность ресурсов и их ценность.
16. В швейной мастерской имеется возможность пошива четырёх ви-
дов спортивного костюма из 2-х видов материи, расход которой в дм2 и из-
держки в руб. на пошив одного костюма в день приведены в таблице:

тип вид костюма мин.


материи расход
I II III IV
Синтетика 2 3 5 5 6
шерсть 4 8 5 3 7
Издержки 75 134 90 80

Найти оптимальный план пошива на 25 дней графическим методом.


Определить минимальные издержки. Указать дефицитность ресурсов и их
ценность.
II. Решить прямую задачу, используя команду LinearProgramming [c, A,
b]. С помощью обратной матрицы найдите два альтернативных решения.
17. В столярной мастерской имеются брусья длиной 11 дм. Из них надо
выпилить 20 брусков по 3 дм и 10 брусков по 4 дм. Возможны три варианта
распила брусьев, изображенные на рисунке. Сколько брусьев надо распи-
лить по каждому варианту, чтобы общая величина отходов была мини-
мальна? Найдите два альтернативных решения.
Вариант № 1 3 3 4 1

Вариант № 2. 3 3 3 2

Вариант № 3. 3 4 4
96

18. В мастерской имеются листы жести, размером 6х8. Из них надо


вырезать 10 заготовок, размером 4х4 и 32 заготовки, размером 3х3 (всё в
дм2). Найдите с помощью чертежа три возможных варианта раскроя листа
и определите, сколько листов надо раскроить по каждому варианту, чтобы
количество отходов жести было минимальным. Найдите два альтернатив-
ных оптимальных решения.
III. Решить задачу, используя команду LinearProgramming [c, A, b].
Найти ценность и дефицитность ресурсов. Проанализировать решение на
чувствительность с помощью обратной матрицы.
7 x1  3x2  8 x3  2 x4  x5  12
6 x  2 x  x  6 x  8 x  6
 1 2 3 4 5

19. 3x1  2 x2  4 x3  9 x4  6 x5  9
 x1 , x2 , x3 , x4  0
f  4 x1  8 x2  7 x3  2 x4  6 x5  min
Целочисленное программирование
Кроме целочисленного решения найдите решение без ограничения це-
лочисленности и сравните.
1. В регионе планируется строительство тепловых и гидравлических
электростанций мощностью 2200 тыс. квт и 1600 тыс. квт соответственно.
На строительство одной гидростанции требуется 3 тыс. рабочих, 25 млн ку-
бометров бетона и 30 тыс. т железных конструкций. На строительство од-
ной тепловой станции, соответственно, 2 тыс. рабочих, 15 млн кбм бетона
и 40 тыс. т железных конструкций. Регион располагает не более, чем 16 тыс.
рабочих, 200 млн кбм бетона и 240 тыс. т железных конструкций. Составить
план строительства электростанций, максимизирующий производство
электроэнергии.
ДУ: гидростанций можно построить не более двух.
2. Обувная мастерская располагает листами кож двух типов, из кото-
рых выкраивает заготовки А и В. Из листа первого типа можно выкроить 3
заготовки А и 5 заготовок В и отходы составляют при этом 40 см. Из листа
кожи второго типа – 7 заготовок А и 2 заготовки В, отходы равны 50 см.
Сколько листов каждого типа надо раскроить, чтобы отходы были мини-
мальны, если необходимо изготовить не менее 23 – заготовок А и 27– заго-
товок В.
ДУ: кож первого типа имеется 4 листа.
97

3. На складе надо разместить ящики трех типов: А, В и С: типа А не


менее 33 штук, типа В не менее 37 штук и типа С не менее 39 штук. Имеется
возможность заказать стеллажи двух видов. На один стеллаж первого вида
помещается 11 ящиков типа А, 7 – типа В и 4 – типа С, стоит этот стеллаж
30 руб. На один стеллаж второго вида помещается 3 ящика типа А, 5 – типа
В и 9 – типа С и стоит он 40 руб. Сколько стеллажей каждого вида нужно
заказать, чтобы их стоимость была наименьшей?
ДУ: стеллаж первого вида стоит 70 рублей.
Транспортная задача
Найти самый экономичный план перевозок, если a – количество груза
в пунктах отправления, b – количество груза в пунктах назначения, C – мат-
рица тарифов. Решить задачу при дополнительном условии.
3 5 1 
a  (37, 29, 32) Д. у.: из первого пункта груз
1. С   2 4 3  .
b  (26, 38, 30) 1 3 2  необходимо вывезти полностью.
 
 4 7 9
a  (22,16, 31) Д. у.: из первого пункта груз
2. С   6 2 5  .
b  (34, 20, 8) 1 4 6  необходимо вывезти полностью.
 
7 2 5
a  (25, 21,16) Д. у.: из второго пункта груз
3. С   8 6 4  .
b  (18, 24,13)  4 7 9  необходимо вывезти полностью.
 
8 4 5 
a  (13, 18, 10) Д. у.: во второй пункт груз
4. С   3 6 4  .
b  (9, 26, 15)  4 5 7  необходимо завезти полностью.
 
6 4 3
a  (37, 16, 27) Д. у.: во второй пункт груз
5. С   7 3 5  .
b  (31, 28, 35)  4 6 4  необходимо завезти полностью.
 
4 3 5
a  (16, 23,18) Д. у.: в третий пункт груз
6. С   8 4 3  .
b  (11, 26, 29)  6 5 7  необходимо завезти полностью.
 
98

3 5 1 5 2 9
2 4 3 7 3 1 
a  (48, 30, 33, 45,69) 
7. С  1 3 2 6 2 7 .
b  ( 32,37, 44, 25,37, 40)  
3 4 6 9 5 2
1 3 2 6 2 7 

Д. у.: из четвёртого пункта груз необходимо вывезти полностью.
8 4 6 5 7 3
4 8 5 2 6 4 
a  (51, 86, 29,37, 42) 
8. С  7 3 2 6 2 3 .
b  ( 48,59,56, 47, 27,17)  
5 4 8 4 8 5
1 3 2 6 2 7 

Д. у.: в пятый пункт груз необходимо завезти полностью.
Задача о назначении
Для заданной матрицы тарифов найти назначения на работу, имеющие
минимальную стоимость. Указать стоимость назначений.
6 9 8  6 4 5 1 3 5  5 6 4
       
1).  2 6 3  2).  5 3 2  3).  8 2 8  4).  6 9 5 
 7 7 5 9 6 8  6 3 4 3 4 7
       

3 4 3 4 7 5 8 3 4 3 2 6 3 4 6
     
6 3 6 6 5 3 5 6 3 1 9 3 6 6 5
8 5 7 5 4 7 2 7 5 4 4 8 7 8 3
5).   6).   7).  
3 2 8 3 2 5 2 8 6 7 7 2 8 7 4
3 8 4 5 6  6 9 4 5 4  8 5 4 5 9 
  
99

Ответы
Собственные значения и собственные векторы матрицы
1). {2, 1, 0} и a1 = (1, -2, 2) С1; a2 = (1, 0, 1) С2; a3 = (2, 3, 1) С3.
2). {– 6, 3, 2} и a1 = (0, 1, 6) С1; a2 = (3, 1, 0) С2; a3 = (2, 1, 0) С3.
3). {3, 2, 1} и a2 = (–3, 1, 3) С1; a2 = (–8, 3, 7) С2.
4). {2, 1, 1} и a2 = (1,–2, 2) С1; a2 = (1, 0, 1) С2.
5). 2 и a2 = (0, 0, 1) С1; a2 = (1, 2, 0) С2.
6). –1 и a = (1, 1, –1) С.
7). {3, 2, 1} и a2 = (1, 3, 9) С1; a2 = (1, 2, 4) С2; a3 = (1, 1, 1) С3.
8). {2, 1, 0} и a2 = (–1, 1, 0) С1; a2 = (1, –1, 1) С2; a3 = (1, 1, 0) С3.
9). {3, 3, 2} и a2 = (–2, 0, 1) С1; a2 = (4, 0, 1) С2; a3 = (3, 5, 1) С3.
10). {–3, 3, 1} и a2 = (6, –7, 5) С1; a2 = (0, 1, 1) С2; a3 = (–2, 1, 1) С3.
11). {6, 3, –2} и a2 = (1, 2, 1) С1; a2 = (1, –1, 1) С2; a3 = (–1, 0, 1) С3.
12). {2, 1, 1} и a2 = (0, 0, 1) С1; a2 = (–1, 2, 20) С2.

Матрица обмена
1). P = (3, 4) C; 2). P = (9, 8) C 3). P = (3, 4, 3) C
4). P = (1, 4, 4) C 5). P = (144, 350, 293, 54) C
6). P = (176, 152, 241, 142) C 7). P = (106, 253, 151, 162) C
8). P = (4030, 3172, 2423, 2479, 4328) C
9). P = (514, 342, 842, 1645, 775) C
Линейная балансовая модель
1. (188.235, 114.706, 720.588, 8794.12).
2. (241.176, 173.529, 14176.5, 13500).
3. (228.571, 71.4286, 10571.4, 13571.4, 19000).
4. (445.714, 217.143, 37714.3, 20000, 30742.9).
5. (121.4, 77.0, 98.7, 68.5, 83.1, 113.3, 13 046.4, 12696.6).
6. (173.6, 96.0, 165.3, 163.9, 105.0, 132.5, 18 181.5, 19 587.7, 46 098.4).
100

Графический и симплекс-методы
1. 90 – обычных станков и 40 – с программным управлением, 380 тыс. руб.
– максимальный объём реализации. Ценность стали = 2/3, ценность цвет-
ных металлов = 1/3, ценность обязательств = 0.
Д. У.: 100 – обычных станков и 20 – с программным управлением, 300
тыс. руб. – максимальный объём реализации. Ценность стали = 0, цен-
ность цветных металлов = 5, ценность обязательств = 0, ценность Д. У.
= 8.
2. 130 – «Audi», 30 – «Волг», макс. прибыль = 6100. Ценность возможно-
стей покраски мастерской = 40 ед., ценность краски и обязательств по
«Audi» = 0, ценность обязательств по «Волге» = 10 ед.
Д. У.: 110 – «Audi», 50 – «Волг», макс. прибыль = 5900. Ценность воз-
можностей покраски мастерской = 30 ед., ценность краски, обяза-
тельств по «Audi» и обязательств по «Волге» = 0, ценность Д. У. по
«Audi» = 10 ед.
3. По 100 пальто из ратина и кожи, макс. прибыль = 3600 тыс. руб. Цен-
ность обязательств по объёму реализации на 1-й сорт = 8/15, на второй = 0,
на 3-й = 4.
Д. У.: 110 пальто из ратина, 80 – из кожи, макс. прибыль = 3360 тыс.
руб. Ценность обязательств по объёму реализации на 1-й и 2-й сорта =
0, на второй = 0, на 3-й = 20 ед., ценность Д. У. = 24.
4. 50 – редукторов 1-го вида, 10 – редукторов 2-го вида, макс. прибыль =
21 000. Ценность чугуна = 150 ед., ценность стали = 0, ценность обязатель-
ного задания = 50 ед.
Д. У.: 40 – редукторов 1-го вида, 40 – редукторов 2-го вида, макс. при-
быль = 20 000. Ценность чугуна = 100 ед., ценность стали и обязатель-
ного задания = 0, ценность Д. У. по чугуну = 100 ед.
5. 100 – тракторов 1-го вида, 50 – тракторов 2-го вида, макс. прибыль = 40
000. Ценность возможностей мастерской = 300 ед., ценность финансовых
обязательств = 0, ценность обязательного задания на трактора 2-го типа =
100 ед.
101

Д. У.: 90 – тракторов 1-го вида, 60 – тракторов 2-го вида, макс. прибыль


= 39 000. Ценность возможностей мастерской = 200 ед., ценность фи-
нансовых обязательств и обязательного задания на трактора 2-го типа
= 0, ценность Д. У. на тракторы 2-го вида = 100 ед.
6. 90 кг корма К1 и 85 кг корма К2, мин. расход = 440 руб. Ценность белка
= 1/4000 ед., углеводов = 1/400 ед., ценность жиров = 0.
Д. У.: 80 кг корма К1, 120 кг корма К2, мин. расход = 480. Ценность
белка равна нулю, углеводов = 1/100 ед., ценность жиров = 0, ценность
Д. У. на наличие корма К1 равна 4 ед.
7. 50 вязаных костюмов и 20 кофт, макс. прибыль фабрики = 2200 руб.
Ценность шерстяной пряжи = 15/4, синтетики = 0, обязательств на общее
количество костюмов и кофт = 35/4.
Д. У.: 40 вязаных костюмов и 46 кофт, макс. прибыль фабрики = 2060
руб. Ценность шерстяной пряжи = 2, синтетики = 0, обязательств на
общее количество костюмов и кофт = 0, ценность Д. У. на костюмы
равна 14.
8. 65 шкафов и 160 столов, макс. прибыль мастерской = 7100 руб. Ценность
использования механической пилы = 5, строгального станка = 10/3, свер-
лильного станка = 0.
Д. У.: 40 шкафов и 210 столов, макс. прибыль мастерской = 6600 руб.
Ценность использования механической пилы = 0, строгального станка
= 20/3, сверлильного станка = 0, ценность Д. У. обязательств на шкафы
равна 20.
9. По 5 т удобрений M и N, макс. прибавка урожая = 40 000 руб. Ценность
вещества B1 = 1 000, вещества B2 = 0, вещества B3 = 500/3.
Д. У.: 3 т удобрений M и 6.2 т удобрений N, макс. прибавка урожая =
35 200 руб. Ценность вещества B1 = 0, вещества B2 = 0, вещества B3 =
700/3, ценность Д. У. на объём удобрения M равна 2400.
10. 110 больших катеров, 50 быстроходных глиссеров, наибольший доход
= 2430. Ценность финансовых расходов = 1.4 ед., ценность вместимости =
0, ценность обязательств на покупку глиссеров = 10.8 ед.
102

Д. У.: 66 больших катеров, 90 быстроходных глиссеров, наибольший


доход = 1998. Ценность финансовых расходов = 9/11 ед., ценность вме-
стимости и обязательств на покупку глиссеров = 0, ценность Д. У. на
предельное количество приобретаемых катеров = 108/11 ед.
11. 40 приспособлений 1-го типа, 60 приспособлений 2-го типа, наиболь-
шая общая стоимость = 460 000. Ценность токарной работы = 0, ценность
работы слесаря = 10000/9 ед., ценность работы сварщика = 1000/3 ед.
Д. У.: 60 приспособлений 1-го типа, 40 приспособлений 2-го типа,
наибольшая общая стоимость равна 440 000. Ценность токарной ра-
боты = 0, ценность работы слесаря = 5000/3 ед., ценность работы свар-
щика = 0, ценность Д. У. на минимальное количество производимых
приспособлений первого типа = 1000 ед.
12. 80 трёх тонных грузовиков, 180 двух тонных грузовиков, максимальная
товарная стоимость = 6200. Ценность затрачиваемых человеко-часов рабо-
чего времени = 1/6, ценность металла = 7/6 ед., ценность расхода рабочего
времени = 0.
Д. У.: 340 трёх тонных грузовиков, 90 двух тонных грузовиков, макси-
мальная товарная стоимость = 6100. Ценность затрачиваемых чело-
веко-часов рабочего времени = 0, ценность металла = 15/13 ед., цен-
ность расхода рабочего времени = 0, ценность Д. У. на минимальное
количество производимых трёхтонных грузовиков = 5/13 ед.
13. 12 поездов первого типа, 8 поездов второго типа, максимальная число
пассажиров = 10048. Ценность плацкартных вагонов = 164/3, ценность ку-
пированных вагонов = 70/3 ед., ценность мягких вагонов = 0.
Д. У.: 8 поездов первого типа, 10 поездов второго типа, максимальная
число пассажиров = 8080. Ценность плацкартных вагонов = 0, ценность
купированных вагонов = 160 ед., ценность мягких вагонов = 0, цен-
ность Д. У. на максимальное количество поездов 2-го типа = 984 ед.
14. 100 простых лыж, 40 слаломных лыж, максимальная прибыль = 680.
Ценность первого сорта = 2/25, ценность второго и третьего сорта = 0.
Д. У.: 80 простых лыж, 43 слаломных лыж, максимальная прибыль =
676. Ценность первого сорта = 0, ценность второго = 0, третьего сорта
= 3/25, ценность Д. У. на максимальное количество простых лыж = 1/5
ед.
103

15. Для получения максимальной прибыли z = 124 ед. необходимо выра-


щивать 2 норки и 16 хорьков. Ценность 1 и 4 видов корма равна нулю, цен-
ность второго корма равна 0.2, ценность третьего корма равна 1.08. Соот-
ветственно 2 и 3 ресурсы дефицитны, а ресурсы 1 и 4 – не дефицитны.
16. y = (0, 1/5, 27/25, 0). Следовательно, для обеспечения минимальных
расходов за 25 дней необходимо сшить 5 костюмов I типа и 27 костюмов II
типа. При этом будет 124 единицы издержек в день. Оба ресурса должны
быть использованы полностью и поэтому являются дефицитными, при этом
ценность первого ресурса равна 2, второго равна 16.
17. 1-е решение: {0, 5, 5}, остаток = 10 дм2.
2-е решение: {10, 0, 0}, остаток = 10 дм2.
18. 1-е решение: {5, 8, 0}, остаток = 176 дм2.
2-е решение: {0, 3, 10}, остаток = 176 дм2.
(1-й вариант: две заготовки 4х4 и 16 дм2 – остаток, 2-й вариант:
четыре заготовки 3х3 и 12 дм2 – остаток, 3-й вариант: одна заго-
товка 4х4, две заготовки 3х3 и 14 дм2 – остаток.)
19. Для достижения минимального значения целевой функции f = –122/35
 – 3.49 необходимо взять план x = (52/35, 6/35, 0, 19/35, 0). Все три ресурса
являются дефицитными.
1). При b1  (11.5, 64) статусы ресурсов не изменятся. Одновременно с
изменением объёма первого ресурса произойдёт изменение прибыли
zmax  (– 5, 154). Ценность первого ресурса положительна и равна y1 =
106/35. Это означает, что увеличение объёма первого ресурса приведёт
к увеличению оптимального значения прибыли.
2). При b2  (– 126/31, 126/19)  (– 4.06, 6.63) статусы ресурсов не из-
менятся. Одновременно с изменением объёма второго ресурса про-
изойдёт изменение прибыли zmax  (– 36334/1085, – 1066/665)  (– 33.49,
– 1.60). Ценность второго ресурса отрицательна и равна y2 = – 313/105,
что означает, что увеличение объёма второго ресурса приведёт к
уменьшению оптимального значения прибыли.
3). При b3  (108/11, 74/3) ~ (8.82, 24.67) статусы ресурсов не изме-
нятся. Одновременно с изменением объёма третьего ресурса произой-
дёт изменение прибыли zmax  (– 342/11, 46/9) ~ (– 31.09, 5.11). Цен-
ность третьего ресурса отрицательна и равна y3 = – 256/105, что озна-
чает, что увеличение объёма третьего ресурса приведёт к уменьшению
оптимального значения прибыли.
104

Так как ценность второго ресурса ниже ценности третьего ре-


сурса, то его увеличение на единицу приведёт к большему умень-
шению целевой функции, но зато меньшее уменьшение, чем
уменьшение на единицу третьего ресурса (106/35 > 313/105).
Так как все ресурсы дефицитные, то изменение запасов ка-
кого-либо одного из ресурсов приведёт к изменению оптималь-
ного значения прибыли.
4). При c1  ( – 5760/193, +) ~ ( – 29.84, +) статусы ресурсов не из-
менятся и не возникают альтернативные оптимумы. Одновременно с
изменением коэффициента c1 произойдёт изменение целевой функции
zmax  ( – 282922/6755, +) ~( – 41.88, +).
5). При c2  ( – 2240/849, + ) ~ ( –2.64 , + ) статусы ресурсов не
изменятся и не возникают альтернативные оптимумы. Одновременно с
изменением коэффициента c2 произойдёт изменение целевой функции
zmax  ( –10518/1981, + ) ~ (– 52.87, + ).
6). При уменьшении коэффициента c3 на c3 = – 4616/105 в оптималь-
ное решение можно включить свободную переменную x3. При этом оп-
тимальное значение целевой функции не изменится. Для c3 > –
4616/105  – 43.96 оптимальный план не изменится.
7). При c4  ( – 5166/89, +) ~ (– 58.04, + ) статусы ресурсов не изме-
нятся и не возникают альтернативные оптимумы. Одновременно с из-
менением коэффициента c4 произойдёт изменение целевой функции
zmax  ( – 419698/29715, + ) ~ (– 14.12, +).
8). При уменьшении c5 на c5 = – 4988/105 в оптимальное решение
можно включить свободную переменную x5. При этом оптимальное
значение целевой функции не изменится. Для c5 > – 4988/105  – 47.50
оптимальный план не изменится.
Целочисленное программирование
1. 4 гидроэлектростанции, 2 теплоэлектростанции, максимальная мощ-
ность = 12 мвт. (8/3, 4, 12.27).
Д. У.: 2 гидроэлектростанции, 4 теплоэлектростанции, максимальная
мощность = 10.8 мвт. (2, 4.5, 11.6).
2. 6 листов I типа, 1 лист II типа, минимальные отходы = 290 см (4.93, 1.17,
255.86).
105

Д. У.: 4 листов I типа, 4 листа II типа, минимальные отходы = 360 см.


(4, 3.5, 335).
3. 4 стеллажа I типа, 3 стеллажа II типа, минимальная стоимость = 240 руб.
(3.2, 2.9, 212.56).
Д. У.: 2 стеллажа I типа, 5 стеллажа II типа, минимальная стоимость =
340 см. (3.2, 2.9, 212.6).
Транспортная задача
1. {0, 3, 30, 4, 0, 29, 0, 0, 26, 6, 0, 0}, max z = 205
Д. у. {0, 7, 30, 0, 0, 25, 0, 4, 26, 6, 0, 0}, max z = 209
2. {3, 4, 8, 7, 0, 16, 0, 0, 31, 0, 0, 0}, max z = 175
Д. у. {10, 4, 8, 0, 0, 16, 0, 0, 24, 0, 0, 7}, max z = 196
3. {1, 24, 0, 0, 1, 0, 13, 7, 16, 0, 0, 0}, max z = 179
Д. у. {0, 18, 0, 7, 2, 6, 13, 0, 16, 0, 0, 0}, max z = 204
4. {0, 13, 0, 3, 0, 15, 6, 4, 0, 0, 9, 0}, max z = 165
Д. у. {0, 13, 0, 9, 3, 6, 0, 10, 0, 0, 0, 9}, max z = 171
5. {0, 2, 35, 0, 16, 0, 27, 0, 0, 4, 10, 0}, max z = 269
Д. у. {0, 12, 25, 0, 16, 0, 17, 0, 10, 14, 0, 0}, max z = 279
6. {8, 8, 0, 0, 0, 23, 0, 18, 0, 3, 0, 6}, max z = 215
Д. у. {2, 8, 6, 0, 0, 23, 0, 18, 0, 9, 0, 0}, max z = 221
7. {0, 0, 23, 25, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 21, 0, 12, 0, 0,
0, 25, 0, 0, 0, 10, 10, 32, 12, 0, 0, 25, 0, 0}, max z = 482
Д. у. {0, 0, 23, 25, 0, 0, 0, 0, 0, 0, 0, 0, 20, 10, 0, 0, 21, 0, 12, 0, 0,
0, 25, 0, 0, 0, 20, 0, 32, 12, 0, 0, 25, 0, 0}, max z = 492
8. {0, 22, 12, 0, 0, 17, 6, 0, 33, 47, 0, 0, 0, 0, 11, 0, 18, 0, 0, 37,
0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0}, max z = 742
Д. у. {0, 28, 6, 0, 0, 17, 0, 0, 39, 47, 0, 0, 0, 0, 2, 0, 27, 0, 6, 31, 0,
0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0}, max z = 742
106

Задача о назначении
0 1 0 0 1 0 1 0 0 
     
1). 1 0 0  , С = 16 2). 1 0 0  , С = 17 3).  0 1 0  , С = 12
 0 0 1  0 0 1  0 0 1
     
1 0 0 0 0
 
0 1 0 0 0 0 1 0
  0 0 0 0 1
4).  0 0 1 , С = 21 5).   , С = 16
1 0 0  0 1 0 0 0
 
0 0 1 0 0 

0 0 1 0 0 0 0 1 0 0
   
0 1 0 0 0 0 0 0 0 1
0 0 0 0 1 0 1 0 0 0
6).   , С = 16 7).   , С = 28
0 0 0 1 0 1 0 0 0 0
1 0 0 0 0  0 0 0 1 0 
 
107

Список источников
1. Давыдов Е. Г. Введение в интеграционную систему Математика 2.
Москва: Радио и Связь, 1997.
2. Дьяконов В. П. Mathematica в математических и научных расчётах.
Москва: Солон-Пресс, 2004 (есть более поздняя версия).
3. Фридман Г. М., Леора С. Н. Математика & Mathematica. СПб:
Невский Диалект, 2010.
4. Дмитриев В. Г., Дорошева Е. Н., Савинов Г. В., Сорокина О. А. Ос-
новы линейного программирования. СПБ: изд. СПбГУЭФ, 2006.
5. Банди Б. Основы линейного программирования. Москва: Радио и
Связь, 1989.
6. Дорофеев В. Ю. Линейная алгебра и аналитическая геометрия. СПб:
«Ютас», 2005.
7. Таха Х. А. Введение в исследование операций. Москва: Мир, 1985.
8. Кузнецов А. В. Холод Н. И. Математическое программирование.
Минск: Высшая школа, 1984.
108

Оглавление
Введение .............................................................................................................. 3
Общий подход к применению пакета «Wolfram Mathematica» ..................... 4
Линейная алгебра ............................................................................................... 6
Линейные пространства .................................................................................. 6
Матрицы ........................................................................................................... 9
Собственные значения и собственные векторы матрицы ......................... 15
Системы линейных уравнений..................................................................... 17
Аналитическая геометрия............................................................................. 22
Модель обмена ............................................................................................... 26
Линейная балансовая модель ....................................................................... 30
Линейное программирование.......................................................................... 37
1. Основные задачи линейного программирования. ................................. 37
2. Графический метод. .................................................................................. 40
3. Анализ на чувствительность в графическом методе ............................. 45
1-я задача анализа на чувствительность. ................................................. 45
2-я задача анализа на чувствительность. ................................................. 51
3-я задача анализа на чувствительность. ................................................. 51
4. Двойственность в линейном программировании .................................. 54
5. Анализ на чувствительность в симплекс-методе. .................................. 57
1-я и 2-я задачи анализа на чувствительность......................................... 62
3-я задача анализа на чувствительность .................................................. 65
Целочисленное программирование. ............................................................... 75
Транспортная задача ........................................................................................ 77
Блокирование перевозок. .............................................................................. 84
Задача о назначениях .................................................................................... 85
Задания для самостоятельной работы ............................................................ 88
Собственные значения и собственные векторы ......................................... 88
Матрица обмена ............................................................................................. 88
Линейная балансовая модель ....................................................................... 89
Графический и симплекс-методы ................................................................ 91
109

Целочисленное программирование ............................................................. 96


Транспортная задача. .................................................................................... 97
Задача о назначении ...................................................................................... 98
Ответы ............................................................................................................... 99
Список литературы ........................................................................................ 107
110

«Mathematica»
для линейных экономических моделей
Дорофеев Вячеслав Юрьевич, доцент, канд. физ. мат. н.,
Савинов Геннадий Володарович, профессор, д. т. н.Составить

Вам также может понравиться