logo search
Компьютерная графика / МАШ_ГРАФИКА

§2. Построение интерполяционных сплайнов.

2.1. Общая постановка задачи. Решение методом неопределённых коэффициентов

Рассмотрим решение одномерной задачи. Обозначим ве-личины параметра t в узловых точках P0, P1,...,Рn через t0, t1, ... ,tn. При этом t0 <t1< ...<tn. На каждом i-ом сегменте интерполирования [ti-1, ti ] (i=1,...,n) искомый кусочно-полиномиальный сплайн задается отдельным многочленом Si(t) таким образом, чтобы:

77

  1. в узловых точках ti-1, ti многочлен Si(t) совпадал со зна-чениями yi-1, yi;

  2. в тех точках ti-1, ti, которые являются внутренними, у многочлена S i (t) совпадали производные от 1-го до m-го

порядков с аналогичными производными соседних много-членов.

В математической форме выражение искомой кусочно-полиномиальной функции P(t) можно представить в виде:

P(t)=Si(t) при ti-1 t ti ; i=1,2,…,nусловие кусочности сплайна P(t);

Si(ti-1)=Pi-1;Si(ti)=Pi, i=1,2,…,nусловия прохождения через заданные точки;

Si-j(ti)=Si+1-j(ti), j=1,…,m, i=1,…,n-1 - условия на глад-кость во внутренних точках (3.6)

Поскольку методика интерполирования одинакова по всем координатам (x,y,z), то рассмотрим интерполирование только по одной координате х. Соответствующие сплайны обозначим нижним индексом х. Постановка задачи имеет вид:

  1. x(t)=Sх i(t); ti-1 t ti, i=1,…,n;

2. Sх i (ti-1)=xi-1 ; S х i (ti)=xi , i=1,…,n;

3. Sх i j(ti)=Sх (i+1) j(ti), j=1,…,m, i=1,…,n-1. (3.7)

Число геометрических условий связи, налагаемых на искомую кусочно-полиномиальную функцию x(t) системой (3.7), складывается из 2n (во второй строке) и m(n-1) (в третьей). Суммарное их число равно:

s = 2n + m(n - 1) = n(m + 2) - m.

При интерполировании сплайнами используются много-члены одинаковой степени k. Поскольку каждый из них имеет (k+1) неизвестный коэффициент, то общее число неизвестных коэффициентов равно:

K = n(k+1).

78

Для того чтобы решение существовало и было единствен-ным, необходимо выполнение условия S = K. Для этого:

  1. принимают степень многочленов сплайна

k = m+1;

2) дополнительно вводят m условий связи, которые называют краевыми условиями , поскольку обычно их задают в конечных точках P0,Pn , исходя из специфики решаемой задачи.

Наиболее распространенным случаем является интерпо-ляция при m = 2 (гладкость 2-ой степени). В этом случае необходимо использовать кубические сплайны (k = 3) и добавить 2 дополнительных краевых условия на производ-ные. Чаще всего налагают следующие виды краевых условий.

1) S1 1(t0)=f 1(t0), Sn 1(tn)=f 1(tn ) - условия на первые производные. Применяют в том случае, когда сплайн в концевых точках необходимо гладко соединить с некоторой кривой f(t ).

2) S1 11(t0)=f 11(t0), Sn 11(tn)=f 11(tn ) - условия на вторые производные. Обычно они используются для уменьшения осцилляции сплайна.

3) S1 1(t0) = Sn 1(tn); S1 11(t0) = Sn 11(tn) - условия для периодических функций, заключающиеся в том, что в конечных точках интервала равны не только значения, но и две первых производных сплайна.

После определения степени сплайна k и задания m крае-вых условий по полученному полному набору геометри-ческих условий определяют коэффициенты полиномов, входящих в сплайн. В общем случае для этого можно, как и у многочленов, использовать метод неопределённых коэф-фициентов, в котором все неизвестные определяются из одной линейной системы уравнений. Более оптимальный метод для построения кубических сплайнов будет рас-смотрен ниже.

79

Допустим, каждый i –тый участок сплайна имеет вид

Sxi(t)=Ci0+Ci1t+...+Ciktk .

Каждое из условий второй строки системы (3.7) даёт по одному уравнению:

Ci0 + Ci1 ti-1 + ... + Cik ti-1 k = xi-1 ;

Ci0 + Ci1 ti + ...+ Cik ti k = xi .

Рассмотрим равенство первых производных во внутрен-них точках Sхi 1(ti)=Sх(i+1)1(ti) в третьей строке системы (3.7). После взятия первых производных по t в Sxi и Sx( i+1) и под-становки t = ti получим уравнение

Ci1+2Ci2ti+…+kCiktik-1 = C(i+1)1+2C(i+1)2ti+…+kC(i+1)ktik-1 .

Перенося все слагаемые, содержащие неизвестные коэф-фициенты, в левую часть, получим:

Ci1+2Ci2ti+…+kCiktik-1-C(i+1)1-2C(i+1)2ti-…-kC(i+1)ktik-1=0.

При j = 2 из условия Sxi11(ti) = Sx(i+1)11(ti) после

а) определения вторых производных,

б) подстановки в них узловых точек и

в) переноса всех слагаемых, содержащих неизвестные (коэффициенты полдиномов сплайна),получим:

2Ci2+…+k (k-1) Ciktik-2- 2C(i+1)2-…-k(k-1)C(i+1)k tik-2 = 0 .

Для более высоких степеней производных действия ана-логичны.

После объединения всех полученных уравнений получаем линейную систему вида

AC=Х,

в которой:

- неизвестный векторC задаёт полный набор коэффи-циентов, входящих в многочлены сплайна,

- матрица А содержит сомножители при коэффициентах, с которыми они входят в уравнения, ненулевые значения в ней располагаются на главной, а также соседних с ней диагоналях,

80

- свободный вектор Х содержит заданные узловые значения многочленов сплайна, а также значения производных из краевых условий.

В общем случае решение системы (векторC коэффици-ентов, входящих в многочлены сплайна) может быть найдено любыми общими методами, например, по методу Гаусса. Однако с учётом диагонального вида матрицы А системы на практике используют более оптимальные специальные методы решения.

Пример. Построить сплайн P(t), проходящий через три точки ( х(t0)=x0 , x(t1)=x1, x(t2)=x2 ) , который во внутренней точке x(t1)=x1 имел бы гладкость 2-ой степени (Рис.3.1).

x

S1(t) S2(t)

x1

x2

x0

0

t0 t1 t2 t

Рис.3.1

Решение. Интервала два, поэтому искомые многочлены на них обозначим S1(t), S2(t). Зададим их следующим образом:

S1(t)=C01+C11t+C21t2+C31t3; S2(t)=C02+C12t+C22t2+C32t3.

Условия I рода имеют вид:

S1(t0)=x0; S1(t1)=x1; S2(t1)=x1; S2(t2)=x2.

Условия II рода при m=2 и n=3 будут следующими:

S1 (t1)= S2 (t1); S1 (t1)= S2 (t1).

Поскольку n(k+1) - n(m+2) = m = 2 , то для однознач-ности решения задачи необходимо задать еще два краевых условия. Зададим оба условия в начальной точке:

81

S1(t0)=0; S1 (t0)=0.

Подставляя в уравнения многочленов значения параметра, из условий I рода получаем:

C01+C11t0+C21t20+C31t30=x0 ;

C01+C11t1+C21t21+C31t31=x1 ;

C02+C12t1+C22t21+C32t31=x1 ;

C02+C12t2+C22t22+C32t32=x2 .

Дифференцируя многочлены по параметру и подставляя в первые и вторые производные t = t1 , из условий II рода получаем:

C11 + 2C21t1 + 3C31t12 - C12 - 2C22t1 - 3C32t12 = 0;

2C21 + 6C31t1 - 2C22 - 6C32t1 = 0.

Из краевых условий получаем:

C11 + 2C21t0 + 3C31t0 2 = 0;

2C21 + 6C31t0 = 0.

Объединим все полученные уравнения в систему вида AC=Х, где

Коэффициенты обоих многочленов сплайна находятся од-новременно при решении данной системы: C = A –1 Y.

82