Расследование и предупреждение техногенных катастроф. Научный детектив | страница 36



уравнений первого порядка, а за «домысливание» мы не отвечаем.

Хотя это только «версия», но возможно, что так все и было (подробнее о данном вопросе — в [3] и в [12]).

§ 12. Опасные ошибки, обнаруженные в популярных пакетах прикладных программ (MATLAB, Mathcad и других). Методы предотвращения ошибок

В последние годы для различных расчетов все шире используются популярные пакеты прикладных программ — пакеты MATLAB, Mathcad и многие другие. В ходе исследования, проведенного в СПбГУ, в этих пакетах были обнаружены ошибки. Эти ошибки можно исправить, и их очень нужно исправить, поскольку на основе этих пакетов производятся миллионы расчетов, в том числе и очень ответственных расчетов, поэтому цена ошибки может быть велика, ценой может стать техногенная катастрофа. Рассмотрим эти ошибки.

1. При численном решении систем дифференциальных уравнений первым этапом решения во всех этих пакетах является приведение исходной системы к системе n уравнений первого порядка путем эквивалентных преобразований. На втором этапе отыскивается решение преобразованной системы. Данный подход имеет под собой серьезные основания — он позволяет самые разнообразные системы уравнений решать одной программой. Если же первый этап пропустить, то пришлось бы создавать множество программ — потребовались бы, например, отдельные программы для системы, состоящей из одного уравнения третьего порядка и одного — первого порядка и для системы, состоящей из двух уравнений второго порядка и вообще потребовалось бы множество программ. Порядок, принятый в популярных пакетах, гораздо удобнее — но он приводит к ошибкам при встрече с «особыми» системами, например — с системой (21) при т = 1.

Пакет MATLAB приведет эту систему к системе уравнений первого порядка, выдаст ее решение и не заметит, что это решение не имеет смысла, поскольку даже сколь угодно малое, а значит — неизбежное на практике отклонение параметра т от расчетного значения т = 1 приведет к коренному расхождению между результатами расчета и реальным поведением объекта, и это может стать причиной аварии и даже катастрофы.

Для того чтобы не получилось подобных ошибок с возможными трагическими последствиями, нужно популярные пакеты прикладных программ дополнить совсем небольшими вспомогательными программами, которые выделят и отсеют «особые» системы уравнений и выделят соответствующие этим системам опасные объекты. Эти опасные объекты следует перепроектировать, изменить их структуру или параметры — изменить так, чтобы математическая модель проектируемого и рассчитываемого объекта перестала быть «особой». Тогда и аварий не будет. Все эти вопросы — и ошибки в пакетах, и методы предотвращения ошибок в расчетах — более подробно рассмотрены в книге [7].