Рихтмайер - Принципы современной математической физики, том 1 (Рихтмайер - Принципы современной математической физики), страница 95
Описание файла
DJVU-файл из архива "Рихтмайер - Принципы современной математической физики", который расположен в категории "". Всё это находится в предмете "математика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "математика" в общих файлах.
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 95 - страница
Этим завершается последовательность тех действий, которые составляют один цикл вычислений. Информация, полученная вначале из данных Коши, представляет собой частный случай, для которого область АААА сводится к отрезку осн й, соответствующему /! =О. Поэтому после К циклов вычислений по описанной выше схеме функция будут известны ко всей треугольной областн 1+Я ~К. Упомянутые ранее подпрограммы были сведены в специальный язык программирования, каждая инструкция которого соответствует одной нз формальных операций над степенными рядами. Затем уравнения в частных пронзводных (17.В.1) былн записаны непосредственно на этом языке, причем порядок выполнения действий был именно таким, как описано выше.
Язык этот дает также возможность начать новый цикл после окончания очередного цнкла прн /'<К и прекратить вычнслення прв /г=К. Для про. граммировання правых частей уравнений (!7.В.1) потребовалось чуть менее ста инструкций на этом языке. Использование подпрограмм н специального языка программирования следует рассматривать как нечто большее, чем только удачный эксперимент. Программа в действительности воссоздает н использует рекуррентные соотношения, которые выражают коэффициенты старших членов ряда через коэффициенты младших его членов.
Тяк как мы имеем дело со степенными рядами по двум переменным н с довольно сложной системой четырек нелинейных уравнений в частных производных, то ясно, что этн рекуррентные соотношения должны быть очень сложными. Это соображение подтверждается следующим фактом.' для того чтобы прн помощи этих рекуррентных соотношений вычислить коэффициенты четырех функций течения до десятою порядка, требуется много миллионов арифметических операций.
Вероятно, есть все основания сказать, что выписать этн рекуррентные соотношения (па крайней мере без ошибок) было бы за пределами человеческих возможностей. Поэтому выполнение формальных алгебраических преобразований при помощи ЭВй( является существенной частью практического использования метода степенных рядов Коши — Ковалевской, Е7Х. АРИФМЕТИКА С ПОДСЧЕТОМ ЗНАЧА(ЦИХ ЦИФР Для проведения описанных выше вычислений оказалось необходимым испольэовать так называемую арифметику с подсчетом значащих цифр, причем не просто для того, чтобы иметь некоторую оценку точности результатов, а для того, чтобы вообще получить эти результаты. В такой арифметикедастовернасть вычислений прв выполнении каждой операции контролируется индексом значащих цифр.
Напомним, что во времена ручнога счета, когда результат наждаго арифметического действия записывался на бумаге, было обычным делом подчер- Пригож. н гл. 17. Задача об отсоедингнной ударной голнг 463 кивать в каждом числе ту цифру, которая рассматривалась кзк его последняя значащая цифра. После каждой арифметической операции число значащих цифр результата определялось по значащим цифрам операндов прн помощи простого набора правил.
Действуя так, можно было всегда заметить серьезную потерю точности в длинных вычислениях. Эта процедура считалась существенной частью высококачественных вычислений, н„по-вядимому, удивительно то, что, за очеаь редкнмн исключениями, онз не была реализована на вьюн. слнтельных машинак либо аппаратно, лнбо в математическом обеспечении. Прн решения рассматриваемой задачи были использованы двв тнпа ариф. мегнкн с подсчетом значащих цифр. Они описаны Рнхтмзйером [1957, !960), Греем н Гаррисоном [1959), а также Ашенхерстом и Метрополксом [1959).
В арифметике первого типа каждое число с плавающей точкой представляется тремя величинами: дробной частью (мантиссой) /, порядком г н индексом значащих цифр (разрядов) з; асе онн размещаются в одном машинном слове. Мантисса / такова, что '/, ~ [/ [.< 1, н представляется в виде двоичного чнсла со знаком, имеющего 1 двоичных разрядов (где 1 — величина порядка 40); е — целое число со знаком (скажем,— 200 < г < 200), а з — целое число иэ интервала О ~э ш1. [Некоторая работа была проделана н на машине с десятичной системой счисления, но мы будем пользоваться термннологней двоичной снстемы.[ Тройка (/, г, з) представляет число х=(/ ш 2 г) 2".
(!7.Г.!) В / примерно з предположительно верных цифр. Правила для определения з остаются такими же, какими онн были раньше прн ручном счете. Перед сложением нлн вычитанием двух чисел то нз ннх, у которого порядок меньше, денормализуется. Это означает, что если йг — разность порядков этих чисел, то число (/, е, з) с меньшим порядном заменяется на (/', г', з), где /'=2 е'= г+Ьг, ау=лип(з+Лг, /), Теперь оба числа имеют одинаковый порядок н дробные части можно сложить н вычесть.
Получнвшаяся новая дробная часть, скажем /,, лежит в интервале — 2 < /г < 2, а новый индекс значащих цифр зт полагается равным наименьшему кз тех двух индексов, которые были перед сложением нлн вычитанием. Наконец, результат нормализуется: если ! ~[/т[ < 2, то /ы г, н з, заменяются на т/г/м г +1, ппп (з +1, 1), а еслн [/, ) < г/г, то /г сдвигается влево относительно двоичной точки н одновременно гг н зт уменьшаются на 1 прв каждом сдвиге на одну позицию, пока [/г [ не попадет в интервал [т/з, 1) нлн пока зг не станет равным нулю в процессе сдвига — в последнем случае гт уменьшится лишь настолько, насколько уменьшился зь [Результат вида х=(/, г, 0) вполне возможен.
Он представляет собой близкое к нулю число с(мультнплнкатнвной) неопределенностью — ш 2", и эту неопределенность нужно учитывать, если х используется в дальнейших вычислениях. Поэтому значение г имеет вполне определенный смысл. Прн э=О дробная часть /, которая является полностью потерявшим значимость остатком, также полагается равной нулю, чтобы предотвратить возможное (но неверное) возникновение значимости прн сложения двух нлн более таких чисел.) Умножение и деление выполняютсн по обычным для чисел с плавающей точной правилам, а индекс значащих цифр результата принимается равным наименьшему нэ индексов операндов.
Деление на чнсло х, у которого з=О, является неприятной помехой в вычислениях, так как, согласно (!7.Г.!), нуль может быть одним нз возможных значений х. Прн решении задачи об отсоединенной ударной волне использовался н другой тип арифметики с подсчетом значащих цифр, а именно ненормалвзованная арифметика, предложенная Метрополнсом. Вместо индекса значащих цифр з у каждого числа с плавающей точкой спереди ставится столько нулей, чтобы все оставшиеся цифры были значащими. [Иначе говоря, после этих первых нулей идет известное чнсло гарантированных цифр (в пределе вся полноразрядная мантисса), на которых еще не сказались ошибки округления.
Но зто лишь другая точка эренна на то 'же самое — в обоих случаях на машанв Ге. 17. )(елинедные задачи: гидрадинамика будут получаться одни и те же результаты.) При таком подходе не нужна нормализация после сложения или вычитания. После умножения или деления результат, который находится в регистре двойной длины, сдвигается так, чтобы впереди было столько нулей, сколько их было у наименее точного иэ операндов, после чего получается соответствующий порядок.
Оба типа арифметики оказались эффективными средствами для работы со степеннымн рядами. Элементарные примеры показывают, что если в процессе вычислений величина х полностью теряет значимость (в это происходит независимо от того, применялась арифметика с подсчетом значащих цифр или нет), то последующие величины, которые зависят от х, могут иметь не только неверные цифры в мантиссе, но и неверный порядок. Предположим, что е х вычисляется при х=20 при помощи степенного ряда для е-". (В действительности это было бы неразумно, так как существует много лучших способов вычисления е ", но в общем случае наилучшие способы решения очень сложных задач неизвестны.) Пусть вычисления выполняютси с десятью верными десятичными знаками.
При л порядка 20 частная сумма ряда 5 превышает по модулю 1О', а ошибка округления составляет примерно 1О з и не может быть уменьшена путем добавления следующих членов ряда, даже если они берутся с повышенной точностью. Следовательно, с ростом л частная сумма дч не стремится к величине е-зе, которая меньше 1О-з, а остается значительно больше последней (примерно в 1Оз раз), Теперь предположим, что функция /(г) получается как сумма ряда ~ачг „ коэффициенты а„которого сами получаются в результате длинных вычислений, являющихся причиной все большей потери значимости с ростом л. Тогда при л, большем некоторого ле, все цифры у а„могут стать незначащими, а неопределенные множители могут сильно возрастать с ростом л.
При таких обстоятельствах ряд ~~~~а„г" оказывается полусходящимся: ошибка частной суммы как приближения к 7(г) убывает до некоторых пор с добавлением новых членов, но затем она начинает возрастать. Поэтому важно прекратить суммирование при л ш ле Как было установлено, степенные ряды по х и у для рассматриваемой задачи обладают тем свойством, что коэффициенты иуа и т. д. остаются значащими з области Я плосности 1', Ф, ограниченной осями / и З и не очень четко определяемой кривой, которая, грубо говоря, отсекает треугольнин. Следовательно, ряд ~ иуахтуе должен суммироваться только в Я.
При проведенин этих сложных вычислений невозможно определить Ач заранее, однако при наличии арифметики с подсчетом значащих цифр это делается очень просто. Суммирующая ряд подпрограмма проверяет индекс значащих цифр з у каждого ноэффициента иуз и не включает в сумму соответствующий член, если е=О. После реализации этого приема в программе точность получаемых результатов неожиданно резко возросла: от примерно одного десятичного знака до примерно шести десятичных знаков для разумно малых х и у (меньших примерно половины расстояния между ударной волной и телом).