ЛАБОРАТОРНАЯ РАБОТА № 7. ПОДБОР ПАРАМЕТРА . ОПТИМИЗАЦИЯ 1. Подбор параметра Пусть имеется некоторая функция одного аргумента, которую обозначим f(x). Предположим, что значение аргумента x мы можем назначать по своему усмотрению. Задача состоит в том, чтобы установить такое значение аргумента x, при котором функция f(x) примет заданное значение c. Мы пришли к известной математической задаче решения функционального уравнения f(x) = с. Пусть f(x) = sin(x) – cos(2x), c = 0, и нам нужно найти корень уравнения на заданном отрезке [0; 2]. 1.1. Выполнение задания 1. Запустите приложение Microsoft Excel и сохраните файл Книга1 в своей рабочей папке под именем Параметр.xlsx. 2. Для начала нужно построить график функции на заданном отрезке, чтобы убедиться, что корень на этом отрезке существует. Подготовьте таблицу из двух строк, в верхней из которых будут записаны значения аргумента x на отрезке [0; 2] с шагом 0,2 (вспомните, как создать арифметическую прогрессию), а в нижней – значения функции sin(x) – cos(2x) (см. рис. 1). Рис. 1. Таблица функции sin(x) – cos(2x) 3. Мы видим, что в точке 0,4 значение функции отрицательно, а в точке 0,6 – положительно. Значит, где-то на этом отрезке находиться корень уравнения. Постройте график функции. У вас должен получиться график, соответствующий рис. 2. Рис. 2. График функции sin(x) – cos(2x) 4. Мы видим, что график функции пересекает ось x примерно в точке 0,5. Это значение можно принять как начальное приближение при поиске корня уравнения. Запишите в ячейки, например, A4:A5 подписи таблицы x и sin(x) – cos(2x), а в ячейки B4:B5 – значение 0,5 и формулу для вычисления функции. 5. Поставьте курсор в ячейку B5 и выберите пункт Подбор параметра… из выпадающего списка Анализ «что-если», который находится в группе Работа с данными на вкладке Данные. Вы увидите диалоговое окно для ввода параметров инструмента Подбор параметра… (см. рис. 3). В поле Установить в ячейке уже должна находиться ссылка на выделенную ячейку с формулой. Рис. 3. Диалоговое окно «Подбор параметра» 6. В поле Значение введите величину, которой должно быть равно значение в целевой ячейке в результате подбора. В нашем случае это значение 0. 7. В поле Изменяя значение ячейки введите ссылку на ячейку В4 (для этого достаточно просто щелкнуть по этой ячейке), влияющую на результат вычислений по формуле. 8. Нажмите кнопку ОК. Появится диалоговое окно Результат подбора параметра (см. рис. 4). Нажмите кнопку ОК. Подобранное значение будет записано в регулируемую ячейку В4. Рис. 4. Диалоговое окно «Результат подбора параметра» 9. Если выполнение итерационного процесса затянулось, нажмите в диалоговом окне Результат подбора параметра кнопку Пауза или Отмена. После нажатия кнопки Пауза можно выполнять процесс подбора по шагам. Для этого используется кнопка Шаг. Для возобновления автоматического процесса подбора следует нажать кнопку Продолжить. 10. Результат подбора параметра должен соответствовать рис. 5. Попробуйте добиться большей точности вычисления корня, изменяя начальное значение в ячейке В4. Рис. 5. Результат подбора параметра 11. Решите функциональное уравнение, заданное вашим вариантом в таблице вариантов: Номер варианта 1 Левая часть уравнения f (x) = 0 3,8 3 sin x x 0,35 1 x 3 sin 3,6 x Область поиска решения [2;3] 3 cos 1 0,3x 3 x [0;1] 4 sin 1 0,4 x 2 x [0;1] 5 6 7 8 0,25x3 – x – 1,2502 0,1x2 – x ln x 3x – 4ln x – 5 ex – e–x – 2 [2;3] [1;2] [2;4] [0;1] 9 x x 3 x 2,5 tg 3 x tg 5 x 1 tgx 3 5 3 2 1 1 cos 2 sin x x x sin(ln x) – cos(ln x) + 2ln x lnx – x+1,8 [0,4;1] 2 10 11 12 13 14 15 16 17 18 19 20 21 0,4 arctg x x 1 x tgx 3 tg(0,55x + 0,1) – x2 1 2 sin x x 1 + sinx – ln(1 + x) – x cos(x0,52 + 2) + x ln1 x 3 x [0;0,85] [0;0,8] [1;2] [1;3] [2;3] [1;2] [0,2;1] [0;1] [1,2;2] [0;1,5] [0,5;1] [2;3] ex + ln x – 10x 3x – 14 + ex – e-x [3;4] 2ln2x + 6lnx – 5 2x sinx – cosx 2 x cos x e 2 x 1 1 x tgx [1;3] [0,4;1] [1;2] 27 28 sinx2 + cosx2 – 10x e x 1 e 2x 2 [0;1] [-1;0] 29 1 x cos 1 x x x tg ctg x 2 2 [0;0,9] 22 23 24 25 26 30 [1;3] [0;0,9] [1;2] 12. Покажите результаты работы преподавателю. 1.2. Вопросы для контроля 1. Какие задачи решаются подбором параметра? 2. Как осуществить подбор параметра? 2. Оптимизация В состав приложения Microsoft Excel входит мощный инструмент – Решатель (Solver). С его помощью можно решать задачи нелинейного программирования. В частных случаях с помощью Решателя может быть получено решение функционального уравнения, системы линейных уравнений, найден максимум или минимум функции нескольких переменных. Математическая формулировка Задачи, которые могут быть решены с помощью Решателя, в общей постановке формулируются так. Найти значения переменных x1, x2, …, xn, такие, что целевая функция f(x1, x2, …, xn) примет заданное значение, или минимальное значение, или максимальное значение. При этом могут быть заданы ограничения вида g(x1, x2, …, xn), принимающие заданные значения, или значения меньшие или равные заданным, или значения большие или равные заданным. Искомые переменные – ячейки рабочего листа Microsoft Excel называются регулируемыми ячейками. На регулируемые ячейки можно наложить дополнительные ограничения, например, можно потребовать, чтобы значения были положительными или целочисленными. 2.1. 2.2. Выполнение задания Продемонстрируем использование Решателя на примере, описанном в журнале «Компьютер Пресс» (№ 7, 1997) в статье В. Очкова «Как я продавал программу (компьютерный этюд)», в которой автор рассказал о применении Решателя для оптимизации своего заработка. Суть задачи состоит в том, что автор продал некоторую программу лакокрасочному предприятию за 14 млн. руб. Наличными деньгами предприятие не располагало, но было готово расплатиться в пределах этой суммы своей продукцией – краской. Краска выпускалась в двух видах тары – больших и малых банках (барабанах), ёмкость которых соответственно составляла 55 и 15 л, а стоимость пустых барабанов – 30 и 24 тыс. руб. Литр краски стоил 14600 руб. Автор статьи был заинтересован в том, чтобы, не выходя за пределы договорной суммы, получить от предприятия как можно больше краски. При этом имеется возможность лишь указать количество больших и малых барабанов с краской, но нельзя взять краску в разлив. Это типичная оптимизационная задача. 1. Создайте новый файл приложения Microsoft Excel и его в своей рабочей папке под именем Оптимизация.xlsx. 2. Создайте таблицу, соответствующую рис. 6. При этом в ячейки B6:B7 и B10:B12 запишите очевидные расчетные формулы. 3. Сначала подсчитайте, сколько краски можно получить, если всю её взять в малых барабанах. Вот очевидная формула, которая позволяет подсчитать количество малых барабанов, которое можно получить в пределах договорной суммы: 14000000/243000 = 57,6. Итак, можно получить 57 малых барабанов. 4. Введите в ячейку B8 вашей таблицы значение 57 и нажмите клавишу Enter. Если во ввёденных формулах вы не допустили ошибок, то увидите, что при таком решении всего будет получено 855 л краски, а у покупателя программы останутся не выбранными 149000 руб. Рис. 6. Исходные данные для оптимизации 5. Заслуживает внимания другое решение – взять краску в больших барабанах, а остаток выбрать малыми барабанами. Количество больших барабанов, которое можно получить, очевидно, равно 14000000/833000 = 16,8. 6. Введите в ячейку B8 таблицы значение 0, а в ячейку B9 – значение 16. При этом вы увидите, что будет получено 880 л краски, а остаток денег составит 672000 руб. Последнее решение по количеству полученной краски уже лучше, чем предыдущее. Кроме того, за счет остатка денег можно взять еще некоторое количество малых барабанов краски, которое равно 672000/243000 = 2,8. 7. Введите в ячейку B8 значение 2. Окончательный результат принятого решения позволяет получить 910 л краски, а остаток денег составит 186000 руб. Итак, во втором варианте будет получено на 55 л краски больше, чем в первом варианте. Возникает естественный вопрос: существует ли решение, при котором можно получить еще больше краски? Как вы увидите, такое решение действительно существует. Для решения задачи поиска максимума полученной краски можно применить Решатель. Ячейки В8 и B9 будут регулируемые ячейками, а ячейка B10 – это ячейка с целевой функцией. 8. Проверьте наличие кнопки Solver в группе Analysis на вкладке Данные. Если такой кнопки нет, то требуется установить соответствующий инструмент. Для этого нажмите кнопку Office, затем Параметры Excel, выберите раздел Надстройки. В выпадающем списке Управление выберите Надстройки Excel и нажмите кнопку Перейти… В появившемся диалоговом окне установите флажок для надстройки Solver Add-in и нажмите кнопку ОК. Теперь кнопка Solver должна появиться. 9. Установите курсор в ячейку B10 с целевой функцией и нажмите кнопку Solver, которая находится в группе Analysis на вкладке Данные. Появится окно Solver Parameters (см. рис. 7), в поле Set Target Cell которого уже должна быть абсолютная ссылка на ячейку B10. Если же этой ссылки там не оказалось, то её следует туда поместить. Для этого надо щелкнуть мышью в поле Set Target Cell, чтобы установить там курсор. Затем нужно щелкнуть по ячейке B10. Рис. 7. Диалоговое окно «Solver Parameters» 10. Установите переключатель Equal To на значение Max, чтобы найти максимум целевой функции. 11. Поместите в поле By Changing Cells диапазон регулируемых ячеек. Для этого поместите курсор в этом поле и выделите регулируемые ячейки (в рассматриваемом примере – это ячейки B8 и B9). Можно нажать кнопку Guess для автоматического поиска ячеек, влияющих на формулу, ссылка на которую дана в поле Set Target Cell. 12. Добавьте ограничения, которые имеют место в рассматриваемом примере. Их два. Первое состоит в том, что сумма истраченных денег не должна превышать 14000000 руб. Нажмите кнопку Add. В появившемся окне Add constraint (см. рис. 8) в поле Cell Reference поместите ссылку на ячейку B11, в которой записана формула вычисления размера истраченной суммы. 13. В поле Constraint поместите ссылку на ячейку B2, в которой указана сумма договора. 14. Выберите нужный знак отношения между полями Cell Reference и Constraint. В результате этих действий содержание полей окна Add constraint должно соответствовать рис. 8. Нажмите кнопку ОК. Рис. 8. Добавление ограничения на сумму истраченных денег 15. Снова нажмите кнопку Add, чтобы ввести второе ограничение, которое состоит в том, что количество малых барабанов (ячейка B8) и количество больших барабанов (ячейка B9) могут принимать только целочисленные значения. 16. В окне Add constraint введите в поле Cell Reference диапазон B8:B9. 17. В выпадающем списке, который находится между полями Cell Reference и Constraint, выберите значение int. Окно Add constraint должно выглядеть, как показано на рис. 9. 18. Нажмите кнопку ОК, чтобы закончить ввод ограничения. После этого содержание полей окна Solver Parameters должно соответствовать рис. 10. Рис. 9. Добавление ограничения о целочисленности ячеек 19. По умолчанию поиск экстремума целевой функции выполняется с погрешностью 5% – это обычная инженерная погрешность. Для рассматриваемого примера эта погрешность слишком велика, так как соответствует 910·0,05 = 45,5 л краски, что намного больше емкости малого барабана. Погрешность поиска максимума в рассматриваемом примере не должна быть больше емкости малого барабана, которая составляет 15/910·100 = 1,65% общего объема краски. 20. Для повышения требуемой точности поиска решения нажмите кнопку Options окна Solver Parameters. В появившемся окне Solver Options (см. рис. 11) в поле Tolerance замените значение 5 на 1,5. Рис. 10. Параметры поиска решений для задачи о краске 21. Установите в этом же окне флажок Assume Non-Negative, указав тем самым, что искомые количества барабанов краски не могут принимать отрицательные значения. 22. Закройте окно Solver Option, нажав кнопку ОК. Подготовка к поиску решения закончена. 23. Чтобы начать поиск решения, нажмите кнопку Solve окна Solver Parameters. После окончания процесса поиска появится окно Solver Results. В этом окне включите переключатель Keep Solver Solution и нажмите кнопку ОК. 24. Обратите внимание на значения регулируемых ячеек (см. рис. 12), которые они приобрели после окончания поиска максимума целевой функции. Проанализируйте полученное решение – теперь получено 915 л краски, то есть на 5 л больше, чем давал предыдущий вариант решения. Итак, наибольшее количество краски будет получено, если взять 15 больших и 6 малых барабанов с краской. И при этом у заказчика будет оставлено 47000 руб. И самое главное, теперь известно, что это лучшее решение. 25. Покажите результаты работы преподавателю. 26. Решите задачу минимизации суммы денег, оставленных у заказчика (ответ – 11000 руб., если взять 6 больших и 37 малых барабанов). 27. Покажите результаты работы преподавателю. 28. Закройте приложение Microsoft Excel. Рис. 11. Настройка параметров решателя Рис. 12. Результат поиска максимума объема полученной краски 2.3. Вопросы для контроля 3. Какие задачи могут быть решены с помощью Решателя? 4. Как запустить Решатель? 5. Как добавить необходимый инструмент? 6. Как задаётся ячейка с целевой функцией? 7. Как задать регулируемые ячейки? 8. Как установить допустимую ошибку поиска? 9. Как заставить Решатель искать только положительные значения? 10. Как заставить Решатель искать только целочисленные значения?