Как выбрать лучшее решение.
Команда Феникс, Студенты факультета математики и информатики Гродненский государственный университет имени Янки Купалы
В современном мире, где компьютерные технологии прочно вошли в жизнь человека, роль вычислительных ошибок может быть очень велика. Существуют множество примеров, когда ошибки, возникающие при компьютерных расчетах, приводили к серьезным экономическим, медицинским, строительным, авиационным, этическим и другим проблемам.
Сетевой проект “Крушение иллюзий” поставил перед нами следующие вопросы:
- Как увидеть проблему?
- Как выбор пути решения влияет на результат?
- Почему нужно добиваться высокой точности результата?
Ответы на эти вопросы и помогли нам ответить на основополагающий вопрос проекта: Как выбрать лучшее решение?
С первым вопросом «Как увидеть проблему?», мы встретились на первом этапе проекта, который назывался «Ахиллесова пята».
Нам было дано равенство (a2-b2)/(a-b)=a+b
Необходимо было:
1) решить полученную задачу, перебирая различные значения данных;
2) получить несколько значений данных, доказывающих, что равенство верно не всегда;
3) провести исследование на некоторых числовых промежутках, определяя частоту возникновения противоречивых результатов.
Нами была написана программа для решения данного равенства на языке С++. Выяснилось, что при 100 проверках результат несовпадения - 37%. Примером таких значений могут быть a=1.82 ; b=5.82 .
На этапе «Архимедов рычаг» мы искали ответ на вопрос: Как выбор пути решения влияет на результат?
Для полученного выражения (1-1/4)(1-1/9)(1-1/16)...(1-1/n^2)=(n+1)/(2*n)
Необходимо было:
1) получить решение предложенной задачи с помощью не менее двух различных вычислительных схем;
2) выбрать наиболее точный путь решения.
К данной задаче мы написали программу, по которой определили, что наиболее точное решение при 1000 проверок дает схема слева направо.
На следующем этапе «Нить Ариадны» мы отвечали на вопрос: “Почему нужно добиваться высокой точности результата? Нами было рассмотрено несколько ситуации для того, чтобы ответить на поставленный вопрос. Смоделировали эти ситуации.
В итоге мы сформулировали следующее правило выбора лучшего решения вычислительной задачи.
Ответ:
1) понять, что в контексте данной задачи является лучшим решением;
2) оценить возможно допустимую погрешность при вычислениях данной задачи;
3) продумать, можно ли использовать упрощенное выражение для данных вычислений (чем меньше действий, тем меньше отклонений от точного результата);
4) при операции сложения, лучше выбирать схему "справа налево", при умножении - "слева направо".
Это и будет лучшее решение!