Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Численные методы. В 2 частях. Ч.1. Учебное пособие
.pdf
Министерство науки и высшего образования Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Н. Б. ИТКИНА, С. И. МАРКОВ
ЧИСЛЕННЫЕ МЕТОДЫ
ЧАСТЬ 1
Утверждено Редакционно-издательским советом университета
в качестве учебного пособия
НОВОСИБИРСК
2022
1

УДК 519.6(075.8)
И 927
Рецензенты:
д-р физ.-мат. наук В. Ф. Рапута
канд. физ.-мат. наук М. Ю. Баландин
Работа подготовлена на кафедре вычислительных технологий
Иткина Н. Б.
И 927 Численные методы : учебное пособие в 2 ч. / Н. Б. Иткина,
С. И. Марков. – Новосибирск : Изд-во НГТУ, 2022.
ISBN 978-5-7782-4662-1
Ч. 1: – 90 с.
ISBN 978-5-7782-4663-8
Рассмотрены алгоритмы аппроксимации функций, численного интегрирования, преобразования Фурье и вэйвлет-преобразования для
решения прикладных задач. Может быть рекомендовано для студентов
направления 02.03.03 – Математическое обеспечение и администрирование информационных систем.
УДК 519.6(075.8)
ISBN 978-5-7782-4663-8 (Ч. 1) © Иткина Н. Б., Марков С. И., 2022
ISBN 978-5-7782-4662-1 © Новосибирский государственный
технический университет, 2022
2

x
x
x
x
x
x
1. ПОГРЕШНОСТЬ РЕЗУЛЬТАТА
Погрешность – величина отклонения приближённого значения
от точного. Если
– приближённое значение,
абсолютной погрешности можно найти по формуле
*
x
. (1)
Относительная погрешность связана с абсолютной и вычисляется
в виде
**
xx xx
*
x
**
xx
,
x
Погрешности классифицируются как неустранимые (погрешность
измерительного прибора) и устранимые (ошибки округления, упрощение математических моделей).
Любое десятичное число, состоящее из m цифр, можно записать
в виде суммы
*
– точное, то величину
. (2)
x
nn nm
10 10 ...10
xx x
12
где n – старший разряд числа
11
и
. Значащие цифры десятичного
0x
1
,
m
числа – это все его цифры, начиная с первой ненулевой слева.
Пример. Числа
0,023, 0,000023
0,23 10
,
100
содержат две знача-
щие цифры. Если требуется показать, что в числе 2300 два нуля не являются значащими, то пишут
0,23 10
4
,
3
2,3 10
3
и т. д.

Значащая цифра числа считается верной, если абсолютная погреш-
x
x
x
ность не превосходит единицы разряда, соответствующего этой цифре.
В противном случае цифра называется сомнительной.
Пример. Пусть
*
0,561x и
значащую цифру (цифра 6). По формуле (1)
, то
0,6x
содержит одну верную значащую цифру. Если вы-
0,60x
, то крайний правый нуль уже считается сомнительным,
0,01
.
0,1
брать
поскольку
0,6x
. Число
0,6x
содержит одну
*
0,039xx
. Так как
Между количеством верных значащих цифр и относительной погрешностью существует связь. Если число
111
NN
чащих цифр, то
х
(10 1) 10
*
содержит N верных зна-
. Для того чтобы число
со-
держало N верных значащих цифр, достаточно выполнения неравенства
NN
(10 1) 1 0
*
x
Замечание. Для того чтобы число
1
.
содержало N верных знача-
щих цифр, достаточно вести вычисления с относительной погрешностью
*
РАВЕНСТВО ВЕЩЕСТВЕННЫХ ЧИСЕЛ
Nx
10
.
Рассмотрим фрагменты кода на языке C++.
Неправильное сравнение Правильное сравнение
1 #define Eps 1e–16
2 double a = 0.1; double a = 0.1;
3 float b = 0.1; float b = 0.1;
if (a == b)
4
std::cout << “a == b”;
else std::cout << “a != b”;
if (fabs(a – b) < Eps)
std::cout << “a == b”;
else std::cout << “a != b”;
Тип одинарной точности float занимает 4 байта, из которых 23 бита
отводятся под мантиссу числа. Тип двойной точности double занимает
8 байт, и под мантиссу отводятся 52 бита. Число 0,1 в двоичном коде
является бесконечной дробью, поэтому мантиссы чисел a и b никогда
не совпадут.
4

Правило. Сравнение двух вещественных чисел на равенство
x
x
(в том числе и сравнение вещественного числа на равенство с нулём)
выполняется только с априорно заданной точностью ε.
Пример. Пусть
ε 10
солютную погрешность
что a «равно» b, если величина
10
,
1, 2 1 0a , 122,1 10b . Вычислим аб-
ε 10
становке конкретной задачи. Однако
0, 43
, поэтому в терминах относительной погрешности говорить
12
12
0,9 10а b
10
a
. Мы имеем право считать,
считается машинным нулём в по-
/0,75
a
и
b
/
b
о равенстве a и b нельзя.
ОСОБЫЕ СИТУАЦИИ
Переполнение (overflow) возникает тогда, когда число
по модулю
превышает максимальное представимое число в используемом типе
0x
(имеет код Inf при
и –Inf при 0x ). В характеристике присут-
ствуют только единицы и нули в мантиссе.
Исчезновение порядка (underflow) возникает тогда, когда число
по модулю меньше минимального представимого нормализованного
числа в используемом типе.
Если все биты мантиссы денормализованного числа обнулятся, то
результатом будет 0, при этом нуль может иметь знак.
Математически некорректные операции (ln(0),
и т. д.) заверша-
1
ются результатом NaN (Not Arithmetic Number).
5

x
f
f
f
g
P
x
x
x
x
2. АППРОКСИМАЦИЯ ФУНКЦИЙ
Рассмотрим отрезок [, ]ab и введём сеточное разбиение
ω ...
ния функции
личной.
()gx такой, что
()gx – интерполянтом.
может быть сколь угодно точно аппроксимирована многочленами, поэтому такой интерполянт всегда существует
ax x b
01
()
xy
ii
Переход от дискретного набора
()
xy
ii
, в опорных точках которого заданы значе-
n
. Функцию
0,in
()
xy
ii
будем называть таб-
()
x
i
к непрерывной функции
, называют интерполированием, а функцию
По теореме Вейерштрасса непрерывная функция на отрезке
0 (): () ()
Px fx Px
nn
, (3)
[, ]ab
где
– многочлен степени n.
()
x
n
Пример. На разбиении
ω ...
ax x b
01
отрезка [, ]ab
n
можно задать интерполяционный многочлен Лагранжа
n
() ( )
Px fx
()
lx
где
i
k-м узле сетки
ni
()()
0
i
()
x
n
xx
ini
()()
xx x
kini
()()
– базисный полином Лагранжа такой, что в
()
x
nk
()
x
n
xx
ini
ik
,
ik
6
,
ni
1,
0,
n
() ( )
ki
i
xx
0
– символ Кронекера.
ki
, (4)

Пример. Построить интерполяционный многочлен Лагранжа для
x
g
x
x
g
g
x
табличной функции
числим значения
(0)
f
()Px
3
(0) 0f , (1) 1f , (2) 4f . По формуле (4) вы-
() ( 1)( 2)xxx x
3
()
x
3
(0)(0)
x
xx
1
3
ff
(2)
1
,
3
() ()
xx
(1) ( 2)
33
( 1)(1) ( 2)(2)
xx
4
33
(1)
xx
2
2
362() xxx
2
.
, тогда
По набору из (n + 1) точек можно задать многочлен степени n. Тогда
()gx – полином степени n, т. е.
() [,]
xCab
n
. В общем случае нельзя
гарантировать существование всех производных включительно до n-го
порядка у функции
()fx на множестве [a, b], поэтому при увеличении
числа точек разбиения могут наблюдаться значительные осцилляции
интерполянта (вычислительная неустойчивость алгоритма).
КУСОЧНО-ПОЛИНОМИАЛЬНАЯ ИНТЕРПОЛЯЦИЯ. СПЛАЙНЫ
Сеточное разбиение
ω ...
ax x b
01
n
позволяет пе-
рейти к решению задачи интерполяции локально на каждом сегменте
,
x
kk
1
и его производных во внутренних точках разбиения
. Потребуем непрерывность интерполянта ()
1,kn
ω
. Полученная
x
кусочно-полиномиальная функция порядка p называется сплайном. Дефект сплайна – разность между порядком и числом непрерывных про-
μ
p
изводных. Если μ – дефект сплайна, то
КУБИЧЕСКИЙ ИНТЕРПОЛЯЦИОННЫЙ СПЛАЙН
() [, ]
xC ab
.
Рассмотрим пример построения кубического интерполяционного
сплайна
1.
сегменте
2. Условие интерполяции:
3. Непрерывность:
4. Граничные условия нулевой кривизны:
()Sx дефекта 1, который удовлетворяет условиям:
() ()()()
Sx a bxx cxx dxx
kk k k k k k
,
x
kk
1
11 1
.
1,kn
()
Sx y
ii
() ()
ll
(0) (0) (,), 0,1,2
Sx Sx xabl
7
23
.
0,in
() () 0Sa Sb
на каждом
.
.

Замечание. Сплайном (spline – c англ. рейка) изначально называ-
x
x
x
лось приспособление для проведения гладких кривых через заданные
точки. Из физических соображений рейка, зафиксированная в некоторых точках, должна принять такое изогнутое положение, при котором
достигается минимум потенциальной энергии. Если функция
()Sx опи-
сывает форму этих изгибов, то граничные условия нулевой кривизны
обозначают отсутствие нагрузки на концах рейки. Так достигается минимум потенциальной энергии.
,
Обозначим как
. Из условий интерполяции следует, что
1,kn
кубическую функцию на сегменте
()
Sx
k
x
1
kk
()
Sx a y
kk k k
11
Во всех внутренних точках отрезка
сплайна
где
hxx
() ()
Sx S x
kk k k
abhch dh y
kkkkk kk k
.
1kkk
1
23
1, 1kn
[,]ab потребуем непрерывность
:
. (5)
1,kn
, (6)
1, 1kn
Запишем условия непрерывности первой производной во внутренних точках
для второй производной
Граничные условия нулевой кривизны в точке
()2 6( )0Sx c dx x
10 1 10 0
В точке
() ()
Sx S x
kk k k
23
bchdhb
kkkkkk
26 2
cdhc
kkkk
1
() ()
Sx S x
kk k k
, откуда
получим
xb
n
:
1, 1kn
2
1
()2 6 ( )0
Sx c dx x
nn n nn n
1
1
1
0c
1, 1kn
. (9)
, (7)
1, 1kn
1, 1kn
. (8)
xa
0
1
и
дают
30
cdh
nnn
8
. (10)

Из уравнений (8) и (10) выразим
cc
d
k
d
k
1
kk
h
3
k
и
1, 1kn
:
d
n
, (11)
Подставим
dch
nnn
в уравнение (6) с учётом (5), тогда
d
k
yy cc
kk kk
bh
kk
h
k
2
11
3
. (12)
/3
, (13)
1, 1kn
на последнем сегменте
yy
nn
bch
nnn
h
n
2
1
. (14)
3
Если воспользоваться представлением (11) и рекуррентной формулой (13), то уравнение (7) можно переписать в виде
yyyy
11
kkkk
2( ) 3
ch h h с h с
где
kk k k k k k
.
1, 1kn
11 12
Из краевых условий нулевой кривизны
kn имеем
ccdh
13nnnn
= [см. уравнение (12)] = 0.
hh
1
kk
. Из уравнения (8) при
0c
1
Соотношение (15) определяет систему линейных алгебраических
уравнений относительно неизвестных коэффициентов c:
11
222
333
0
...
0
n
22 1 2
nn n n
2
11 1
nn n n
c
21
c
32
c
43
... ...
c
c
, (16)
, (15)
9

где
β 2( )
kkk
2, 1kn
hh
,
k
1
yyyy
kkkk
3
1, 1kn
11
hh
1
kk
,
γ
kkh
1
1, 1kn
1, 2kn
.
,
h
kk
Матрица СЛАУ (16) является трёхдиагональной, поэтому для её хранения можно использовать диагональный формат. Решить данную
СЛАУ можно с помощью метода прогонки – вариация метода Гаусса
для СЛАУ с трёхдиагональными матрицами.
На первом шаге приведём матрицу СЛАУ к верхней треугольной
форме (прямой ход метода Гаусса)
γ
11
0 γ 0
22
0 γ
33
00
...
γ
nn n
n
2
0
c
21
c
32
c
43
... ...
c
21 2
c
nn n
11
, (17)
где элементы матрицы и правой части определяются как
β ,
11
,
11
kk kk
k
1
kk kk
1
k
1
2, 1kn
,
1
.
На втором шаге выполняется обратный ход метода Гаусса – исклю-
чение по строкам с конца:
c
nn n
111
kkk
ckn
k
k
11
γ
c
1
c
1
/,
0.
(18)
1, 2 ,
По формулам (11)–(14) можно восстановить массивы коэффициен-
d
тов
b
и
k
k
. Массив
1,kn
a
определён формулой (5).
k
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
