Общий вид и схема счётной машины Б. Паскаля
На этой странице изображены общий вид и схема суммирующей машины, конструкционной одним из самых значительных людей в истории человека — Блезом Паскалем (1623—1662). Его портрет помещен слева. О Паскале, о его жизни, многочисленных научных достижениях, открытия, идеях и изобретения уже рассказывалось в «Кванте» (1973, № 8, с. 4). Там же рассказывалось и о построенной им машине (с. 10—11). Современники Паскале называют «паскалеевым колесом». О вычислительных машинах, об истории их изобретения, об устройстве (логическая и физическая) современных вычислительных машин и об их применениях подробно рассказано в интерсейной книге Р. С. Гутера и Ю. Л. Полунова «Математические машины», выпущенной издательством «Просвещение» в 1975 году. Советум ваме прочесть. С решением на эту книгу вы можете познакомиться на с. 50 этого номера журнала.
1
Главный редактор
академик И. К. Кикоин
Первый заместитель
главного редактора
академик А. Н. Колмогоров
Редакционная коллекция:
М. И. Башмаков
С. Т. Беляев
В. Г. Болтянский
Н. Б. Васильев
Ю. Н. Ефремов
В. Г. Зубов
П. Л. Капица
В. А. Кириллин
А. И. Климанов
(главный художник)
С. М. Козел
В. А. Лешковцев
(зам. главного редактора)
Л. Г. Макар-Лиманов
А. И. Маркушевич
Н. А. Патрикеева
И. С. Петраков
Н. Х. Розов
А. П. Савин
И. Ш. Слободецкий
М. Л. Смолянский
(зам. главного редактора)
Я. А. Смородинский
В. А. Фабрикант
А. Т. Цветков
М. П. Шаскольская
С. И. Шварцбург
А. И. Ширшов
Редакция:
В. Н. Березин
А. Н. Виленкин
И. Н. Клумова
Т. М. Макарова
(художственный редактор)
Т. С. Петрова
В. А. Тихомирова
Л. В. Чернова
(зав. редакцией)
В НОМЕРЕ:
2 Б. Алейников, П. Бузицкий, М. Дубсон. Симплекс-метод
9 Э. Казарян, Р. Саакян. Об одном методе решения задачи по электростатике
14 А. Дозоров. Зачем трансформатору сердечник?
Лаборатория «Кванта»
18 М. Головой. Фигура Гайдингара
Математический кругхок
21 Э. Готман. Задачи на доказательство
25 Я. Понарин. Вычисление площадей
Задачник «Кванта»
28 Задачи M391—M395; Ф403—Ф407
30 Решения задачи M351 — M353; Ф358 — Ф361
Практикум абитриента
37 Донецкий государственный университет
38 Московский институт управления им. С. Орджоникидзе
39 Московский институт электропровода машиностроения
40 Белоруссий институт инженеров железнодорожного транспорта
41 Донецкий политический институт
43 Марийский политический институт им. М. Горького
43 Ярославский политический институт
44 Московский государственный педагогический институт им. В. И. Ленина
45 Московский областной педагогический институт им. Н. К. Крупской
Х Всесоюзная олимпиада школьников
48 В. Березин, В. Тихомирова. Московская городская олимпиада школьников
Рецензии, библиография
50 Э. Белага. «Математические машины»
51 Л. Кармазина, Н. Меллер. «АЛГОЛ 60»
52 И. Клумова, М. Смолянский. Новые книги
«Квант» для младших школьников
54 Задачи
55 А. Орлов. Понск предмета
58 Ответы, указания, решения
Смесь (с. 47)
© Главная редакция физico-mатематической литературы издательства «Нука», «Квант», 1976 200
4
Решение системы (1) называем допустимым решением ОЗЛП, если числа неотрицательны. Оптимальный будем называть то из допустимых решений, которое обращает целевую функцию (2) в минимум.
Конкретная ОЗЛП может и не иметь решения: система (1) может быть несовместной, т. е. вообще не имеет решения; она может быть совместной, но не имеет допустимых решений; наконец, она может даже имеет допустимые решения, но среди них может не быть оптимального: функция (2) может быть не ограничена сизу на множество допустимых решений. Однако все эти описности поддержают нас только в специально придуманных задачах; в естественной возможности практических задач решение, как правило, существует.
Предположим, что система (1) совместна и ее уравнения линейно незаависимы, т. е. никакое из них не может быть выведено из других. Можно доказать, что тогда .
Рассмотрим вначале случай, когда число уравнений равно числу переменных . В линейной алгебре доказывается, что в этом случае система (1) имеет единственное решение. Если это решение допустимое, оно автоматически будет оптимальным.
Интерес представляет случай, когда (на практике это соответствует возможность выбора различных планов действия). Обозначим через . В линейной алгебре доказывается, что можно какое-то переменных (они называются базисными) выразить через остальные переменных (их называют свободными). Система (1) имеет в рассмотрении случай бесконечное множество решений: придавая свободным переменным произвольны е значения и вычисляя соответствие базисных переменных, мы будем каждой раз получать новое решение системы (1). Некоторые решения системы (1) называется опорным, если значения по крайней мере переменных равны нулю. В теории линейного программирования доказывается, что оптимальное решение является опорным.
Из этой последней теоремы вытекает следующий план решения ОЗЛП: как-нибудь выбираем свободных переменных; разрешаем систему относительно оставшихся базисных переменных; полагая свободные переменные равными нулю, находим опорное решение; вычисляем соответствующее значение целевой функции. Перебрав все возможности выбора свободных переменных, увидим, на каком из опорных решений целевая функция примет наименьшее значение, — это и будет искомое оптимальное решение.
Для простых задач, в которых число переменных неверло, такой метод решения — «слепым» перебор — в принципие годится. Однако в задачах, возникших на практике, число переменных и число наложенных ограничений обычно очень велики — порядка сотен и даже тысяч. Для таких задач простой перебор практическим невозможен: число возможных способов выбора свободных переменных становится огромным!
Позмоту в теории линейного программирования были разработаны различные методы, позволяющие находить оптимальное решение не «слепым» перебор, а так, чтобы каждый следующий выбор свободных переменных приближал нас к решению.
Старейшим и наиболее известным из них является симплекс-method, созданный в конце сороковых годов американским математиком Дж. Данцгом.
Симплекс-method
Пусть, например, в качестве свободных переменных выбраны переные переменных , а остальные переменных выражены через
5
них:
Положив все свободные переменные равными нулю, получим следующие системы (1):
Если все свободные члены неотрицательны, решение (6) является допустимым.
Чтобы проверить, является ли оно оптимальным, выразим целевую функцию через свободные переменные , подставив выражения для из (5) в (2):
Из (6) вытекает, что . Посмотрим, не может ли мы уменшить значение целевой функции , увеличивая значения свободных переменных (уменьшать мы их не можем, так как в решении (6) они равны нулю, а мы ищем допустимое решение).
Если все коэффициенты в равенстве (7) неотрицательны, то, увеличивая значения свободных переменных, мы будем уменшать значение функции , т. е. будем уличать решение. В этом случае нам решение не является оптимальным.
Пусть, например, в равенстве (7) отрицательен коэффициент . Если в системе (5) все коэффициенты при неотрицательны, то любое увеличение значения переменной оставит значения переменных неотрицательными и мы не выйдем из области допустимых решений. Значение же функции будет при этом неограниченно уменьшаться. Таким образом, в этом случае уравнения системы (5) есть также, в которых коэффициент при отрицательен. Для переменных, стоящих в левых частях этих уравнений, увеличение значения переменной описано: оно может сделать их отрицательными.
Если, например, , то, очевидно, значение переменной можно уменшить только до . (При , получим .)
Средние переменных, для которых увеличение значения переменной описано, выберем ту, которая равше всех обратится в нуль, т. е. ту, для которой увеличина меньше всего.
Пусть такая «наиболее угрожаемая» переменная будет .
Выведем теперь из числа свободных переменных и переведем вместе в группу свободных переменных , т. е. разрешим систему (1) относительно базисных переменных
Дальше все повторяется: положив все свободные переменные равными нулю, найдем соответствующое решение; выразим целевую функцию через новые свободные переменные; если все коэффициенты при переменных в полученном выражении
6
Для неотрицательны, найденное решение — оптимальное; в противном случае процесс выбора базисных переменных и улучшения решения продолжается.
Описанный алгоритм и называется симплекс-методом. (Обратили ли Вы, читатель, внимание, что в нашем изложении алгоритма оставлена одна «дырка»: одна возможность не рассмотрена?)
Два примера
Рассмотрим сначала общую школьную задачу.
Задача 1. Три циклника хотим добраться до лесного озера, расположенного в 20 км от дома. У них есть один двухместный мoped, на котором можно ехать со скоростью 36 км/час. Пешком каждой циклника может идти со скоростью 4 км/час. Как организовать движение, чтобы всем проимь быстрее добраться до озера? Каково наименьшее время, за которой это можно сделать?
Очевидно, что многократная смена пассажиров на море не сможет дать никакой выгоды во времени по сравнению с однократной. Поэтому составим такой план организации движения: в начальной момент времени из дома одновременно выезжают на моредева школьника и выходит пешком третий школьник. В промежуточной точке водитель мореда высказывает свое определение .
Нам надо найти такое , при котором функция принимает наименьшее значение. Кроме того, нам надо найти значение функции при этом , т. е. числом (). Из рисунка 2 (на нем красным цветом нарисован график функции , черным — функция , синним — функция ) сразу видно, что искомое определяется из уравнения .
Тем не менее, чтобы проиллюстрировать общий метод, поставим и решим данную задачу как задачу линейного программирования. Переформулируем ее так: найти наименьшее , для которого одновременно и . Итак, нам надо найти неотрицательные значения переменных и , которые удовлетворяют бы системе неравенств
7
и обращали в минимум функцию :
Мы получили задачу линейного программирования. Сведем ее к ОЗЛП.
Система (8) равносильна системы
Обозначим через , через . Тогда , и . Нашу задачу мы можем теперь сформулировать так: найти неотрицательные значения переменных , которые удовлетворяют бы системе уравнения
и обращали в минимум целевую функцию . А это уже ОЗЛП. Решим ее симплекс-методом.
Выберем в качестве базисных переменных и (систему (11) легче всего решить относительно них) и выразим их через свободные переменные :
Полагая свободные переменные равными нулю, получим решение системы (12) и (11):
Это решение не является допустимым.
Выберем теперь в качестве базисных переменных две другие переменные, например и . (В теории линейного программирования существует метод, указывающий, каким образом выбирать новые свободные переменные так, чтобы приближаться к области допустимых решений. Здесь мы этот метод не излагаем.) Разрешим систему (11) относительно них:
Полагая свободные переменные равными нулю, получим решение системы (13) и (11):
Решение (14) уже является допустимым. Чтобы проверить, является ли оно оптимальным, выразим целевую функцию через свободные переменные и . Из (9) и (13)
Значение целевой функции на решении (14) равно 5.
Поскольку коэффициент при в (15) отрицательен, решение (14) не является оптимальным: увеличивая значение переменной , мы будем уменьшать значение целевой функции .
В общих уравнениях системы (13) коэффициенты при отрицательны. Поэтому увеличение значения переменной описано как для , так и для . Это увеличение может сделать их отрицательными. Из первого уравнения системы (13) следует, что значение переменной можно увеличать до (при таком значении и при получим ; при дальнейшем увеличении значение переменной становится отрицательным); из второго — до . Таким образом, при увеличении значения переменной равше обратится в нуль переменная : она находится в «болееугрожаемом» положении, чем .
8
Выведем теперь из числа свободных переменных и переведем вместо нее в группу свободных переменных , т. е. разрешим систему (11) относительно базисных переменных и :
Полягая свободные переменные равны нулю, получим решение системы (16) и (11):
Выразим целевую функцию через и . Из (9) и (16)
Значение целевой функции на решении (17) равно .
Поскольку все коэффициенты при переменных в (18) неотрицательны, решение (17) является оптимальным. Итак, задача решения: попеду надо ссадить пассажира на расстоянии (км); наименьшее время, за которое можно добрать до озера, равно (час).
Приведем теперь типичную практическую задачу, естественно ставшую как задача линейного программирования. Это так называемая «задача о диете», или «задача о пищевом рационе».
Задча 2. Директору столовой нужно составить меню. В его распоряжении имеется 5 видов продуктов: хлеб, овощи, фрукты, мяса, рыба.
Известно, что килограмм хлеба стойит рублей, килограмм овощей — рублей и м. д. Известно также, что килограмм хлеба содержит ке белков, ке жиров и ке углеводов и м. д. (содержание белков, жиров и углеводов в килограмме каждой вида продуктов указано в таблице на рисунке 3). Требуется максимальное меню, чтобы в нем содержалось не менее ке белков, не менее ке жиров и не менее ке углеводов, причем стойимость его была минимальной.
Обозначим через количество хлеба, которое войдет в меню, через — количество овощей и т. д. Общая стоимость меню , очевидно, выразится равенством
Ограничения на питательность меню выражаются системой неравенств
Наша задача приняла вид: найти неотрицательные значения переменных , которые удовлетворили бы системе неравенств (20) и обращали в минимум функцию из (19). Это — задача линейного программирования.