This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
courses:computational_mathematics:prac5 [2022/04/17 18:03] andrey.suchkov [Практическая работа №5: Аппроксимация функций. Метод наименьших квадратов и дискретное преобразование Фурье] |
courses:computational_mathematics:prac5 [2022/05/22 13:21] andrey.suchkov created |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Практическая работа №5: Аппроксимация функций ====== | + | ====== Практическая работа №5: Численное интегрирование ====== |
===== Цель работы ===== | ===== Цель работы ===== | ||
- | Сформировать навыки и умения решения задачи аппроксимации функции с помощью метода наименьших квадратов (МНК) и дискретного преобразования Фурье (ДПФ); освоить реализацию МНК и ДПФ с помощью математического пакета GNU Octave. | + | Изучение и сравнение различных методов численного интегрирования на примере составных формул прямоугольников, трапеций, Симпсона и Гаусса. |
- | + | ||
- | ===== Постановка задачи ===== | + | |
- | Построить набор случайных данных для функции $ f(x) $ на промежутке $ [0, b] $ разбив его на $ n $ участков при параметре зашумления $ fluc $. Аппроксимировать полученные данные с помощью МНК по трём моделям: полиномиальной, экспоненциальной и ДПФ. | + | |
- | ===== Порядок выполнения работы ===== | + | |
- | - Реализовать функцию ''f(x)'' для вычисления значений функции $ f(x) $. | + | |
- | - Реализовать функцию ''mnk()'' для построения модели с помощью МНК. | + | |
- | - Разбить отрезок $ [0, b] $ на $ n $ участков и вычислить значения функции $ f(x) $ для каждого $ x $. | + | |
- | - Аппроксимировать полученные данные с помощью функции ''mnk()'' по двум моделям: полиномиальной и экспоненциальной. Построить графики аппроксимационных функций вместе с облаком значений. Вычислить среднеквадратические отклонения для каждой модели. Сделать выводы. | + | |
- | - Построить набор случайных данных с параметром зашумления $ fluc $. Рекомендуется использовать следующую функцию (здесь ''stud_num'' -- номер студенческого билета, e.g.: ''stud_num = 130301''): <code octave> | + | |
- | rand ("state", stud_num) | + | |
- | x = linspace (0, b, n); | + | |
- | y = f (x) + (2 * rand (1, n) - 1) * fluc; | + | |
- | </code> | + | |
- | - Аппроксимировать полученные данные с помощью функции ''mnk()'' по трём моделям: полиномиальной, экспоненциальной и ДПФ. Построить графики аппроксимационных функций вместе с облаком значений. Вычислить среднеквадратические отклонения для каждой модели. Сделать выводы. | + | |
- | - Изменить коэффициент при $ x $ так, чтобы функция $ f(x) $ стала периодической, т.е. $ f(0) = f(b) $. Реализовать периодическую функцию ''f_T(x)''. | + | |
- | - Построить набор случайных данных по подвергнутой периодизации функции $ f_T(x) $. | + | |
- | - Аппроксимировать полученные данные с помощью функции ''mnk()'' с помощью ДПФ. Построить графики аппроксимационных функций вместе с облаком значений. Вычислить среднеквадратические отклонения для каждой модели. Сравнить результаты аппроксимации с непериодической функцией $ f(x) $, сделать выводы. | + | |
- | ===== Варианты заданий ===== | ||
- | <note important> | ||
- | Выполнение работ осуществляется по индивидуальным вариантам заданий (функции и параметры). Номер варианта для каждого студента определяется преподавателем. | ||
- | </note> | ||
- | [[.task5:task5_vars]] | ||