Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Schisla_1

.pdf
Скачиваний:
17
Добавлен:
13.02.2015
Размер:
458.07 Кб
Скачать

2.2Числа с плавающей запятой

Определение: Множество F чисел с плавающей запятой характеризуется четырьмя параметрами:

β - основание системы счисления;

t - число разрядов, отводимых для записи мантиссы числа в память ЭВМ (t называется точностью машины);

[L, S] - интервал изменения порядков чисел.

Любое отличное от нуля число x R можно записать в виде x = sgn(x) m βp, где p - порядок числа (целое число), m - мантисса числа 0 6 m < 1. Если 16 m < 1, то говорят, что число нормализовано, нормализовать нельзя только x = 0.

Числа, которые хранятся в памяти машины x F , имеют для записи мантиссы конечное число t разрядов. Например, если множество β– ичных чисел F oпределяется значениями t = 4, L = 2, S = 2, тогда число x F имеет вид x = sgn(x) mtβp, где 2 ≤ p ≤ 2,

mt =

d1

+

d2

+

d3

+

d4

,

β

β2

β3

β4

dk, k = 1, 2, 3, 4 – цифры β- ичной системы счисления (0 ≤ dk ≤ β − 1), причем d1 ≠ 0 для любого x F (в вычислительной машине хранятся нормализованные числа).

Теперь об особенностях машинной арифметики. Во-первых, множество чисел с плавающей запятой конечно. Число элементов этого множества равно 2(β − 1) βt−1(S − L + 1) + 1. Т.к. в F конечное число элементов, то среди них имеются наименьшее положительное число ω и наибольшее положительное число Ω.

При решении задач на ЭВМ, множество вещественных чисел R отображается на множество чисел с плавающей запятой F . Очевидно, при этом делаются ошибки.

11

1. Пусть x R и ω 6 |x| 6 Ω. Число x запишем в виде

 

 

 

 

 

 

x = sgn(x) m βp,

 

где m =

d1

+

d2

+ ... +

dt

+

dt+1

+ ... . Eсли di = 0

для любого i > t,

β

β2

βt

βt+1

 

 

 

 

 

 

то x F . Если же хотя бы одно di ≠ 0 для i > t, то x не принадлежит множеству F , тогда с помощью округления ему ставится в соответствие

приближенное значение fl(x) = sgn(x) mt βp F , где

>

 

 

 

 

 

 

e

 

e

 

если dt+1

 

 

d

 

d2

 

dt

 

 

dt,

< β/2,

mt =

1

+

 

+ ... +

 

,

dt = { dt + 1,

 

 

 

β

β2

βt

если dt+1

 

β/2.

При таком способе округления для абсолютной погрешности получается

оценка

x = |x − fl(x)| ≤ 12βp−t + O(βp−t−1)

причем вторым слагаемым обычно пренебрегают, и получается ”приближенное” неравенство

δ(x) =

 

x

fl(x)

 

1

β1−t

δ(x) =

 

x − fl(x)|

 

1

β1−t .

 

 

x

|

2

 

 

2

|

 

(или

|

fl(x)

|

)

 

 

 

|

|

 

 

 

 

 

|

 

 

 

Эти оценки позволяют любому действительному числу x R поставить в соответствие число с плавающей запятой fl(x) F , которое можно записать в виде

fl(x) = (1 + δ)x, или fl(x) = x/(1 + δ),

где |δ| ≤ β1−t/2. Отсюда понятно, почему t называется точностью ЭВМ.

2.Пусть x R и 0 < |x| < ω. Тогда естественно положить fl(x) = 0, так как числа, модуль которого меньше ω, в F нет. Эта ситуация диагностируется underflow (потеря порядка).

3.Пусть x R и |x| > Ω. Тогда такого числа в F нет, и эта ситуация диагностируется overflow (переполнение).

Итак, если |x| ≤ Ω, то ему ставится в соответствие число fl(x) F , так

что

{

 

 

β1−t/2,

если x

≥ ω,

fl(x) = (1 + δ)x, где

δ

|

|

δ=

1,

если

|x|

< ω.

 

 

 

 

 

 

 

| |

 

12

Арифметические операции

Если x F и y F , то результат арифметической операции x ◦ y

необязательно принадлежит F , здесь символ ”” означает одну из операций

+, −, или /. При правильном округлении справедливо

{

|δ| ≤ β1−t/2,

если ω ≤ |x ◦ y| ≤ ,

fl(x ◦ y) = (x ◦ y)(1 + δ), где

если |x ◦ y| < ω.

δ = 1,

Законы арифметики

Законы арифметики, имеющие фундаментальное значение в математическом анализе, иногда нарушаются в F . Пусть a, b, c F . Коммутативные законы выполняются всегда

fl(a + b) = fl(b + a) fl(ab) = fl(ba),

а ассоциативные и дистрибутивный законы нарушаются, так как существуют такие a, b, c F , что из-за ошибок округления

fl((a + b) + c) ≠ fl(a + (b + c)) fl((ab)c) ≠ fl(a(bc))

fl(a(b + c) ≠ fl(ab + ac).

Машинное эпсилон

Машинное ε – это значение наименьшего положительного числа в F , для которого выполняется неравенство fl(1+ε) 1. Хотя это определение выделяет в качестве машинного эпсилон единственное число плавающей системы, не так уж важно использовать его точное значение. Обычно при использовании значение ε может отличаться от точного значения на некоторый множитель.

2.3Суммарный эффект ошибок округления

При реализации на ЭВМ вычислительного алгоритма на его окончательный результат оказывает влияние большое число неизбежных ошибок округления.

13

Формализуем процедуру оценки суммарной ошибки. Пусть A - входные данные, B - результат их обработки по некоторому алгоритму φ, т.е.

B = φ(A)

Пусть алгоритм φ включает в себя лишь те операции, которые имеются в списках команд вычислительной машины. Из-за отличия машинной от точной арифметики алгоритм φ заменяется другим, вообще говоря, близким алгоритмом φt. Т.е. вместо B будет получен результат

Bt = φt(A)

Результаты B и Bt также как и входные данные A могут иметь разную природу, это могут быть числа, векторы, матрицы, таблицы и т.д. На множествах входных данных и результатов подходящим образом вводятся операции сложения, умножения на число, мера близости элементов (метрика) и т.п. Тогда ошибку вычислений можно записать

H = B − Bt

Вычисление (или оценка) величины H в выбранной метрике называется прямым анализом суммарного влияния ошибок округления на результат.

Эффективным является обратный анализ суммарного влияния ошибок округления на результат. Суть его состоит в следующем: реально вычисленное Bt рассматривается как результат обработки точным алгоритмом

φ возмущенных входных данных At = A + E , т.е.

Bt = φ(At) = φ(A + E)

Ошибка вычисленного решения (суммарная) характеризуется нормой элемента E = A − At , который принято называть эквивалентным возмущением. Следует отметить, что входные данные редко задаются точно. При обратном анализе считается, что ошибки округления при вычислениях равносильны внесению ошибок во входные данные. Сравнение величины

14

первоначальных ошибок и эквивалентного возмущения позволяет соизмерять точность входных данных с точностью самих вычислений.

Рассмотрим обратный анализ суммарной погрешности округления на примере простой задачи вычисления суммы

n

z = ai,

i=1

где ai F , i = 1, ..., n. Пусть все значения ai > 0, т.е. при суммировании не может получиться машинный нуль. Полученный результат имеет вид

fl(z) = (...((a1 + a2)(1 + ε1) + a3)(1 + ε2) + ... + an)(1 + εn−1),

где εi ≤ β1−t/2 для i = 1, ..., n − 1. Далее запишем

 

 

 

 

 

n

n

 

 

n

 

 

 

 

 

 

 

i

 

 

 

 

 

fl(z) = ai + aiEi = z + aiEi,

 

 

 

 

 

i=1

=1

 

i=1

 

 

 

 

 

 

 

n−1

 

 

 

n−1

 

 

где 1 + E1 = 1 + E2

 

=

(1 + εi), 1 + Ek =

 

(1 + εi), k = 3, ..., n.

 

 

 

 

 

i=1

 

 

i=k−1

 

 

Вычислим

E

k, для этого

преобразуем

 

 

 

 

 

 

 

 

 

 

 

 

n−1

 

 

n−1

 

n−1

 

 

 

 

 

εi +

εiεj + ...

 

1 + Ek =

 

 

(1 + εi) = 1 +

 

 

и получим

 

i=k−1

 

 

i=k−1

i;j=k

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

n−1

 

 

 

n−1

n−1

 

 

 

 

 

 

 

 

 

 

Ek =

 

(1 + εi) 1 =

εi +

 

εiεj + ...

 

 

i=k−1

 

i=k−1

i;j=k−1

 

 

Если i| ≤ δ , тогда

 

 

 

 

 

 

 

n−1

n−1

 

 

 

n−1

 

n−1

 

 

 

1

 

 

iεj|+... 6 (n−k+1)δ+O(δ2)

|Ek| = i=k−1

εi+i;j=k

εiεj+...

6 i=k−1

i|+i;j=k−1

 

 

 

 

 

 

 

 

 

 

 

 

Отсюда следует, что с точностью до бесконечно малых порядка O(δ2) справедливо неравенство

|Ek| 6 (n − k + 1)δ,

15

Оценка ошибки при вычислении значения z имеет вид

|fl(z) − z| 6 n |ai|(n − i + 1).

i=1

Это неравенство позволяет понять причину неравноправности слагаемых с точки зрения вносимых в них возмущений. Формально каждое слагаемое участвует в процессе суммирования лишь один раз. Однако в образовании ошибок каждое слагаемое участвует столько раз, сколько раз суммируется частичные суммы, зависящие от этого слагаемого. Ошибка результата будет наименьшей, если суммирование проводить, начиная с наименьшего по модулю слагаемого, в порядке возрастания. Можно уменьшить подобное неравноправие слагаемых следующим образом: сначала слагаемые разбиваются на пары и складывают по парам (если слагаемых нечетное число, то последнее слагаемое рассматривается как последняя пара). Каждое слагаемое вносит в сумму каждой пары возмущения одного порядка. В этом случае для оценки эквивалентного возмущения Ek с точностью до бесконечно малых порядка O(δ2) получается неравенство

|Ek| ≤ (1 + log2 n)δ.

Таким образом, изменяя порядок суммирования можно добиться существенного уменьшения погрешности.

В общем случае это утверждение можно сформулировать так: Всякая задача при решении её с помощью вычислительной техники определяет совокупность вычислительных алгоритмов, отличающихся друг от друга порядком выполнения арифметических операций. Это означает, что точному решению задачи соответствует множество приближенных решений, полученных с помощью таких алгоритмов. Среди элементов этого множества могут быть как близкие к точному решению, так и очень далекие от него. Разброс приближенных решений говорит о степени неустойчивости алгоритма относительно порядка выполнения операций. Рассмотренный при-

16

мер суммирования чисел показывает, что даже в простейших задачах этот разброс может быть значительным.

2.4Пример неустойчивого алгоритма

Пусть требуется вычислить значения интегралов

 

En = 0 1

xnex−1 dx,

n = 0, 1, ..., N.

Сначала проанализируем задачу

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

1. E0 = 0

1

 

 

 

 

 

ex−1 dx = 1

 

,

 

 

 

 

 

e

 

 

 

 

 

1

1

 

 

 

 

 

 

 

2. En = 0

xnex−1 dx ≤ 0

xn dx

 

1

 

, то есть при возрастании

 

n + 1

номера интеграла (n → ∞) значение En убывает (En 0),

3. значение En положительно (En > 0) для любого n.

Если взять интеграл En по частям

 

 

 

1

 

 

 

 

 

 

1

En = xnex−1 dx = xnex−1

 

1

 

xn−1ex−1 dx = 1 − nEn−1,

0 − n

0

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

то получится рекуррентная формула. При вычислении значений En, n = 0, 1, . . . по этой формуле, при некотором n перестают убывать значения En, а далее они становятся отрицательными и большими по модулю. Чтобы понять, почему так происходит, проследим за ошибкой округления сделанной при вычислении E0, предполагая, что другие ошибки не появляются. Пусть точное значение E0T = E0 +δ, для вычисления En выполняются следующие

17

действия

E1T = 1 1E0T = 1 − E0 1 δ = E1 1 δ

E2T = 1 2E1T = 1 2E1 + 1 · 2 δ = E2 + 1 · 2 δ

. . . . . . . . . . . . . . .

EnT = 1 − nE(n−1)T = 1 − nEn−1 1 · 2 · ... · n δ = En + (1)nn! δ

Другие неизбежные ошибки округления могут немного замедлить или ускорить рост погрешности вычисления En.

Если же положить E30 = 0, и для n < 30 вычислять значения En по рекуррентной формуле

En = 1 − En+1 , n = 29, 28, ..., 0, n + 1

то ошибка сделанная в E30, которая приблизительно равна 1/31, быстро убывает.

Таким образом, при построении вычислительного алгоритма, надо заботиться об его устойчивости, то есть о том, чтобы неизбежные ошибки входных данных сильно не возрастали.

3Полиномиальная интерполяция

Часто при решении прикладных задач требуется выполнить некоторые аналитические операции над функцией, явное выражение которой неизвестно или вычисление каждого её значения трудоемко. Чтобы выполнить такие операции, эту функцию можно приближенно заменить другой, более простой.

Например, требуется вычислить

b

I = f(x) dx,

a

18

а значения функции f(x) известны на отрезке [a, b] лишь в n точках x1, x2,

..., xn. Можно приблизить (аппроксимировать) f(x) некоторой функцией

g(x), первообразная которой легко находится. Очевидно, требуется, чтобы

b

приближенное равенство I ≈ g(x) dx выполнялось с заданной точно-

a

стью.

В качестве g(x) обычно выбирают любую простую функцию, например, полином, линейную комбинацию элементарных функций, кусочнополиномиальную функцию.

Выбрав класс приближающих функций, надо из него выделить для f(x)

одну определенную функцию посредством некоторого критерия - некоторой меры близости.

Самый распространенный критерий состоит в требовании, чтобы приближающая функция g(x) совпадала с заданными значениями f(xi) в узловых точках (f(xi) = g(xi)) – задача интерполяции. Другой распространенный критерий – наименьшие квадраты“ – означает, что сумма квадратов отклонений между значениями функции f(xi) и g(xi) в узловых точках xi, i = 1, 2, ..., n , должна быть минимальной. Существуют и другие критерии.

Таким образом, прежде чем приближать заданную функцию f(x) , надо знать ответы на четыре вопроса:

1.В каких узлах известны значения функции?

2.Какой выбран класс приближающих функций?

3.Какой выбран критерий меры близости?

4.Какая требуется точность?

3.1Постановка задачи линейной интерполяции.

Пусть известны значения f(xi) некоторой функции f(x) в узлах xi

[a, b], i = 1, ..., n. Выберем систему линейно независимых функций φk(x), k = 1, ..., n, x [a, b], и будем приближать f(x) линейной комбинацией

19

этих функций

n

g(x) = akφk(x).

k=1

Критерием выбора в задаче интерполяции одной из таких функций для f(x) является условие

f(xi) = g(xi), i = 1, . . . , n.

Это условие позволяет получить систему линейных алгебраических уравнений (СЛАУ) для вычисления коэффициентов ak, k = 1, ..., n. СЛАУ имеет вид

a1φ1(x1) + a2φ2(x1) + ... + anφn(x1) = f(x1),

a1φ1(x2) + a2φ2(x2) + ... + anφn(x2) = f(x2),

(3.1)

− − − − − − − − − − − − − − − − − − −−

a1φ1(xn) + a2φ2(xn) + ... + anφn(xn) = f(xn).

В силу линейной независимости функций φk(x), существуют узлы интерполяции xi, для которых определитель этой системы отличен от нуля. Для таких узлов решение СЛАУ (3.1) единственно, и оно определяет единственную функцию g(x).

Заметим, если g(x) строится для значений x на отрезке a 6 x 6 b, то говорят о задаче интерполяции, если же для значений x вне этого отрезка (x < a или x > b), то — о задаче экстраполяции.

3.2Полиномиальная интерполяция.

Если в качестве функций φk(x) выбраны степенные функции φk(x) = xk−1, k = 1, 2, . . . , n, то задача интерполяция состоит в построении много-

члена

g(x) = Ln(x) = anxn−1 + an−1xn−2 + ... + a1.

Коэффициенты ak, k = 1, 2, . . . , n выбираются так, чтобы

Ln(xi) = f(xi) = yi, i = 1, 2, ..., n.

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]