User Tools

Site Tools


courses:computational_mathematics:prac4

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
courses:computational_mathematics:prac4 [2022/05/22 12:31]
andrey.suchkov removed
courses:computational_mathematics:prac4 [2022/06/28 18:18]
andrey.suchkov ↷ Page name changed from courses:computational_mathematics:task4 to courses:computational_mathematics:prac4
Line 1: Line 1:
-====== Практическая работа №4: Численное дифференцирование ​======+====== Практическая работа №4: Аппроксимация ​функций ====== 
 ===== Цель работы ===== ===== Цель работы =====
-Проверить ​правильность порядка точности и определить наивысшую достижимую точность (наименьшую погрешность) ​в стандартном режиме ​вычислений с плавающей точкой (8-байтовые числа, типа double) для пяти ​разностных формул численного дифференцирования.+Сформировать навыки и умения решения задачи аппроксимации функции с помощью метода наименьших квадратов ​(МНК) и дискретного ​преобразования Фурье (ДПФ); ​освоить реализацию МНК и ДПФ ​с помощью математического пакета GNU Octave.
  
 ===== Постановка задачи ===== ===== Постановка задачи =====
-Сравнить ​точные значения $ f'(x_0) $, $ f''​(x_0) $ с конечноразностными первыми производными 1-го, 2-го и 4-го порядков точности и конечноразностными вторыми ​производными 2-го и 4-го порядков точности,​ вычисляемыми ​по последовательно ​уменьшающимися вдвое значениям шага, если $ f(x) = \cfrac A{x^2 + px + q} $, $ x_0 = a $. Значения $ a $, $ A $, $ p $, $ q $ берутся из п/р №2.+Построить ​набор случайных данных для функции ​$ f(x) $ на промежутке $ [0b] разбив его на $ n $ участков при параметре зашумления $ fluc $. Аппроксимировать полученные данные с помощью МНК ​по трём моделямполиномиальной, экспоненциальной и ДПФ.
  
 ===== Порядок выполнения работы ===== ===== Порядок выполнения работы =====
-  - Реализовать функции для вычисления ​точных ​значений $ f(x) $, $ f'(x) $, $ f''​(x) $. +  - Реализовать функцию ''​f(x)'' ​для вычисления значений ​функции ​$ f(x) $. 
-  - Реализовать функции для ​вычисления ​приближённых формул $ f'(x) $ 1-го, 2-го и 4-го порядка точности, а также $ f''​(x) $ 2-го и 4-го порядка точности+  - Реализовать функцию ''​mnk()'' ​для ​построения ​модели с помощью МНК. 
-  - Вычислить ​точные ​значения производных с точностью до 15-ти знаков после запятой. +  ​Разбить отрезок $ [0, b] $ на $ n $ участков и вычислить значения функции ​$ f(x) $ для каждого $ x $
-  - Посчитать погрешности азности между ​точными значениями соответствующей производной и полученными по каждой из пяти разностных формул) при последовательных ​уменьшениях шага в два раза. +  - Аппроксимировать полученные ​данные с помощью функции ''​mnk()'' ​по двум моделям: полиномиальной и экспоненциальной. Построить графики аппроксимационных функций вместе с облаком значений. Вычислить среднеквадратические ​отклонения для ​каждой ​модели. Сделать выводы. 
-  - Результаты для каждой формулы вывести в виде таблицы. Таблица должна состоять из трёх колонок: номер шага, сам шаг и величина погрешности. +  - Построить набор случайных ​данных с параметром ​зашумления $ fluc $. Рекомендуется использовать следующую функцию (здесь ''​stud_num''​ -- номер студенческого ​билета, e.g.: ''​stud_num = 130301''​):​ <code octave>​ 
-  - Построить график ​зависимости погрешности от шага для каждой ​формулыДля удобства график лучше выводить в двойном ​логарифмическом масштабе. +rand ("​state",​ stud_num) 
-  - Ориентируясь по графику и таблице для каждой ​формулы указать ​наивысшую достижимую точность ​аименьшую ​погрешность) и номер шага (не сам шаг!), на котором ​эта погрешность была достигнута+x = 0:b/n:b; 
-  - Сделать выводы.+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>​ 
 +[[.task4:​task4_vars]]