МАШИННАЯ АРИФМЕТИКА И ВЫЧИСЛИТЕЛЬНО НЕУСТОЙЧИВЫЕ
АЛГОРИТМЫ
Матросов Александр Васильевич
2
Арифметические вычисления в программах(1)
Разность чисел одинарной точности
123456789 - 123456788 = 1
Программа VBA1.
Разность чисел одинарной иудвоенной точности
123456789.123457 – 123456789.123457 = 0single double
Программа VBA2.
Арифметические вычисления в программах(2)
3
Скалярное произведение векторов
a = (1.0 1020, 1234.0, 1.0 1018)b = (1.0 1020, 5.0, -1.0 1022)(a,b) = 6170.0
Программа Maple
Использование промежуточных вычислений
a = 1.0 (single) b = 3.0 (single)a / b – 1.0 / 3.0 = 0
Программа VBA3.
4.
Числа с плавающей запятой (1)
4
Число с плавающей запятой состоит из:1) Мантиссы (выражающей значение числа без учёта порядка)2) Знака мантиссы (указывающего на отрицательность или положительность числа)3) Порядка (выражающего степень основания числа, на которое умножается мантисса)4) Знака порядка
x = ±a1,a2...at × be = ±f × be , f = a1,a2...at , -m ≤ e ≤ M (1)
Нормальная формаb-1 ≤ f < 1 (f = 0,a1a2...at)
0,001 = 0,1 × 10-2 = 0,01 × 10-1 = 0,001 × 100
Нормализованная форма1 ≤ f < b (b = 1, f = 1,a1a2...at)
0,001 = 1,0 × 10-3
Числа с плавающей запятой (2)
5
Числа с плавающей запятой вида (1) образуют конечное множество Q рациональных чисел.
Арифметические операции над числами из множества Qне могут быть выполнены точно, результат не принадлежит Q, а следовательно подлежит округлению.
Выполнение арифметических операций (1)
6
Сложение и вычитаниеМеньшее по абсолютной величине число сдвигается
вправо на |b1-b2| позиций, выполняется операция и
результат округляется до t цифр и нормализуется
0,3127·10-6+0,4153·104
---------------------------------0,4153 0000 ·104
0,0000 0000 003127·104
---------------------------------0,4153 0000·104 = 0,4153 ·104
0,3127·104+0,4153·101
---------------------------------0,4153 0000·104
0,0003 1270·104
---------------------------------0,4156 1270·104 = 0,4156 ·104
0,4127·104+0,7158·104
---------------------------------0,4127 0000·104
0,7158 0000·104
---------------------------------1,1285 0000·104 = 0,1128 5000 ·105 = 0,1129 ·105
1) 2)
3)
Выполнение арифметических операций (2)
7
УмножениеВычисляется экспонента результата b1+b2, мантиссы
перемножаются и при необходимости нормализуются
сдвигом влево, результат округляется до t цифр и
нормализуется
0,8132·10-4х0,6135·106
---------------------------------0, 81320, 5135---------------------------------0, 4988 9820·102 = 0,4989·102
0,1213·10-3+0,1714·10-4
---------------------------------0,12130,1714---------------------------------0,0207 9082·10-7=0,2079 0820·10-8
= 0,2079 ·10-8
1) 2)
Выполнение арифметических операций (3)
8
ДелениеВычисляется экспонента результата b1-b2, если мантисса
делимого больше мантиссы делителя, то мантисса
делимого сдвигается вправо на один разряд, а экспонента
результат увеличивается на 1, мантиссы делятся,результат округляется до t цифр
0,9137·10-6:0,1312·10-2
---------------------------------0, 9137 = 0, 0913 7000 (·10-4+1)0, 1312---------------------------------0, 6964 17·10-3 = 0,6964·10-3
0,1235·104:0,9872·10-6
---------------------------------0,1235 (·104-(-6)= 1010)0,9872---------------------------------0,1251 01·1010=0,1251·1010
1) 2)
9
Стандарт IEEE 754 (1)
IEEE - Institute of Electrical and Electronics Engineers
• S - бит знака, если S=0 - положительное число; S=1 - отрицательное число • E - смещенная экспонента двоичного числа;exp2 = E - (2(b-1) - 1) - экспонента двоичного нормализованного числа с плавающей точкой , (2(b-1) -1) - заданное смещение экспоненты • M - остаток мантиссы двоичного нормализованного числа с плавающей точкой
10
Стандарт IEEE 754 (2)
Одинарная точность
Удвоенная точность
11
Разъяснение ошибок программных вычислений (1)
Разность чисел одинарной точности123456789 - 123456788 = 1
123456789 = 4CEB79A3 = 123456792 абсолютная ошибка равна +30| 10011001 | 11010110111100110100011 (101)
123456788 = 4CEB79A2 = 123456784 абсолютная ошибка равна -40| 10011001 | 11010110111100110100010 (100)
123456792 - 123456784 = 8 (800%)
1.
Разность чисел одинарной и удвоенной точности123456789.123457 (single) – 123456789.123457 (double) = 0
Single: 123456789.123457 = 4CEB79A3=123456792,0Double: 123456789.123457 419D6F34547E6B75 =123456789,123456791043281555176 123456792,0 - 123456789,123456791043281555176 = 2,87654300034046
2.
Разъяснение ошибок программных вычислений (2)
12
Скалярное произведение векторов
a = (1.0 1020, 1234.0, 1.0 1018)b = (1.0 1020, 5.0, -1.0 1022)(a,b) = 6170.0
Ответ см. в примере сложения числа большого
Порядка с числом малого порядка
Программа Maple
Использование промежуточных вычислений
a = 1.0 (single) b = 3.0 (single)a / b – 1.0 / 3.0 = 0
Ответ см. в задаче 2
Программа VBA3.
4.
Вычисление функции sin(x) степенным рядом
13
Digits8 16 20 23 25
n 68an 0.4265 10-4 < 1.0 10-4
Sn -.8835·1011 18247.6344 -1.2690 -.7697 -.7683
Sточн
-.7683| Sn-Sточн| -.8835·1011 18248.4027 -.5007 -0.0014 0
=0.0001
вычисление синуса рядом.mws
14
Дифференциальные уравнения изгиба балки
15
Аналитический подход
16
Разрешающая система уравнений
q F
z
x O
l/2 l/2
17
Расчеты на традиционном компьютере (1)
n=59; S(n)=3016691835837026.; log[10](S)=15.47953094 795058;n=60; S(n)=3016677101793550.; log[10](S)=15.47952882 677621;
18
Расчеты на традиционном компьютере
n=159; S(n)=3016677430639723.; log[10](S)=15.4795288 7411839;n=160; S(n)=3016677430639723.; log[10](S)=15.4795288 7411839;
19
Расчеты на традиционном компьютере
n=159; S(n)=0.3484052939 443682e21; log[10](S)=20.54208474539808;n=160; S(n)=0.3484052939 443682e21; log[10](S)=20.54208474539808;
20
Расчеты в Maple
n=159; S(n)=0.3484052939 354102047e21; log[10](S)=20.54208474538691369;n=160; S(n)=0.3484052939 354102047e21; log[10](S)=20.54208474538691369;
(сравнить с предыдущим слайдом)
21
x
y O
h
a
(u)
(v)
0xσ
0xyτ
hxσ
hxyτ
0u
0v
hu
hv
(1)
Метод начальных функций
-----------------------------------------------------------------------------------------------
22
Вычислительная неустойчивость МНФ (1)
Частичные суммы рядов для перемещений при x=h
Перемещения
в срединном сечении
16 цифр в мантиссе 20 цифр в мантиссе
изотропный прямоугольник:
x
y O
h
a
(u)
(v)
0xσ
0xyτ
hxσ
hxyτ
0u
0v
hu
hv
log(|Sn|)
n
( )cosax a m y aτ τ π=
0 1q = −
2aq = −
0 0τ =
0.5aτ = −
( )00 cosx m y aτ τ π=( )0
0 sinx q m y aσ π=
( )sinax aq m y aσ π=
23
Решение системы линейных уравнений1µ −= A A
DigitsВычисленные значения правых частей уравнений (2)
первого второго
10 -17. -.8507405062e-96
12 -1.99210 -.42026
14 -2.00185228 -.50126888
16 -2.000000071312904 -.4999923041379909
( )00 cosv v m y aπ=
29 29 220 0
29 29 220 0
0.3175282498 10 0.3244124968 10 0.432867228810 2
0.3244124968 10 0.3312967437 10 0.442362965610 0.5
u v
u v
− ⋅ + ⋅ + ⋅ = −
− ⋅ + ⋅ + ⋅ = −
( )00 sinu u m y aπ= m = 7
(2)
,"cond:" 9072.1395201958095803Число обусловленности:
, ,"u0,v0" 0.4547282943 10-6 0.1591548336 10-6
, ,"u0,v0" 0.45472839987929027078 10-6 0.15915493452111727395 10-6Digits = 20
Digits = 10
24
Замкнутая форма решения МНФ
расчет изотропии
расчет ортотропии
:= L ,1 1 + 1
2α ( ) + 1 ν y ( )sinh α y ( )coshα y := L ,1 2 −
1
2( ) − ν 1 ( )sinh α y
1
2( ) + 1 ν α y ( )coshα y
… := L ,4 1
1
2α E ( ) + ( )sinh α y α y ( )coshα y
:= L ,1 1
H66 ( ) + ( ) + H22 α12 H12 ( )coshα1 alph y ( )− − H22 α22 H12 ( )cos α2 alph y
d
…
:= L ,4 1 −H66
2alph ( + ( )− − − H11 α2 2 H12 α12 α2 H22 α14 α2 ( )sinh α1 alph y ( ) + + H11 α1 2 H12 α1 α22 H22 α1 α24 (sinh α2 alph
d α1 α2
:= L ,3 2 −1
2α E ( )− + ( )sinh α y α y ( )coshα y
= u0 u0
cos
m π x
a = v0 v0
sin
m π x
a = Sy0 sy0
sin
m π x
a = Txy0 txy0
cos
m π x
a
-------------------------------------------------------------------------------------------------------
Литература
1. Wilkinson J. H. Rounding Errors in Algebraic Processes, Prentice-Hall, Inc., 1963
2. Кнут Д. Искусство программирования для ЭВМ. – Т. 2. – М.: Наука, 1977
3. Годунов С.К. Решение систем линейных уравнений. – Новосибирск: Наука, 1980
4. Бабенко К.И. Основы численного анализа. –М.: Наука, 1986
25