|
|
Книги-onlineИнтерполяция функций.
Интерполяция функций.
Полином Лагранжа по Эйтекену.Пусть на отрезке [a,b] дано n+1 значение функции Fi=F(xi) в n+1 различных точках: x0,x1, . . . , xn. Тогда полином степени не выше n, имеющий в заданных узлах значение Fi, есть полином Лагранжа: Вычисление значений Ln(x) по данной формуле осуществляется по итерационной формуле Эйтекена. Начальные значения Fi теряются. Интервалы [xi,xi+1] могут быть неравными.
Наверх
Если задано m значений функции Fi=F(xi) в m точках x1,x2, . . . , xm, то F(x) может быть определено по формуле: Эта непрерывная дробь может быть представлена в виде рациональной функции: где l не превосходит m1=trunc(m/2). Наверх Интерполяция по Ньютону.Пусть на отрезке [a,b] задано n+1 значение аргумента:x0=a,x1, . . . , xn=b и n+1 значение функции yi=y(xi). Тогда интерполяционный многочлен степени n в форме Ньютона может быть построен по следующим формулам: где N0(x)=1, Ni(x)=(x-x0)(x-x1). . .(x-xi-1)(i=1,..,n), Ci=[x0,x1,. . .,xi], [xi]=yi(i=0,n), [x0,x1,. . .,xi]=([x1,. . .,xi]-[x0,. . .,xi-1])/(xi-x0).Выражение [x0,x1,. . .,xi] называется разделенной разностью. Наверх Коэффициенты тригонометрического полинома.Пусть на промежутке задано k значений Fi некоторой функции F(x) в равноотстоящих точках , где i=0,1,. . . ,k. В этом случае функцию F(x) целесообразно интерполировать тригонометрическим полиномом: причем Qn(xi)=Fi=F(xi). Процедура вычисляет коэфициенты ai , bi i=1,..,k. В дальнейшем для вычисления значения полученного полинома в точке x можно воспользоваться алгоритмом Сумма ряда Фурье.
Наверх
Пусть заданы точки x1,x2,...,xn и соответствующие им значения y1,y2,...,yn функции f(x). На каждом из отрезков [xi,xi+1], i=1,2,...,n-1 функцию приближаем при помощи полинома степени 3, вида: S(x)=yi+c1 i(x-xi)+c2 i(x-xi)2+c3 i(x-xi)3, xi< x <xi+1 Для вычисления коэффициентов c1 i , c2 i , c3 i , i=1,2,...,n-1 решается система линейных уравнений, построенная из условия непрерывности производной S'(x) в узлах сетки и дополнительных краевых условий на вторую производную, которые имеют вид: 2 * S''1 + b1 * S''2 = b2 b3 * S''N - 1 + 2 * S''N = b4здесь возможны два случая. Случай первый, когда известны значения первой производной в краевых точках (y'1=y'(x1), y'n=y'(xn)), тогда следует положить: b1=1, b2=(6/(x2-x1))*((y2- y1)/(x2-x1)-y'1), b3=1, b4=(6/(xn-xn-1))*(y'n-(yn-yn-1)/(xn-xn-1))Случай второй, когда известны значения второй производной (y''1=y''(x1), y''n=y''(xn)), тогда полагаем: b1=0, b2=2*y''1 b3=0, b4=2*y''N Отметим, что точки xi должны быть отсортированы по возрастанию. На вход алгоритма подаются массивы x, y на выходе получаем матрицу c:array[1..3,1..n]. Чтобы получить значение интерполируемой функции f в точке x необходимо в начале определить какому из отрезков разбиения она принадлежит (т.е. найти такое i, что xi< x <xi+1) и затем воспользоваться формулой S(x) с сответствующими c1 i , c2 i , c3 i, yi. Алгоритм взят с сайта численного анализа, который я еще раз рекомендую всем кто сталкивается с задачами численного анализа. Так же не плохая глава по сплайнам есть в книге Каханер Д., Моулер К., Нэш С. "Численные методы и программное обеспечение". Наверх Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском . книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать |
|