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

Информатика.-1

.pdf
Скачиваний:
16
Добавлен:
05.02.2023
Размер:
2.14 Mб
Скачать

140

же рассмотрены некоторые функции, осуществляющие матричные операции, используемые при выполнении контрольных работ.

7.4.1Ввод и редактирование формата матриц с помощью шаблона

Интерфейс процессора MathCad позволяет вводить матрицы с помощью шаблона, задаваемого в диалоговом окне. Диалоговое окно вызывается командой главного меню Insert\ Matrix…, либо комбинацией клавиш-акселераторов Ctrl+M, либо воздействием («клик») на пиктограмму палитры матричных операций. Вид диалогового окна показан на рисунке 7.3. На этом же рисунке показан шаблон, возникающий в точке нахождения курсора после нажатия кнопки «ОК» в поле диалогового окна. В данном примере создан шаблон для занесения матрицы с тремя строками (Rows) и четырьмя столбцами (Columns). Заполнив знакоместа (выделены черными прямоугольниками) числовыми константами, либо формульными выражениями, получаем готовый объект — матрицу, с которым далее можно производить все допустимые действия.

Рис. 7.3 — Диалоговое окно и шаблон ввода матрицы

С помощью этого диалога можно редактировать формат уже созданных матриц, добавляя/удаляя строки и столбцы. Эти действия вызываются кнопками Insert и Delete. Для редактирования формата матрицы необходимо:

а) выделить некоторый элемент матрицы, подведя под него курсор;

141

б) вызвать окно диалога;

в) задать необходимые величины в полях Rows и Columns; г) нажать кнопку Insert или Delete.

Пример редактирования существующих матриц с помощью диалога показан на рисунке 7.4.

Рис. 7.4 — Редактирование формата матриц с помощью окна диалога

Как видно из приведенного примера, вставка (Insert) заданного количества строк и столбцов происходит после строки и столбца с отмеченным элементом. Операция удаления (Delete) убирает заданное число строк и столбцов после строки и столбца с отмеченным элементом, включая строку и столбец с выделенным элементом. Если необходимо убрать\добавить только строки, то в поле Columns надо поставить 0, если необходимо убрать\добавить только столбцы, то надо задать Rows=0.

7.4.2 Функции компоновки и декомпозиции матриц

В составе библиотеки встроенных функций MathCad имеются функции, позволяющие производить, формировать матрицу из блоков-подматриц и выделять из заданной матрицы подматрицы нужного размера. Компоновку матрицы из блоков осуществляют функции augment, stack. Выделение подматрицы выполняется

функцией submatrix и оператором выделения столбца матрицы

M<>.

Функция augment объединяет матрицы-аргументы слева направо «столбец к столбцу», как показано на рисунке 7.5. Функция augment может вызываться с произвольным количеством аргументов, необходимым условием ее работы является равенство числа строк у всех матриц-аргументов.

142

Рис. 7.5 — Действие функции augment

Функция stack объединяет матрицы-аргументы сверху вниз «строка к строке», как показано на рисунке 7.6. Функция stack также может вызываться с произвольным количеством аргументов, а необходимым условием ее работы является равенство числа столбцов у всех матриц-аргументов.

Рис. 7.6 — Действие функции stack

Функция выделения подматрицы submatrix имеет следующий синтаксис вызова:

submatrix (A, rb, re, cb, ce),

где A — исходная матрица, из которой извлекается фрагмент; rb номер начальной строки в матрице A, включаемой в вы-

деляемую подматрицу;

re — номер конечной строки в матрице A, включаемой в выделяемую подматрицу;

cb — номер начального столбца в матрице A, включаемого в выделяемую подматрицу;

ce — номер конечного столбца в матрице A, включаемого в выделяемую подматрицу.

Функция submatrix (A, rb, re, cb, ce) работоспособна при вы-

полнении условий 0 re rb m–1 и 0 ce cb n–1, где m и n — соответственно число строк и столбцов в матрице A. (Напомним,

что нумерация строк и столбцов в MathCad по умолчанию начи-

нается с 0.) Пример действия функции показан на рисунке 7.7.

143

Рис. 7.7 — Действие функции submatrix

С помощью функции submatrix можно выделить любой прямоугольный фрагмент из матрицы. Для частного случая декомпозиции матрицы — выделения столбца с заданным номером — в наборе инструментов векторно-матричных операций MathCad имеется специальный оператор M<>, шаблон которого вызывается воздействием на элемент управления с пиктограммой. Пример применения оператора M<> приведен на рисунке 7.8.

Рис. 7.8 — Действие оператора выделения столбца M<>

7.4.3 Создание единичной и диагональной матриц

Для создания единичной матрицы заданного размера в MathCad можно использовать функцию identity(n). Эта функция возвращает квадратную единичную матрицу размера n n (рисунок 7.9), размещая ее в точке вызова функции.

Рис. 7.9 — Создание единичной матрицы функцией identity

Квадратная матрица размера n n, элементы которой отличны от нуля только на главной диагонали (диагональная матри-

144

ца), может быть сформирована из вектора x размера n с помощью встроенной функции diag (x). Размер матрицы определяется автоматически по размеру вектора, а компоненты вектора встраиваются в диагональ в порядке своего расположения (рис. 7.10).

Рис. 7.10 — Результат работы функции diag

7.4.4 Формирование матрицы на основе заданной функции

В ряде случаев значения элемента матрицы aij можно связать со значениями его индексов некоторой функцией от двух целочисленных аргументов: aij = F(i,j). В этом случае матрицу произвольного размера можно сформировать при помощи встроенной функции matrix(m,n,F), где m и n — число строк и столбцов в создаваемой матрице, F — имя функции двух целочисленных аргументов, используемой для расчета элементов. Функция F(i,j) должна быть определена к моменту выполнения matrix.

Пример формирования матриц с различными функциями формирования значений элементов приведен на рисунке 7.11.

Рис. 7.11 — Формирование матриц функцией matrix

7.4.5 Поэлементное формирование матриц

Матрицу произвольного размера можно сформировать, задавая значение каждому элементу с помощью оператора назначения (рисунок 7.12). Перебор множества индексов может быть

145

произведен с помощью ранжированных переменных (создание матрицы A1), либо с использованием операторов цикла в программном блоке (создание матрицы A2). Как видно из приведенного на рисунке 7.12 примера, результат абсолютно одинаков.

Рис. 7.12 — Поэлементное формирование матриц

7.4.6 Целочисленные степени квадратных матриц

В среде MathCad целочисленная степень матрицы (в том числе отрицательная) задается точно так же, как и степень обычных числовых переменных (рисунок 7.13). В том случае, когда матрица не имеет обратной, попытка вычислить ее какую-либо отрицательную степень блокируется с выдачей соответствующего сообщения. Нулевая и положительная степень квадратной матрицы вычисляются всегда.

Рис. 7.13 — Целочисленные степени квадратной матрицы

7.4.7 Функции определения размеров матриц

Возможны ситуации, когда для вычислительного процесса необходимы сведения о размерах матриц, которые становятся известны только после их формирования в ходе вычислений. Для получения такой информации используются функции определения количества строк и столбцов в матрицах rows и cols. На ри-

146

сунке 7.14 приведен пример довольно сложного формирования матрицы С из матриц А и В с использованием функций rows и cols для определения размеров промежуточных матриц.

Рис. 7.14 — Использование функций rows и cols

Применение функций rows и cols повышает универсальность выражений, использующих матричные операции, они становятся менее зависимыми от конкретных размеров исходных матриц. Так, например, в рассмотренном выше примере при произвольных размерах матриц A и B, допускающих их перемножение, вычислительные операторы выполнятся корректно.

7.5 Оператор | x |

Вызов шаблона оператора | x | может производиться из нескольких инструментальных панелей. Этот оператор многофункционален, результат его действия зависит от типа аргумента x. В программировании такое поведение функций называют полиморфизмом. Полиморфизм оператора | x | отражен в таблице 7.1.

Таблица 7.1

 

Тип аргумента

 

 

Результат

скаляр

 

абсолютное значение числа

комплексное число a + ib

модуль комплексного числа

 

a2 b2

 

 

 

 

x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

вектор x2

 

 

 

 

модуль вектора: xk2

 

 

 

 

k 1

 

 

 

 

 

 

 

 

 

 

xn

 

 

 

 

 

квадратная матрица

определитель

147

Расчет определителя квадратной матрицы в MathCad производится оператором |A|. Попытка применить этот оператор к неквадратной матрице с количеством столбцов более одного вызывает ошибку.

7.6 Оператор векторизации функций

В наборе инструментов матричных операций имеется оператор векторизации функций. Пусть f(x) определена как функция скалярного аргумента и задана M — матрица произвольных размеров с элементами Mij. Операция векторизации функции f(x) вызывает появление матрицы с элементами f(Mij), т.е. происходит поэлементное функциональное преобразование матрицы — аргумента в матрицу — результат того же размера. Например:

Векторизация меняет смысл оператора | x |, рассмотренного выше:

Как видно из приведенных примеров, векторизованный оператор | x | выполняет замену элементов матрицы их абсолютными величинами, причем для комплексных чисел берется модуль. Матрица-аргумент может быть произвольного размера.

Операции векторизации нет в математике, это специфическая функция MathCad. Заметим, что векторизация функций не

имеет ничего общего с матричными функциями от квадратных матриц, рассмотренными в п. 2.3.

148

7.7 Интерполяция и регрессия

Этот раздел посвящен методам обработки выборочных данных — интерполяции, экстраполяции и регрессии. Будем считать, что основным объектом исследования будет выборка экспериментальных данных, которые, представляются в виде массива, состоящего из пар чисел (xi,yi). Возникает задача аппроксимации дискретной зависимости y(xi) непрерывной функцией f(x). Функция f(х), в зависимости от специфики задачи, может отвечать различным требованиям:

f(x) должна проходить через точки (xi,yi), т.е. f(xi)=yi, i=1..n. В этом случае говорят об интерполяции данных функцией f(х) во внутренних точках между xi или экстраполяции за пределами интервала, содержащего все хi;

f(х) должна некоторым образом (например, в виде определенной аналитической зависимости) приближать y(xi), не обязательно проходя через точки (xi,yi). Такова постановка задачи регрессии.

Различные виды построения аппроксимирующей зависимо-

сти f(х) иллюстрирует рис. 7.15.

Рис. 7.15 — Разные задачи аппроксимации данных

На нем исходные данные обозначены кружками, интерполяция отрезками прямых линий — пунктиром, линейная регрессия — наклонной прямой линией, а фильтрация — жирной гладкой кри-

149

вой. Эти зависимости приведены в качестве примера и отражают лишь малую часть возможностей Mathcad по обработке данных. Вообще говоря, в Mathcad имеется целый арсенал встроенных функций, позволяющий осуществлять самую различную регрессию, интерполяцию и экстраполяцию.

7.8 Интерполяция

Для построения интерполяции-экстраполяции в Mathcad имеется несколько встроенных функций, позволяющих «соединить» точки выборки данных (xi,yi) кривой разной степени гладкости. По определению интерполяция означает построение функции А(Х), аппроксимирующей зависимость у(х) в промежуточных точках (между xi). Поэтому интерполяцию еще по-другому называют аппроксимацией. В точках xi значения интерполяционной функции должны совпадать с исходными данными, т.е.

A(xi)=y (xi).

7.9 Линейная интерполяция

Самый простой вид интерполяции — линейная, которая представляет искомую зависимость А(Х) в виде ломаной линии. Интерполирующая функция А(х) состоит из отрезков прямых, соединяющих точки (рис. 7.16).

Рис. 7.16 — Линейная интерполяция