Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Решение инженерных задач в пакете MathCAD. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
Рис. 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]