Лабораторная работа 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 ; i0 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 yn2 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 i0 Итак, функцию 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 j0 Необходимым условием минимума функции 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 j0 k 0 или, изменив порядок суммирования, m n n F 2 c j i ( x k ) j ( x k ) 2 y k i ( x k ). ci j0 k 0 k 0 Приравняв это выражение к нулю, получаем систему линейных уравнений для определения коэффициентов c 0 , c1 , , c m m aijc j bi , i 0,, m , (22) j0 где 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 i0 a - f ( x) dx, x k a kh, k 0,, 2 n, h x 2i ba ; 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 ; i0 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 j0 Средняя квадратическая погрешность характеризует степень приближения функции 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 с по- грешностью, не превосходящей . Выполнить расчет для 101, 102 , 103 . Представить график функции 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 с погрешностью, не превосходящей . Выполнить расчет для 101, 102 , 103 . Представить графики функции 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 с погрешностью, не превосходящей . Выполнить расчет для 101, 102 , 103 . Представить график функции 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 j0 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 j0 t2j 2 j 2 k( x i , t ) um m ( t ) dt f ( x i ). m2 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 j0 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) ya . Для этого дифференциальное уравнение второго порядка представим в виде системы уравнений y u; u f ( x, y, u); y(a) y a ; u(a) ya . К системе уравнений применим метод Эйлера. Ищем приближенное решение в точках x i a ih, i 0,1,, полагаем 22 y 0 y a , u0 ya ; 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