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
courses:computational_mathematics:prac4 [2022/04/16 17:52]
andrey.suchkov created
courses:computational_mathematics:prac4 [2022/07/04 05:39]
andrey.suchkov removed
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]]