The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Интерполяция по Лагранжу

Интерполяция по Лагранжу

Предыдущая  Содержание  Следующая  V*D*V

Для заданного набора точек с заданными значениями существует многочлен минимальной степени, принимающий в указанных точках такие же значения. Рассчитав такой многочлен, можно вычислить его значение в точке, находящейся между точками, для которых значения известны.

 

Математическая формула коэффициентов имеет вид:

В этой формуле:

N - порядок интерполяции

D = ( N - 1 ) / 2 + alpha

alpha - смещение между отсчётами, для которого надо произвести поиск значения

 

Вид функции при N=3 и alpha = 0.5

Вид функции при 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;

 }

Предыдущая  Содержание  Следующая