НавигацияВход для пользователейМетки20 лет
25 лет
9860
add-ins
Atmega16
Casio
casio 9860
CITIZEN
COM-порт
FA-124
Geany
hello world
HP
HP-48
HP-50
HP 50g
IDE
iOS
mk.exe
mk161 for dummies
mkl2mkp
SPI
TI-89 Titanium
Андроид
Анонсы
Дополнительные вопросы по SPI-интерфейсу.
Игры
Импульсная характеристика
История
Итоги
КЭИ
Комбинаторика
Комплексные числа
Конкурсы
Криптография
Куплю БРП Москва
Лунолёты
МК-52
МК-161
Математика
Мысли
ПМК
ПО
Поломка
Пробел в знаниях
Программные метки в МК-1хх
Программы
Прогрессия
Простые числа
Разложение
Регламент
Секундомер
Сервис
События
Справочник В.П. Дьяконова
Справочное пособие
Стыковка
Факторизация
Физика
Фото
ЭКВМ
Юмор
ЯВУ
браузер
версия
внешний модуль
гибкий
гипербола
градиент
дети
дивергенция
калькулятор
книги
компилятор
кривые второго порядка
матрицы
методичка
мк-61
парабола
подзатыльник
практическое руководство
преобразоване координат
программируемый
производная n-го порядка
производная по направлению
прошивка
ротор
рынок
ряд Фурье
справочник
среда разработки
текст
учебник
цветы жизни
цифровая обработка сигналов
частная производная
числовой ряд
читалка
шахматы
эллипс
Новости других сайтов
|
ЭВМ в твоих руках (ЮТ, 1985-08, OCR) Путешествие в космосПутешествие в космосСитуация, которую мы сегодня рассмотрим, фантастическая. Но задача, которую придется решить, чтобы из этой ситуации выйти, вполне реальна. Итак, представим, что наш космический корабль приближается к одной из планет соседней галактики. Взревели тормозные двигатели, и звездолет мягко касается посадочной площадки. — Топливо — нуль,— объявляет бортовой компьютер. Это значит, что бак звездолета пуст. Нужно заправиться. Выглядываем в иллюминатор и видим заправочную станцию. На станции два вида топлива (естественно, оно необычно); топливо номер один называется «Антигравитон-10», другое — «Антигравитон-7», сокращенно А-10 и А-7. Цифра в названии топлива показывает, сколько часов можно пролететь на одном его литре; топливный бак звездолета вмещает 5 л. Есть еще вариант: залить в бак сразу оба сорта топлива (они не перемешиваются) и использовать их поочередно. Но какого топлива сколько взять на борт? Для решения подобных задач, довольно часто встречающихся в физике, пользуются так называемым симплекс-методом применяемым в линейном программировании. Что это такое, мы покажем при решении нашей задачи, но сначала сформулируем ее условие. Итак, 1 л антигравитона А-7 — это 7 часов полета. Значит, если мы возьмем на борт Х1 литров, то летное время составит 7Х1 часов. Точно так же Х2 литров А-10 гарантируют нам 10Х2 летных часов, а всего летное время составит Т = 7Х1 + 10Х2 часов. Наша цель — сделать летное время Т как можно больше, но при этом нужно учесть, во-первых, что топливный бак вмещает всего 5 л. Значит, общий объем горючего не может превышать это значение, то есть Х1 + Х2 < 5
У нас получилась следующая задача: Для решения ее прежде всего надо заменить неравенства равенствами. Если мы зальем меньше 5 л топлива, то какой-то объем бака останется неиспользованным, обозначим его через Х3 Тогда сумма объема топлива и пустой части бака даст нам как раз 5 л, то есть Х1+Х2+Х3=5. Точно так же поступим и с весовым ограничением. Неиспользованный вес назовем X4 и в конце концов перепишем нашу задачку так: Любое решение этой системы даст нам объемы каждого сорта топлива, полетное время и величины неиспользованных объема и веса. Но переменных пять, а уравнений только три, значит, система имеет не одно решение. Мы должны найти такое, когда Т—летное время — будет максимальным. Предположим, что мы вообще не заправили космолет, то есть Х1=Х2=0. Тогда, естественно, летать просто невозможно, Т=0, а Х3=5 и Х4=12. Мы получили одно из решений нашей системы, конечно, не наилучшее. Это решение называют исходным опорным планом. Переменные, входящие в опорный план, называют базисными переменными или просто базисом. 6 нашем случае это Т, Х3 и Х4. Обратите внимание: каждая базисная переменная входит только в одно уравнение и коэффициент при ней равен 1. Так как же улучшить опорный план? Для начала начнем заправку космолета. Только не будем заливать оба сорта топлива сразу, возьмем только один. С точки зрения математики это будет означать, что либо Х1 — объем А-7, либо Х2 — объем А-10 — станет отличным от нуля, то есть одна из этих переменных пойдет в базис. Какое же топливо залить, или, что то же самое, какую переменную ввести в базис? Наверное, Х2. А-10 эффективнее, и введение в базис Х2 сильнее влияет на Т. Это видно и из нашей системы. В самом деле, коэффициент при Хг равен 10. Значит, увеличение Х2 на 1 уменьшает левую часть на 10. Чтобы равенство сохранилось, приходится увеличить Т тоже на 10. Тогда как увеличение на единицу Х1 приводит к возрастанию Т только на 7. Вот мы и получили первое правило симплекс-метода: в базис вводится та переменная, которая имеет наибольший по абсолютной величине отрицательный коэффициент. А количество А-10, которое нужно залить, определяют ограничения. Ведь при заполнении бака уменьшаются пустой объем Х3 и неиспользованный вес Х4. Какая-то из этих величин в конце концов обратится в нуль—или бак окажется наполнен, или лимит веса будет исчерпан. А это, кстати, означает, что переменная, которая стала равной 0, исключится из базиса. Какую же исключить — Х3 или Х4? Из второго соотношения следует, что если X2 увеличить на 1, то Х3 уменьшится на столько же. А начальное значение пустого объема было 5. Значит, максимальная величина X не может быть больше 5. Ведь нельзя залить топлива больше, чем вмещает бак. Вот мы и получили второе правило симплекс-метода: новая базисная переменная увеличивается до тех пор, пока какая-нибудь из переменных старого базиса не обратится в нуль. Теперь в новый базис входят Т, Х3 и Х2. Значит, надо соответственно преобразовать систему уравнений, чтобы Х2 присутствовало только в одном уравнении, в третьем, с коэффициентом 1. Для этого разделим последнее уравнение на 3, затем вычтем его из второго. Тогда переменная X2 исключится из второго уравнения. Потом исключим X2 и из первого.
На индикаторе появится число 0,333333. Наша система уравнений примет такой вид: Теперь все переменные, кроме базисных — Т, Х3 и Х2,— полагаем равными 0 и получаем: Т=40, Х3=1, Х2=4. Это уже неплохо: 40 часов полета. Но можно сделать и лучше. В первом уравнении коэффициент при Х1 отрицателен, значит, вводя в опорный план эту переменную, можно увеличить Т. А для этого еще раз проделаем подобные вычисления, исключим Х1 из первого и третьего уравнений, а во втором коэффициент сделаем равным 1. Вот что получится: Отсюда ясно, что если залить 3 л А-7 и 2 л А-10, тогда наш космолет сможет летать 41 час. Пора давать задание роботу-заправщику. Помогают графикиЗадача, которую мы решили, не случайно названа задачей линейного программирования. Дело в том, что все переменные входят в уравнения и неравенства в первой степени, или, как говорят математики, линейно. А теперь давайте посмотрим, не поможет ли нам график в решении задачи линейного программирования. Только прежде условимся, что оси координат мы будем называть не X и У, а X1 и X2. Давайте возьмем одно из ограничений нашей задачи Х1 + Х2 ≤ 5 и найдем на координатной плоскости те точки, которые ему удовлетворяют (считая, что Х1 и Х2 больше нуля). Сначала рассмотрим равенство Х1 + Х2 = 5. Построим график этой линии. Для этого найдем две точки: если Х1=0, то Х2=5 (точка А), и наоборот, Х1=5, a Х2=0 (точка В). Соединим точки А и В (см. рис.). Неравенству задачи удовлетворяют точки, лежащие внутри треугольника ОАВ. Координаты каждой из них определяют величины переменных Х1 и Х2. Аналогично проведем прямую CD, определяемую вторым ограничением (2X1 + 3X2 ≤ 12). Она пересекает АВ в точке Е. Любая точка внутри или на границе четырех угольника ОСЕВ представляет возможное решение нашей задачи. Обратите внимание: точка Е как раз отвечает наилучшему, оптимальному решению. Случайно ли это? Надеемся, что вы поняли суть графического решения задачи линейного программирования. К сожалению, этот способ хорошо работает только при малом количестве переменных, в самых простейших задачах. В реальной ситуации, когда переменных много, компьютеру приходится отыскивать оптимальное решение, переходя от одной к другой грани огромного тысячегранного тела. Процедура эта медленная, и если число переменных превышает 15—20 тысяч, то симплекс-метод, по словам математиков, «выдыхается». Недавно 25-летний математик Нарендре Кармакар нашел новый способ решения задачи линейного программирования, при котором компьютер тратит гораздо Во саду ли, в огороде...И здесь может помочь линейное программирование. Представьте себе, что ваш пришкольный участок площадью S вы решили засеять тремя культурами (какие это культуры конкретно, неважно). Урожайность первой — У1 кг/м2, второй — У2 кг/м2 и третьей — У3 кг/м2. Под первую надо внести Р1 кг удобрений на м2, под вторую — Р2 и под третью — Р3, а всего вы имеете П кг удобрений. Постарайтесь найти посевные площади под каждой культурой так, чтобы урожай был наибольшим. При этом не забудьте о возникающих ограничениях. Составьте задачу линейного программирования, задайтесь конкретными цифрами и попробуйте ее решить. Какие еще задачи на отыскание наилучшего решения вы можете придумать? С. ВОЛКОВ Рисунки Г. ЗАСЛАВСКОЙ СловарикПРОГРАММА. Представьте, что нам надо сложить на калькуляторе два числа. Вряд ли кто-нибудь при этом станет нажимать произвольно клавиши. Нет, действовать придется, отдавая себе команды — ввести первое число, нажать одну клавишу, ввести второе число, нажать другую клавишу, прочитать ответ. По сути дела, мы имеем дело С программой — набором команд, котдрые надо выполнить, чтобы получить результат. ЦИКЛ — серия команд программы, которые выполняются многократно. Использование циклов позволяет строить программы, выполняющие гораздо больше команд, чем их количество в самой программе.
|