Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Решение инженерных задач в пакете MathCAD. Учебное пособие
.pdf
Рис. 5.5. Сглаживание данных с использованием ksmooth
91

ˆ
MED
ˆ
( ,..., , , , )
i i L i i i i L
f med y y y y y
Рис. 5.6. Исходные данные с аномальными измерениями
Из n наблюдений выбирается M = 2L + 1 < n рядом стоящих наблюдений, о которых говорят, что они попали в апертуру
медианного фильтра размером M. Далее эти M значений упорядочиваются по возрастанию (получается так называемый вариа-
ционный ряд). В качестве выходного сигнала
f медианного
i
фильтра принимается значение yi, стоящее в середине вариационного ряда. Если обозначить операцию вычисления медианы
как med(), то выходной сигнал медианного фильтра определяется выражением
MED
=
− − + +
1 1
, (5.1.6)
где в скобках перечислены M = 2L + 1 значений, по которым
вычисляется медиана. «Перемещая» апертуру медианного
фильтра от начала выборки к концу, можно обработать все наблюдения выборки.
92

Эффективное удаление аномальных наблюдений медианным фильтром можно объяснить тем, что аномальные измерения располагаются либо в начале вариационного ряда, либо в
конце. Поэтому результатом работы медианного фильтра не могут быть аномальные измерения (при правильно выбранной
длине апертуры, а именно – количество аномальных измерений,
попавших в апертуру не больше величины L).
В пакете MathCAD медианную фильтрацию можно осуществить с помощью функции medsmooth. Обращение к этой
функции имеет вид medsmooth (y, M), где y – вектор, составленный из наблюдений yi, i = 1, 2,…, n; M < n – размер апертуры
(нечетная величина).
На рис. 5.7 точками показаны результаты фильтрации данных
рис. 5.6 медианным
фильтром при M = 17.
Относительная ошибка
равна 0.078. Заметим,
что применение функции ksmooth дало относительную ошибку
0.202.
Рис. 5.7. Результат
медианной фильтрации
Программа для обработки аномальных измерений с использованием функции medsmooth имеет структуру, аналогичную
изображенной на рис. 5.5, с соответствующими изменениями,
необходимо: а) вместо величины b задать размер апертуры M;
б) вместо вызова функции ksmooth поставить обращение к
функции medsmooth.
Функция supsmooth. Фильтрация «зашумленных» данных
осуществляется построением линейной регрессии по k – бли-
93

жайшим точкам
i
x
, 1, ...,
x i n
с адаптивным выбором «размера» k окна
сглаживания. Элементы массива X должны быть упорядочены
по возрастанию.
Обращение к функции имеет вид supsmooth(X, Y).
На рис. 5.8 представлены результат обработки «зашумленных» данных (сплошная кривая – исходные данные, точечная –
отфильтрованные значения). Отметим, что supsmooth не требует
задания никакого «управляющего» параметра, что для обычного
пользователя является определенным преимуществом функции
supsmooth.
Рис. 5.8. Результаты фильтрации функцией supsmooth
5.2. Интерполяция дискретных данных
Как правило, экспериментальные данные представляют собой
значения некоторой функции f(x) на множестве дискретных зна-
чений аргумента
= . Такие данные можно назвать дис-
i
кретными. К этим же данным относятся результаты фильтрации
94

«зашумленных» данных с помощью функций, описанных в
, 1, ...,
x i n
( ) ( ), 1,...,
f x f x i n
, 1,...,
x x i n
ˆ
( )
f x
ˆ
( )
f x
( , )
i i
x y
, , 1,...,
x y i n
i
x
n n
x x x x
< < < <
п. 5.1. Однако часто возникает необходимость вычислить значение функции для x, не совпадающих с узлами
= . Та-
i
ким образом, приходим к задаче интерполяции: необходимо построить некоторую функцию f(x), которая удовлетворяет условиям интерполяции:
ˆ
= =
i i
и достаточно «близко» подходит к f(x) для
≠ = .
i
(5.2.1)
Такую функцию называют интерполяционной. В качестве
функции
берут полином не очень высокого порядка, коэф-
фициенты которого находятся из условий (5.2.1) (а также других
требований, например, непрерывности первой производной).
При кусочно-линейной интерполяции функция
является
кусочно-линейной, т.е. графически это означает просто соединение точек
отрезками прямых.
В пакете MathCAD кусочно-линейная интерполяция выполняется с помощью функции linterp. Обращение к функции имеет вид: linterp (vx, vy, x), где vx, vy – векторы, содержащие значения
= соответственно; x – значение аргумента,
i i
при котором будет вычисляться одно значение интерполяционной функции.
Замечание 5.2.1. Вектор vx должен содержать веществен-
ные значения, расположенные в порядке возрастания. Поэтому
в дальнейшем будем полагать, что значения
упорядочены по
возрастанию, т.е.
1 2 1
...
. (5.2.2)
−
Если это не выполняется, то необходимо использовать
функцию csort, как это сделано в примере 5.2.1. ♦
Рассмотрим пример построения линейной интерполяции.
Пример 5.2.1. По дискретным данным, содержащимся в
матрице data (рис. 5.9), построить кусочно-линейную интерполяцию.
95

i
x
,
x y
ˆ
( )
f x
Рис. 5.9. Кусочно-линейная интерполяция
Решение. На рис. 5.9 представлен фрагмент документа
MathCAD, в котором решается эта задача. Так как исходные
значения
не упорядочены (первый столбец матрицы data), то
функцией csort выполняется упорядочивание по первому
столбцу матрицы data. Результатом является новая матрица da-
ta1, из столбцов которой формируются векторы
. ☻
Кубический интерполяционный сплайн. Линейная интер-
поляция при небольшом числе узловых точек (менее 10) оказывается довольно грубой. Более точный результат дает сплайновая ку-
бическая интерполяция, которая строит функцию
96
, которая

на интервале
[
]
1
x x
+
, 2,..., 1
x i n
= −
ˆ
( )
f x
,nx x
ˆ
( )
f x
ˆ
( )
f x
творяет условиям (5.2.1) и во внутренних узлах
,
является кубическим полиномом, удовле-
i i
i
имеет непрерывные первые и вторые производные.
Для осуществления кубического сплайна MathCAD предлагает четыре встроенные функции: cspline, pspline, lspline и
interp. Первые три из них служат для вычисления вторых производных сплайна в узлах и отличаются только используемыми
краевыми условиями, которые определяют вид функции
крайних точках
:
1
в
• lspline(vx, vy) – возвращает вектор vs вторых производных
и генерирует кривую сплайна, которая приближается к прямой
линии в граничных точках;
• pspline(vx, vy) – возвращает вектор vs вторых производных
и генерирует кривую сплайна, которая приближается к параболе
в граничных точках;
• cspline(vx, vy) – возвращает вектор vs вторых производных
и генерирует кривую сплайна, которая может быть кубическим
полиномом в граничных точках.
Функция interp(vs, vx, vy, x) возвращает интерполируемое значение
для заданных векторов vs, vx, vy и за-
данного значения аргумента х.
Таким образом, сплайн-интерполяция проводится в два этапа. На первом с помощью функции MathCAD cspline, pspline
или lspline отыскивается вектор vs вторых производных
сплайна, а затем на втором этапе для каждой искомой точки вы-
числяется значение
с помощью функции interp.
Пример 5.2.2. Используя исходные данные примера 5.2.1, по-
строим кубический сплайн с тремя типами краевых условий –
кубическим, линейным и параболическим.
Решение . На рис. 5.10 приведен фрагмент документа,
в котором решается эта задача.
97

Рис. 5.10. Построение кубических сплайнов
С помощью функций cspline, lspline, pspline вычислим соответственно векторы vsc, vsl и vsp, которые содержат вторые
производные интерполяционной кривой в узлах сплайна.
98

Затем с помощью функции interp определим три функции
{
}
0.4,1.6,3.1, 4.1, 4.2,5.0
{
}
25,11,9.4,16.2,21.2, 26.1 .
( )
y f x
=
,
x y
{
}
, , 1,...,
x y i n
i i i
ε
= +
ε
−
пользователя (три сплайна) с соответствующими краевыми условиями. Построим графики значений этих функций в 200 узлах
мелкой сетки. Заметим, что сплайновая кубическая интерполяция, несмотря на малое число узлов, в которых задаются значения функции (их всего 6), дает хорошие результаты: график
функции оказывается плавным, и точки его перегиба вообще
незаметны. Отличие между графиками на первом и последнем
интервале обусловлены разными краевыми условиями. ☻
Задание 5.2.2. Исходные данные даны следующими масси-
вами:
x =
Построить три кубических сплайна с разными краевыми
условиями и графики этих сплайнов на равномерной сетке с
150 узлами. ●
5.3. Построение парных эмпирических зависимостей
В научных и инженерных исследованиях часто возникает
задача математического описания некоторого исследуемого
процесса или объекта. Для определенности предположим, что
связь независимой переменной x и зависимой переменной y
выражается в общем случае нелинейной функцией
Функция f(x) является неизвестной, но значения переменных
могут быть измерены, и результаты таких измерений
представлены таблицей
погрешности измерений, имеющие случайную природу.
i
Задача построений эмпирической зависимости состоит в
нахождении функции S(x), как можно точнее аппроксимирующей неизвестную f(x).
Решение этой задачи включает два этапа.
Этап 1. Выбор класса функций, из которого выбирается
S(x). Например, S(x) выбирается из класса линейных функций
i i
t =
,
=
, где ( )
y f x
.
,
99

вида S(x) = а0+а1х, где а0, а
{
}
, , 1,...,
x y i n
2
( ) ( ( , )) ,
0 1
S a x a a x
0 1
,
a a
(
)
,
slope x y
1
1
(
)
,
line x y
1
– параметры. Таким образом, на
1
этом этапе эмпирическая зависимость выбирается с «точностью» до ее параметров. Выбор класса функций осуществляется
на основе анализа диаграммы рассеяния (в декартовой системе
координат наносятся точки
i i
=
) или на основе
достоверной априорной информации. Например, из курса физики известно, что сопротивление металлического проводника линейно зависит от его температуры.
Этап 2. Вычисление неизвестных параметров функции S(x)
с использованием таблицы измерений. Параметры вычисляются
из условия минимума некоторого функционала F(a). Наиболее
часто в качестве такого функционала используется функционал
метода наименьших квадратов, имеющий вид:
n
F a y S a x
= −
∑
1
=
i
(5.3.1)
ii
где запись S(а, x) указывает на наличие у функции S(x) параметров {aj}, j = 1, 2,…, M.
Вычисление коэффициентов парной линейной эмпирической
зависимости. Предположим, что в качестве эмпирической зави-
симости принята линейная функция:
( , )
= + . (5.3.2)
Для вычисления в пакете MathCAD коэффициентов
зависимости (5.3.2) на основе метода наименьших квадратов ис-
пользуются функции, приведенные в табл. 5.1.
Таблица 5.1
Функция Назначение
intercept (x, y)
Вычисляется коэффициент a
a
сии S (
Вычисляется коэффициент a
сии S (
Вычисляются коэффициенты a0, a1 уравнения
регрессии S (
, x) = a0 + a
a
, x) = a0 + a
x
x
a
, x) = a0 + a
уравнения регрес-
1
уравнения регрес-
0
x
100
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
