Курсовая работа: Базисные сплайны
|
Название: Базисные сплайны Раздел: Рефераты по математике Тип: курсовая работа |
ВведениеБольшинство численных методов решения задач математического анализа так или иначе связано с аппроксимацией функций. Это и собственно задачи приближения функций (интерполяция, сглаживание, наилучшие приближения) и задачи, в которых аппроксимация присутствует как промежуточный этап исследования (численное дифференцирование и интегрирование, численное решение дифференциальных и интегральных уравнений). Типичной задачей приближения является задача интерполяции: по заданной таблице чисел
Хотя согласно теореме Вейерштрасса всякая непрерывная функция С. Н. Бернштейном (1916 г.) было установлено, что последовательность интерполяционных многочленов Лагранжа построенных для непрерывной функции
Иногда эти трудности удается преодолеть путем специального выбора узлов интерполяции или за счет перехода к каким-либо обобщенным многочленам. Однако такой путь, как правило, весьма усложняет вычисления и к тому же не избавляет нас от второй проблемы — быстрого накопления ошибок округления с ростом степени многочлена. Поэтому на практике для того, чтобы достаточно хорошо приблизить функцию, вместо построения интерполяционного многочлена высокой степени используют интерполяцию кусочными многочленами. Примером такого рода является кусочно-линейная интерполяция. В общем случае отрезок Термин сплайн произошел от английского spline, что в переводе означает рейка, стержень — название приспособления, которое применяли чертежники для проведения гладких кривых через заданные точки. Возьмем гибкую стальную линейку, поставим ее на ребро и, закрепив один конец в заданной точке
Согласно закону Бернулли—Эйлера линеаризованное дифференциальное уравнение изогнутой оси линейки имеет вид где Функция В отличие от интерполяционных многочленов Лагранжа, последовательность интерполяционных кубических сплайнов на равномерной сетке узлов всегда сходится к интерполируемой непрерывной функции, причем сходимость повышается с улучшением дифференциальных свойств функции Алгоритмы построения кубических сплайнов являются весьма простыми и эффективно реализуются на ЭВМ, причем влияние ошибок округления при вычислениях оказывается незначительным. §1. Определение сплайнов. Пространство сплайнов Пусть на отрезке [a, b] задано разбиение Определение. Функция а) на каждом отрезке
б) Определение сплайна имеет смысл на всей вещественной оси ,если положить При этом на полуоси Итак, сплайн
Множество сплайнов, удовлетворяющих определению, обозначим через Простейшим примером сплайна является единичная функция Хевисайда
с которой естественным образом связана усеченная степенная функция
Функции Теорема 1.1. Функции
линейно независимы и образуют базис в пространстве Доказательство: Предположим противное, т. е. что существуют постоянные Тогда для Пусть теперь задан сплайн
Покажем, что сплайн
Где Действительно, преобразуя это выражение при
Это доказывает, что всякий сплайн §2. Базисные сплайны с конечными носителями В математическом анализе встречаются конструкции, связанные с финитными функциями, т. е. гладкими функциями, которые определяются на всей действительной оси, но отличны от нуля лишь на некотором конечном интервале (носителе). Ниже мы исследуем финитные сплайны из пространства Расширим сетку Возьмем функцию
Так как для разделенной разности
Если использовать тождество
Из определения усеченных степенных функций следует, что функция сетке узлов Лемма 1.1. Справедливо тождество
Доказательство. Если
Для разности
Представим функцию
и построим ее разделенную разность
Отсюда, если учесть определение сплайнов Лемма 1.2. Сплайны
Доказательство. Функция В самом деле, при n = 0 согласно (2) Докажем утверждение б). Всякую n+1 раз непрерывно дифференцируемую функцию g(t) на промежутке а ≤ t ≤ b можно представить формулой Тейлора с остаточным членом в интегральной форме:
Здесь под знаком интеграла вместо обычного сомножителя
то, полагая g(x) = xn +1 , поручаем
Поскольку вне интервала (а, b), то это равенство -совпадает с (6) и лемма доказана. Лемма 1.3. Функции Доказательство. Предположим, что существует сплайн Возьмем представление сплайна дефекта v = 1 через усеченные степенные функции (1.4). Вследствие того, что
Последние равенства представляют собой однородную систему линейных уравнений для определения коэффициентов Теорема 1.2. Функции Доказательство. Покажем сначала линейную независимость функций
Выбирая Предположим теперь, что соотношение (8) выполняется только на [а, b]. Это значит, что на отрезках
Каждый из них отличен от нуля самое большее на интервале Таким образом, функции Функции
где — некоторые постоянные коэффициенты. Эту запись сплайна называют его представлением через В-сплайны. Из теоремы 1.2 вытекает Следствие 1.1. Всякий сплайн Доказательство. Минимальным конечным носителем сплайна является один из интервалов
Так как Замечание. Представление сплайнов через B-сплайпы в виде (9) имеет смысл для конечного отрезка [а, b]. Чтобы получить его для всей вещественней оси, нужно положить §3. Нормализованные базисные сплайны и представление ими многочленовПри практических вычислениях удобнее использовать не сами B-сплайны, а функции, получающиеся из них умножением на постоянные множители:
Эти функции называются нормализованными В-сплайнами. Нормирующий множитель равен среднему арифметическому шагов Тождество (2.4) для нормализованных 5-сплайнов имеет вид
С его помощью легко можно построить последовательность сплайнов Будем обозначать
Эти В-сплайны изображены на рис. 1.3, а, б, в, г соответственно. В § 1 было отмечено, что многочлены Рп
(х) степени не выше n являются элементами пространства сплайнов
Лемма 1.4. Справедливо тождество
в предположении
Доказательство. В формуле (4) положим
Подставляя
Повторяя это преобразование n раз, получим справа
Теперь разложим обе части тождества (5) по степеням t. При этом
Здесь
Подставляя разложения (6) и (7) в (5) и приравнивая коэффициенты при одинаковых степенях t, находим представления мономов
В частности, при а = 0 получаем соотношение
которое для нормализованных 5-сплайпов играет ту же роль, что свойство (2.6) для самих 5-сплайнов. Полученные формулы (8) решают вопрос о представлении произвольного многочлена п-й степени через нормализованные В-сплайны. ЗаключениеВ данной работе мы рассмотрели понятие сплайна и основные определения необходимые для работы с ним. Было изучено понятие базисного сплайна или B-сплайна, а так же уделено внимание его форме в виде нормализованного сплайна. Так же была создана программа для интерполяции сплайнов при помощи языка программирования высокого уровня C++. Список литературы1. Вержбицкий В.М. Основы численных методов – М.:Высш. шк., 2002. 2. Завьялов Ю.С., Квасов Б.И., Мирошниченко В.Л. Методы сплайн – функций - М.: Наука, 1980. 352 с 3. Бахвалов Н. С., Жидков Е. П., Кобельков Г. М. Численные методы. Учебное пособие. - 4-е издание – М.- СПб.: Физматлит, Невский диалект, Лаборатория базовых знаний, 2003 4. Препарата Ф., Шеймос М. Вычислительная геометрия. Введение. - Мир, 1989 5. Колмогоров А. Н., Фомин С. В. Элементы теории функций и функционального анализа - М.: Наука, 1976 ПриложениеЛистинг программы.#include<conio.h> #include<iostream> using namespace std; double KubichSplain ( int n, double *X, double *Y, double Xp ) { double *Q, *L, *A, *B, *C, *D, DXp, Yp; int i, j, k; Q = new double [n]; L = new double [n]; A = new double [n]; B = new double [n]; C = new double [n]; D = new double [n]; for(i=0;i<n;i++) if(Xp<=X[i]) { k=i; break; } Q[1] = (-1) * (X[2]-X[1])/2*(X[1]-X[0] + X[2]-X[1]); L[1] = (3*(Y[2]-Y[1])/(X[2]-X[1]) - 3*(Y[1]-Y[0])/(X[1]-X[0])) / (2*(X[1]-X[0] + X[2]-X[1])); C[n-1]=0; C[0]=0; for(i=3; i<n; i++) { Q[i-1]=(-1) * (X[i]-X[i-1]) / (2*(X[i-1]-X[i-2]+X[i]-X[i-1])+(X[i-1]-X[i-2])*Q[i-2]); L[i-1]=(3*((Y[i]-Y[i-1])/(X[i]-X[i-1])-(Y[i-1]+Y[i-2])/ (X[i-1]-X[i-2]))-(X[i-1]-X[i-2])*L[i-2])/(2*(X[i-1]-X[i-2]+X[i]-X[i-1])+(X[i-1]-X[i-2])*Q[i-2]); } for(i=n-1; i>=2; i--) C[i-1]=Q[i-1]*C[i]+L[i-1]; A[0]=Y[0]; for(i=1;i<n;i++) { A[i]=Y[i]; D[i]=(C[i]-C[i-1])/3.*(X[i]-X[i-1]); B[i]=(Y[i]-Y[i-1])/(X[i]-X[i-1])+2.*(X[i]-X[i-1])*C[i]/3.+(X[i]-X[i-1])*C[i-1]/3.; } DXp=Xp-X[k]; //получение значения интерполирующей функции Yp = A[k] + B[k]*DXp + C[k]*DXp*DXp + D[k]*DXp*DXp*DXp; delete []A; delete []B; delete []C; delete []D; delete []Q; delete []L; return Yp; } void main ( void ) { double *X, *Y, Xp; int n, i; system("CLS"); cout << "Enter n: "; cin >> n; X = new double [n]; Y = new double [n]; for ( i = 0; i < n; i ++ ) { cout << "X[ " << i+1 << " ] = "; cin >> X[i]; } for ( i = 0; i < n; i ++ ) { cout << "Y( " << X[i] << " ) = "; cin >> Y[i]; } cout << "Xp = "; cin >> Xp; cout << "Y( " << Xp << " ) = " << KubichSplain ( n, X, Y, Xp )<<"\n"; getch(); delete []X; delete []Y; } |











