- •Содержание
- •Лекция № 1. Теория погрешностей План
- •1.1. Источники и классификация погрешностей
- •1.2. Абсолютная и относительная погрешности. Формы записи данных
- •1.3. Вычислительная погрешность
- •2.1. Общие сведения и определения
- •2.2. Отделение корней
- •2.3. Метод половинного деления
- •2.4. Метод простой итерации
- •2.5. Преобразование уравнения к итерационному виду
- •2 0.777373 -3.32063 Search
- •Лекция № 3. Методы решения систем линейных алгебраических уравнений План
- •3.1. Общие сведения и основные определения
- •3.2. Метод Гаусса и его реализация в пакете matlab
- •3.3. Вычисление определителей
- •3.4. Решение систем линейных уравнений методом простой итерации
- •5. Метод Зейделя
- •3.6. Решение систем линейных уравнений средствами пакета matlab
- •Выражения
- •Лекция № 4. Методы решения систем нелинейных уравнений
- •4.2. Метод Ньютона решения систем нелинейных уравнений
- •Последовательные приближения корней
- •4.3. Решение нелинейных систем методами спуска
- •4.4. Решение систем нелинейных уравнений средствами пакета matlab
- •Iteration Func-count f(X) step optimality cg-iterations
- •Iteration Func-count f(X) step optimality cg-iterations
- •Лекция № 5. Интерполирование функций План
- •5.1. Постановка задачи
- •Решение задачи находится отысканием некоторой приближающей функции f(X), близкой в некотором смысле к функции f(X), для которой известно аналитическое выражение/
- •5.2. Интерполяционный полином Лагранжа
- •5.3. Интерполяционный полином Ньютона для равноотстоящих узлов
- •5.3.1. Конечные разности
- •5.3.2. Первая интерполяционная формула Ньютона
- •5.3.3. Вторая интерполяционная формула Ньютона
- •5.4. Погрешность интерполяции
- •5.5. Сплайн-интерполяция
- •5.6. Решение задачи одномерной интерполяции средствами пакете matlab
- •Лекция № 6. Численное дифференцирование
- •6.2. Особенности задачи численного дифференцирования функций, заданных таблично
- •6.3. Интегрирование функций, заданных аналитически (формула прямоугольников, формула трапеций, формула Симпсона)
- •6.4. Погрешность численного интегрирования
- •6.5. Вычисление интегралов методом Монте-Карло
- •Лекция № 7. Методы обработки экспериментальных данных План
- •7.1. Метод наименьших квадратов
- •Сумма квадратов отклонений
- •7.2. Нахождение приближающей функции в виде линейной функции и квадратичного трехчлена
- •7.5. Аппроксимация функцией произвольного вида
- •Лекция № 8. Преобразование Фурье
- •8.2. Эффект Гиббса
- •8.3. Спектральный анализ дискретных функций конечной длительности
- •8.4. Быстрое преобразование Фурье
- •Лекция № 9. Численные методы решения обыкновенных дифференциальных уравнений План
- •9.1. Основные сведения и определения
- •9.2. Метод Пикара
- •9.3. Метод Эйлера
- •9.4. Метод Рунге-Кутта
- •9.5. Средства пакета matlab для решения обыкновенных дифференциальных уравнений
5.4. Погрешность интерполяции
Погрешность интерполяции полиномом Лагранжа оценивается по формуле:
, (5.22)
где
, (5.23)
. (5.24)
Погрешность интерполяции полиномом Ньютона оценивается по формулам:
, (5.25)
. (5.26)
5.5. Сплайн-интерполяция
При большом количестве узлов интерполяции приходится использовать интерполяционные полиномы высокой степени, что создает определенные неудобства при вычислениях. Можно избежать высокой степени интерполяционного многочлена, разбив отрезок интерполяции на несколько частей с построением на каждой части самостоятельного интерполяционного многочлена. Однако такое интерполирование обладает существенным недостатком: в точках сшивки разных интерполяционных полиномов будет разрывной их первая производная, поэтому для решения задачи кусочно-линейной интерполяции используют особый вид кусочно-полиномиальной интерполяции сплайн-интерполяцию.
Сплайн это функция, которая на каждом частичном отрезке интерполяции является алгебраическим многочленом, а на всем заданном отрезке непрерывна вместе с несколькими своими производными.
Пусть интерполируемая функция f(x) задана своими значениями в узлах , . Обозначим длину частичного отрезка . Будем искать кубический сплайн на каждом из частичных отрезков в виде:
, (5.27)
где четверка неизвестных коэффициентов. Можно доказать, что задача нахождения кубического сплайна имеет единственное решение.
Потребуем совпадения значений в узлах с табличными значениями функции :
, (5.28)
. (5.29)
Число этих уравнений (2n) в два раза меньше числа неизвестных коэффициентов. Для того чтобы получить дополнительные условия, потребуем также непрерывности первой и второй производных сплайна во всех точках, включая узлы. Для этого следует приравнять левые и правые производные ,,,во внутреннем узле.
Вычислив выражения для производных ,последовательным дифференцированием (5.27):
, (5.30)
, (5.31)
найдем правые и левые производные в узле:
,
,
где .
Аналогично поступаем для второй производной:
,
.
Приравняв левые и правые производные, получаем:
, (5.32)
, (5.33)
где .
Уравнения (5.32), (5.33) дают еще 2(n1) условий. Для получения недостающих уравнений накладывают требования к поведению сплайна на концах отрезка интерполяции. Если потребовать нулевой кривизны сплайна на концах отрезка интерполяции (т.е. равенство нулю второй производной), то получим:
, (5.34)
Исключив из уравнений (5.28)(5.33) n неизвестных , получаем систему уравнений:
(5.35)
где .
Система (5.35) состоит из 3n уравнений. Решив систему (5.35), получаем значения неизвестных , определяющих совокупность всех формул для искомого интерполяционного сплайна
(5.36)
где .
Программа, реализующая метод сплайн-интерполяции оказывается достаточно громоздкой, поэтому мы ограничимся обсуждением решения задачи об интерполяции синуса с помощью кубических сплайнов, используя функцию пакета MATLAB: spline( ).
1. Задание табличных значений интерполируемой функции
>> N=8;
>> i=1:N;
>> x(i)=2*pi/(N-1)*(i-1);
>> y=sin(x);
2. Задание значения абсцисс точек, в которых вычисляется значение интерполяционного полинома
>> M=1000;
>> j=1:M;
>> X(j)=2*pi/(M-1)*(j-1);
>> Y=sin(X); % вычисление точных значений интерполируемой функции
4. Вычисление интерполируемых значений функции в узлах координатной сетки
>> yy=spline(x,y,X);
5. Визуализация результатов сплайн-интерполяции и разности между точными и интерполированными значениями (рис. 5.6, 5.7)
>> plot(x,y, 'o',X,yy);
>> plot(X,Y-yy);
6. Вычисление и визуализация значений первых производных сплайна (рис. 5.8)
>> m=1:M-1
>> yy1(m)=(yy(m+1)-yy(m))/(2*pi/(M-1));
>> plot(X(m),yy1(m))
Рис. 5.6
Рис. 5.7
Рис. 5.8
Рис. 5.9
7. Вычисление и визуализация значений вторых производных сплайна
>> m=1:M-2;
>> yy2(m)=(yy1(m+1)-yy1(m))/(2*pi/(M-1));
>> plot(X(m),yy2(m))
8. Вычисление значений и визуализация третьих производных сплайнов (рис. 5.10)
>> yy3(m)=(yy2(m+1)-yy2(m))/(2*pi/(M-1));
>> plot(X(m),yy3);
>> m=1:M-3;
Рис. 5.10
Как видно из рис. 5.75.10, первая и вторая производные сплайнов являются непрерывными функциями, третья и производные более высокого порядка разрывными функциями.