Юрий Петров - Расследование и предупреждение техногенных катастроф. Научный детектив
Наоборот, устранение предрассудков очень полезно для науки России для ее граждан, поскольку позволит избавиться от некоторых источников техногенных катастроф. Вероятность аварий и катастроф станет меньше.
А теперь идет самое интересное: посмотрите внимательно — как, каким образом формулируется теорема о непрерывной зависимости решений от параметров во всех перечисленных мною учебниках — от В. В. Степанова до В. И. Арнольда. Ни в одном из них не сказано: «теорема верна для всех систем уравнений, поскольку для систем из n уравнений первого порядка доказательство приведено, а остальные системы приводятся к ней эквивалентными преобразованиями». Это положение не высказано, оно «домысливается» преподавателями, а за ними — и студентами, слушающими лекции. Почему избран такой странный стиль изложения с необходимостью «домысливания»? Здесь можно высказать только догадку, или — как говорят «детективы» — версию. Вот эта версия: уважаемые авторы учебников понимали желательность дать доказательство этой важнейшей теоремы для всех систем — а не только состоящих из n уравнений первого порядка. Они пытались найти такое доказательство, но у них ничего не получилось. Теперь мы знаем, что получиться и не могло, поскольку в общем случае теорема (как показано в [2]) — не верна. Тогда они предпочли формулировку с необходимостью «домысливания», рассуждая (возможно) следующим образом: если теорема в дальнейшем будет доказана для всех систем, то «домысливание» окажется правильным и все будет в порядке. Если же теорема в общем виде будет опровергнута, то мы, авторы учебников, чисты: у нас сформулировано лишь верное утверждение о системах, состоящих из n уравнений первого порядка, а за «домысливание» мы не отвечаем.
Хотя это только «версия», но возможно, что так все и было (подробнее о данном вопросе — в [3] и в [12]).
§ 12. Опасные ошибки, обнаруженные в популярных пакетах прикладных программ (MATLAB, Mathcad и других). Методы предотвращения ошибок
В последние годы для различных расчетов все шире используются популярные пакеты прикладных программ — пакеты MATLAB, Mathcad и многие другие. В ходе исследования, проведенного в СПбГУ, в этих пакетах были обнаружены ошибки. Эти ошибки можно исправить, и их очень нужно исправить, поскольку на основе этих пакетов производятся миллионы расчетов, в том числе и очень ответственных расчетов, поэтому цена ошибки может быть велика, ценой может стать техногенная катастрофа. Рассмотрим эти ошибки.
1. При численном решении систем дифференциальных уравнений первым этапом решения во всех этих пакетах является приведение исходной системы к системе n уравнений первого порядка путем эквивалентных преобразований. На втором этапе отыскивается решение преобразованной системы. Данный подход имеет под собой серьезные основания — он позволяет самые разнообразные системы уравнений решать одной программой. Если же первый этап пропустить, то пришлось бы создавать множество программ — потребовались бы, например, отдельные программы для системы, состоящей из одного уравнения третьего порядка и одного — первого порядка и для системы, состоящей из двух уравнений второго порядка и вообще потребовалось бы множество программ. Порядок, принятый в популярных пакетах, гораздо удобнее — но он приводит к ошибкам при встрече с «особыми» системами, например — с системой (21) при т = 1.
Пакет MATLAB приведет эту систему к системе уравнений первого порядка, выдаст ее решение и не заметит, что это решение не имеет смысла, поскольку даже сколь угодно малое, а значит — неизбежное на практике отклонение параметра т от расчетного значения т = 1 приведет к коренному расхождению между результатами расчета и реальным поведением объекта, и это может стать причиной аварии и даже катастрофы.
Для того чтобы не получилось подобных ошибок с возможными трагическими последствиями, нужно популярные пакеты прикладных программ дополнить совсем небольшими вспомогательными программами, которые выделят и отсеют «особые» системы уравнений и выделят соответствующие этим системам опасные объекты. Эти опасные объекты следует перепроектировать, изменить их структуру или параметры — изменить так, чтобы математическая модель проектируемого и рассчитываемого объекта перестала быть «особой». Тогда и аварий не будет. Все эти вопросы — и ошибки в пакетах, и методы предотвращения ошибок в расчетах — более подробно рассмотрены в книге [7].
2. Многочисленные расчетные алгоритмы, использующие цепочки эквивалентных преобразований, реализуемые в популярных прикладных программах, могут привести к ошибкам, если хотя бы одно из использованных преобразований изменит чувствительность решений к малым погрешностям округления. Более подробно о возникающих ошибках и несложных методах их предотвращения рассказано в работах [7], [8].
Не меньшее значение имеет и задача вычисления собственных значений (или собственных чисел) различных матриц. К необходимости решать эту математическую задачу приводят многие важные практические проблемы — такие, как вычисление частот собственных колебаний различных технических объектов, проверка условий возможного опасного резонанса между внешними воздействиями и собственными колебаниями, проверка устойчивости и многие другие проблемы. Возникают эти проблемы и в строительной механике, и при проверке прочности и устойчивости различных деталей и устройств, и в автоматическом управлении.
Поэтому во всех пакетах прикладных программ имеются широко и часто используемые программы вычисления собственных значений (собственных чисел). Однако при встрече с «особыми» системами уравнений (которые являются математическими моделями «особых» объектов), эти программы ведут пользователя к ошибочным заключениям: для «особых» объектов вычисление собственных значений смысла не имеет, поскольку они могут коренным образом измениться при малых, неизбежных на практике, неточностях в исходных данных. Поэтому любое проектное решение, принятое на основе вычисленных для «особых» объектов их собственных значений, может стать причиной последующих аварий и катастроф.
Поэтому пакеты прикладных программ обязательно должны быть дополнены небольшими дополнительными программами, которые выделяли бы «особые» системы уравнений, «особые» объекты, и предупреждали бы об этом пользователей компьютера. Эта дополнительная программа может, например, высветить на мониторе компьютера предостерегающую надпись: «Вы ведете расчет «особого» объекта, поведение которого может сильно меняться при малых неточностях в исходных данных. Советуем изменить параметры или структуру объекта и повторить расчет».
Виды «особых» матриц, для которых собственные значения очень чувствительны к малым неточностям исходных данных, и методы выделения «особых» матриц и «особых» объектов описаны в книгах [2, 3, 7].
3. В пакетах прокладных программ широко используются разнообразные алгоритмы, § 12. Опасные ошибки, обнаруженные в популярных пакетах прикладных программ, используют цепочки эквивалентных преобразований математической модели рассчитываемого объекта. При этом не уделяется должного внимания тому, что если хотя бы одно из использованных преобразований изменит чувствительность решений к малым неточностям исходных данных, или к погрешностям округления, то все решение окажется ошибочным. Примеры и методы предотвращения подобных ошибок исследовались Б. Г. Чертковым и рассмотрены в публикациях [7, 8].
4. Пакеты прикладных программ обязательно включают в себя программы вычисления решений систем линейных алгебраических уравнений различных порядков, поскольку к необходимости решать такие системы приводят очень многие практические задачи.
Простейшие системы уравнений — такие, например, как система
1,02х + у = 1,04 (22)
Х + У = 1 (23)
легко решаются вручную, но в практических задачах часто приходится иметь дело с системами, состоящими из двадцати, сорока и более уравнений, и здесь уже без компьютера и хорошей программы не обойтись. Применяемые программы решения систем уравнений, входящие в пакеты, используют, как правило, преобразования уравнений. Поскольку эти преобразования, разумеется, эквивалентны, то они позволяют вычислить правильные, истинные значения решений. Но многие важные свойства решений и в том числе — чувствительность решений к неизбежной ограниченной точности исходных данных — использованные эквивалентные преобразования могут изменить. Все это удобно показать на простом примере системы уравнений (22)—(23), решениями которой являются числа х = 2, у = -1 (что легко проверить подстановкой х = 2, у = — 1 в уравнения (22)—(23)).