- •Министерство образования и науки Российской Федерации
- •1. Учет погрешностей приближенных вычислений
- •1.1. Источники и классификация погрешностей результата численного решения задачи
- •1.2. Приближенные числа. Абсолютная и относительная погрешности
- •1.2.1. Абсолютная и относительная погрешности
- •1.2.2. Правила записи приближенных чисел
- •1.2.3. Округление
- •1.3. Погрешности арифметических операций над приближенными числами
- •1.4. Особенности машинной арифметики
- •1.4.1. Системы счисления
- •1.4.3. Представление вещественных чисел
- •1.4.4. Арифметические операции над числами с плавающей точкой
- •1.4.5. Удвоенная точность
- •1.4.6. Вычисление машинного эпсилон
- •2. Прямые методы решения систем линейных алгебраических уравнений
- •Постановка задачи
- •2.2. Норма вектора
- •2.3. Скалярное произведение
- •2.4. Абсолютная и относительная погрешность вектора
- •2.5. Сходимость по норме
- •2.6. Норма матрицы
- •2.7. Обусловленность задачи решения системы линейных алгебраических уравнений
- •2.8. Метод Крамера
- •2.9. Матричный метод
- •2.10. Метод Гаусса
- •2.10.1. Схема единственного деления
- •2.10.4. Случай, когда выбор главных элементов не нужен
- •2.10.5. Масштабирование
- •2.12. Решение слау с помощью lu-разложения
- •2.13. Обращение матриц с помощью lu-разложения
- •2.14. Разложение симметричных матриц. Метод Холецкого (метод квадратных корней)
- •2.15. Метод прогонки
- •2.16. Метод исключения Жордана (Гаусса–Жордана)
- •2.17.1. Метод вращений
- •2.17.2. Метод отражений
- •2.18. Итерационное уточнение
- •2.19. Сингулярное разложение матрицы
- •2.19.1. Переопределенная система
- •2.19.2. Сингулярное разложение матрицы
- •2.19.4. Дополнительная информация о сингулярном разложении
- •2.20. Дополнительные замечания
- •3. Итерационные методы
- •3.1. Классические итерационные методы и релаксация
- •3.1.1. Методы Якоби и Гаусса–Зейделя
- •3.1.2. Ускорение сходимости релаксационных методов
- •3.2. Проекционные методы и подпространства Крылова
- •3.2.1. Общий подход к построению проекционных методов
- •3.2.2. Случай одномерных подпространств k и l
- •3.2.3. Два выбора подпространств
- •3.2.4. Подпространства Крылова
- •3.2.5. Базис подпространства Крылова. Ортогонализация Арнольди
- •3.2.6. Биортогонализация Ланцоша
- •3.3. Предобусловливание
- •3.3.1. Виды предобусловливания
- •3.3.2. Выбор структуры разреженности
- •3.4. Методы крыловского типа
- •3.4.1. Метод полной ортогонализации
- •3.4.2. Метод обобщенных минимальных невязок
- •3.4.3. Метод бисопряженных градиентов
- •3.4.4. Свободный от транспонирования метод квази-минимальных невязок
- •3.4.5. Стабилизированный метод бисопряженных градиентов
- •3.4.6. Метод квази-минимальных невязок
- •3.4.7. Квадратичный метод сопряженных градиентов
- •3.4.8. Симметричный случай
- •4. Использование итерационных методов при решении слау с плотной матрицей в анализе проводных антенн
- •4.1. Сравнение итерационных методов без использования предобусловливания
- •4.2. Сравнение итерационных методов при использовании предобусловливания
- •4.3. Оптимизация допуска обнуления при решении слау итерационным методом BiCgStab с предобусловливанием
- •4.4. Ускорение решения слау за счет снижения точности вычисления
- •Сравнение способов предфильтрации
1.2.2. Правила записи приближенных чисел
Пусть приближенное число a* задано в виде конечной десятичной дроби:
a* = αnαn–1…α0.β1β2…βm.
Значащими цифрами числа a * называют все цифры в его записи, на-чиная с первой ненулевой слева.
Пример 1.1. У чисел a* = 0.0103 и a* = 0.0103000 значащие цифры подчеркнуты. Первое число имеет три, а второе – шесть значащих цифр.
Значащую цифру числа a* называют верной, если абсолютная по-грешность числа не превосходит единицы разряда, соответствующего этой цифре.
Пример 1.2. Если Δ′( a*) = 2⋅10–6, то число a* = 0.0103000 имеет четыре верные значащие цифры (они подчеркнуты).
Следует отметить, что широко распространенной ошибкой при записи приближенных чисел является отбрасывание последних значащих нулей (даже если они представляют собой верные цифры). Верная цифра при-ближенного числа, вообще говоря, не обязана совпадать с соответствую-щей цифрой в записи точного числа. Таким образом, термин «верная цифра» не следует понимать буквально (см. пример 1.3).
Пример 1.3. Пусть a = 1.00000, a * = 0.99999. Тогда Δ′(a*) = 0.00001 и у числа a* все подчеркнутые цифры – верные, хотя и не совпадают с соот-ветствующими цифрами числа a.
Количество верных значащих цифр числа тесно связано со значением его относительной погрешности. Приведенные ниже утверждения позво-
11
ляют в дальнейшем связывать точность числа с количеством его верных значащих цифр и трактовать потерю точности как потерю верных цифр.
Утверждение 1.1.
1. Если число a* содержит N верных значащих цифр, то справедливо
δ′(a*) ≤ (10N−1 − 1)−1 ≈ 10−N+1.
2. Для того чтобы число a* содержало N верных значащих цифр, дос-таточно чтобы было выполнено неравенство
δ′(a*) ≤ (10N + 1)−1 ≈ 10−N.
3. Если число a* имеет ровно N верных значащих цифр, то
10−N−1 ≤ δ′(a*) ≤ 10−N+1
и таким образом δ′(a*) ≈ 10−N.
Пример 1.4. Что можно сказать об относительной погрешности числа a*, если известно, что оно содержит три верные значащие цифры?
В силу утверждения 1 имеем δ′(a*) ≤ 10−2 = 1%.
Пример 1.5. С какой относительной точностью следует найти число a*, чтобы верными оказались шесть его значащих цифр?
Из утверждения 2 следует, что достаточно найти a* с относительной точностью ε ≈ 10−6.
Заметим, что границы абсолютной и относительной погрешностей принято записывать с одной или двумя значащими цифрами. Большая точность в записи этих величин, как правило, не имеет смысла, так как обычно они являются довольно грубыми оценками истинных значений погрешностей, и, кроме того, для практического использования часто бывает достаточно знать только их порядок.
Пример 1.6. Информация о погрешности вида δ′(a*) ≈ 0.288754⋅10−5 практически равноценна информации δ′( a*) ≈ 3⋅10−6, причем последняя вызывает больше доверия. Скорее всего, вполне удовлетворительной в данном случае является запись δ′(a*) ≈ 10−6.
Неравенство (1.3) эквивалентно двойному неравенству a* − Δ′(a*) ≤ a ≤ a* + Δ′(a*)
и поэтому тот факт, что число a* является приближенным значением чис-ла a с верхней границей абсолютной погрешности Δ′(a*) (с абсолютной точностью ε = Δ′(a*)), принято записывать в виде
12
a = a* ± Δ′(a*).
Как правило, числа a*и Δ′(a*) указываются с одинаковым числом цифр после десятичной точки.
Пример 1.7. Пусть для числа a известны приближенное значение a* = 1.648 и граница абсолютной погрешности Δ′(a*) = 0.002832. Тогда можно записать a = 1.648 ± 0.003. Записи вида a = 1.648 ± 0.002832 или a = 1.648 ± 0.1 являются неестественными.
Из равенства (1.4) следует, что значение a заключено примерно между a*(1 − δ′(a*)) и a*(1 + δ′(a*)). Поэтому тот факт, что число a* является при-ближенным значением числа a с границей относительной погрешности
δ′(a*) (с относительной точностью ε = δ′(a*)), принято записывать в виде a = a*(1 ± δ′(a*)).
Пример 1.8. Оценим точность часто используемого в простейших расчетах приближения π* = 3.14 к числу π. Поскольку π = 3.14159, то π − π* = 0.00159, следовательно, можно принять Δ′(π*) = 0.0016 и δ′(π*) ≈
≈ 0.0016 / 3.14 ≈ 0.00051 = 0.051%. Итак, π = 3.14(1 ± 0.051%).
Если число a* приводится в качестве результата без указания значения погрешности, то принято считать, что все его значащие цифры являются верными. Начинающий пользователь часто слишком доверяет выводи-мым из компьютера цифрам, предполагая, что вычислительная машина придерживается того же соглашения. Однако это совсем не так: число может быть выведено с таким количеством значащих цифр , сколько по-требует программист заданием соответствующего формата. Как правило, среди этих цифр только небольшое число первых окажутся верными, а возможно верных цифр нет совсем. Анализировать результаты вычисле-ний и определять степень их достоверности совсем не просто.