- 1 курс
- 2 курс
- 3 курс
- 4 курс
- 5 курс
- 6 курс
Old
Old
This is an old revision of the document!
Научиться применять интерполирование функции для решения практических задач, овладеть навыками применения интерполяционных формул Лагранжа заданной степени, многочленов Ньютона. Научиться оценивать погрешности интерполяционных формул и работать в программных пакетах с целью проверки полученных результатов.
Пусть значение $ f(x) $ известно в некоторых точках $ X = \{x_j\}_{j=0}^n $, и необходимо найти $ f(x_i) $: $ x_i \notin X $. Для этих целей, функцию $ f(x) $ приближают функцией $ L_n(x) $: \[ L_n(x) = \sum_{k=0}^na_k\varphi_k, \] где $ \varphi $ – произвольный базис, удобный для данной $ f(x) $. Задача интерполяции – найти обобщённый многочлен. Существует несколько способов нахождения, например, метод Лагранжа. Он даёт готовый интерполяционный многочлен Лагранжа: \[ L_n(x) = \sum_{i=0}^nf_i\ell_i(x), \] где $ f_i = f(x_i) $ – значение функции в узле $ x_i $, а \[ \ell_i(x) = \prod_{\substack{k=0 \\ k \ne i}}^n\frac{x - x_k}{x_i - x_k} \] – $ i $-ый базисный полином.
Если узлы, в которых определено значение $ f(x_i) $ являются равноотстоящими, т.е. $ x_i = x_0 + ih $, $ x_0 < x_1 \dots < x_n $, $ i = 1..n $, тогда можно воспользоваться интерполяционным многочленом Ньютона: \[ N_n(x) = \sum_{k=0}^{n}\frac{\Delta^kf_0}{k!}\prod_{j=0}^{k}(q - j + 1), \] где $ \Delta^kf $ – конечная разность $ k $-го порядка, $ q = (x - x_0)/h $.
Многочлен Чебышёва первого рода $ T_n(x) $ характеризуется как многочлен степени $ n $ со старшим коэффициентом $ 2^{n-1} $, который меньше всего отклоняется от нуля на отрезке $ [-1, 1] $ \[ T_n(x) = \cos(n\arccos x). \] Для натурального $ n $ узлы на промежутке $ x \in [-1, 1] $ задаются формулой: \[ x_k = \cos\left(\pi\frac{2k-1}{2n}\right),\,k = 1..n. \] Это корни многочлена Чебышёва первого рода степени $ n $.
Для получения узлов на произвольном отрезке $ [a, b] $, можно применить следующую формулу: \[ x_k = \frac{a + b}2 + \frac{b - a}2\cos\left(\pi\frac{2k-1}{2n}\right),\,k = 1..n. \] После нахождения интерполяционного многочлена, необходимо вычислить и оценить его погрешность. Должно выполнятся следующее неравенство: \[ \max\limits_{x \in [a, b]}|R_n(x)| \leqslant \frac{M_{n+1}}{(n+1)!}\max\limits_{x \in [a, b]}|\omega_n(x)| = Q_n, \] где $ [a, b] $ – промежуток интерполирования, $ R_n(x) = f(x) - L_n(x) $, $ M_{n+1} = \max\limits_{\eta \in [a, b]}|f^{(n+1)}(\eta)| $, $ \omega_n(x) = \prod\limits_{j=0}^n(x - x_j) $. Левая часть неравенства является практической погрешностью, а правая – теоретической.
Построить интерполяционный многочлен по 2, 3, 4, 5 и 6 узлам (равноотстоящим и чебышёвским) для функции $ f(x) = \cfrac A{x^2 + px + q} $ на промежутке $ [a, b] $ по равноотстоящим и по чебышёвским узлам. Найти фактическую погрешность и сравнить её с теоретической оценкой.
f()
для вычисления значений в функции $ f(x) $.df()
, вычисляющая $ n $-ую производную функции $ f(x) $. Данную функцию можно реализовать с помощью switch
, предварительно посчитав производные в символьном виде, например, в Wolfram.lagrange()
(для нечётных вариантов) или Ньютона newti()
(для чётных вариантов).Значение $ n $ | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
Значение $ M_{n+1} $ | |||||
Значение $ \max|\omega_n(x)| $ | |||||
Значение $ (n + 1)! $ | |||||
Значение $ Q_n $ | |||||
Значение $ \max|R_n(x)| $ |