- •Содержание
- •Лекция № 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.3.2. Первая интерполяционная формула Ньютона
Будем искать интерполяционный полином в виде:
. (5.15)
Значения коэффициентов найдем из условия совпадения значений исходной функции и многочлена в узлах. Полагая, из (5.15) найдем, откуда. Далее последовательно придаваях значения и, получаем:
откуда ;
,
т. е.
,
или
,
откуда
.
Затем, проведя аналогичные выкладки, можно получить
.
В общем случае выражение для будет иметь вид
. (5.16)
Подставляя (5.16) в выражение для многочлена (5.15), получаем
(5.17)
Решение задачи о нахождении значений интерполяционного полинома находится в пакете MATLAB выполнением следующей последовательности действий.
1. Создать файл Newton1.m, содержащий описание функции, возвращающей локальное значение интерполяционного полинома Ньютона
% листинг файла Newton1.m
function z=Newton1(t,x,y)
% t абсцисса точки, в которой вычисляется значение интерполяционного
% полинома
% x, y координаты точек, заданных таблично
N=length(x);
for i=1:N
f(i,1)=y(i);
end;
for k=2:N
for i=1:N-k+1
f(i,k)=(f(i+1,k-1)-f(i,k-1))/(x(i+k-1)-x(i));
end;
end;
s=y(1);
for k=2:N
r=1;
for i=1:k-1
r=r.*(t-x(i));
end;
s=f(1,k)*r+s;
end;
z=s;
2. Задать табличные значения интерполируемой функции
>> N=8;
>> i=1:N;
>> x(i)=2*pi/(N-1)*(i-1);
>> y=sin(x);
3. Задать значения абсцисс точек, в которых вычисляется значение интерполяционного полинома
>> M=1000;
>> j=1:M;
>> X(j)=2*pi/(M-1)*(j-1);
>> Y=sin(X); % вычисление точных значений интерполируемой функции
4. Вычислить значения полинома Ньютона в узлах заданной координатной сетки
>> for k=1:M
Z(j)=Newton1(X(j),x,y);
end;
5. Построение разности между точным и интерполированными значениями функции (рис. 5.4)
>> plot(X,Y-Z)
Рис. 5.4. Разность между точным и интерполированными значениями функции с помощью первого полинома Ньютона
Отдавая дань традициям преподавания численных методов, применявшимся в прошлом веке, приведем описание модификации формулы (5.17), применявшуюся при ручных вычислениях. Положим , т.е., тогда:
,
,
…
.
Подставляя данные выражения в (5.17), окончательно получаем
. (5.18)
Формула (5.18) называется первой интерполяционной формулой Ньютона. Данная формула применяется для интегрирования в начале отрезка, когда t мало по абсолютной величине.
5.3.3. Вторая интерполяционная формула Ньютона
Когда значение аргумента находится ближе к концу отрезка интерполяции, используется вторая интерполяционная формула Ньютона, которая получается, если отыскивать интерполяционный полином в виде:
. (5.19)
Коэффициенты полинома (5.19), находятся из условия совпадения значений функции и интерполяционного многочлена в узлах:
. (5.20)
Подставив (5.20) в (5.19) и перейдя к переменной , получим окончательный вид интерполяционной формулы Ньютона, используемой при ручных вычислениях:
. (5.21)
В пакете MATLAB решение задачи о нахождении значений интерполяционного полинома находится выполнением следующей последовательности действий.
1. Создать файл Newton2.m, содержащий описание функции, возвращающей локальное значение интерполяционного полинома Ньютона
% листинг файла Newton2.m
function z=Newton2(t,x,y)
N=length(x);
for i=1:N
f(i,1)=y(i);
end;
for k=2:N
for i=1:N-k+1
f(i,k)=(f(i+1,k-1)-f(i,k-1))/(x(i+k-1)-x(i));
end;
end;
s=y(1);
for k=1:N
r=1;
for i=1:k-1
r=r*(t-x(N-i));
end;
s=f(N-k,k)*r+s
end;
z=s;
2. Задать табличные значения интерполируемой функции
>> N=8;
>> i=1:N;
>> x(i)=2*pi/(N-1)*(i-1);
>> y=sin(x);
3. Задать значения абсцисс точек, в которых вычисляется значение интерполяционного полинома
>> M=1000;
>> j=1:M;
>> X(j)=2*pi/(M-1)*(j-1);
>> Y=sin(X); % вычисление точных значений интерполируемой функции
4. Вычислить значения полинома Ньютона в узлах заданной координатной сетки
>> for k=1:M
Z(j)=Newton1(X(j),x,y);
end;
5. Построение разности между точным и интерполированными значениями функции (рис. 5.5)
>> plot(X,Y-Z)
Рис. 5.5. Разность между точным и интерполированными значениями функции с помощью второго полинома Ньютона