Fedorenko-RP-Vvedenie-v-vychislitelnuyu-fiziku (810773), страница 5
Текст из файла (страница 5)
Реализуя метод продолжения по параметру, часто сталкиваются с тем, что график х(Х) имеет 5-образную форму, т.е. имеется несколько ветвей решения уравнения (г(х, А) = О. Отслеживам одну из них, достигают некоторой точки А(, за которую даннам ветвь х(А) не продолжается, — решения уравнения Г(х, А+ (ьА) = О, близкого к х(А), не существует. Внешне это проявляется в вырождении матрицы г"„, т.е.
де( Г„-» О. Для продолжения решения задачи нужно двигаться по Х в обратном направлении, перейдя, однако, на другую ветвь функции х(А). Технически зто реализуется следующим образом: л-мерный вектор х и скалярный параметр Х обьединяются в единый (л + 1)-мерный вектор у = (у„..., у„,). Специальным образом на каждом шаге процесса продолжения выбирается одна из компонент у(, которой дается предписанное приращение; остальные находятся решением системы л нелинейных уравнений.
Выбор номера эгей ведущей компоненты основан на анализе предшествующих шагов, Рекомендуется выбирать в качестве ведущей ту компоненту у(, эволюция которой в процессе продолжения не дает оснований предположить возможное изменение направления ее движения. Признаком приближения точки поворота длм компоненты у,. может служить, например, уменьшение ее приращения за один шаг. В 2, Численное дифференцирование Практическое применение приведенных в й 1 формул численного дифференцирования связано с необходимостью выбора подходящего шага л.
Возникающие здесь проблемы рассмотрим длм простоты на примере функции талька одного переменного У(х). Нас интересует погрешность формулы численного дифференцирования. Тривиальный («школьный») ответ «чем меньше л, тем точнее формула численного дифференцирования» основан на известном соотношении ~Ч ) У(х+Ю-У(х) численное днфрегенцигоелние Однако, как мы увидим, при реальных вычислениях ситуация сложнее. Пусть функция /(к) гладкая, но, работая на ЭВМ, мы имеем дело не с /(х), а с ее машинным представлением /"(х) = /(х)(1 + а(х)), где а(х) — относительная погрешность вычисления /. Разумеется а зависит от к, но для всех интересующих вас х пусть имеется оценка ~ а(х) ~ в а м 1.
Величина а может быть связана хотя бы с конечным числом знаков в представлении / в памяти Э ВМ (аж10 )а на БЭСМ-б, а 10 ~ на ЕС, ащ10 и на ЕС при двойной точности). Но если /(х) вычисляется достаточно сложно, погрешнос)ь а может быть и существенно большей величиной, не всегда допускающей хорошую оценку. Таким образом, используя численное дифференцирование, вычисляем /"(х+Л)-/ са) /(х+Л) — /(х) + а~ а) Л Л / Л Разложим в ряд Тейлора: /(х + Ь) = /+ Ь /„+ — "~~ /„„+ О(Ьз), Итак, / (х+Л) — / (х) / ( ) 1 Л / 1 О(Ьа) + О ы / Погрешность численного дифференцирования состоит из двух частей. Первая из них связана с заменой оператора дифференцирования оператором конечной разности. Она имеет величину О(/„„Ь) и стремится к нулю при Ь - О.
Степень Ь в погрешности аппроксемации называют порядком аппроксимации Вторая часть погрешности связана с неточностью вычисления /. Она имеет величину О(а//Ь) и при Ь- 0 стремится к бесконечности. Полная погрешность численного дифференцирования есть сумма погрешностей аппроксимации и округления: 0.5Ь/„„+ 2а//Ь. Легко вычислить шаг Ьр, при котором полная погрешность мини.о~ д,а, п)еп,,г.э рн ~...: ~, ж, числяется через а и /„„, точные значения которых обычно неизвестны. Существуют достаточно надежные алгоритмы численного дифференцирования, основанные на вычислении большего числа значений /.
По этим значениям вычисляются варианты разноспюй производной, из сравнений которых между собой отбирается наиболее достоверное значение. Надежность подобных алгоритмов оплачивается большим объемом вычислений. Часто, например при реше- основы еычнслнтгльноя млтемлтнкн [Ч.
( 26 нин уравнений методом Ньютона, нет нужды в особенно высокой точности численного дифференцирования н не требуется очень точно определять 6 . В частности, автор иногда использовал простой способ проверки того, является ли данное Ь подходящим для численного дифференцирования. Этот способ основан на подсчете числа «сокращающихся знаков».
Поясним его иа примере численного дифференцирования функции сх в точке х =!. Пусть сх вычисляется с Таблица 3 семью верными знаками. Вычислим ее разностную производную с шагом Ь, равным 0.1, 0.01, 0.00!, 0.0001. В табл. 3 пояснения требует только последняя строка: Л вЂ” это число сократившихся главных знаков, Таким образом, наилучший результат получается при сокращении половины знаков. В общем случае число «сократившихся знаков» при численном дифференцировании можно оценивать величиной ) У(хч-Ы -У(х) ! е гехтет и ~ ~ Заметим, что в этом простом примере мы сталкиваемся с одной из самых грозных опасностей в приближенных вычислениях: если результат получается при вычитании двух очень близких друг к другу величин, происходит резкая потеря точности, относительная погрешность результата сильно возрастает.
Это явление носит название «сокращение знаков» и доставляет массу неприятностей. Оценим погрешность формулы центральных разностей: «у у" (х -ь Л) — у" (х — Л) у(х+ Ы вЂ” у(х — Л) ) е ах 2Л 2Л + О ~Л ~) . Разлагая в ряд Тейлора У(х + Ь) и /(х — Л), получаем 2 (х+Л)-/ (х — Л) у т )+Л у +Отав)+О зг) численное диоовгвннигооАниз Главный член погрешности аппроксимации имеет второй по /( поря- док, а оптимальный шаг Таким образом, формула центральной разности точнее формулы односторонней разности, но требует большего шага й (при одинаковых шагах сокращается больше знаков).
Например, еьоо( еоооо 2 721001 2 715565 = 0 005436, (ех)„ж 2.718 (т.е. получается та же точность, что и в формуле односторонней разности). При /з = 0.01 имеем е'о' — еото = 2.745601 — 2.691234 = 0.054367, (е")„2.71835. В дальнейшем нам часто придется использовать формулу приближенного вычисления второй производной Ез/ /(х+А) — 3/(х)+/(х-О) о хо дз Оценим точность этой формулы, Очевидно, погрешность округления есть (4о//(з)/.
Вычислим погрешность аппроксимации, используя разложение в ряд Тейлора /(х + Л) н /(х — /)). После простых вычислений найдем полную погрешность численного дифференцирования: дз н оптимальный шаг: /з () 48 о///(~ () п~ Вообще, из всех полученных выше формул для Ао видно, что «наилучший шаг» тот, при котором погрешности аппроксимации н округления совпадают (близки). Вычисление второй производной методом численного дифференцирования требует еще большего шага. Нетрудно построить разиостные формулы вычисления производных третьего и четвертого порядков: и' / /(х+й) — 3/(х)+3/(х — л)-/(х — 2л) ,( з аз ~'У /(х+За) — 4/(х+Л)+О/(х)-4/(х-Д)+ (хЧ-ЗД) нх4 д' Пользоваться ими нужно, конечно, с большой осторожностью по причинам, понятным нз приведенного выше обсуждения.
основы вычислительной мвтемлтики ф 3. Интерполяция функций Приведем некоторые начальные сведения из теории интерполяции. Этот классический аппарат вычислнтелъной математики в последние годы стал развиваться и использоваться в несколько ином направлении (по сравнению с его назначением в трудах классиков). Мы постараемся дать представление н об этих новых аспектах аппарата интерполяции. Естествознание и, особенно, математическая физика обычно имеют дело с задачами, сформулированными в терминах функций; нужно найти некоторую функцию У(г), удовлетворяющую тем или иным условиям, уравнениям. Произволъная («нзмеримаяь) функция полностью определяется «континуумом» информации.
К счастью, мы не имеем дела со столь общими объектами, нас интересуют более узкие классы функций. Непрерывная функция определяется «счетнойь информацией: достаточно знать ее лишь на счетном множестве точек, всюду плотном на том интервале (множестве), где она нас интересует. Однако при реааизации расчетов на ЭВМ мы располагаем конечным множеством чисел, причем и числа-то имеют конечное число знаков.
Таким образом, мы располагаем лишь конечной информацией о функции и, следовательно, наши знания о решении какой-то задачи принципиально не полны. Естественно возникает вопрос о способах представления функции на ЭВМ, о потере информации, о возможно более рациональных способах представления специальных классов функций. Ограничимся одним способом представления функций — сеточным или, иначе, табличным. Это связано с той особой ролью, которую играет сеточный метод в рассматриваемых нами методах приближенного решения задач математической физики. Начнем с классической задачи интерполяции.
Пусть имеется некоторая функция У(г), заданная на интервале [О, т[. Первая задача состоит в том, чтобы сопоставить этой функции конечный набор чисел, по которому ее можно будет восстановить (конечно, с той илн иной точностъю). Задачу будем решать очень просто. Введем на [О, Т) некоторую сетку Го < Г, с1 < ... < 1,„, 1„Е [О, Т'[, и = О, 1, ..., ЛГ. В частности, ради простоты будем исполъзовать равномерную сетку с шагом т = Т/И: 1„= лт.