Методичка MatchCAD. Практикум по курсам Информатика, Прикладное программное обеспечение
Скачать 2.28 Mb.
|
Примечание: *) Операция векторизации аналогична таковой для векторов. Напри- мер, результатом операции 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). Необ- ходимо подобрать вид аппроксимирующей функции с помощью графика. 49 OR IGIN 1 Vx 1 2 3 4 5 6 7 Vy 1.14 1.82 2.34 3.54 4.64 6.72 10.06 - векторы координат точек 0 2 4 6 8 0 2 4 6 8 10 12 Vy Vx 0 0.5 1 1.5 2 0 2 4 6 8 10 12 Vy ln Vx ( ) a) b) 0 2 4 6 8 0 1 2 3 ln Vy ( ) Vx 0 0.5 1 1.5 2 0 1 2 3 ln Vy ( ) ln Vx ( ) c) d) Рисунок 5.9 – Расположение точек на графике в зависимости от масштабирования координатных осей: a) – натуральная шкала; b) – логарифмическая шкала по x; c) – логарифмическая шкала по y; d) – логарифмические шкалы по обеим осям Расположив точки на графиках с различными шкалами, можно заметить, что на ри- сунке 5.9 (с) точки приближенно укладываются в прямую линию. Это означает, что под- бираемую функцию можно линеаризовать, если заменить вектор y на ln(y). Следователь- но, за искомую функцию принимаем экспоненциальную ` bx ae y или показательную x ab y , как общий случай. Если бы точки ложились на прямую линию в полулогарифмических координатах, показанных на рис. 5.9 (b), то можно было бы предположить в качестве аппроксимирую- щей функцию вида ) ln(x b a y При прямолинейной тенденции расположения точек в логарифмических координа- тах, показанных на рис 5.6 (d), предполагаемая функция имеет вид степенной функции b ax y В том случае, когда заранее нельзя сказать о тенденции изменения исходных дан- ных и предположить вид зависимости затруднительно, в качестве приближающей функ- ции следует применять полином n-ой степени. Однако следует учитывать, что при увели- чении степени полинома (n>5) и особенно при небольшом количестве точек увеличивает- ся ошибка определения параметров и могут появиться нежелательные осцилляции ап- проксимирующей функции между узловыми точками. |