- •Содержание
- •Лекция № 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.6. Решение задачи одномерной интерполяции средствами пакете matlab
Для решения задачи одномерной сплайн-интерполяции в пакете MATLAB используется функция interp1( ), имеющая следующий синтаксис:
yi = interp1(x,y,xi) % линейная интерполяция табличных значений
% x,y в точках, абсциссы которых находятся
% в векторе xi
yi = interp1(y,xi) % линейная интерполяция табличных значений y
% в точках, абсциссы которых находятся
% в векторе xi,
% в предположении, что x=1:length(y)
yi = interp1(x,y,xi,method) % интерполяция линейных значений с
% использованием выбранного метода
% интерполяции
Возможные значения переменной method:
'nearest' % интерполяция с использованием ближайших узлов
'linear' % линейная интерполяция (по умолчанию)
'spline' % интерполяция кубическим сплайном
'pchip' % интерполяция полиномами Эрмита третьей степени
'cubic' % аналогично pchip
Рис. 5.10
Пример 5.1. Решение задачи интерполяции функции, заданной таблично средствами пакета MATLAB
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. Вычисление интерполируемых значений функции в узлах координатной сетки и визуализация точного исходных данных, точных и интерполированных значений % рис. 5.10
>> yi=interp1(x,y,X);
>> plot(x,y,'o',X,Y,X,yi)
Лекция № 6. Численное дифференцирование
И ИНТЕГРИРОВАНИЕ
План
6.1. Численное дифференцирование функций, заданных аналитически
6.2. Особенности задачи численного дифференцирования функций, заданных таблично
6.3. Интегрирование функций, заданных аналитически (формула прямоугольников, формула трапеций, формула Симпсона)
6.4. Погрешность численного интегрирования
6.5. Вычисление интегралов методом Монте-Карло
6.1. Численное дифференцирование функций, заданных
аналитически
По определению производная функции
. (6.1)
Переходя в (6.1) от бесконечно малых к конечным разностям, получаем приближенную формулу численного дифференцирования
. (6.2)
Формула (6.2) позволяет построить простой вычислительный алгоритм:
1) Задать значение точки, в которой вычисляется производная.
2) Задать значение приращение .
3) Вычислить производную в соответствие с формулой (6.2).
Замена бесконечно-малых приращений конечными является причиной возникновения ошибки. Для оценки ее величины разложим функцию в точке в ряд Тэйлора
(6.3)
Подставив (6.3) в (6.4) и приведя подобные члены, получим
. (6.4)
Из (6.4) видно, что все члены начиная с со второго, определяют отличие численного значения производной от ее точного значения. Основной член погрешности равен , т.к. данный член, говорят, что формула (6.2) имеет первый порядок точности по.
Можно вычислять производную, используя симметричную разностную схему:
. (6.5)
Для оценки точности данной формулы необходимо удержать в разложении в ряд Тэйлора первые четыре члена:
. (6.6)
Раскрыв в (6.6) скобки и приведя подобные, получаем:
. (6.7)
Из (6.7) видно, что основной член погрешности равен , т.к. данный член ~, говорят, что формула (6.5) имеет второй порядок точности по.
Пример 6.1. Численное дифференцирование функции в пакетеMATLAB:
>> f=inline('sin(0.01*x.^2)'); % задание дифференцируемой
% функции
>> dx=0.01; % шаг изменения координатной сетки
>> x=0:dx:10*pi; % вычисление координат узлов
>> yf=feval(f,x); % вычисление значений функции в узлах
% выполнение процедуры численного дифференцирования
>> N=length(x);
>> m=1:N-1;
>> df(m)=yf(m+1)-yf(m)
>> plot(df) % визуализация производной функции (рис. 6.1)
>> f1=inline('0.02*x.*cos(0.01*x.^2)'); % задание функции,
% описывающей первую
% производную
>> ya=feval(f1,x); % вычисление значений первой производной по
% аналитической формуле
>> plot(x(m),abs(yf(m)-ya(m)); % визуализация разности между
% численными и аналитическими
% значениями производной (рис. 6.2)
Рис. 6.1
Рис. 6.2
Аналогичным образом поступают при вычислении производных высших порядков.
Отметим, что для аппроксимации производных конечными разностями в пакете MATLAB имеется функция diff( ).
Синтаксис функции:
>> diff(X) % возвращает конечные разности, вычисленные по
% смежным элементам вектора Х длина вектора,
% возвращаемого функцией diff(X) на единицу
% меньше длины вектора Х, если X матрица
%, то возвращает матрицу, содержащую
% конечные разности, вычисленные по каждому столбцу
>> diff(X,n) % возвращает конечные разности n-го порядка
>> diff(X,n,dim) % возвращает конечные разности n-го порядка по
% столбцам (dim=1) или строкам матрицы