Кирьянов Д. - MathCad 11 (1077323), страница 61
Текст из файла (страница 61)
15.3). Если на графике, например являющемся продолжением листинга 15.2, задать построение функции А(Х) вместо A(t), то будет получено просто соединение исходных точек ломаной (рис. 15.6). Такпроисходит потому, что в промежутках между точками вычисления интерполирующей функции не производятся.15.1.3. Полиномиальная сплайн-интерполяцияБолее сложный тип интерполяции — так называемая интерполяция В-сплайнами. В отличие от обычной сплайн-интерполяции (см.
разд. 15.1.2), сшивкаэлементарных В-сплайнов производится не в точках х ь а в других точках и ькоординаты которых предлагается ввести пользователю. Сплайны могутбыть полиномами 1, 2 или з степени (линейные, квадратичные или кубические). Применяется интерполяция В-сплайнами точно так же, как и обычная сплайн-интерполяция, различие состоит только в определении вспомогательной функции коэффициентов сплайна.П i n t e r p ( s , x , y , t ) — функция, аппроксимирующая данные векторов х иу с помощью В-сплайнов;П bspline(x,y,u,n) — вектор значений коэффициентов В-сплайна;• s — вектор вторых производных, созданный функцией bspiine;•х — вектор действительных данных аргумента, элементы которогорасположены в порядке возрастания;• у — вектор действительных данных значений того же размера;•t — значение аргумента, при котором вычисляется интерполирующаяфункция;• и — вектор значений аргумента, в которых производится сшивкаВ-сплайнов;• п — порядок полиномов сплайновой интерполяции (i, 2 или з).Примечание^Размерность вектора и должна быть на 1, 2 ИЛИ 3 меньше размерности векторов х и у.
Первый элемент вектора и должен быть меньше ИЛИ равен первомуэлементу вектора х, а последний элемент ц — больше или равен последнемуэлементу х.Часть III. Численные методы384Интерполяция В-сплайнами иллюстрируется листингом 15.3 и рис. 15.7.; Листинг 15,3. Интерполяция В-сплайнамих := ( 0т1у := ( 4 . 1и := < - 0 . 52.432.24.33.33.64.15.25.9)7 )Т5.5s := b s p l i n e ( х , у , и , 2 )А ( t ) := i n t e r p ( s , х , у , t )11i1i13/\Aft)6/\осо\V4\i0V1///11i11г34561z,xРИС. 15.7. В-сплайн-интерполяция (листинг 15.3)15.1.4.ЭкстраполяцияфункциейпредсказанияВсе рассмотренные выше (см.
разд. 15.1.1—15,1.3) функции осуществлялиэкстраполяцию данных за пределами их интервала с помощью соответствующей зависимости, основанной на анализе расположения нескольких исходных точек на границах интервала. В Mathcad имеется более развитыйинструмент экстраполяции, который учитывает распределение данных вдольвсего интервала.
В функцию predict встроен линейный алгоритм предсказания поведения функции, основанный на анализе, в том числе осцилляции.О predict(y,m,n) — функция предсказания вектора, экстраполирующеговыборку данных;•у — вектор действительных значений, взятых через равные промежутки значений аргумента;Глава 15. Обработка данных385• m — количество последовательных элементов вектора у, согласно которым строится экстраполяция;• п — количество элементов вектора предсказаний.Пример использования функции предсказания на примере экстраполяцииосциллирующих данных yi с меняющейся амплитудой приведен в листинге 15.4.
Полученный график экстраполяции, наряду с самой функцией, показан на рис. 15.8. Аргументы и принцип действия функции predict отличаются от рассмотренных выше встроенных функций интерполяцииэкстраполяции. Значений аргумента для данных не требуется, поскольку поопределению функция действует на данные, идущие друг за другом с равномерным шагом.
Обратите внимание, что результат функции predictвставляется "в хвост" исходных данных.I Листинг 15.4. Экстраполяция при помощи функции предсказанияk:=100Y j: = e loom:=50j :=0 ..кi—10n:=150А := p r e d i c t (у , m , n)Рис. 15.8. Экстраполяция при помощи функции предсказания(листинг 15.4)Часть III. Численные методы386Как видно из рис. 15.9, функция предсказания может быть полезна при экстраполяции данных на небольшие расстояния. Вдали от исходных данныхрезультат часто бывает неудовлетворительным. Кроме того, функция pred i c t хорошо работает в задачах анализа подробных данных с четко прослеживающейся закономерностью (типа рис.
15.8), в основном осциллирующего характера.Если данных мало, то предсказание может оказаться бесполезным. В листинге 15.5 приведена экстраполяция небольшой выборки данных (из примеров, рассмотренных в предыдущих разделах). Соответствующий результатпоказан на рис. 15.9 для различных крайних точек массива исходных данных, для которых строится экстраполяция.г"v'1\ Листинг 15.5. Экстраполяция при помощи функции предсказанияу := ( 4 . 12.434.33.65.2;5.9k := rows (у) - 1га:=5п:=10А := p r e d i c t { у , m , пi :- 0..n+ к0.i-ii6X0 О1 0predict(у, 3 ,a)iл/гS4fpredict(у, iXXXЛ+/3Y0/\1iis10is20i+k+l .
i . i+k+1Рис. 15.9. Работа функции предсказания в случае малого количестваданных {листинг 15.5)15.1.5. Многомерная интерполяцияДвумерная сплайн-интерполяция приводит к построению поверхностиz(x,y), проходящей через массив точек, описывающий сетку на координат-Глава 15. Обработка данных387ной плоскости (х,у). Поверхность создается участками двумерных кубических сплайнов, являющихся функциями (х,у) и имеющих непрерывныепервые и вторые производные по обеим координатам.Многомерная интерполяция строится с помощью тех же встроенных функций, что и одномерная (см.
разд. 15.1.2), но имеет в качестве аргументов невекторы, а соответствующие матрицы. Существует одно важное ограничение, связанное с возможностью интерполяции только квадратных NXN массивов данных.•interp (s, х, z, v) — скалярная функция, аппроксимирующая данныевыборки двумерного поля по координатам х и у кубическими сплайнами;•s — вектор вторых производных, созданный одной из сопутствующихфункций cspline, pspline ИЛИ lspline;• х — матрица размерности NX2, определяющая диагональ сетки значений аргумента (элементы обоих столбцов соответствуют меткам х и уи расположены в порядке возрастания);• z — матрица действительных данных размерности NXN;• v — вектор из двух элементов, содержащий значения аргументов х иу, для которых вычисляется интерполяция.ПримечаниеВспомогательные функции построения вторых производных имеют те же матричные аргументы, что и i n t e r p :l s p l i n e (X, Y), p s p l i n e < X , Y ) ,cspline(X,Y).Пример исходных данных приведен на рис.
15.10 в виде графика линийуровня, программная реализация двумерной интерполяции показана в листинге 15.6, а ее результат — на рис. 15.11.Листинг 15.6. Двумерная интерполяцияГх:=0 ^110220330440У :=1101.11.21232.11.51.33.351.721.333.72.12.922.52.841.5S:= c s p l i n e ( X , Y )V:=f 3.7\ 2.2k:=30i n t e r p (S , X, Y, V) = 1 . 6 3 6Часть III. Численные методы388j := 0 ..
кf i—•4i := 0 .. к^ j := interp S. X. Yк40Рис. 15.10. Исходное двумерное поле данных (листинг 15.6)Рис. 15.11. Результат двумерной интерполяции (листинг 15.6)15.2. РегрессияЗадачи математической рефессии имеют смысл приближения выборки данных (Xi.y-i) некоторой функцией f ( x ) , определенным образом минимизи-Глава 15. Обработка данных389рующей совокупность ошибок | f (xi) -y± |. Регрессия сводится к подборунеизвестных коэффициентов, определяющих аналитическую зависимостьf (x). В силу производимого действия большинство задач регрессии являются частным случаем более общей проблемы сглаживания данных.Как правило, регрессия очень эффективна, когда заранее известен (или, покрайней мере, хорошо угадывается) закон распределения данных (xi.yi).15.2.1.
Линейная регрессияСамый простой и наиболее часто используемый вид регрессии — линейная.Приближение данных{XUYL)осуществляется линейной функциейу(х)-ь+а-х. На координатной плоскости (х,у) линейная функция, как известно, представляется прямой линией (рис. 15.12). Еще линейную регрессию часто называют методом наименьших квадратов, поскольку коэффициенты а и ь вычисляются из условия минимизации суммы квадратов ошибокПримечаниеЧаще всего такое же условие ставится и в других задачах регрессии, т.
е. приближения массива данных ( X i , y i ) другими зависимостями у ( х ) . Исключениерассмотрено в листинге 15.9.Рис. 15.12. Линейная регрессия (листинг 15.7 или 15.8)Для расчета линейной регрессии в Mathcad имеются два дублирующих другдруга способа. Правила их применения представлены в листингах 15.7и 15.8. Результат обоих листингов получается одинаковым (рис. 15.12).П line (х,у) — вектор из двух элементов (Ь,а) коэффициентов линейнойрегрессии ъ+а-х;390Часть III. Численные методыП intercept {x,у) — коэффициент ь линейной регрессии;•slope (x,у) — коэффициент а линейной регрессии;•х — вектор действительных данных аргумента;•у — вектор действительных данных значений того же размера.Листинг 15.7.