1626435587-51311eae4652e8ad616b5bdef025cbb3 (844239), страница 2
Текст из файла (страница 2)
Сложность грамотного использования численных методов является оборотной стороной их кажущейся простоты: компьютер почти всегда (за редким исключением зациклившейся программыили выхода за пределы разрядной сетки) выдаёт какое-то число. Он незнает сомнений и всегда даст ответ — вопрос лишь виэтого ответа.
Современный компьютер, несмотря на огромную по человеческим меркам скорость арифметических вычислений,не более «умён», чем калькулятор, арифмометр или логарифмическаялинейка. Вряд ли кто-то из читателей будет всерьёз возлагать на калькулятор ответственность за правильность полученного результата —очевидно, что если в вычислениях возникла ошибка, то практическинаверняка это произошло по вине человека, неверно нажавшего клавишу или использовавшего неточные формулы и/или исходные данныедля вычислений. Аргументированный и убедительный ответ на вопросмоделированиякритическое отношение к получаемым результатамправильноститочности7о правильности выдаваемых программой результатов всегда остаётсяза человеком, тогда как компьютер в расчётах — не более чем удобныйинструмент, пришедший на смену арифмометрам и логарифмическимлинейкам и существенно расширивший возможности численного решения задач благодаря высокой скорости вычислений.Заметим, что вопросы о правильности и точности полученного решения порой оказываются весьма непростыми.
В этой связи показателен пример из воспоминаний академика С. К. Годунова1 («О пользеложных гипотез», Эксперт Сибирь, № 32 (174), 3 сентября 2007 г.):Однажды в Институт математики им. В. А. Стеклова приехал Лев Ландау (через 11 лет — нобелевский лауреат пофизике). Собрал математиков, вычислителей, раздал привезённые с собой графики и расчёты с вычислениями решений обыкновенных уравнений и попросил решить задачу:«Мне надо знать, сколько тут знаков.
Говорят, что шесть,а я не знаю, есть они здесь или нет». Началось обсуждение. Среди дискутирующих — Израиль Гельфанд, Константин Семендяев. Кто говорит — семь знаков, кто — восемь, иабсолютно все утверждают, что за шесть можно ручаться.Лев Давидович спрашивает почему — ему отвечают, потомон вынимает из своего кармана скомканный лист и объявляет: «А у меня совсем другое, но точное аналитическое решение!». У публики, рассказывает Сергей Константинович,был шок. Никто не заметил то «тонкое, узенькое место»,которое очень сильно влияло на решение задачи.
«По существу, все были опозорены», — заключает Годунов.Таким образом, написание и запуск программы являются лишь первым шагом на пути решения задачи. Исследование полученных результатов, сравнение с аналитическими решениями в тех областях значенийпараметров, где они могут быть получены, поверка качественного поведения результатов физическими соображениями и здравым смыслом,апостериорная оценка точности полученного численного решения также являются совершенно необходимыми этапами численного решениязадачи.
Зачастую оставаясь в тени или находя своё отражение лишь в1 Годунов Сергей Константинович — советский и российский математик и механик, академик РАН. Внёс значительный вклад в развитие общей теории разностныхсхем, применяемых при решении дифференциальных уравнений. Кавалер ордена«Знак почёта» и двух Орденов Трудового Красного Знамени, Ленинской премии,премий АН СССР им.
А. Н. Крылова и РАН им. М. А. Лаврентьева. С 1969 по1997 гг. — профессор кафедры дифференциальных уравнений ММФ НГУ, с 1977 по1989 гг. — зав. кафедрой.8предельно кратких ремарках в научных статьях и монографиях, именно эти этапы решения сильнее всего отличают профессионала от начинающего заниматься численным моделированием.Другой аспект профессионализма физика-вычислителя связан с оптимальным выбором численных алгоритмов для обеспечения высокойскорости расчётов при требуемом уровне точности. Хотя производительность аппаратных вычислительных средств демонстрирует поистинне ошеломляющий рост начиная с середины прошлого столетия,методы решения численных задач также непрерывно совершенствуются. Так, например, в своей монографии [A1, с. 343] Джон Райс отмечает,что для трёхмерных эллиптических уравнений повышение быстродействия за счёт разработки новых методов вычислений в период с 1945 до1978 гг.
превышает прогресс быстродействия электроники! Однако даже безотносительно последних достижений в области вычислительнойматематики, которые далеко выходят за рамки данного курса, следует помнить, что использование неэффективных методов способно намного порядков величины уменьшить быстродействие расчётов и дажепривести начинающего исследователя к ошибочному выводу о «нерешаемости» стоящей перед ним задачи.Ключевая роль в приобретении необходимых компетенций в области вычислительной физики, безусловно, принадлежит практическимзанятиям в терминальном классе.
На лекциях в первую очередь будет рассмотрен круг базовых вопросов, мимо которых вряд ли удастсяпройти любому, кто вынужден будет прибегнуть в своей работе к использованию численных методов решения задач: поиск корней, квадратурные формулы, конечные разности, интегрирование обыкновенныхдифференциальных уравнений, ряд базовых задач линейной алгебры.Кроме того, программа курса вкючает ряд относительно простых примеров более специфических задач и методов их решения, которые могут не иметь непосредственного отношения к задачам дипломной практики и последующей работе в тех или иных областях. Тем не менее, мынадеемся, что решение предложенных задач окажется полезным, позволив приобрести навыки отладки программ и верификации результатов, на практике познакомиться с рядом базовых понятий, таких какаппроксимация, сходимость, порядок точности и устойчивость численных схем.Для численного решения задач в компьютерном классе рекомендуется использовать язык Си или Си++.
Выбор Си в качестве инструмента обусловлен его высокой эффективностью, переносимостью на разные платформы, наличием большого числа библиотек и компиляторов, в том числе и бесплатных. Разумеется, существует значительное9число альтернатив, включая как различные языки программирования(Fortran, Java, JavaScript, Python и другие), число которых продолжаетрасти, так и специализированные среды для численного моделированияи вычислений (MatLab, MathCad, Mathematica, COMSOL и т. п.) Нетоднозначного ответа на вопрос, что лучше использовать для вычислений — оптимальное решение зависит от задачи, личных предпочтенийи опыта использования тех или иных инструментов.
Делая свой выбор в пользу языка Си, мы надеемся, что читатель при желании сможет впоследствии познакомиться с различными средами вычислений иязыками программирования самостоятельно либо на соответствующихспецкурсах. Поскольку учебный план включает изучение основ Си намладших курсах, в данном пособии мы не будем касаться вопросов программирования (за исключением ряда полезных советов — см. с. 109),отсылая читателей к руководствам [1] и [C2]. Для углубленного изучения Си++ рекомендуем Интернет-ресурсы [C3, C4], официальныйстандарт языка [C5] и книгу [C6].1.
Построение графиков в gnuplotКак уже отмечалось выше, в отличие от аналитического решения,позволяющего непосредственно увидеть зависимость исследуемых величин от параметров задачи, использование численных методов предполагает многократное повторение решения с разными наборами параметров для исследования таких зависимостей.
Помимо прочего, такойподход сопряжён с необходимостью анализа большого количества данных, выдаваемых компьютерной программой, что обуславливает важность грамотного представления результатов. Человеческий мозг гораздо быстрее и легче воспринимает графическую информацию — дляпонимания качественных свойств полученного численного решения целесообразно использовать графики вместо таблиц значений в качестверезультата работы программы.К настоящему времени разработано огромное количество программдля построения графиков, анализа и обработки численных зависимостей и таблиц.
Опять-таки среди них нет одной «лучшей», которуюможно было бы рекомендовать на все случаи жизни — оптимальныйвыбор зависит от задачи и предпочтений конкретного пользователя.Для использования в компьютерном практикуме мы рекомендуемкросс-платформенную программу gnuplot. Её можно бесплатно скачатьс официального сайта [A2]. Относительно небольшой размер программы и возможность работы без установки под Windows позволяют всегда10иметь gnuplot под рукой на съёмном USB-носителе. Также к достоинствам gnuplot можно отнести относительную простоту использования,возможность сохранять графики в различных форматах, построениедвумерных и трёхмерных графиков как с использованием таблиц значений из текстового файла или потока, так и по заданному символьному выражению.
Полезной особенностью gnuplot является возможностьработы в качестве калькулятора, поддерживающего пользовательскиепеременные и функции. Освоение базового функционала программыдля решения задач учебного курса вряд ли отнимет у читателя много времени и сил. Однако возможности gnuplot несравненно шире —при наличии опыта с помощью этой небольшой бесплатной программыможно обрабатывать данные и строить высококлассные графики дляпубликаций в научных журналах и книгах.
В частности, все графикидля иллюстрации данного учебного пособия выполнены в gnuplot.Многие читатели могут усомниться в необходимости знакомства сgnuplot, предпочтя продолжить использование для построения графиков уже знакомых им программ, таких как Micfosoft Excel, MicrocalOrigin и т. п. В этой связи нужно обратить внимание на ещё одноважное достоинство gnuplot — возможность(программируемого) построения графиков.
Анализ большого количества результатовчисленного моделирования зачастую требует построения значительного числа однотипных графиков, полученных при разных наборах параметров задачи, — десятков, а иногда и нескольких сотен. Построениестоль большого количества графиков в Excel или Origin потребует значительных затрат времени и рутинной работы, выполнение которойразумно поручить компьютерной программе, сохранив свои силы длярешения более творческих задач.Таким образом, если читатель знаком с программами, поддерживающими пакетный режим построения графиков, мы оставляем емусвободу выбора инструментов из числа таких программ.