
Малышев Вычислительная математика EQ3
.pdf
41
y
ym
qm(x)
ym – 1
y2 q2(x)
y1
q1(x) y0
x0 |
x1 |
x2 |
xm – 1 |
|
xm |
|
x |
Рис. 3.4. Кубический сплайн
В наиболее общем случае эти многочлены имеют вид:
qi (х) = k1i + k2i x + k3i x2 + k4i x3, i = 1 , 2, . . ., m,
где kji – постоянные, определяемые указанными ниже условиями.
Первые 2т условий требуют, чтобы сплайны соприкасались в заданных точках. Эти условия имеют вид:
qi (x) = yi; i = 1,…, m;
qi + 1(xi) = yi; i = 0,…, m – 1.
Следующие 2m – 2 условий требуют, чтобы в местах соприкосновения сплайнов были равны первые и вторые производные:
qi′+1(xi) = qi′(xi), |
i = 1,…, m – 1; |
qi″+1(xi) = qi″(xi), |
i = 1,…, m – 1. |
Система алгебраических уравнений имела решение тогда, когда число уравнений точно равно числу неизвестных. На данном этапе мы имеем 4m неизвестных и 4m – 2 уравнений. Следовательно, мы должны найти еще два уравнения. Обычно используют уравнения
q″1(x0) = 0 и q″m(хm) = 0.
Полученный таким способом сплайн называют естественным куби- ческим сплайном. Найдя коэффициенты сплайна, эту кусочно-гладкую полиноминальную функцию можно использовать для представления данных при интерполяции, подгонке кривой или поверхности.
42
На первый взгляд может показаться, что определение коэффициентов сводится к решению 4m уравнений с 4m неизвестными. Однако, специально выбрав вид кубических многочленов, можно значительно упростить задачу. Если отдельные кубические уравнения имеют вид:
qi (x) = tyi + tср.yi – 1 + xi [ki – 1 – di) tt2ср. – (ki – di) t2tcp.],
где i = 1,. . . , m;
xi = xi – xi – 1;
t = (x – xi – 1)/ xi; tcp. = 1 – t;
уi = yi – 1;
yi/ xi = di ,
то каждое из уравнений qi (x) содержит только два постоянных неизвестных коэффициента. После того как первое уравнение qi (x) записано, с каждым следующим уравнением добавляется только один новый неизвестный
коэффициент. При этом при x = xi – 1 t = 0, tcp. = 1, а при х = xi tcp. = 0, t = 1. Следовательно, при таком выборе кубических многочленов автома-
тически удовлетворяются все условия, кроме условий, налагаемых на вторые производные. Последние условия для внутренних точек выражаются соотношениями:
ki – 1 xi + 1 + 2ki ( xi + xi + 1) + ki + 1 xi = 3(di xi + 1 + di + 1 xi),
а для двух внешних – соотношениями:
2k0 + k1 = 3dl и km – 1 + 2km – l = 3dm.
Таким образом, решаемая система уравнений является линейной, а ее матрица – трехдиагональной:
|
2 |
1 |
0 |
0 |
|
|
k0 |
|
|
|
x2 |
2( x1 + x2 ) |
x1 |
|
|
|
|
|
|
|
|
|
|
k1 |
|
||||
|
|
x3 |
2( x2 + x3 ) |
x2 |
|
|
k |
2 |
|
|
|
|
|
|
|
|
|
= |
|
0 |
|
|
|
|
|
... |
|
||
|
|
|
xm |
2( xm −1 + xm ) |
xm1 |
|
|
|
|
|
|
|
|
... |
|
||||
|
|
|
|
1 |
2 |
|
k |
|
|
|
|
|
|
|
|
|
|
m |
43
d |
|
|
|
|
|
|
|
|
|
1 |
x2 + d2 |
|
|
||||
d1 |
x1 |
|||||||
d |
|
x + d |
|
x |
||||
=3 |
|
2 |
|
3 |
|
3 |
|
2 |
|
|
|
|
. . . |
|
|
|
|
d |
|
−1 |
x |
+ d |
|
|||
|
|
m |
m |
|
|
|
m |
|
d |
m |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.
xm −1
В этой системе уравнений число определяемых коэффициентов равно числу заданных точек. Поэтому решение оказывается не более сложным, чем в случае аппроксимации т + 1 точек многочленом m-й степени. Часто оказывается, что кубический сплайн аппроксимирует функцию лучше, чем многочлен степени т. Следует отметить, что существуют и другие сплайны, получающиеся при других условиях на концах или при использовании многочленов более высоких степеней.
3.3.6. Сглаживание с помощью сплайнов
В некоторых случаях значения zi в узлах сетки заданы с некоторой погрешностью, т. к. они являются результатами измерений.
Если погрешность исходных данных относительно велика, то это крайне неблагоприятно влияет на поведение интерполяционного сплайна и особенно его производных. В частности график сплайна имеет резко выраженные осцилляции. Для построения сплайна, проходящего вблизи заданных значений, но более «гладкого», чем интерполяционный, применяют сглаживающие сплайны [4].
В узлах сетки : a = x0 < … < xN = b заданы значения yi0, i = 0, … , N. Сглаживающие сплайны возникают при решении задачи о миними-
зации функционала:
b |
|
|
|
N |
|
J1 (f ) = ∫ |
|
f ''(x) |
|
2 dx + ∑ρi |
−1 (fi − yi0 )2 , |
|
|
||||
a |
|
|
|
i =0 |
|
где yi0 и ρi > 0 – заданные величины. Очевидно, что чем меньше коэффициенты ρi, тем ближе проходит функция, минимизирующая функционал J1(f), к заданным значениям yi0.
На отрезке [a, b] в узлах сетки : a = x0 < … < xN = b заданы значения некоторой функции fi = f(xi), i = 0, … , N. Интерполяционным кубическим сплайном S(f, xi) называется сплайн, удовлетворяющий условиям:
S(f, xi) = fi, i = 0, … , N.
44
Сплайн S(f, xi) на каждом отрезке [xi, xi + 1] определяется четырьмя коэффициентами, и поэтому для его построения на всём промежутке [a, b] необходимо определение 4N коэффициентов. Условие S(f, xi) С2[a, b] эквивалентно требованию непрерывности сплайна и его производных S(r)(x), r = 0, 1, 2, во всех внутренних узлах xi, i = 1, 2, … , N – 1, сетки , что даёт 3(N – 1) равенств. Таким образом, вместе с равенствами из определения получается 4N – 2 соотношений. Два дополнительных условия обычно задаются в виде ограничений на значения сплайна и его производных на концах промежутка [a, b] (или вблизи концов) и называются краевыми условиями. Существует несколько различных краевых условий, из которых наиболее употребительными являются следующие типы [1]:
1)S′(f, a) = f ′(a), S′(f, b) = f ′(b);
2)S″(f, a) = f ″(a), S″(f, b) = f ″(b);
3)S(r)(f, a) = S(r)(f, b), r = 1, 2;
4)S″′(f, xp + 0) = S″′(f, xp – 0), p = 1, N – 1.
Описание алгоритмов построения интерполяционных кубических сплайнов приведено в [1].
Согласно [1] кубический сплайн S(x) из того же класса, что и функция, минимизирует функционал J1(f). Исходя из этого, выпишем в развёрнутом виде систему уравнений, которые необходимо решать при построении сглаживающего сплайна. Они имеют пятидиагональную структуру:
a1 M1 + b1 M2 + c1 M3 = g1;
b1 M1 +a2 M2 + b2 M3 + c2 M4 = g2;
ci – 2 Mi – 2 +bi – 1 Mi – 1 + ai Mi + bi Mi + 1 + ci Mi + 2 = gi, i = 3, … , N – 2;
cN – 3 MN – 3 +bN – 2 MN – 2 +aN – 1 MN – 1 + bN – 1 MN = gN – 1; cN – 2 MN – 2 +bN – 1 MN – 1 +aN MN = gN,
где Mi = S″(xi), yi = S(xi) |
(y(k) – решение на k-том шаге) и коэффициенты |
|||||||||||||||
этой системы определяются формулами: |
|
|
|
|
|
|||||||||||
|
|
|
|
|
(k) |
|
2 |
+ (1/hi – 1 |
2 (k) |
|
|
(k) |
2 |
|||
ai = 1/3(hi – 1 + hi) + ρi – 1 |
|
/hi – 1 |
+ 1/hi) ρi |
+ ρi + 1 |
/hi , |
|||||||||||
i = 1,… , N – 1; |
|
|
|
|
|
|
|
|
|
|
|
|
||||
bi = 1/6hi |
– 1/hi[(1/hi – 1 + 1/hi)ρi |
(k) |
+ (1/hi |
|
(k) |
], |
i = 1, … , N – 2; |
|||||||||
|
+ 1/hi + 1)ρi + 1 |
|||||||||||||||
(k) |
/(hi hi + 1), i = 2, … , N – 3; |
|
|
|
|
|
||||||||||
ci = ρi + 1 |
|
|
|
|
|
|
||||||||||
(k) |
– yi |
(k) |
|
(k) |
|
(k) |
)/hi – 1, i = 1, … , N – 1. |
|
|
|||||||
gi = (yi + 1 |
|
|
|
)/hi – (yi |
|
– yi – 1 |
|
|
|
Если сглаживающий сплайн S(x) удовлетворяет условиям S″(a) = = S″(b) = 0, то a1 = aN = 1, b1 = c1 = cN – 2 = bN – 1 = g1 = gN = 0 (условия 2).
45
Сглаживающий сплайн |
S(x) удовлетворяет |
условиям |
S′(a) = y1′, |
|||||||||||
S′(b) = y′N (условия 1), следовательно: |
|
|
|
|
|
|
|
|
||||||
a1 = h1/3 + (ρ1(k) + ρ2(k))/h12; g1 = (y2(k) – y1(k))/h1 – y1′; |
|
|
|
|||||||||||
b1 = h1/6 – ρ2(k)/h1(1/h1 + 1/h2) – ρ1(k)/h12; |
c1 = ρ2(k)/(h1h2); |
|
|
|||||||||||
|
(k) |
+ ρN |
(k) |
)/hN – 1 |
2 |
= y′N – (yN |
(k) |
|
|
(k) |
)/hN – 1; |
|||
aN = hN – 1/3 + (ρN – 1 |
|
|
; gN |
|
|
– yN – 1 |
||||||||
bN – 1 = hN – 1/6 – ρn – 1 |
(k) |
|
|
|
|
(k) |
|
|
2 |
; |
|
|||
|
|
/hn – 1(1/hN – 1 + 1/hN – 2) – ρN |
|
/hN – 1 |
|
|||||||||
(k) |
/(hN – 1hN – 2). |
|
|
|
|
|
|
|
|
|
|
|||
cN – 2 = ρN – 1 |
|
|
|
|
|
|
|
|
|
|
Для решения систем наиболее подходят методы, основанные на разложении матриц систем в виде LWLT, где L – нижняя треугольная матрица с единичной диагональю, а W – диагональная матрица с положительными элементами. Кроме того, можно использовать метод немонотонной прогонки.
После вычисления Mi из системы величины yi определяются соотношениями: yi – yi(k) = –ρi(k)Di, i = 1, … , N, причём
D1 = (M2 – M1)/h1,
Di = (Mi + 1 – Mi)/hi – (Mi – Mi – 1)/hi – 1, i = 2, …, N – 1,
DN = – (MN – MN – 1)/hN – 1.
Наиболее важным моментом при построении сглаживающего сплайна является выбор весовых множителей ρi. Если все ρi = 0, то yi = yi(k), i = 0, …, N, и сглаживающий сплайн превращается в интерполяционный. Отсюда следует, что чем точнее заданы yi(k) в узлах сетки, тем меньше должны быть весовые множители ρi. В частности, если необходимо закрепить точку с номером l, то нужно положить ρl = 0.
В практических задачах обычно известны ошибки в определении ве-
личин yi(k), т. е. |yi(k) – yi*| ≤ δi, где yi*–точные значения функции в точке xi. В этой ситуации естественно потребовать, чтобы сглаживающий сплайн
удовлетворял условиям: εi = |yi – yi(k)| ≤ δi, i = 1, … , N, или ρi|Di| ≤ δi, i = 1, …, N.
Эти ограничения используются для вычисления весовых множите-
лей ρi.
Итерационный процесс, реализация которого позволяет получить неизвестные множители ρi, имеет вид:
ρi(k + 1) = {δi/|Di(k)|, если Di(k) ≠ 0 и 0, если Di(k) = 0},
где k – номер итерации.
46
В пользу выбора этих формул для вычисления весовых множителей говорят следующие соображения [1]. Пусть на k-ой итерации в точке xi нарушается условие для εi, т. е. εi(k) > δi . Так как εi(k) = ρi(k) |Di(k)|, то ρi(k + 1) = = ρi(k) и, значит, на (k + 1)-ой итерации весовой множитель ρi уменьшается. Это способствует уменьшению εi. С другой стороны, если на k-ой итерации εi(k) < δi и Di(k) ≠ 0, то множитель ρi на следующей итерации увеличивается, что способствует более полному использованию «коридора» в целях обеспечения большей гладкости сплайна.
В качестве начального приближения естественно взять ρi(0) соответствует интерполяционному сплайну со значениями Di = Di(0). Итерационный процесс должен продолжаться до тех пор, пока значения сплайна yi в узлах сетки не окажутся в «коридоре».
При практической реализации описанного алгоритма на ЭВМ необходимо учитывать следующие рекомендации [1]. Во-первых, нужно использовать формулы: ρi(k + 1) = {θδi /|Di(k)|, если |Di(k)| ≥ χ и 0, если |Di(k)| < χ}.
Коэффициент θ < 1 должен быть не очень близок к единице (хорошие результаты получаются при θ = 0,9). Величина χ выбирается с учётом величин δi, а также в зависимости от разрядности конкретной ЭВМ и точности решения системы для неизвестных Mi. Эти меры позволяют избежать зацикливания и переполнения. Во-вторых, несколько первых итераций, например пять-десять, следует сделать в принудительном порядке, не обращая внимания на выполнение условий «коридора». В-третьих, при сглаживании непериодических данных целесообразно на (k + 1)-ой итерации строить сплайн S(k + 1)(x), удовлетворяющий краевым условиям
S′(k + 1)(a) = A(k), S′(k + 1)(b) = B(k), где A(k), B(k) представляют собой разностные аппроксимации первой производной соответственно в точках a, b, вычисленные по результатам k-ой итерации. Рекомендуется использование трёхточечной аппроксимации.
Наиболее употребительными в вычислительных методах являются полиномиальные сплайны, хотя нередко применяются и неполиномиальные (степенные, логарифмические, экспоненциальные и др.). По сравнению с другими математическими конструкциями, используемыми для описания сложных геометрических форм, сплайны обладают по меньшей мере тремя важными преимуществами: во-первых, лучшими аппроксимативными свойствами, что при равных информационных затратах даёт большую точность или равную точность при менее информативных исходных данных; во-вторых, простотой реализации полученных на их основе алгоритмов на ЭВМ и, наконец, в-третьих, – универсальностью, по-

47
зволяющей использовать одни и те же аппроксимирующие конструкции для различных объектов.
4.МНОГОМЕРНОЕ ПРОСТРАНСТВО
4.1.ЛИНЕЙНОЕ ИНТЕРПОЛИРОВАНИЕ В ТРЕХМЕРНОМ ПРОСТРАНСТВЕ
Кусочно-линейная аппроксимационная модель исключает необходимость ручного нахождения и использования линейных и нелинейных формул:
Pi = ai0 + ai1 X1 + ai2 X2 +... + ain Xn ,
где Хi [X] – ограниченное множество пространственных областей. Для наглядности перейдём к трёхмерному пространству (рис. 4.1).
Простейшим случаем интерполирования в трёхмерном случае является плоский треугольник, заданный тремя точками {Pj}31. Пусть u, ν – скалярные переменные, принимающие значения от 0 до 1. В таком случае поверхность треугольника, вершины которого находятся в указанных точках, определяется уравнением
T(u, ν) = P1u + P2ν + P3(1 – u – ν),
при условии, что u + ν ≤ 1. Естественно, T(1, 0) = P1, T(0, 1) = P2, T(0, 0) = = P3. Кроме того, T(u, 0) – прямая, соединяющая точки P1 и P3, T(0, ν) – прямая, соединяющая точки P2 и P3, T(u, 1 – u) – прямая, соединяющая точки P1 и P2.
Р Р2
Риск.
Р1 |
Р3 |
0 Х2
х12
х11 хиск.
Х1 х13
Рис. 4.1. Трёхмерная кусочно-линейная аппроксимация

48
Иными словами, исходная функция задана точками Pi (хi, хj). Необходимо найти значение Pиск. в точке xиск. Значения характеристик Pi принадлежат искомой поверхности, которую необходимо построить для интерполяции искомой области. Для нахождения значений Pиск. искомая поверхность аппроксимируется кусочными плоскостями, построенными по трём точкам.
Для нахождения Pиск. получаем точку на плоскости с координатами х1иск., х2иск.. На этой плоскости по исходным данным находятся три наиболее близко лежащие точки, таким образом, получаем три точки исходных данных. По значениям Pi в этих точках (i = 1, 2, 3) строится плоскость Ψ. Уравнение плоскости имеет вид [5]:
ax1 + bx2 + cP = const.
Таким образом, для построения плоскости необходимо три точки. Искомое значение Pиск. принадлежит этой плоскости.
Для нахождения максимально приближенных к искомой точек в данной работе рекомендуем применять следующую формулу [5]:
S = min S j = min (x1j − x1j иск. )2 + (x2j − x2j иск. )2 ,
где i = 1, 2 – номер аргумента, j = 1, …, k – число значений i-го аргумента. Из анализа формулы возникают две проблемы:
1)значения различных аргументов xij могут отличаться друг от друга на несколько порядков, что приведёт к неправильному определению наиболее близко лежащих точек;
2)точка xij, максимально приближенная к искомой точке xиск., не может находиться на прямой, проходящей через другие заданные точки, т. к. это не позволит однозначно провести плоскость для кусочно-линейной модели.
Для устранения первой проблемы предлагается применять уточнённую формулу для нахождения минимального расстояния до искомой точки.
1. S = min S j = min b1 (x1j − x1jиск. )2 + b2 (x2j − x2j иск. )2 ,
где b1, b2 – коэффициенты влияния.
k
bi = xiср. / xср. ; xiср. = ∑ xij / k , i = 1, 2; xср. = ( x1ср. + x2ср. ) / 2 .
j =1

49
2. S = min S |
j |
= min (x |
* − x |
*)2 + (x |
* − x |
*)2 , |
|
1j |
1j иск. |
2j |
2j иск. |
|
где xij* = (xij – xiср.)/(ximax – xiср.) – безразмерная величина, 0 ≤ xij* ≤ 1 [5],
i = 1, 2; xi max = maxxij
j
Для устранения второй проблемы необходимо проверять условие принадлежности заданной точки прямой, проведённой через другие найденные максимально приближённые исходные, для этого необходимо выполнение условия (для трёхмерного случая) [1]:
y*m ≠ [y*k (x*m – x*r) – y*r (x*m – x*k)]/(x*k – x*r),
где k = 1, 2; r = 1, 2 (k ≠ r) – номера найденных максимально приближённых точек; m = 2, 3 – номер искомой максимально приближённой точки, r < m; x*, y* – координаты трёхмерных точек на плоскости Ψ.
Таким образом, для построения прямой необходимо знать координаты точек на плоскости Ψ.
Решим эту задачу геометрически. Итак, нам необходимо перейти от координат x1, x2 к координатам x*, y* на плоскости Ψ.
Введём обозначение *– точки, лежащие на плоскости Ψ′,– точки, лежащие на плоскости Ψ′ параллельной плоскости XY0 и проходящей хотя бы через одну исходную точку.
В общем случае, когда система координат x*, y* взята произвольно, относительно плоскости Ψ (рис. 4.2, а) и значений Р (точки А*, В*, С* на рис. 4.2, а) определить расстояния от точек А*, В*, С* до осей 0*X* и 0*Y* (соответственно C*D* и С*К*), т. е. найти координаты этих точек, сложно или даже практически невозможно. Для точки С* необходимо знать в прямоугольном C*D*0* сторону C*0* и хотя бы один угол. Для точки А* необходимо знать в прямоугольном А*М*0* (М*А* перпендикуляр на ось 0*X*) сторону и хотя бы один угол, что невозможно из-за того, что плоскость Ψ ещё не определена и, следовательно, положение точки 0* – точки пересечения Ψ с осью 0Р также не определить.
Исходя из вышесказанного, необходимо систему координат x*, y* брать не произвольно, а с привязкой к значениям характеристик Р (см. рис. 4.2, б). Для привязки перенесем центр координат 0* в точку А*, целесообразно также провести одну из осей координат вдоль одной из прямых, соединяющих точки характеристик, например через А* и В*.

50
P |
K* |
M* |
|
|
X* |
||
0* |
|
|
|
|
|
|
|
0′ |
|
A* |
|
|
|
|
|
D* |
A′ |
|
Ψ |
|
B* |
||
C* |
|
|
|
|
|
|
|
|
|
B′ |
|
Y* |
0 |
x21 |
x22 |
x23 |
|
|
|
X2 |
|
|
|
|
|
x11 |
A |
|
x12
x13 |
C |
B
X1
а)
|
P |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A*(0*) |
|
|
|
|
|
|
Ψ |
|
|
|
|
|
|
|
||||||
|
|
|
K* |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
D* |
|
|
A′(0′) |
|
|
|
|
|
|
|
|
|
|
|
|
|
B* |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C* |
|
|
|
|
|
X* |
|||
|
|
|
|
|
|
|
|
|
|
Y* |
B′ |
X2
A
C
B
X1
б)
Рис. 4.2. Трёхмерная кусочно-линейная аппроксимация: а) переход к другим координатам;
б) переход к другим координатам с привязкой осей к значениям характеристик
Из прямоугольного С*В*В′сторона С*В′ = СВ, В*В′ = В*В – С*С, где В*В, С*С равны координатам точек С* и В* и, следовательно, значени-