Ошибки вычислений
Материал из MachineLearning.
(викификация, категория) |
|||
Строка 1: | Строка 1: | ||
== Введение == | == Введение == | ||
=== Постановка вопроса. Виды погрешностей=== | === Постановка вопроса. Виды погрешностей=== | ||
- | Процесс исследования исходного объекта методом | + | Процесс исследования исходного объекта методом математического моделирования и вычислительного эксперимента неизбежно носит приближенный характер, так как на каждом этапе вносятся погрешности. Построение математической модели связано с упрощением исходного явления, недостаточно точным заданием коэффициентов уравнения и других входных данных. По отношению к численному методу, реализующему данную математическую модель, указанные погрешности являются '''неустранимыми''', поскольку они неизбежны в рамках данной модели. |
При переходе от математической модели к численному методу возникают погрешности, называемые '''погрешностями метода'''. Они связаны с тем, что всякий численный метод воспроизводит исходную математическую модель приближенно. Наиболее типичными погрешностями метода являются '''''погрешность дискретизации''''' и '''''погрешность округления'''''. <br />При построении численного метода в качестве аналога исходной математической задачи обычно рассматривается её дискретная модель. Разность решений дискретизированной задачи и исходной называется ''погрешностью дискретизации''. Обычно дискретная модель зависит от некоторого параметра (или их множества) дискретизации, при стремлении которого к нулю должна стремиться к нулю и погрешность дискретизации. <br />Дискретная модель представляет собой систему большого числа алгебраических уравнений. Для её решения используется тот или иной численный алгоритм. Входные данные этой системы, а именно коэффициенты и правые части, задаются в ЭВМ не точно, а с округлением. В процессе работы алгоритма погрешности округления обычно накапливаются, и в результате, решение, полученное на ЭВМ, будет отличаться от точного решения дискретизированной задачи. Результирующая погрешность называется ''погрешностью округления'' (''вычислительной погрешностью''). Величина этой погрешности определяется двумя факторами: точностью представления вещественных чисел в ЭВМ и чувствительностью данного алгоритма к погрешностям округления. | При переходе от математической модели к численному методу возникают погрешности, называемые '''погрешностями метода'''. Они связаны с тем, что всякий численный метод воспроизводит исходную математическую модель приближенно. Наиболее типичными погрешностями метода являются '''''погрешность дискретизации''''' и '''''погрешность округления'''''. <br />При построении численного метода в качестве аналога исходной математической задачи обычно рассматривается её дискретная модель. Разность решений дискретизированной задачи и исходной называется ''погрешностью дискретизации''. Обычно дискретная модель зависит от некоторого параметра (или их множества) дискретизации, при стремлении которого к нулю должна стремиться к нулю и погрешность дискретизации. <br />Дискретная модель представляет собой систему большого числа алгебраических уравнений. Для её решения используется тот или иной численный алгоритм. Входные данные этой системы, а именно коэффициенты и правые части, задаются в ЭВМ не точно, а с округлением. В процессе работы алгоритма погрешности округления обычно накапливаются, и в результате, решение, полученное на ЭВМ, будет отличаться от точного решения дискретизированной задачи. Результирующая погрешность называется ''погрешностью округления'' (''вычислительной погрешностью''). Величина этой погрешности определяется двумя факторами: точностью представления вещественных чисел в ЭВМ и чувствительностью данного алгоритма к погрешностям округления. | ||
Строка 29: | Строка 29: | ||
::<p align="center"><tex>\delta(\tilde a)\le\frac{\Delta(\tilde a)}{\alpha_m}10^m\le\frac{10^{m-n+1}}{\alpha_m10^m}\le\frac{1}{\alpha_m10^{n-1}},</tex></p> | ::<p align="center"><tex>\delta(\tilde a)\le\frac{\Delta(\tilde a)}{\alpha_m}10^m\le\frac{10^{m-n+1}}{\alpha_m10^m}\le\frac{1}{\alpha_m10^{n-1}},</tex></p> | ||
где <tex>\alpha_m</tex> - старшая значащая цифра числа. | где <tex>\alpha_m</tex> - старшая значащая цифра числа. | ||
- | <br \>Для двоичного представления чисел имеем | + | <br \>Для двоичного представления чисел имеем <tex>\delta(\tilde a)\le2^{-n}</tex>. |
Тот факт, что число <tex>\tilde a</tex> является приближенным значением числа <tex>a</tex> с абсолютной погрешностью <tex>\Delta(\tilde a)</tex>, записывают в виде | Тот факт, что число <tex>\tilde a</tex> является приближенным значением числа <tex>a</tex> с абсолютной погрешностью <tex>\Delta(\tilde a)</tex>, записывают в виде | ||
Строка 52: | Строка 52: | ||
Причём невязка достаточно сложным образом связана с погрешностью решения <tex>\Delta(X)=\tilde X-X</tex>, причём если невязка мала, то погрешность может быть значительной. | Причём невязка достаточно сложным образом связана с погрешностью решения <tex>\Delta(X)=\tilde X-X</tex>, причём если невязка мала, то погрешность может быть значительной. | ||
- | == Погрешности округлений == | + | == Погрешности округлений при представлении чисел в компьютере == |
Одним из основных источников вычислительных погрешностей является приближенное представление чисел в компьютере, обусловленное конечностью разрядной сетки (см. [[Международный стандарт представления чисел с плавающей точкой в ЭВМ]]). Число <tex>a</tex>, не представимое в компьютере, подвергается округлению, т. е. заменяется близким числом <tex>\tilde a</tex>, представимым в компьютере точно. | Одним из основных источников вычислительных погрешностей является приближенное представление чисел в компьютере, обусловленное конечностью разрядной сетки (см. [[Международный стандарт представления чисел с плавающей точкой в ЭВМ]]). Число <tex>a</tex>, не представимое в компьютере, подвергается округлению, т. е. заменяется близким числом <tex>\tilde a</tex>, представимым в компьютере точно. | ||
- | |||
Найдем границу относительной погрешности представления числа с плавающей точкой. Допустим, что применяется простейшее округление – отбрасывание всех разрядов числа, выходящих за пределы разрядной сетки. Система счисления – двоичная. Пусть надо записать число, представляющее бесконечную двоичную дробь | Найдем границу относительной погрешности представления числа с плавающей точкой. Допустим, что применяется простейшее округление – отбрасывание всех разрядов числа, выходящих за пределы разрядной сетки. Система счисления – двоичная. Пусть надо записать число, представляющее бесконечную двоичную дробь | ||
- | ::<p align="center"><tex>a=\underbrace{\pm2^p}_{order}\underbrace{(\frac{a_1}{2}+\frac{a_2}{2^2}+\dots+\frac{a_t}{2^t}+\frac{a_{t+1}}{2^{t+1}}+\dots)}_{mantissa},</tex></p> | + | ::<p align="center"><tex>a=\underbrace{\pm2^p}_{order}\underbrace{\left(\frac{a_1}{2}+\frac{a_2}{2^2}+\dots+\frac{a_t}{2^t}+\frac{a_{t+1}}{2^{t+1}}+\dots\right)}_{mantissa},</tex></p> |
где <tex>a_j=\{0\\1</tex>, <tex>\qquad (j=1,2,...)</tex> - цифры мантиссы.<br /> | где <tex>a_j=\{0\\1</tex>, <tex>\qquad (j=1,2,...)</tex> - цифры мантиссы.<br /> | ||
Пусть под запись мантиссы отводится ''t'' двоичных разрядов. Отбрасывая лишние разряды, получим округлённое число | Пусть под запись мантиссы отводится ''t'' двоичных разрядов. Отбрасывая лишние разряды, получим округлённое число | ||
- | ::<p align="center"><tex>\tilde a=\pm2^p(\frac{a_1}{2}+\frac{a_2}{2^2}+\dots+\frac{a_t}{2^t}).</tex></p> | + | ::<p align="center"><tex>\tilde a=\pm2^p\left(\frac{a_1}{2}+\frac{a_2}{2^2}+\dots+\frac{a_t}{2^t}\right).</tex></p> |
Абсолютная погрешность округления в этом случае равна | Абсолютная погрешность округления в этом случае равна | ||
- | ::<p align="center"><tex>a-\tilde a=\pm2^p(\frac{a_{t+1}}{2^{t+1}}+\frac{a_{t+2}}{2^{t+2}}+\dots).</tex></p> | + | ::<p align="center"><tex>a-\tilde a=\pm2^p\left(\frac{a_{t+1}}{2^{t+1}}+\frac{a_{t+2}}{2^{t+2}}+\dots\right).</tex></p> |
Наибольшая погрешность будет в случае <tex>a_{t+1}=1, \qquad a_{t+2}=1,</tex>, тогда | Наибольшая погрешность будет в случае <tex>a_{t+1}=1, \qquad a_{t+2}=1,</tex>, тогда | ||
- | ::<p align="center"><tex>|a-\tilde a|\le\pm2^p\frac{1}{2^{t+1}}\underbrace{(1+\frac{1}{2}+\frac{1}{2^2}+\dots)}_{=2}=2^{p-t}.</tex></p> | + | ::<p align="center"><tex>|a-\tilde a|\le\pm2^p\frac{1}{2^{t+1}}\underbrace{\left(1+\frac{1}{2}+\frac{1}{2^2}+\dots\right)}_{=2}=2^{p-t}.</tex></p> |
Т.к. <tex>|M|\ge0,5</tex>, где <tex>M</tex> - мантисса числа <tex>a</tex>, то всегда <tex>a_1=1</tex>. Тогда <tex>|a|\ge2^p\cdot2^{-1}=2^{p-1}</tex> и относительная погрешность равна <tex>\frac{|a-\tilde a|}{|a|}\le2^{-t+1}</tex>. Практически применяют более точные методы округления и погрешность представления чисел равна | Т.к. <tex>|M|\ge0,5</tex>, где <tex>M</tex> - мантисса числа <tex>a</tex>, то всегда <tex>a_1=1</tex>. Тогда <tex>|a|\ge2^p\cdot2^{-1}=2^{p-1}</tex> и относительная погрешность равна <tex>\frac{|a-\tilde a|}{|a|}\le2^{-t+1}</tex>. Практически применяют более точные методы округления и погрешность представления чисел равна | ||
Строка 73: | Строка 72: | ||
::<p align="center"><tex>\frac{|a-\tilde a|}{|a|}\le2^{-t},</tex></p> | ::<p align="center"><tex>\frac{|a-\tilde a|}{|a|}\le2^{-t},</tex></p> | ||
т.е. точность представления чисел определяется разрядностью мантиссы <tex>t</tex>.<br \>Тогда приближенно представленное в компьютере число можно записать в виде <tex>\tilde a=a(1\pm\epsilon)</tex>, где <tex>|\epsilon|\le2^{-t}</tex> – ''"машинный эпсилон"'' – относительная погрешность представления чисел. | т.е. точность представления чисел определяется разрядностью мантиссы <tex>t</tex>.<br \>Тогда приближенно представленное в компьютере число можно записать в виде <tex>\tilde a=a(1\pm\epsilon)</tex>, где <tex>|\epsilon|\le2^{-t}</tex> – ''"машинный эпсилон"'' – относительная погрешность представления чисел. | ||
+ | |||
+ | == Погрешности арифметических операций == | ||
+ | При вычислениях с плавающей точкой операция округления может потребоваться после выполнения любой из арифметических операций. Так умножение или деление двух чисел сводится к умножению или делению мантисс. Так как в общем случае количество разрядов мантисс произведений и частных больше допустимой разрядности мантиссы, то требуется округление мантиссы результатов. При сложении или вычитании чисел с плавающей точкой операнды должны быть предварительно приведены к одному порядку, что осуществляется сдвигом вправо мантиссы числа, имеющего меньший порядок, и увеличением в соответствующее число раз порядка этого числа. Сдвиг мантиссы вправо может привести к потере младших разрядов мантиссы, т.е. появляется погрешность округления. | ||
+ | |||
+ | Округленное в системе с плавающей точкой число, соответствующее точному числу <tex>x</tex>, обозначается через <tex>fl(x)</tex> (от англ. ''floating'' – плавающий). '''Выполнение каждой арифметической операции вносит относительную погрешность, не большую, чем погрешность представления чисел с плавающей точкой''' {{eqref|1}}. Верна следующая запись: | ||
+ | |||
+ | ::<p align="center"><tex>fl(a\box b)=a\box b(1\pm\epsilon),</tex></p> | ||
+ | где <tex>\box</tex> - любая из арифметических операций, <tex>|\epsilon|\le2^{-t}</tex>. | ||
+ | |||
+ | Рассмотрим '''''трансформированные погрешности арифметических операций'''''. Арифметические операции проводятся над приближенными числами, ошибка арифметических операций не учитывается (эту ошибку легко учесть, прибавив ошибку округления соответствующей операции к вычисленной ошибке). | ||
+ | |||
+ | Рассмотрим '''''сложение и вычитание приближенных чисел'''''. '''Абсолютная погрешность алгебраической суммы нескольких приближенных чисел равна сумме абсолютных погрешностей слагаемых'''. | ||
+ | <br \>Если сумма точных чисел равна | ||
+ | |||
+ | ::<p align="center"><tex>S=a_1+a_2+\dots+a_n,</tex></p> | ||
+ | сумма приближенных чисел равна | ||
+ | |||
+ | ::<p align="center"><tex>\tilde S=a_1+\Delta(a_1)+a_2+\Delta(a_2)+\dots+a_n+\Delta(a_n),</tex></p> | ||
+ | где <tex>\Delta(a_i), \qquad i=1,2,...,n</tex>- абсолютные погрешности представления чисел. | ||
+ | <br \>Тогда абсолютная погрешность суммы равна | ||
+ | |||
+ | ::<p align="center"><tex>\Delta(S)=\Delta(a_1)+\Delta(a_2)+\dots+\Delta(a_n).</tex></p> | ||
+ | Относительная погрешность суммы нескольких чисел равна | ||
+ | |||
+ | {{ eqno | 2 }} | ||
+ | ::<p align="center"><tex>\delta(S)=\frac{\Delta(S)}{S}=\frac{a_1}{S}\left(\frac{\Delta(a_1)}{a_1}\right)+\frac{a_2}{S}\left(\frac{\Delta(a_2)}{a_2}\right)+\dots=\frac{a_1\delta(a_1)+a_2\delta(a_2)+\dots}{S},</tex></p> | ||
+ | где <tex>\delta(a_i), \qquad i=1,2,...,n</tex> - относительные погрешности представления чисел. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
== Числовой пример == | == Числовой пример == |
Версия 19:07, 19 октября 2008
Содержание |
Введение
Постановка вопроса. Виды погрешностей
Процесс исследования исходного объекта методом математического моделирования и вычислительного эксперимента неизбежно носит приближенный характер, так как на каждом этапе вносятся погрешности. Построение математической модели связано с упрощением исходного явления, недостаточно точным заданием коэффициентов уравнения и других входных данных. По отношению к численному методу, реализующему данную математическую модель, указанные погрешности являются неустранимыми, поскольку они неизбежны в рамках данной модели.
При переходе от математической модели к численному методу возникают погрешности, называемые погрешностями метода. Они связаны с тем, что всякий численный метод воспроизводит исходную математическую модель приближенно. Наиболее типичными погрешностями метода являются погрешность дискретизации и погрешность округления.
При построении численного метода в качестве аналога исходной математической задачи обычно рассматривается её дискретная модель. Разность решений дискретизированной задачи и исходной называется погрешностью дискретизации. Обычно дискретная модель зависит от некоторого параметра (или их множества) дискретизации, при стремлении которого к нулю должна стремиться к нулю и погрешность дискретизации.
Дискретная модель представляет собой систему большого числа алгебраических уравнений. Для её решения используется тот или иной численный алгоритм. Входные данные этой системы, а именно коэффициенты и правые части, задаются в ЭВМ не точно, а с округлением. В процессе работы алгоритма погрешности округления обычно накапливаются, и в результате, решение, полученное на ЭВМ, будет отличаться от точного решения дискретизированной задачи. Результирующая погрешность называется погрешностью округления (вычислительной погрешностью). Величина этой погрешности определяется двумя факторами: точностью представления вещественных чисел в ЭВМ и чувствительностью данного алгоритма к погрешностям округления.
Итак, следует различать погрешности модели, дискретизации и округления. В вопросе преобладания какой-либо погрешности ответ неоднозначен. В общем случае нужно стремиться, чтобы все погрешности имели один и тот же порядок. Например, нецелесообразно пользоваться разностными схемами, имеющими точность 10−6, если коэффициенты исходных уравнений задаются с точностью 10−2.
Виды мер точности
Мерой точности вычислений являются абсолютные и относительные погрешности. Абсолютная погрешность определяется формулой
где – приближение к точному значению .
Относительная погрешность определяется формулой
Относительная погрешность часто выражается в процентах. Абсолютная и относительная погрешности тесно связаны с понятием верных значащих цифр. Значащими цифрами числа называют все цифры в его записи, начиная с первой ненулевой цифры слева. Например, число 0,000129 имеет три значащих цифры. Значащая цифра называется верной, если абсолютная погрешность числа не превышает половины веса разряда, соответствующего этой цифре. Например, , абсолютная погрешность . Записывая число в виде
имеем , следовательно, число имеет две верных значащих цифр (9 и 3).
В общем случае абсолютная погрешность должна удовлетворять следующему неравенству:
где - порядок (вес) старшей цифры, - количество верных значащих цифр.
В рассматриваемом примере .
Относительная погрешность связана с количеством верных цифр приближенного числа соотношением:
где - старшая значащая цифра числа.
Для двоичного представления чисел имеем .
Тот факт, что число является приближенным значением числа с абсолютной погрешностью , записывают в виде
причем числа и записываются с одинаковым количеством знаков после запятой, например, или .
Запись вида
означает, что число является приближенным значение числа с относительной погрешностью .
Так как точное решение задачи как правило неизвестно, то погрешности приходится оценивать через исходные данные и особенности алгоритма. Если оценка может быть вычислена до решения задачи, то она называется априорной. Если оценка вычисляется после получения приближенного решения задачи, то она называется апостериорной.
Очень часто степень точности решения задачи характеризуется некоторыми косвенными вспомогательными величинами. Например точность решения системы алгебраических уравнений
характеризуется невязкой
где - приближенное решение системы.
Причём невязка достаточно сложным образом связана с погрешностью решения , причём если невязка мала, то погрешность может быть значительной.
Погрешности округлений при представлении чисел в компьютере
Одним из основных источников вычислительных погрешностей является приближенное представление чисел в компьютере, обусловленное конечностью разрядной сетки (см. Международный стандарт представления чисел с плавающей точкой в ЭВМ). Число , не представимое в компьютере, подвергается округлению, т. е. заменяется близким числом , представимым в компьютере точно. Найдем границу относительной погрешности представления числа с плавающей точкой. Допустим, что применяется простейшее округление – отбрасывание всех разрядов числа, выходящих за пределы разрядной сетки. Система счисления – двоичная. Пусть надо записать число, представляющее бесконечную двоичную дробь
где , - цифры мантиссы.
Пусть под запись мантиссы отводится t двоичных разрядов. Отбрасывая лишние разряды, получим округлённое число
Абсолютная погрешность округления в этом случае равна
Наибольшая погрешность будет в случае , тогда
Т.к. , где - мантисса числа , то всегда . Тогда и относительная погрешность равна . Практически применяют более точные методы округления и погрешность представления чисел равна
т.е. точность представления чисел определяется разрядностью мантиссы .
Тогда приближенно представленное в компьютере число можно записать в виде , где – "машинный эпсилон" – относительная погрешность представления чисел.
Погрешности арифметических операций
При вычислениях с плавающей точкой операция округления может потребоваться после выполнения любой из арифметических операций. Так умножение или деление двух чисел сводится к умножению или делению мантисс. Так как в общем случае количество разрядов мантисс произведений и частных больше допустимой разрядности мантиссы, то требуется округление мантиссы результатов. При сложении или вычитании чисел с плавающей точкой операнды должны быть предварительно приведены к одному порядку, что осуществляется сдвигом вправо мантиссы числа, имеющего меньший порядок, и увеличением в соответствующее число раз порядка этого числа. Сдвиг мантиссы вправо может привести к потере младших разрядов мантиссы, т.е. появляется погрешность округления.
Округленное в системе с плавающей точкой число, соответствующее точному числу , обозначается через (от англ. floating – плавающий). Выполнение каждой арифметической операции вносит относительную погрешность, не большую, чем погрешность представления чисел с плавающей точкой (1). Верна следующая запись:
где - любая из арифметических операций, .
Рассмотрим трансформированные погрешности арифметических операций. Арифметические операции проводятся над приближенными числами, ошибка арифметических операций не учитывается (эту ошибку легко учесть, прибавив ошибку округления соответствующей операции к вычисленной ошибке).
Рассмотрим сложение и вычитание приближенных чисел. Абсолютная погрешность алгебраической суммы нескольких приближенных чисел равна сумме абсолютных погрешностей слагаемых.
Если сумма точных чисел равна
сумма приближенных чисел равна
где - абсолютные погрешности представления чисел.
Тогда абсолютная погрешность суммы равна
Относительная погрешность суммы нескольких чисел равна
где - относительные погрешности представления чисел.