Файл: Практикум по курсам Информатика, Прикладное программное обеспечение.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.01.2024
Просмотров: 195
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Примечание: *) Операция векторизации аналогична таковой для векторов. Напри- мер, результатом операции
m2)
(m1
будет матрица, полученная путем поэлементного пе- ремножения компонентов матриц одинакового размера m1 и m2.
Матричные функции
Система MathCAD имеет большое число матричных функций общего назначения,
40 часть их рассматривается ниже. Здесь для определенности будем полагать, что системная переменная ORIGIN=0 и заданы матрицы
1 2
3 4
m
4 2
3 1
m
2 1
rows(M) – возвращает число строк матрицы M. Например, rows(m1)=2.
cols(M) – возвращает число столбцов матрицы M. Например, cols(m1)=2.
mean(M) – возвращает среднеарифметическое значение для элементов матрицы
M. Например, mean(m1)=2.5.
csort(M,n) -перестановка строк матрицы М так, чтобы отсортированным оказался n-й столбец.
rsort(M,n) -перестановка столбцов матрицы М так, чтобы отсортированной оказа- лась n-я строка.
tr(M) – возвращает след квадратной матрицы. Например, tr(m2)=5.
rank(M) – возвращает ранг матрицы М. Например, rank(m1)= 2.
identity(n) – возвращает квадратную матрицу размера n, у которой все элементы главной диагонали равны 1, а остальные – 0. Например,
1 0
0 0
0 0
1 0
0 0
0 0
1 0
0 0
0 0
1 0
0 0
0 0
1
)
identity(5
Re(M) – возвращает матрицу действительных частей элементов комплексной мат- рицы M.
Im(M) – возвращает матрицу мнимых частей элементов комплексной матрицы M.
augment(M1,M2) – объединение матриц путем помещения матрицы M2 справа от
M1. Например,
1 2
3 4
4 3
2 1
m2)
,
augment(m1
stack (M1,M2) – объединение матриц путем помещения матрицы M2 под M1. На- пример,
1 2
3 4
4 3
2 1
m2)
stack(m1,
submatrix(M,ir,jr,ic,jc) – субматрица, составленная из элементов матрицы M в строках с ir по jr и в столбцах с ic по jc.
4.5 Примеры векторных и матричных операций
Рассмотрим применение некоторых векторных и матричных операций на примере следующей задачи.
Задача 1. Выбор оптимального решения методом перебора.
В некотором садоводстве, занимающем прямоугольную территорию размером xk
и yk, находится N участков с домиками. В одном из домиков решено разместить ларек с
товарами повседневного спроса. Причем место под ларек должно быть оптимальным:
среднее расстояние до него от всех остальных домиков должно быть наименьшим.
Решение. Для определенности будем полагать, что домики на территории садо-
водства размещены случайным образом. Задачу будем решать методом перебора всех
возможных вариантов и выбора наилучшего решения.
41
Упражнения
1. Определите любыми двумя способами вектор W, содержащий все нечетные числа от 1 до 19.
2. Определите некоторые векторы V, V1, V2, скаляр X и проделайте над ними векторные операции, приведенные в таблице 4.2.
3. Определите вектор x = (0.12, 0.2, 0.23, 0.27, 0.45, 0.66, 0.7, 0.85, 0.9, 0.99). Рас- считайте значения
42 4. Найдите сумму n членов числового ряда:
Вариант
Ряд
Вариант
Ряд
1 6
2 7
3 8
4 9
5 10 5. Определите некоторые матрицы M, M1, M2, вектор V и скаляр X. Проделайте над ними матричные операции, приведенные в таблице 4.3.
6. Определите два вектора одинаковой размерности. Объедините их в матрицу, отсортируйте по первому столбцу и получите из матрицы вновь два вектора.
7. Определите единичную матрицу Е размером 4×4 и вектор V, содержащий че- тыре элемента. Вычислите матрицу
T
VV
V
E
H
2 2
8. Решите задачу 1 из п.4.4 о поиске оптимального расположения домика садо- водства при количестве домов > 50. Изобразите на графике все дома садоводства, выделив дом с оптимальным и самым неудачным расположением.
Контрольные вопросы
1. Дайте определение вектора и матрицы.
2. Для чего служит системная переменная ORIGIN?
3. Назовите способы создания векторов и матриц.
4. Назовите векторные операторы.
5. Для чего служит оператор векторизации?
6. Какие векторные функции Вы знаете?
7. Как производится сортировка элементов?
8. Каким образом осуществляется одновременное вычисление с помощью векто- ров?
9. Какие матричные функции Вы знаете?
10. Назовите матричные операторы.
11. Какими способами можно объединить матрицы?
43
ЛАБОРАТОРНАЯ РАБОТА № 5
ИНТЕРПОЛЯЦИЯ И АППРОКСИМАЦИЯ ДАННЫХ
Цель: научиться обрабатывать экспериментальные данные с помощью интерпо-
ляции и аппроксимации.
5.1 Теоретические сведения
Допустим, что имеется таблица дискретных значений X-Y (см. Таблица 5.1). Эти данные могут быть получены в результате эксперимента, статистических наблюдений или расчетом по сложным соотношениям. Для наглядности данные таблицы 5.1 можно пред- ставить в графической форме (см. рис. 5.1).
Таблица 5.1. Дискретные данные
X
1 2
3 4
5 6
7
Y
1.84 2.91 3.14 3.24 4.04 5.72 7.66
Часто требуется через эти точки по каким-либо правилам провести некоторую кри- вую y=f(x), которая с заданной точностью соответствует исходной информации. С такой кривой во многих отношениях удобнее работать:
Рисунок 5.1 – Графическое представление данных
1) легко получить значения y, соответствующие промежуточным значениям x;
2) кривую можно продолжить в ту или иную сторону за пределы крайних точек по x;
3) кривую можно провести так, чтобы «сгладить» случайные ошибки эксперимента или случайные колебания статистических данных.
Существуют специальные методы построения таких кривых. Здесь мы рассмотрим методы интерполяции и аппроксимации с помощью метода наименьших квадратов.
Интерполяция
В этом случае ищется такая зависимость y=f(x), чтобы искомая кривая точно про- ходила через все точки (см. рис. 5.2). Между точками поведение кривой может быть раз- личным и зависит от типа интерполяции. Продолжение кривой влево от первой точки и вправо от последней точки получило специальное название – ЭКСТРАПОЛЯЦИЯ.
Аппроксимация
При аппроксимации с помощью метода наименьших квадратов искомая кривая y=f(x) должна хорошо приближать исходные данные в среднем, при этом не требуется точного прохождения кривой через все точки (см. рис. 5.3). Задачи такого типа часто на- зываются задачами регрессии. Как и в случае интерполяции, для одного и того же набора данных можно построить много аппроксимирующих функций или функций регрессии.
Эти функции менее чувствительны к случайным ошибкам исходных данных, чем функции интерполяции. Это свойство функций регрессии широко используется на практике.
44
Рисунок 5.2 – Интерполяция
Рисунок 5.3 – Аппроксимация с помощью метода наименьших квадратов
5.2 Интерполяция
Интерполяция использует табличные значения некоторой функции, заданной в ря- де точек, чтобы предсказать значения функции между точками. В системе MathCAD можно соединять точки прямыми линиями (линейная интерполяция) или соединять их от- резками кубического полинома (сплайн – интерполяция). Кроме того, можно проводить сплайн – интерполяцию функции двух переменных, но этот случай здесь не рассматрива- ется.
Линейная интерполяция
Пусть известны значения некоторой функции f(x) в нескольких точках (см. Таблица
5.1). При линейной интерполяции узловые точки соединяются прямыми. Если некоторое значение x, для которого ищется интерполяционное значение, выходит за пределы конце- вых точек, то осуществляется линейная экстраполяция (по двум ближайшим точкам на конце участка). Отметим, что линейная интерполяция автоматически используется при построении графиков.
Линейная интерполяция в системе MathCAD осуществляется функцией
linterp(Vx,Vy,X).
Здесь Vx – вектор координат точек по оси x, расположенных в порядке возраста- ния;
Vy – вектор координат точек по оси y, соответствующих точкам x;
X – значение независимой переменной, для которой находится интерполяционное
(или экстраполяционное) значение.
В качестве примера на рисунке 5.4 приведен текст программы и результаты линей- ной интерполяции данных из таблицы 5.1.
Отметим, что при линейной интерполяции получается ломаная кривая – ее первые производные в узловых точках разрывны, поэтому данный тип интерполяции рекоменду- ется использовать при большом количестве узловых точек или когда интерполируемая зависимость достаточно гладкая.
Сплайн-интерполяция
При кубической сплайн – интерполяции соседние узловые точки соединяются по- линомами третьей степени. Путем подбора коэффициентов соседние полиномы в узловых точках стыкуются так, что их первые две производные совпадают. В результате получает- ся достаточно гладкая интерполяционная кривая. В граничных точках требуется задать дополнительные условия, определяющие локальное поведение кривой в этих точках.
Сплайн – интерполяцию удобно проводить в два этапа:
1 этап. Рассчитывается вектор Vs вторых производных интерполяционной кривой в узловых точках одним из трех возможных способов:
Vs:=cspline(Vx,Vy);
Vs:=pspline(Vx,Vy);
45
Vs:=lspline(Vx,Vy).
Здесь Vx и Vy – векторы, содержащие координаты x и y, через которые нужно про- вести сплайн. Как и в случае линейной интерполяции, вектор Vx должен быть упорядочен
(по возрастанию значений). Функции cspline, pspline, lspline отличаются только гранич- ными условиями: функция cspline соответствует кривой, которая в граничных точках (ло- кально) ведет себя как полином 3-й степени, pspline – как парабола, а lspline – как прямая.
2 этап. Осуществляется сплайн – интерполяция при помощи функции
interp(Vs,Vx,Vy,x) , которая возвращает интерполируемое значение для заданного x. Здесь Vs – вектор, полученный на первом этапе.
Применение рассмотренных функций для сплайн-интерполяции данных, приведен- ных в таблице 5.1, также показано на рис.5.4.
Рисунок 5.4 – Линейная и сплайн-интерполяция данных. Справа приведен фрагмент графика в увеличенном масштабе, где хорошо видно отличие линейной и сплайновой интерполяции
Отметим, что для значений х, расположенных перед первой точкой в Vx, MathCAD использует продолжение первого кусочного полинома, соединяющего первую и вторую точки. Для значения х, расположенных за последней точкой в Vx, MathCAD продолжает сплайн последней кубической параболы. Таким образом осуществляется сплайн – экстра- поляция данных.
5.3 Аппроксимация
Допустим, что данные, представленные в таблице 5.1, нужно аппроксимировать некоторой функцией y=f(x, a
1
, a
2
, a
3
, …), где a i
– соответствующие параметры функции. В отличие от интерполяции, рассмотренной в предыдущем разделе, мы не будем требовать,
46 чтобы функция f(x) точно проходила через точки данных. Вместо этого потребуем, чтобы аппроксимирующая функция y=f(x) удовлетворяла условию min
))
,
a
,
a
,
x
(
f y
(
n
1
i
2 2
1
i i
, т.е. сумма квадратов отклонений от всех точек до искомой кривой была бы минимальной.
Из условия минимума можно найти значения коэффициентов a i
, обеспечивающие данный экстремум. Такой метод аппроксимации получил название метода наименьших квадратов, а сами задачи – задачи регрессии.
Отметим, что вид функции y=f(x) задается исследователем, при этом обычно при- нимаются во внимание следующие обстоятельства:
1) внешний вид данных (расположение точек на графике):
2) физические соображения, связанные с существом решаемой задачи;
3) предварительные оценки или интуитивные предположения.
Система MathCAD содержит ряд функций для аппроксимации данных по методу наименьших квадратов. Здесь мы рассмотрим в основном случай линейной регрессии.
Аппроксимация прямой
В этом простом случае предполагается, что аппроксимирующая функция имеет вид b
x a
y
(5.1) и соответствует прямой, для которой коэффициенты a и b имеют простой геометрический смысл. Для решения данной задачи в системе MathCAD имеются следующие функции:
slope(Vx,Vy) – возвращает значение коэффициента a;
intercept(Vx,Vy) – возвращает значение коэффициента b.
Покажем (см. рис. 5.5), как используются эти функции на примере аппроксимации данных из таблицы 5.1.
Рисунок 5.5 – Аппроксимация данных прямой линией
47
Аппроксимация полиномом
Используется в том случае, когда для данных точек ожидается полиномиальная за- висимость типа
`
n n
2 2
1 0
x a
x a
x a
a y
, (5.2) где n – степень полинома.
Аппроксимацию полиномом (5.2) удобно проводить в два этапа:
1 этап. Рассчитывается вектор Vs с помощью стандартной функции regress()
Vs:=regress(Vx,Vy,n);
2 этап. Осуществляется аппроксимация полиномом при помощи функции
interp(Vs,Vx,Vy,x) , которая возвращает значение аппроксимирующей функции для заданного x. Здесь Vs – вектор, полученный на первом этапе.
Применение рассмотренных функций для аппроксимации тех же данных, приве- денных в таблице 5.1, показано на рис.5.6.
Рисунок 5.6 – Аппроксимация данных полиномами 1-й, 2-й и 3-й степени
Справа приведен фрагмент графика в увеличенном масштабе, где хорошо видно влияние степени полинома на поведение кривых
Функция regress допускает использование полинома любого порядка. Однако на практике не рекомендуется использовать степень полинома выше n=4. Отметим также, что при n=1 данный метод совпадает с рассмотренным выше методом, использующем функции slope и intercept.
Общий случай линейной регрессии
Аппроксимация прямой или полиномиальная аппроксимация не во всех случаях подходят для описания зависимости данных. Бывает, что нужно искать эту зависимость в виде линейной комбинации заданных функций
)
x
(
f a
`
)
x
(
f a
)
x
(
f a
y n
n
1 1
0 0
,
(5.3) где f i
(x) – заданные пользователем функции, a i
– параметры, значения которых тре- буется определить по методу наименьших квадратов.
Решение такой задачи в системе MathCAD осуществляется с помощью стандартной функции
linfit(Vx,Vy,F),
которая возвращает вектор искомых коэффициентов a (см. рис.5.7а). Здесь Vx и
Vy – векторы координат исходных точек, F- вектор, задающий в символьном виде набор функций, которые нужно обьединить в линейной комбинации (см. рис. 5.7б).
48
Рисунок 5.7 – Вектор искомых коэффициентов
На рисунке 5.8 показан пример, демонстрирующий применение данной функции для аппроксимации данных, приведенных в таблице 5.1. Исходные данные в виде векто- ров Vx и Vy сформированы так же, как и в предыдущих примерах, и на рисунке не пред- ставлены.
Рисунок 5.8 – Аппроксимация данных с помощью функции linfit
Следует отметить, что рассмотренные в предыдущих разделах способы аппрокси- мации (5.1) и (5.2), являются частными случаями линейной регрессии общего вида (5.3).
Линеаризация аппроксимирующей функции
Выше рассмотрены случаи, когда аппроксимирующая функция линейна относи- тельно входящих в нее параметров. В некоторых случаях коэффициенты a i
входят в такую функцию нелинейно. Математические методы решения таких задач более сложны, поэто- му общий случай нелинейной регрессии здесь не рассматривается. Однако, в некоторых случаях нелинейную функцию можно линеаризовать, а затем применить аппарат линей- ной регрессии. Покажем это на примерах.
Пример 1. Допустим, что заданные данные мы хотим аппроксимировать функцией
`
x
b
e
a
y
, нелинейной относительно параметра b. Но эту функцию можно линеари- зовать, прологарифмировав обе ее части:
x
b
a
y
ln ln
Если теперь обозначить y1=ln(y) и a1=ln(a), получим уже линейную функцию в ви- де (5.1)
x
b
a
y
1 1
, к которой применим метод линейной регрессии, рассмотренный выше. Следова- тельно, можно получить значения параметров a
1 и b, а затем и a.
Пример 2. Пусть координаты точек заданы векторами Vx и Vy (см. рис. 5.9). Необ- ходимо подобрать вид аппроксимирующей функции с помощью графика.
m2)
(m1
будет матрица, полученная путем поэлементного пе- ремножения компонентов матриц одинакового размера m1 и m2.
Матричные функции
Система MathCAD имеет большое число матричных функций общего назначения,
40 часть их рассматривается ниже. Здесь для определенности будем полагать, что системная переменная ORIGIN=0 и заданы матрицы
1 2
3 4
m
4 2
3 1
m
2 1
rows(M) – возвращает число строк матрицы M. Например, rows(m1)=2.
cols(M) – возвращает число столбцов матрицы M. Например, cols(m1)=2.
mean(M) – возвращает среднеарифметическое значение для элементов матрицы
M. Например, mean(m1)=2.5.
csort(M,n) -перестановка строк матрицы М так, чтобы отсортированным оказался n-й столбец.
rsort(M,n) -перестановка столбцов матрицы М так, чтобы отсортированной оказа- лась n-я строка.
tr(M) – возвращает след квадратной матрицы. Например, tr(m2)=5.
rank(M) – возвращает ранг матрицы М. Например, rank(m1)= 2.
identity(n) – возвращает квадратную матрицу размера n, у которой все элементы главной диагонали равны 1, а остальные – 0. Например,
1 0
0 0
0 0
1 0
0 0
0 0
1 0
0 0
0 0
1 0
0 0
0 0
1
)
identity(5
Re(M) – возвращает матрицу действительных частей элементов комплексной мат- рицы M.
Im(M) – возвращает матрицу мнимых частей элементов комплексной матрицы M.
augment(M1,M2) – объединение матриц путем помещения матрицы M2 справа от
M1. Например,
1 2
3 4
4 3
2 1
m2)
,
augment(m1
stack (M1,M2) – объединение матриц путем помещения матрицы M2 под M1. На- пример,
1 2
3 4
4 3
2 1
m2)
stack(m1,
submatrix(M,ir,jr,ic,jc) – субматрица, составленная из элементов матрицы M в строках с ir по jr и в столбцах с ic по jc.
4.5 Примеры векторных и матричных операций
Рассмотрим применение некоторых векторных и матричных операций на примере следующей задачи.
Задача 1. Выбор оптимального решения методом перебора.
В некотором садоводстве, занимающем прямоугольную территорию размером xk
и yk, находится N участков с домиками. В одном из домиков решено разместить ларек с
товарами повседневного спроса. Причем место под ларек должно быть оптимальным:
среднее расстояние до него от всех остальных домиков должно быть наименьшим.
Решение. Для определенности будем полагать, что домики на территории садо-
водства размещены случайным образом. Задачу будем решать методом перебора всех
возможных вариантов и выбора наилучшего решения.
41
Упражнения
1. Определите любыми двумя способами вектор W, содержащий все нечетные числа от 1 до 19.
2. Определите некоторые векторы V, V1, V2, скаляр X и проделайте над ними векторные операции, приведенные в таблице 4.2.
3. Определите вектор x = (0.12, 0.2, 0.23, 0.27, 0.45, 0.66, 0.7, 0.85, 0.9, 0.99). Рас- считайте значения
42 4. Найдите сумму n членов числового ряда:
Вариант
Ряд
Вариант
Ряд
1 6
2 7
3 8
4 9
5 10 5. Определите некоторые матрицы M, M1, M2, вектор V и скаляр X. Проделайте над ними матричные операции, приведенные в таблице 4.3.
6. Определите два вектора одинаковой размерности. Объедините их в матрицу, отсортируйте по первому столбцу и получите из матрицы вновь два вектора.
7. Определите единичную матрицу Е размером 4×4 и вектор V, содержащий че- тыре элемента. Вычислите матрицу
T
VV
V
E
H
2 2
8. Решите задачу 1 из п.4.4 о поиске оптимального расположения домика садо- водства при количестве домов > 50. Изобразите на графике все дома садоводства, выделив дом с оптимальным и самым неудачным расположением.
Контрольные вопросы
1. Дайте определение вектора и матрицы.
2. Для чего служит системная переменная ORIGIN?
3. Назовите способы создания векторов и матриц.
4. Назовите векторные операторы.
5. Для чего служит оператор векторизации?
6. Какие векторные функции Вы знаете?
7. Как производится сортировка элементов?
8. Каким образом осуществляется одновременное вычисление с помощью векто- ров?
9. Какие матричные функции Вы знаете?
10. Назовите матричные операторы.
11. Какими способами можно объединить матрицы?
43
ЛАБОРАТОРНАЯ РАБОТА № 5
ИНТЕРПОЛЯЦИЯ И АППРОКСИМАЦИЯ ДАННЫХ
Цель: научиться обрабатывать экспериментальные данные с помощью интерпо-
ляции и аппроксимации.
5.1 Теоретические сведения
Допустим, что имеется таблица дискретных значений X-Y (см. Таблица 5.1). Эти данные могут быть получены в результате эксперимента, статистических наблюдений или расчетом по сложным соотношениям. Для наглядности данные таблицы 5.1 можно пред- ставить в графической форме (см. рис. 5.1).
Таблица 5.1. Дискретные данные
X
1 2
3 4
5 6
7
Y
1.84 2.91 3.14 3.24 4.04 5.72 7.66
Часто требуется через эти точки по каким-либо правилам провести некоторую кри- вую y=f(x), которая с заданной точностью соответствует исходной информации. С такой кривой во многих отношениях удобнее работать:
Рисунок 5.1 – Графическое представление данных
1) легко получить значения y, соответствующие промежуточным значениям x;
2) кривую можно продолжить в ту или иную сторону за пределы крайних точек по x;
3) кривую можно провести так, чтобы «сгладить» случайные ошибки эксперимента или случайные колебания статистических данных.
Существуют специальные методы построения таких кривых. Здесь мы рассмотрим методы интерполяции и аппроксимации с помощью метода наименьших квадратов.
Интерполяция
В этом случае ищется такая зависимость y=f(x), чтобы искомая кривая точно про- ходила через все точки (см. рис. 5.2). Между точками поведение кривой может быть раз- личным и зависит от типа интерполяции. Продолжение кривой влево от первой точки и вправо от последней точки получило специальное название – ЭКСТРАПОЛЯЦИЯ.
Аппроксимация
При аппроксимации с помощью метода наименьших квадратов искомая кривая y=f(x) должна хорошо приближать исходные данные в среднем, при этом не требуется точного прохождения кривой через все точки (см. рис. 5.3). Задачи такого типа часто на- зываются задачами регрессии. Как и в случае интерполяции, для одного и того же набора данных можно построить много аппроксимирующих функций или функций регрессии.
Эти функции менее чувствительны к случайным ошибкам исходных данных, чем функции интерполяции. Это свойство функций регрессии широко используется на практике.
44
Рисунок 5.2 – Интерполяция
Рисунок 5.3 – Аппроксимация с помощью метода наименьших квадратов
5.2 Интерполяция
Интерполяция использует табличные значения некоторой функции, заданной в ря- де точек, чтобы предсказать значения функции между точками. В системе MathCAD можно соединять точки прямыми линиями (линейная интерполяция) или соединять их от- резками кубического полинома (сплайн – интерполяция). Кроме того, можно проводить сплайн – интерполяцию функции двух переменных, но этот случай здесь не рассматрива- ется.
Линейная интерполяция
Пусть известны значения некоторой функции f(x) в нескольких точках (см. Таблица
5.1). При линейной интерполяции узловые точки соединяются прямыми. Если некоторое значение x, для которого ищется интерполяционное значение, выходит за пределы конце- вых точек, то осуществляется линейная экстраполяция (по двум ближайшим точкам на конце участка). Отметим, что линейная интерполяция автоматически используется при построении графиков.
Линейная интерполяция в системе MathCAD осуществляется функцией
linterp(Vx,Vy,X).
Здесь Vx – вектор координат точек по оси x, расположенных в порядке возраста- ния;
Vy – вектор координат точек по оси y, соответствующих точкам x;
X – значение независимой переменной, для которой находится интерполяционное
(или экстраполяционное) значение.
В качестве примера на рисунке 5.4 приведен текст программы и результаты линей- ной интерполяции данных из таблицы 5.1.
Отметим, что при линейной интерполяции получается ломаная кривая – ее первые производные в узловых точках разрывны, поэтому данный тип интерполяции рекоменду- ется использовать при большом количестве узловых точек или когда интерполируемая зависимость достаточно гладкая.
Сплайн-интерполяция
При кубической сплайн – интерполяции соседние узловые точки соединяются по- линомами третьей степени. Путем подбора коэффициентов соседние полиномы в узловых точках стыкуются так, что их первые две производные совпадают. В результате получает- ся достаточно гладкая интерполяционная кривая. В граничных точках требуется задать дополнительные условия, определяющие локальное поведение кривой в этих точках.
Сплайн – интерполяцию удобно проводить в два этапа:
1 этап. Рассчитывается вектор Vs вторых производных интерполяционной кривой в узловых точках одним из трех возможных способов:
Vs:=cspline(Vx,Vy);
Vs:=pspline(Vx,Vy);
45
Vs:=lspline(Vx,Vy).
Здесь Vx и Vy – векторы, содержащие координаты x и y, через которые нужно про- вести сплайн. Как и в случае линейной интерполяции, вектор Vx должен быть упорядочен
(по возрастанию значений). Функции cspline, pspline, lspline отличаются только гранич- ными условиями: функция cspline соответствует кривой, которая в граничных точках (ло- кально) ведет себя как полином 3-й степени, pspline – как парабола, а lspline – как прямая.
2 этап. Осуществляется сплайн – интерполяция при помощи функции
interp(Vs,Vx,Vy,x) , которая возвращает интерполируемое значение для заданного x. Здесь Vs – вектор, полученный на первом этапе.
Применение рассмотренных функций для сплайн-интерполяции данных, приведен- ных в таблице 5.1, также показано на рис.5.4.
Рисунок 5.4 – Линейная и сплайн-интерполяция данных. Справа приведен фрагмент графика в увеличенном масштабе, где хорошо видно отличие линейной и сплайновой интерполяции
Отметим, что для значений х, расположенных перед первой точкой в Vx, MathCAD использует продолжение первого кусочного полинома, соединяющего первую и вторую точки. Для значения х, расположенных за последней точкой в Vx, MathCAD продолжает сплайн последней кубической параболы. Таким образом осуществляется сплайн – экстра- поляция данных.
5.3 Аппроксимация
Допустим, что данные, представленные в таблице 5.1, нужно аппроксимировать некоторой функцией y=f(x, a
1
, a
2
, a
3
, …), где a i
– соответствующие параметры функции. В отличие от интерполяции, рассмотренной в предыдущем разделе, мы не будем требовать,
46 чтобы функция f(x) точно проходила через точки данных. Вместо этого потребуем, чтобы аппроксимирующая функция y=f(x) удовлетворяла условию min
))
,
a
,
a
,
x
(
f y
(
n
1
i
2 2
1
i i
, т.е. сумма квадратов отклонений от всех точек до искомой кривой была бы минимальной.
Из условия минимума можно найти значения коэффициентов a i
, обеспечивающие данный экстремум. Такой метод аппроксимации получил название метода наименьших квадратов, а сами задачи – задачи регрессии.
Отметим, что вид функции y=f(x) задается исследователем, при этом обычно при- нимаются во внимание следующие обстоятельства:
1) внешний вид данных (расположение точек на графике):
2) физические соображения, связанные с существом решаемой задачи;
3) предварительные оценки или интуитивные предположения.
Система MathCAD содержит ряд функций для аппроксимации данных по методу наименьших квадратов. Здесь мы рассмотрим в основном случай линейной регрессии.
Аппроксимация прямой
В этом простом случае предполагается, что аппроксимирующая функция имеет вид b
x a
y
(5.1) и соответствует прямой, для которой коэффициенты a и b имеют простой геометрический смысл. Для решения данной задачи в системе MathCAD имеются следующие функции:
slope(Vx,Vy) – возвращает значение коэффициента a;
intercept(Vx,Vy) – возвращает значение коэффициента b.
Покажем (см. рис. 5.5), как используются эти функции на примере аппроксимации данных из таблицы 5.1.
Рисунок 5.5 – Аппроксимация данных прямой линией
47
Аппроксимация полиномом
Используется в том случае, когда для данных точек ожидается полиномиальная за- висимость типа
`
n n
2 2
1 0
x a
x a
x a
a y
, (5.2) где n – степень полинома.
Аппроксимацию полиномом (5.2) удобно проводить в два этапа:
1 этап. Рассчитывается вектор Vs с помощью стандартной функции regress()
Vs:=regress(Vx,Vy,n);
2 этап. Осуществляется аппроксимация полиномом при помощи функции
interp(Vs,Vx,Vy,x) , которая возвращает значение аппроксимирующей функции для заданного x. Здесь Vs – вектор, полученный на первом этапе.
Применение рассмотренных функций для аппроксимации тех же данных, приве- денных в таблице 5.1, показано на рис.5.6.
Рисунок 5.6 – Аппроксимация данных полиномами 1-й, 2-й и 3-й степени
Справа приведен фрагмент графика в увеличенном масштабе, где хорошо видно влияние степени полинома на поведение кривых
Функция regress допускает использование полинома любого порядка. Однако на практике не рекомендуется использовать степень полинома выше n=4. Отметим также, что при n=1 данный метод совпадает с рассмотренным выше методом, использующем функции slope и intercept.
Общий случай линейной регрессии
Аппроксимация прямой или полиномиальная аппроксимация не во всех случаях подходят для описания зависимости данных. Бывает, что нужно искать эту зависимость в виде линейной комбинации заданных функций
)
x
(
f a
`
)
x
(
f a
)
x
(
f a
y n
n
1 1
0 0
,
(5.3) где f i
(x) – заданные пользователем функции, a i
– параметры, значения которых тре- буется определить по методу наименьших квадратов.
Решение такой задачи в системе MathCAD осуществляется с помощью стандартной функции
linfit(Vx,Vy,F),
которая возвращает вектор искомых коэффициентов a (см. рис.5.7а). Здесь Vx и
Vy – векторы координат исходных точек, F- вектор, задающий в символьном виде набор функций, которые нужно обьединить в линейной комбинации (см. рис. 5.7б).
48
Рисунок 5.7 – Вектор искомых коэффициентов
На рисунке 5.8 показан пример, демонстрирующий применение данной функции для аппроксимации данных, приведенных в таблице 5.1. Исходные данные в виде векто- ров Vx и Vy сформированы так же, как и в предыдущих примерах, и на рисунке не пред- ставлены.
Рисунок 5.8 – Аппроксимация данных с помощью функции linfit
Следует отметить, что рассмотренные в предыдущих разделах способы аппрокси- мации (5.1) и (5.2), являются частными случаями линейной регрессии общего вида (5.3).
Линеаризация аппроксимирующей функции
Выше рассмотрены случаи, когда аппроксимирующая функция линейна относи- тельно входящих в нее параметров. В некоторых случаях коэффициенты a i
входят в такую функцию нелинейно. Математические методы решения таких задач более сложны, поэто- му общий случай нелинейной регрессии здесь не рассматривается. Однако, в некоторых случаях нелинейную функцию можно линеаризовать, а затем применить аппарат линей- ной регрессии. Покажем это на примерах.
Пример 1. Допустим, что заданные данные мы хотим аппроксимировать функцией
`
x
b
e
a
y
, нелинейной относительно параметра b. Но эту функцию можно линеари- зовать, прологарифмировав обе ее части:
x
b
a
y
ln ln
Если теперь обозначить y1=ln(y) и a1=ln(a), получим уже линейную функцию в ви- де (5.1)
x
b
a
y
1 1
, к которой применим метод линейной регрессии, рассмотренный выше. Следова- тельно, можно получить значения параметров a
1 и b, а затем и a.
Пример 2. Пусть координаты точек заданы векторами Vx и Vy (см. рис. 5.9). Необ- ходимо подобрать вид аппроксимирующей функции с помощью графика.