1.2 Интерполирование и аппроксимация функций, графики

advertisement
Лабораторная работа 3.2
ИНТЕРПОЛИРОВАНИЕ И АППРОКСИМАЦИЯ ФУНКЦИЙ
В точках
x  x0,
x1,  , x n
( x i  x i 1, i  0,  , n  1;
x0  a ,
x n  b)
заданы значения функции
y  f ( x ) : y 0 , y1,  , y n ( y i  f ( x i ), i  0 ,  , n) .
Аналитическое выражение для функции f (x ) не известно. Требуется
приближенно вычислить значение функции f (x ) в точке x  a, b  .
Задачи такого рода возникают всякий раз, когда вычисление функции f (x ) в промежуточных точках невозможно или нежелательно.
Например, значения функций получены из эксперимента, как численное
решение функциональных уравнений и т.д.
Для решения задачи следует найти функцию y  u (x) , значения которой на отрезке a , b приближенно равны значениям функции f (x ) .
Обычно функция u( x ) ищется в виде линейной комбинации базисных
функций
u(x )  c 0 0 ( x )  c1 1(x )    c m m (x ) .
(1)
В качестве базисных могут быть выбраны степенные функции
1, x , x 2 , x 3 , , тригонометрические функции 1, sin x , cos x , sin 2x ,
cos 2x ,  , показательные функции и т.д. Выбор базиса определяется
условиями задачи, в частности, - характером поведения функции f (x ) на
отрезке a , b .
Мы в качестве базисных будем выбирать степенные функции
0 (x)  1; 1(x)  x ; 2 (x)  x 2 ,  .
Существуют два подхода к определению коэффициентов c 0 ,  , c m
в выражении (1). Соответственно этому определяются методы приближения функции f (x ) - интерполирование и аппроксимация:
интерполирование (интерполяция) - коэффициенты c 0 ,  , c m определяются из условия
u ( x i )  f ( x i ) , i  0 ,1,  , n.
(2)
В этом случае m  n . Функция u ( x ) называется интерполирующей,
точки x 0 , x1 , , x n - узлами интерполяции;
аппроксимация - условие (2) заменяется более мягким условием:
функция u ( x ) должна минимально отличаться от функции f (x ) на отрезке
a , b. В этом случае m  n . Функция u (x ) называется аппроксимирующей функцией.
Рассмотрение вопросов интерполирования и аппроксимации следует
ниже.
ПОЛИНОМИАЛЬНАЯ ИНТЕРПОЛЯ ЦИЯ
Интерполирующая функция ищется в виде полинома степени n
u (x)  c 0  c1x  c 2 x 2    cnx n .
(3)
Коэффициенты c 0 ,  , c n определяются из условия (2). Подставив
выражение (3) в (2), мы получим систему линейных уравнений для определения коэффициентов полинома (3)
c 0  c1x 0  c 2 x 02    c n x n0  y 0
c 0  c1x 1  c 2 x 12    c n x 1n  y1
(4)
      
c 0  c1x n  c 2 x n2    c n x nn  yn
Поскольку существует единственный многочлен степени n , принимающий в заданных n  1 точках заданные значения, решение системы
(4) существует и единственное.
Для вычисления значений интерполяционного полинома не обязательно решать систему (4). Существует множество различных формул
для полиномиальной интерполяции. Наиболее общей из них является
формула Лагранжа
П
u (x )    i (x ) yi ;
i0
 i (x) 
( x  x 0 )  ( x  x i 1) ( x  x i  1)  ( x  x n )
( x i  x 0 )  ( x i  x i 1) ( x i  x i  1)  ( x i  x n )

n
(x  x j )
j  0, j  i
(x i  x j )

.
2
Для вычисления значения u ( x ) требуется выполнить 2 n2  2 n операций умножения и деления - существенный недостаток формулы Лагранжа.
Интерполяционные формулы Ньютона используются в тех случаях,
когда узлы интерполяции образуют равномерную сетку на a , b
x i  a  i h , i  0, 1,  , n ; h  (b  a) n.
Вычисляем конечные разности первого порядка
y 0  y1  y 0 ;
y1  y 2  y1 ,  ;
yi  yi 1  yi ; i  0 ,  , n  1.
Затем вычисляем конечные разности второго порядка
2 y 0  y1  y 0 ;; 2 yi  yi 1  yi ; i  0 ,  , n  2 .
Затем вычисляем конченые разности третьего порядка и т.д. Разности k – го порядка определяются выражениями
k yi  k 1yi 1  k 1yi ; k  1,  , n, i  0 ,  , n  k .
Таблица конечных разностей имеет вид
x0
y0
y 0
x1
2 y 0
y1
y1
x2
2 y1
y2
       n y 0
xn 2
yn2
2 y n  3
y n  2
x n 1
y n 1
2 y n  2
y n 1
xn
yn
В терминах конечных разностей интерполяционный многочлен можно представить в виде
1 y 0
1 2 y 0
1 n y 0
[1]
[ 2]
u (x)  y 0 
(x  x 0 ) 
(x  x 0 )   
(x  x 0 )[n] ,
2
n
1! h
2! h
n! h
(6)
3
где (x  x 0 )[k ] - обобщенная степень:
( x  x 0 )[1]  ( x  x 0 ) ;
( x  x 0 )[k ]  ( x  x 0 ) ( x  x1)  ( x  x k 1) .
Введем переменную g  ( x  x 0 ) h . Выражение (6) можно переписать в
виде
u (x)  y 0  y 0 
g (g  1) 2
g (g  1)  (g  n  1) n
 y0   
 y 0 . (7)
2!
n!
Выражения (6), (7) называются первой интерполяционной формулой Ньютона или формулой Ньютона для интерполирования вперед.
Вторая интерполяционная формула Ньютона (формула Ньютона
для интерполирования назад) имеет вид
u (x)  yn  y0 1 
g (g  1) 2
g (g  1)  (g  n  1) n
 yn  2   
 y0 ,
2!
n!
где g  ( x  x n ) h.
При h  0 обе интерполяционные формулы Ньютона переходят в
разложение функции f (x ) по формуле Тейлора.
Существуют формулы Ньютона для неравномерного расположения
узлов интерполяции, формулы аналогичны рассмотренным выше.
Подчеркнем еще раз: существует единственный многочлен степени
n , принимающий в заданных n  1 точках заданные значения. Таким образом, при одних и тех же x i , yi (i  0 ,  , n) формулы Ньютона (6), (7),
(8), формула Лагранжа (5) есть разные формы записи одного и того же
многочлена (3).
Запись интерполяционного многочлена в форме Ньютона позволяет
сделать некоторые выводы о степени многочлена. Имеем
k yi  hk f (k) () ,
xi    xi k .
При достаточно малом h конечные разности убывают по абсолютной величине с ростом порядка разности.
С другой стороны, величины y i заданы в компьютере с некоторой
погрешностью. Пусть погрешность y i не превосходит  . Тогда погреш4
ность разностей  yi может достигать величины
2,
погрешность разно-
стей 2 yi - величины 22  и т.д. Погрешность разностей
k yi
(k  1,  , n) может достигать величины
2k  .
Возможна ситуация,
когда конечные разности могут стать меньше величины возможной погрешности. Пусть для некоторого k выполняются условия
k yi  2k  по крайней мере для некоторых 0  i  n  k ;
k 1yi  2k 1 для всех i  0 ,  , n  k  1.
(9)
В этом случае использование в формулах Ньютона конечных разностей порядка выше k лишено смысла - они практически не содержат
информации о функции f (x ) . Иными словами, использование интерполяционного многочлена степени выше k в описанных условиях не имеет
смысла. Более того, повышение степени интерполяционного многочлена
может ухудшить точность интерполяции, т.к. разности порядка выше k
практически содержат только погрешности.
Разности k 1yi в условиях (9) называются практически равными
нулю, разности k yi - практически постоянными.
КУСОЧНАЯ ИНТЕРПОЛЯ ЦИЯ.
Мы рассматривали построение интерполяционного полинома для
всего отрезка a , b . Однако, как мы видели, использование интерполя-
ционных полиномов высокой степени не всегда желательно. Кроме того,
характер поведения функции f (x ) на разных участках отрезка a , b может изменяться.
В этих условиях имеет смысл разбить отрезок a , b на ряд участ-
ков с границами в узлах интерполяции и для каждого участка построить
свой интерполяционный многочлен. Вычисление интерполирующей
функции u ( x ) выполняется в два этапа: определяем участок, которому
принадлежит х, затем вычисляем значение многочлена для этого участка.
Условие "границы участков в узлах интерполяции" гарантирует нам непрерывность функции u ( x ) .
5
Интерполяционные формулы Ньютона (6), (7), (8) разработаны в
первую очередь для такого способа интерполирования. Пусть мы используем для интерполяции конечные разности по m yi включительно
(m<n). Т.е. степень интерполяционного многочлена равна m.
Для x  x 0 , x 1  функцию u ( x ) вычисляем по формуле для интер-
полирования вперед, аналогичной формуле (7). Для x  x 1, x 2  "роль" x 0
"выполняет" узел x 1 , вычисления проводятся по формуле, аналогичной
(7), и т.д. Для заданного х определяем i из условия x i  x  x i  1. Для
x  x i , x i 1  функцию u ( x ) вычисляем по формулам
g
x  xi
;
h
g (g  1) 2
g (g  1)  (g  m  1) m
u (x)  yi   yi 
 yi   
 yi.
2!
m!
(10)
С ростом х полином (10) "движется" вдоль отрезка a , b .
Выражения (10) определены для i  0 , 1,  , n  m
x 0  x  x n m 1  , при i  n  m разность
m yi не определена. Для
x n  m 1  x  x n функцию u ( x ) вычисляем по формуле для интерполиро-

вания назад: определяем j из условия x j 1  x  x j ; для x  x j 1, x j

функцию u ( x ) вычисляем по формулам (см. (8)):
g
x  xj
h
(11)
;
u (x)  y j  y j 1 
g (g  1) 2
g (g  1)  (g  m  1) m
 y j 2   
 y j m.
2!
m!
Кусочная интерпретация, как мы отмечали, обеспечивает непрерывность функции u ( x ) . Однако непрерывность производных функции
u ( x ) кусочная интерполяция не обеспечивает. Непрерывность интерполирующей функции и ее производных обеспечивает сплайнинтерполяция.
6
СПЛАЙН - ИНТЕРПОЛЯ ЦИЯ
Сплайнами (полиномиальными сплайнами) называют функции,
"склеенные" из "кусков" многочленов, непрерывные на отрезке a , b и
имеющие на этом отрезке непрерывные производные. Точнее, непре-
рывная на отрезке a , b функция S (x) называется полиномиальным
сплайном (или просто сплайном) порядка
mс
узлами
a  x 0  x1  x 2    x n  b ,
если:
- на каждом из отрезков x 0 , x 1, x 1, x 2 ,  , x n 1, x n  S (x) есть
алгебраический многочлен степени m ;
- в узлах интерполяции x i (i  0 ,  , n) функция S (x) имеет непрерывные производные по S(m  k ) ( x ) включительно;
- в каждой точке x i (i  0 ,  , n) производная S(m  k 1) ( x ) может
иметь разрыв.
Говорят, что сплайн порядка m имеет дефект k. Множество всех
таких сплайнов на отрезке a , b обозначают Skm n [a, b] .
Наиболее часто для численного интерполирования используются
кубические сплайны S13 , т.е. функции, которые на каждом отрезке
x i , x i 1 i  (0 , , n  1) задаются своим многочленом 3-ей степени и
для
которых выполняются условия:
S ( x 0  0)  y 0 ; S (x i  0)  S (x i  0)  yi ; (i  1,  , n  1) ; S (x n  0)  yn
(12)
S ( x i  0)  S ( x i  0)
(i  1,  , n  1) ;
(13)
S (x i  0)  S (x i  0)
(i  1,  , n  1) .
(14)
На отрезке x i , x i 1 функция S (x) будет иметь вид:
S (x)  ai x 3  bi x 2  ci x  di , xi  x  xi 1 ,
i  0 ,  , n  1. (15)
Коэффициенты ai , bi , c i , di определяются из условий (12)-(14).
Т.о. для задания функции S (x) необходимо решить систему из 4 n ли7
нейных алгебраических уравнений с 4 n неизвестными. (Отметим, что
условия (12) - (14) дают нам только 4 n  2 уравнения). Задача резко
упрощается, если использовать специальную форму записи полинома
(15).
Если на отрезке x i , x i 1 функцию S (x) искать в виде:


(16)
  1  ,
(17)
S (x)   yi 1   yi  hi2 (3  ) i 1  ( 3  ) i ,
где
hi  x i 1  x i ;
  ( x  x i ) hi ;
то условия (12) и (14) выполняются автоматически. Условия (13) дают
нам систему уравнений для определения коэффициентов  i
hi 1 i 1  2 (hi 1  hi ) i  hi i 1 
y i 1  y i y i  y i 1

; i  1, , n  1.(18)
hi
hi 1
Система (18) дает нам n  1 уравнение для определения n  1 неизвестных коэффициентов 0 , 1 ,  , n . Для обеспечения единственности решения необходимы дополнительные условия. Эти условия могут
определяться, например, условиями задачи. Обычно при интерполировании используются условия, называемые естественными:
S(x 0 )  0
(0  0) ;
S( x n )  0
(n  0) .
(19)
Уравнения (18) и (19) образуют систему с трехдиагональной матрицей. Система легко решается методом прогонки.
Для вычисления значений S (x) необходимо определить i из условия x i  x  x i  1 и затем вычислить значение полинома (16).
Сплайн-интерполяция имеет ряд преимуществ по сравнению с полиномиальной интерполяцией. Одно из них связано с большей устойчивостью сплайнов к погрешностям, содержащимся в исходных данных. Это
обусловлено тем обстоятельством, что сплайны имеют минимальную
кривизну из всех функций, интерполирующих данные точки.
АППРОКСИМАЦИЯ ФУНКЦИЙ
Интерполирующая функция u ( x ) строится как функция, принимаю8
щая в узлах интерполяции a  x 0  x 1  x 2    x n  b значения функции f ( x ) : y 0 , y1 ,  , y n
yi  f (x i ) . Если значения
y i представлены с
погрешностями и эти погрешности достаточно велики (например, y i экспериментальные данные), то применять интерполирующую функцию
для приближения функции f (x ) не имеет смысла - вместо функции f (x )
мы интерполируем сумму функций f (x )  (x ) , где ( x ) - погрешность. В
этом случае для определения функции u ( x ) условие u ( x i )  yi
(i  0 ,  , n) удобнее заменить условием минимального отклонения
функции u ( x ) от функции f (x ) . В качестве критерия отклонения выбираем среднее квадратическое отклонение
1 n
u (x i )  yi 2 .

n  1 i0
Итак, функцию u ( x ) ищем в виде линейной комбинации базисных
функций (см. (1))
u(x )  c 0 0 (x )  c1 1(x )    c m m ( x ), (m  n),
(20)
коэффициенты c 0 , c1 ,  , c m определяются из условия
min F (c 0 , c1 ,  , c m )  min
n
 u ( x k )  y k 2 .
(21)
k 0
Функция u ( x ) называется аппроксимирующей. Метод определения
коэффициентов функции u ( x ) называется методом наименьших квадратов.
Если m  n , то функция u ( x ) превращается в интерполирующую:
u ( x i )  yi , min F (c 0 , c1 ,  , c m )  0 .
Если m  n , то условие u ( x i )  yi
, вообще говоря, не выполняет-
ся. График функции u ( x ) проходит "рядом" с точками ( x i , yi ) . Далее,
если ( x ) не содержит системной ошибки (систематическая составляющая просто "доопределит" функцию f (x ) ), то погрешности величин y i
принимают как положительные, так и отрицательные значения. Условие
минимизации (21) "требует", чтобы график функции u ( x ) проходил
9
"между" точками ( x i , yi ) - ниже "высоких" и выше "низких". Функция u ( x )
"сглаживает" флюктуации, вызванные погрешностями величин y i , частично компенсирует эти погрешности.
Перейдем к определению коэффициентов c 0 , c1 ,  , c m . Из (20) и
(21) получаем
2
m

2

F (c 0 , c1 ,  , c m )   u ( x k )  y k     c j  j ( x k )  y k  .


k 0
k 0  j0

Необходимым условием минимума функции F (c 0 , c1 ,  , c m ) являn
n
ется обращение в нуль ее первых производных:  F  c i  0 , i  0,, m .
Имеем:
n
m

F
  2   c j  j ( x k )  y k   i ( x k ) 

 c i k  0  j  0

n
2
m
n
 c j  j ( x k ) i ( x k )  2  y k i ( x k ) ;
k 0 j0
k 0
или, изменив порядок суммирования,
m
n
n
F
 2  c j  i ( x k )  j ( x k )  2  y k i ( x k ).
 ci
j0
k 0
k 0
Приравняв это выражение к нулю, получаем систему линейных
уравнений для определения коэффициентов c 0 , c1 ,  , c m
m
 aijc j  bi ,
i  0,, m ,
(22)
j0
где
aij 
n
 i ( x k )  j ( xk );
k 0
bi 
n
 y k i ( x k ) ,
i, j  0,1,, m.
(23)
k 0
В качестве базисных мы выбираем степенные функции  ( x)  x  ,
  0,1,, m . Выражения (23) для этих функций могут быть переписаны в
виде
10
aij 
n
 xik j;
k 0
bi 
n
 xik yk ,
i, j  0,1,, m .
(24)
k 0
Итак, коэффициенты аппроксимирующего многочлена ищутся как
решение системы (22), коэффициенты которой даются выражениями (24).
Значение полинома вычисляется по формуле
u(x)  c 0  ci x  c 2 x 2    cmx m .
ЧИСЛЕННОЕ ДИФФЕРЕНЦИРОВАНИЕ И ИНТЕГРИРОВАНИЕ
Методы интерполирования и аппроксимации используются также и
для приближенного вычисления интеграла и производных функции f (x ) .
Для приближенного вычисления производных функцию f (x ) заменяем интерполирующей (аппроксимирующей) функцией u ( x ) , полагаем
f (x )  u(x ), f (x )  u(x ) и т.д. В качестве u ( x ) удобнее всего использовать сплайн (не обязательно кубический). Следует подчеркнуть, что погрешности вычисления производных будут превышать погрешность вычисления самой функции f (x ) . Существуют и другие методы приближенного вычисления производных.
Для приближенного вычисления интегралов методы интерполирования и аппроксимации являются основными методами.
Для приближенного вычисления интеграла
b
 f ( x) dx
a
функция f ( x ) на отрезке a, b заменяется интерполирующей (аппроксимирующей) функцией и вычисляется интеграл от этой функции.
Рассмотрим один из наиболее часто встречающихся методов численного интегрирования - метод Симпсона. Схема метода заключается в
следующем:
- интервал a, b разбиваем на 2 n подинтервалов, имеем
11
n 1 x 2i  2
b
 f ( x) dx  
i0
a
-
 f ( x) dx,
x k  a  kh, k  0,, 2 n, h 
x 2i
ba
;
2n
на отрезке x 2i , x 2i  2  (i  0,) функцию f ( x ) заменяем интерполяционным полиномом Лагранжа степени 2 , получаем
x 2i  2

f ( x ) dx 
x 2i
2i  2
x 2i  2
 yk 
k  2i
 k ( x ) dx 
x 2i
b
 f ( x) dx 
a
h
y 2i  4y 2i 1  y 2i  2  ;
3
h
f (a)  f (b)  4 S1  2S2 ,
3
где
S1 
n 1
 y 2i 1 ;
i0
n 1
S2   y 2i .
i 1
Для оценки погрешности интегрирования шаг интегрирования h делим на 2 и повторяем расчет интеграла. Если абсолютная величина
разности между «предыдущим» и «последующим» значениями интеграла
не превосходит заданной величины  , в качестве приближенного значения интеграла берем последнее вычисленное значение и расчет заканчиваем. В противном случае шаг интегрирования снова делим пополам и
повторяем расчет.
Отметим, что при делении шага интегрирования пополам для вычисления суммы S 2 достаточно сложить суммы S 2 и S1, вычисленные для
предыдущего шага. Для нового шага интегрирования необходимо вычислить только сумму S1, включающую только «новые» значения функции,
т.е. вычисления можно начинать с шага (b  a) 2
(n  1) .
Изложенную схему метода Симпсона следует рассматривать как
упрощенную. Если вычисление функции f (x ) требует значительных затрат ресурса компьютера, не имеет смысла проводить численное инте-
грирование с постоянным шагом. На «спокойных» участках отрезка a, b
шаг интегрирования без ущерба для точности вычислений может быть
увеличен, на «сложных» участках шаг интегрирования следует умень12
шить. Изменения шага интегрирования должны сопровождаться контролем точности.
ЗАДАНИЯ
1. Проинтерполировать функцию Рунге
f ( x)  1 (1  25x 2 )
на отрезке  1, 1 многочленом степени n по n  1 равностоящим узлам
x i  1  ih ; i  0,1,  , n ; h  2 n .
Использовать многочлен Лагранжа. Вычислить среднюю квадратическую
погрешность по 1000 точек.
Провести расчеты для n  12,16, 20 . Представить график функции и
графики многочленов.
УКАЗАНИЕ: средней квадратической погрешностью называется корень квадратный из среднего квадрата отклонения приближенного значения функции в узлах x j ( j  0 , k ) от точного



1 k
2
f ( x j )  u( x j ) .

k  1 j0
Средняя квадратическая погрешность характеризует степень приближения функции f (x ) интерполирующей функцией u ( x ) на всем отрезке интерполирования.
2. Выполнить кусочную интерполяцию функции Рунге

f ( x)  1 1  25x 2
на отрезке  1,1 . Для этого:
-

вычислить значения функции в точках
x i  1  i  0.1, i  0,1,, 20 ;
-
для отрезков  1,  0.3,
 0.3, 0.3, 0.3,1 построить свои ин-
терполяционные полиномы.
13
Использовать подпрограмму вычисления значений многочлена Лагранжа по узлам x  , x  1,, x r . Вычислить среднюю квадратическую погрешность по 1000 точек.
Повторить расчеты для отрезков  1,  0.2,
 0.2, 0.2, 0.2,1 .
Сравнить с интерполяционным полиномом степени 20 по всем узлам интерполяции.
Представить графики исходной и интерполирующей функций.
3. Вычислить значения функции Рунге

f ( x)  1 1  25x 2
в точках x i  1  ih, i  0,1,, n,

h  2 n.
Используя схему "движущегося" (по узлам x  , x  1,, x   m ) полино-
ма Лагранжа проинтерполировать функцию Рунге на отрезке  1,1 полиномом степени
m.
Определить среднюю квадратическую погрешность по
1000 точек.
Выполнить расчеты для m  2, 5 и n  20,10 . Представить графики
исходной и интерполирующих функций.
4. Вычислить значения функции Рунге

f ( x)  1 1  25x 2
в точках x i  1  ih, i  0,1,, n,

h  2 n . Используя интерполяционные
формулы Ньютона проинтегрировать функцию f (x ) на отрезке  1,1 многочленами 2-й и 3-й степени. Определить среднюю квадратическую погрешность по 1000 точек.
Выполнить расчеты для n  20,10 . Представить графики основной и
интерполирующих функций.
5. Вычислить значения функции Рунге

f ( x)  1 1  25x 2
в точках x i  1  ih, i  0,1,, n,

h  2 n . Проинтерполировать функцию
14
f (x) на отрезке  1,1 кубическим сплайном. Вычислить среднюю квадратическую погрешность по 1000 точек.
Выполнить расчеты для n  10,15, 20 . Представить графики исходной и интерполирующих функций.
2
6. Вычислить значения функции f ( x )  e  25 x в точках
x i  1  ih, i  0,1,, n, h  2 n . По полученным узлам интерполяции
проинтерполировать функцию f (x ) на отрезке  1,1 кубическим сплайном и "движущимся" полиномом Ньютона 3-ей степени. Определить
средние квадратические погрешности по 1000 точек.
Выполнить расчет для n  10, 20 . Представить графики исходной и
интерполирующих функций.
7. Проинтерполировать функцию f ( x )  cos x на отрезке 0,  кубическим сплайном по n  1 равностоящим узлам. Вычислить среднюю
квадратическую погрешность по 1000 точек. Обратить внимание на значения сплайна вблизи концов отрезка.
"Естественные" условия (19) заменить на реальные (для функции
cos x ) условия и повторить расчет.
Выполнить расчеты для n  10, 20 . Представить графики исходной и
интерполирующих функций.
8. Числа вещественного типа представляют в компьютере как числа
"с плавающей точкой"
x  a  2p , где 0,5  a  1, p - целое.
Для вычисления
но, полагаем a  a 2,
x порядок p приводим к четному: если p нечетp  p  1. В этом случае
x  a  2p 2 ,
0.25  a  1. Умножение на степень 2 означает прибавление показателя
степени к порядку числа. Для вычисления
терполяционный многочлен степени
n по
a
(a  0) используем ин-
n  1 равностоящим узлам. Для
15
оценки погрешности интерполяции используем среднюю квадратическую
погрешность.
Определить интерполяционный многочлен наименьшей степени,
позволяющий вычислять значения функции
x на отрезке 0.25,1 с по-
грешностью, не превосходящей  .
Выполнить расчет для   101, 102 , 103 . Представить график
функции
x и графики интерполирующих функций.
Примечание: В компьютере
a ищется как решение уравнения
x 2  a  0 итерационным методом Ньютона.
9. В компьютере числа вещественного типа представляются в виде
"с плавающей точкой"
x  a  2p , где 0,5  a  1, p - целое.
Для вычисления e x функцию e x преобразуем к виду e x  2z , где
z  x ln 2 . Величину
целое к z,
z
представим в виде z  p  a , где p - ближайшее
 0.5  a  0.5 .
Для вычисления 2 z достаточно вычислить 2 a и к порядку результата
прибавить p . Для вычисления 2 a используем интерполяционный полином степени n по n+1 равноотстоящим узлам. Для оценки погрешности
интерполяции используем среднюю квадратическую погрешность по
1000 точек.
Определить интерполяционный многочлен наименьшей степени,
позволяющий вычислять значения функции 2 x на отрезке  0.5, 0.5 с
погрешностью, не превосходящей  .
Выполнить расчет для   101, 102 , 103 . Представить графики
функции 2 x и интерполирующих функций.
10. В компьютере числа вещественного типа представляются в виде
"с плавающей точкой"
16
x  a  2p , где 0,5  a  1, p - целое.
Для вычисления ln x функцию ln x преобразуем к виду
ln x  ln 2  log 2 x  ln 2 log 2 a  p ,
0.5  a  1.
Для вычисления log2 a используем интерполяционный полином степени n по n+1 равностоящим узлам. Для оценки погрешности интерполяции используем среднюю квадратическую погрешность по 1000 точек.
Определить интерполяционный многочлен наименьшей степени,
позволяющий вычислять значения функции log 2 x на отрезке 0.5,1 с погрешностью, не превосходящей .
Выполнить расчет для   101, 102 , 103 . Представить график функции log 2 x и графики интерполирующих функций.
11. В ходе химического эксперимента получены следующие семь пар
данных
t -1.000
-0.960
-0.860
-0.790
0.220
0.500
0.930
y -1.000
-0.151
0.894
0.986
0.895
0.500
-0.306
Предполагается, что y( t ) - очень гладкая кривая. Для оценки значений y( t ) на отрезке  1,1 проинтерполировать функцию y( t ) по заданным точкам полиномом Лагранжа в шестой степени и кубическим сплайном. Представить графики интерполирующих функций. Отметить на графике заданные точки. Оценить качество приближения по сравнению с
графиком, который мы провели бы "от руки".
12. По данным задачи 11 построить аппроксимирующие полиномы
степеней 2, 3, 4, построить кубический сплайн. Представить графики полиномов и сплайна, отметить на графике заданные точки. Проанализировать графики.
13. Моделируем получение экспериментальных данных:
- в точках x i  1  ih; i  0,, n; h  2 n вычисляем значения
функции
y  f ( x)  1  0.5x  0.25x 2 ;
- в полученные точные значения y i  f ( x i ) вносим "погрешность
измерения". Для этого с помощью датчика случайных чисел получаем последовательность  0 , , n случайных чисел, равномерно распределенных на отрезке  1,1 . Полагаем y i  y i  i , где  - максимальная величина погрешности.
17
По полученным "экспериментальным данным" построить аппроксимирующие полиномы 2-й и 3-й степени и выполнить интерполяцию многочленами 2-й и 3-й степени по формулам Ньютона. Вычислить средние
квадратические погрешности по 1000 точек. Представить графики функции f (x ) , аппроксимирующих и интерполирующих функций. Отметить на
графике заданные точки.
Выполнить расчеты для n=10 и =0.1, 0.05, 0.01.
14. То же, что в задаче 13. Расчеты выполнить для   0.1 и
n  10, 20, 40 .
15. Смоделировать получение экспериментальных данных (см. задачу 13). По полученным данным построить аппроксимирующие полиномы 2-й и 3-й степени и кубический сплайн. Определить средние квадратические погрешности по 1000 точек. Представить графики функции
f (x) , аппроксимирующих и интерполирующих функций, отметить на графике заданные точки.
Выполнить расчеты для n  10 и   0.1, 0.05, 0.01.
16. То же, что в задаче 15. Расчеты выполнить для   0.1 и
n  10, 20, 40 .
17. В точках x i  ih, i  0,1,, n, h  1 n вычислить значения функции
y  f ( x)  t( x)  sin10x; t( x)  x 2  0.5 .
Считаем последовательность x i , y i  экспериментальными данными.
Требуется выделить тренд (не осциллирующую составляющую) функции
f (x) . Для этого на основе полученных точек построить аппроксимирующие многочлены 2-й, 3-й степени и 4-й степени. Вычислить средние
квадратические отклонения многочленов от функции t( x ) . Представить
графики функций f (x ) , t( x ) и аппроксимирующих многочленов. Отметить
на графике заданные точки.
Расчеты провести для n=10, 20, 50.
18
18. Дано n экспериментальных точек x i , y i  i  1, 2,, n . С помощью
метода наименьших квадратов найти параметры наилучшего приближения a, b для аппроксимирующих функций
a) y=ax+b;
b) y=aebx;
c) y=a+b/x;
d) y=axb;
e) y=a ln x+b;
f) y=1/(ax+b).
Составить подпрограмму, которая находит a и b. Представить графики
функций. Отметить на графике заданные точки.
19. В узлах xi = -10 + i, i = 0, 1,  , 20 заданы значения функции
 1, если x i  0;
yi  
0, если x i  0.
Проинтерполировать по заданным точкам функцию y( x ) кубическим
сплайном, многочленами Ньютона 2-й и 3-й степени, многочленом Лагранжа степени 20. Представить графики функций. Отметить на графике
заданные точки. Проанализировать результаты.
20. В узлах xi = -10 + i, i = 0, 1,  , 20 заданы значения функции
 1, если x i  0;

y i  0, если x i  0;
 1, если x i  0.
Проинтерполировать по заданным точкам функцию y( x ) кубическим
сплайном, многочленами Ньютона 2-й и 3-й степени, многочленом Лагранжа степени 20. Представить графики функций. Отметить на графике
заданные точки. Проанализировать результаты.
21. Вычислить по методу Симпсона с точностью до  интеграл
1
1
 1  25x 2 dx.
1
Сравнить с точным значением. Указать шаг и число точек, при которых достигается заданная точность.
19
Выполнить расчеты для =10-2, 10-3, 10-4, 10-5.
22. В точках x i  1  ih, i  0,1,, n, h  2 n вычислить значения
функции y  1 (1  25x 2 ) . Вычислить (приближенно) по заданным точкам
1
1
 1  25x 2 dx,
1
построив кубический сплайн и взяв интеграл от сплайна. Вычислить интеграл по формуле Симпсона. Указать погрешности вычислений.
Выполнить расчеты для n  6,10, 20, 30 .
23. Для приближенного решения интегрального уравнения
b
u( x )   k( x, t ) u( t ) dt  f ( x )
a
применим метод интерполирования.
Решение ищем в точках x i  a  ih, i  0,1,, 2n, h  (b  a) 2n . Для
x=xi имеем
b
ui   k( x i , t ) u( t ) dt  f ( x i )
a
или
n 1
t 2j 2
j0
t2j
ui  

 k( xi, t ) u(t ) dt  f ( xi ),
t j  a  jh.

На отрезке t 2 j , t 2 j  2 функцию u ( t ) заменяем полиномом Лагранжа
степени 2. Имеем
t
n 1 2 j  2
ui  
j0

t2j
 2 j 2

k( x i , t )   um  m ( t )  dt  f ( x i ).
 m2 j



Вычислив интегралы
t 2j 2
 k( x i, t )  m (t ) dt
t2j
20
получаем систему линейных уравнений для определения неизвестных
ui  u( x i )
(i  0,, 2n) . Значения функции u ( x ) в промежуточных точках
ищутся как значения интерполяционного многочлена степени 2.
Используя предложенную методику найти приближенное решение
интегрального уравнения
1
u( x )   ( x  t )2u( t ) dt 
1
1

1  25x 2


2
2
1  25x 2 arctg5 
.
125
25
Точное решение уравнения: u( x)  1 (1  25x 2 ) . Вычислить среднюю
квадратическую погрешность по 1000 точек.
Выполнить расчеты для n  5,10,15 . Представить графики функций.
Отметить на графиках полученные точки.
24. Для приближенного решения интегрального уравнения
b
u( x )   k( x, t ) u( t ) dt  f ( x )
a
используем кубический сплайн.
Решение ищем в точках x i  a  ih, i  0,1,, n, h  (b  a) n . Заменив под знаком интеграла функцию u(t) сплайном S(t) для x = xi (i=0,
1,  , n) получаем
t
n 1 j  1
ui  
j0
 k( xi, t )  u j 1   u j  h
2

3


 
   j 1   3    j dt  f ( x i ),
tj
где ( t )  t  t i  h ;
( t )  1  ( t )  t i 1  t  h ;
t i  t  t i 1 .
Решив полученную систему линейных уравнений совместно с системой, определяющей коэффициенты сплайна, относительно неизвестных ui (i=0,  , n) и
i (i=0,  , n) получим приближенные значе-
ния функции u ( x ) в заданных точках и коэффициенты сплайна. Значения функции в промежуточных точках вычисляются сплайнинтерполяцией.
Используя предложенную методику найти приближенное решение
интегрального уравнения
21
1
u( x ) 
 x  t 
2
1
u( t ) dt 
1
1  25x
2



2
2
25x 2  1 arctg 5 
.
125
25


Точное решение уравнения u( x)  1 (1  25x 2 . Вычислить среднюю
квадратическую погрешность по 1000 точек.
Выполнить расчеты для n  5,10,15 . Представить графики функций.
Отметить на графиках полученные точки.
25. Приближенное (довольно грубое) решение задачи Коши
y'=f(x, y),
y(a)=ya
в точках xi=a+ih, i=0, 1,  можно получить методом Эйлера
y0=ya;
yi+1=yi+h f(xi,yi),
(yi=y(xi)), i=0, 1,  .
Используя метод Эйлера найти приближенное решение задачи Коши
у' = -у,
у(0)=1
на отрезке 0,1 в точках x i  ih, i  0,1,, n, h  1 n . Проинтерполировать по полученным точкам функцию y( x ) многочленами Ньютона 2-й
и 3-й степени и кубическим сплайном. Определить средние квадратические погрешности по 1000 точек.
Точное решение задачи: y  e x .
Представить графики точного решения и интерполирующих функций.
Выполнить расчеты для n=10, 20, 50.
26. Применим метод Эйлера (см. задачу 25) для приближенного решения задачи Коши
y  f ( x, y, y),
y(a)  y a ,
y(a)  ya .
Для этого дифференциальное уравнение второго порядка представим в виде системы уравнений
y  u;
u  f ( x, y, u);
y(a)  y a ; u(a)  ya .
К системе уравнений применим метод Эйлера. Ищем приближенное решение в точках x i  a  ih,
i  0,1,, полагаем
22
y 0  y a , u0  ya ;
y i 1  y i  hui ; ui 1  ui  h f ( x i , y i , ui ), i  0,1, .
Используя метод Эйлера найти приближенное решение задачи
y  y  2y  0,
y(0)  1;
y(0)  1
на отрезке 0, 2 в точках x i  ih, i  0,1,, n, h  2 n . Проинтерполировать по полученным точкам функцию y( x ) многочленом Ньютона 2-й
степени. Вычислить среднюю квадратическую погрешность по 1000 точек.
Выполнить расчеты для n=20, 50, 100. Представить графики функций. Отметить на графиках полученные точки.
27. Разработать программу приближенного решения краевой задачи
y  p( x ) y  q( x ) y  f ( x );
y(a)  y a ; y(b)  y b
на отрезке a, b с помощью кубического сплайна.
Указание: ищем решение в точках
x i  a  ih, i  0,1,, 2n, h  (b  a) 2n .
Подставив сплайн в уравнение и положив x  x i (i  0,, n) получим систему линейных уравнений относительно неизвестных yi и коэффициентов сплайна . Дополнительные уравнения дают граничные условия: y0=ya,
yn=yb. Решив полученную систему уравнений совместно с системой,
определяющей коэффициенты сплайна, получим значения функции yi и
коэффициентов сплайна i. "Естественные" условия S(a)  S(b)  0 из
системы отбрасываются – они заменяются граничными условиями.
С помощью разработанной программы найти приближенно решение краевой задачи
2
y  2xy  3y  e  x ;
y(0)  1;
y(1)  e 1.
Определить среднюю квадратическую погрешность по 1000 точек.
2
Точное решение задачи y  e  x .
Выполнить расчеты для n=20, 50, 100. Представить графики точного
23
решения и сплайна. Отметить на графиках полученные точки.
ЛИТЕРАТУРА
1. Крячков А.В., Сухинина И.В., Томшин В.К. Программирование на
С и С++, практикум. М.: Изд-во Радио и связь, 1997.
2. Касьянов В.Н., Сабельфельд В.К. Сборник заданий по практикуму
на ЭВМ. М.: Наука, 1986.
3. Демидович Б.П., Марон И.А. Основы вычислительной математики,
гл 4. М.: ФМЛ, 1970.
4. Калиткин . Численные методы. М., 1978.
5. Форсайт Дж., Малькольм М., Моулер К. Машинные методы математических вычислений. М.: Мир, 1980.
24
Download