Интерполяция по Лагранжу |
Предыдущая Содержание Следующая |
|
Для заданного набора точек с заданными значениями существует многочлен минимальной степени, принимающий в указанных точках такие же значения. Рассчитав такой многочлен, можно вычислить его значение в точке, находящейся между точками, для которых значения известны.
Математическая формула коэффициентов имеет вид:
В этой формуле: N - порядок интерполяции D = ( N - 1 ) / 2 + alpha alpha - смещение между отсчётами, для которого надо произвести поиск значения
Вид функции при N=3 и alpha = 0.5
Удобнее всего использовать нечётный порядок функции 1, 3, 5... При N=1 интерполяция становится линейной.
Формула интерполяции имеет вид: Смотри также Интерполяционный многочлен Лагранжа Кодpublic static double[] getLagrangeCoefficient(int N, double alpha) { double D = ( N - 1 ) / 2 + alpha; double[] lagrange = new double[N + 1]; for( int n = 0; n <= N; n++ ) { lagrange[n] = 1.0; for( int k = 0; k <= N; k++ ) { if( n != k ) lagrange[n] *= (D - k) / (n - k); } } return lagrange; } public static double getLagrangeInterpolation(double[] fin, int index, double[] lagrange) { int N = lagrange.length - 1; int shift = index - (N - 1) / 2; double fout = 0.0; for( int k = 0; k <= N; k++ ) { fout += lagrange[k] * fin[shift++]; } return fout; } |
Предыдущая Содержание Следующая |