MathCAD

       

Решение задачи о балке средствами символьной математики


На рис. 7.12 показано, как оператор solve с решает нашу старую задачу о раскрое коробки (коробок) максимальной вместимости: берется квадратная заготовка, по углам которой вырезаются маленькие квадратики. Полученная таким образом крестовина складывается в коробку (см. схему на рис. 2.4 в этюде 2). Найти параметры раскроя, дающие максимальный объем коробки. В этюде 2 мы развили эту известную школьную задачу, отметив, что из обрезков можно делать новые коробки, которых в принципе может быть бесконечное множество.

Комментарии к рис. 7.12:

  • В пунктах 1 (одна коробка) символьные преобразования ведутся «цугом» с выводом промежуточных аналитических выражений. Такая цепочка операторов получается следующим образом: записывается оператор дифференцирования (см. пункт 1) и нажимается кнопка оператора символьного преобразования «®» в панели Simbolic:


    Далее ответ (производная от функции V1) охватывается курсором и нажимается кнопка Simplify в той же панели инструментов:


    Затем к упрощенной производной прикладывается оператор решения уравнения (solve, a), возвращающий два корня, первый из которых (1/6) – ответ по задаче о коробке.

  • В пункте 2.1 (бесконечное число коробок с постоянной пропорцией раскроя a) символьные преобразования также ведутся «цугом». Одно из неудобств такой технологии в том, что промежуточные результаты выстраиваются по горизонтали и из-за этого их неудобно рассматривать на экране дисплея и распечатывать на бумаге принтера. На рис. 7.12 (а это, как читатель знает, «заморозка» экрана дисплея, доработанная в среде графического редактора) промежуточные выражения выстроены по вертикали, где стрелки показывают последовательность преобразований. Аналитический ответ (а численного здесь получить нельзя из-за того, что суммируется бесконечный ряд) – это вектор уже с четырьмя элементами, последний из которых (0.1736…) – решение задачи. Здесь дополнительно задействован оператор float, n, возвращающий число с плавающей точкой с n[33] знаками[34].
  • В пункте 2.2 операторы, решающие задачу о бесконечном числе коробок, выстроены не «цугом», а «парой», если так можно выразиться. При этом промежуточные результаты не показываются, так как они очень громоздки, и ничего не дают ни уму ни сердцу. Обычно пользователь комбинирует «упряжку» символьных преобразований, получая какое-то подобие «шестерни», когда лошади идут парами цугом.

  • В решении двухмерной оптимизационной задачи о пяти коробках (пункт 3 – два шага раскроя) выведены и аналитические и численные ответы (их четыре; правильный – второй).

  • В решении трехмерной оптимизационной задачи о двадцати одной коробке (1+4+16 –пункт 4) выведены только численные ответы (их двенадцать; правильный – восьмой сверху). Честно говоря, задача о любом числе коробок сводится к одномерной оптимизации последовательными решениями: пропорция последнего раскроя равна 1/6; зная это, можно одномерной оптимизацией найти раскрой первого шага из двух при пяти коробках и т.д. Здесь просматривается рекурсия, к которой мы еще вернемся в конце этюда.

  • Из рис. 7.12 видно, что символьный процессор пакета Mathcad выдает много лишних ответов. Из-за этого не только увеличивается объем Mathcad-документа, но и неизбежны сбои, когда символьная математика отказывается выполнять простейшие, на взгляд человека, операции или выполняет их не так как надо. В связи с этим в среду Mathcad введены операторы и ключи, позволяющие игнорировать (по-английски to assume) некоторые направления преобразований. На рис. 7.13 даны примеры таких игнорирований. Во-первых, пустой с точки зрения вычислительной математики оператор присваивания x:=x (пример 1 на рис. 7.13) лишает переменную x (или какую-то другую) ее численного значения. В примере 2 упрощается квадратный корень из икса в квадрате. Результат получается разным в зависимости от типа переменной x.

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