MathCAD

       

Решение задачи о двух пожарных ведрах


На рис. 2.3 показано численное решение «двухведерной задачи» в среде Mathcad. В основном оно повторяет решение, показанное на рис. 2.2, но имеет такие особенности:

  • Сделано допущение, что радиус заготовки равен единице – переменная R в расчете отсутствует.
  • Функция объема ведра не опирается на вложенные функции. Это несколько усложняет понимание сути задачи, но ускоряет расчет.
  • Объем второго ведра рассчитывается также через функцию V, но аргумент a при этом сдвинут на 360 градусов: второму ведру достаются обрезки от первого ведра.
  • На первом графике выведена не одна кривая, а три: объем первого ведра V(a), объем второго ведра V(360 - a) и сумма объемов обоих ведер SV(a)[4]. Кроме того, шкала оси функции начата не с нуля, а со значения 0.38 для того, чтобы пользователь отчетливо увидел два максимума у функции SV и выиграл пари: заготовку нужно разрезать не по диаметру, а несколько иначе, чтобы получить два разных ведра, но с максимальным суммарным объемом.
  • Построен график производной функции SV, на котором видны три точки пересечения кривой с осью абсцисс, свидетельствующих о двух симметричных максимумах и об одном локальном минимуме в середине. При форматировании первый график был обрамлен (умолчание), а на втором прорисованы оси X и Y. Второй график строится намного дольше первого из-за того, что значение производной в каждой точке графика приходится высчитывать, используя алгоритм численного дифференцирования. А это сама по себе довольно сложная задача. Можно, конечно, из рис. 2.1 скопировать в рис. 2.2 выражение для производной и работать уже с ней, но мы договорились решить задачу только численными методами.
  • Максимумы для разнообразия найдены не через функцию Maximize, как на рис. 2.2, а через поиск корней производной функции SV. Для этого в расчет включена встроенная функция root, возвращающая корень уравнения и тоже требующая первого приближения к решению. Изменили первое приближение с 120 на 240 угловых градусов ¾ и ответ иной (второй). Кроме того, пришлось изменить c 10-3 на 10-6


    значение системной переменной TOL, отвечающей за точность нахождения корня: наша производная вблизи максимумов и минимума меняется очень слабо – в пределах 10-4.
    Пожарное ведро делается в виде конуса для того, чтобы его нельзя было поставить на пол, а потом использовать не по прямому назначению (для стирки, например) – такое ведро свалится на бок[5]. Решение задачи о двух пожарных ведрах также «валится на бок» – на «левый» (a < 180) или на «правый» (a >180). Такую же форму (конус без ножки) имеет бокал типа «Пей до дна!».
    Не выбросив меньший сектор и сделав из него второе пожарное ведро, мы мало что выиграли – второе ведро дало небольшую прибавку в объеме (~ 50 литров). Раскрой заготовки для двух ведер не по диаметру (a=180), а хитрым способом дал совсем ничтожный выигрыш по суммарному объему ведер (что-то около литра). Но нам важен не результат, а сам процесс расчета: «Цель ничто, движение – все!»
    Теперь решим задачу, подобную задаче о пожарном ведре, но более простую и более известную – задачу о максимальном объеме коробки (см. рис. 2.4). Она тоже будет иметь интересное продолжение, связанное с утилизацией отходов.

    Содержание раздела