MathCAD

       

Парадокс режима оптимизации


Подобная неприятность случается и при использовании оптимизирующих компиляторов, о которых мы уже упоминали и работать с которыми нужно очень осторожно. Автор когда-то долго бился над одной программой, пока не понял, что оптимизирующий компилятор упорно выносит за рамки цикла системную переменную, считая ее константой. Ошибки вычислительной математики, как правило, понятны и простительны, ошибки же символьной математики иллюстрируются пословицей: заставь дурака богу молиться – он и лоб расшибет. Фокус рис. 7.17 в том, что там решается квадратное уравнение, у которого, как известно, два корня. В практических расчетах отрицательный корень часто отбрасывается. Его принимают за пришельца из потустороннего мира (отрицательная масса, концентрация, абсолютная температура и т.д.). Символьная математика, желая угодить пользователю, подсовывает ему один корень, но не тот, какой надо. Оба корня (100 и -101) найдены на рис. 7.17.

В Руководстве пользователя Mathcad запрещается в суммах давать верхнему пределу значение меньше, чем нижнему. В этом, наверное, заключается ключ к разгадке проблемы на рис. 7.17. Программа же на рис. 7.16 имеет циклы с положительным единичным шагом параметра, что не вполне соответствует суммам на рис. 7.15 (см. описание цикла с параметром в этюде 6).

Но шутки, тем более грубые, в сторону. Реакция «держать и не пущать» вполне обоснована. Опыт западных университетов показывает опасность подмены традиционных занятий изучением математических пакетов[42]. В процессе решения огромная роль отводится постановке учебной задачи и интерпретации результата. Освоение машинной математики может создать иллюзию освоения самой математики: студент, выполнив кучу команд и получив на дисплее массу чисел, формул и графиков, не знает, что с ними делать дальше, и не понимает, где кроется настоящее решение. Из-за этого многие преподаватели вполне обоснованно считают, что включение в уроки математики компьютера равносильно... дооборудованию спортивного тренажера гидроусилителями[43]. Другое дело старшие курсы, где математический аппарат применяется для решения конкретных научно-технических задач.

В седьмой версии Mathcad символьная математика проникла и в программирование – см. рис. 7.18.



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