Кирьянов Д. - MathCad 11 (1077323), страница 38
Текст из файла (страница 38)
Примерпоказан в листинге 9.17.Листинг 9.17. Векторизация необязательнадля большинства функций Mathcadsin (vj =0.841( 0.8410.9090.9090.1410.1419.1.12. Символьные операции с матрицамиВсе матричные и векторные операторы, о которых шла речь выше, допустимо использовать в символьных вычислениях. Мощь символьных операцийзаключается в возможности проводить их не только над конкретными числами, но и над переменными. Несколько примеров приведены в листинге 9.18.Листинг 9.1 в. Примеры символьных операций над векторами и матрицамиa-o + b - ra ' p + b-sa q + b - tс •о + d • rc-p+d-sс •q+ d • tf-o + g - rf-p + g-sf - q + g - t0-ba -d - b - c iaa-d-Ь-c]00b11сa-( b - c - 1 )Глава 9. Матричные вычисления225—» а + Ь + сСоветСмело используйте символьный процессор в качестве мощного математического справочника.
Например, когда Вы хотите вспомнить какое-либо определениеиз области линейной алгебры (так, правила перемножения и обращения матрицпоказаны в первых строках листинга 9.18).9.2. Матричные функцииПеречислим основные встроенные функции, предназначенные для облегчения работы с векторами и матрицами. Они нужны для создания матриц,слияния и выделения части матриц, получения основных свойств матрици т. п.9.2.1.
Функции создания матрицСамым наглядным способом создания матрицы или вектора является применение первой кнопки панели инструментов Matrix (Матрицы) (см. разд."Массивы" гл. 4). Однако в большинстве случаев, в частности при программировании сложных проектов, удобнее бывает создавать массивы с помощьювстроенных функций.Определение элементов матрицы через функциюGmatrix{M,N, f) — создание матрицы размера мхы, каждый i , j элементкоторой есть f ( i , j ) (листинг 9.19);•м — количество строк;•N — количество столбцов;•f ( i , j) — функция.Листинг9.19.
Создание матрицы , ; ч » 4•' = ;f ( i , j ) : = i + 0.5 • jA := m a t r i x (2 , 3 , f)fo{ 10.511.52Для создания матриц имеются еще две специфические функции, применяемые, в основном, для быстрого и эффектного представления каких-либозависимостей в виде трехмерных графиков (типа поверхности или про-Часть III. Численные методы226странственной кривой). Все их аргументы, кроме первого (функции), необязательны.
Рассмотрим первую из функций.П CreateSpace(F(IUIH f I , f 2 , f 3 ) , tO , t l , t g r i d , fmap) — Создание ВЛОЖенного массива, представляющего х-, у- и z-координаты параметрическойпространственной кривой, заданной функцией F;•F(t) — векторная функция из трех элементов, заданная параметрически относительно единственного аргумента t;•fi ( t ) , f2 ( t ) , f3 {t) — скалярные функции;•to — нижний предел t (по умолчанию -5);•t l — верхний предел t (по умолчанию 5);•tgrid — число точек сетки по переменной t (по умолчанию 20);•fmap — векторная функция от трех аргументов, задающая преобразование координат.ПримечаниеО вложенных массивах читайте в разд.
"Создание тензора"гл. 4,(cos(t)F(t) •- sin(t)CreateSpace(F)CreateSpace(F,-15 , 15,300)Рис. Э.4. Использование функции C r e a t e S p a c e с разным набором параметровПример использования функции createspace показан на рис. 9.4. Заметьте,для построения графика спирали не потребовалось никакого дополнитель-Глава 9. Матричные вычисления227ного кода, кроме определения параметрической зависимости в векторфункции Р!Функция создания матрицы для графика трехмерной поверхности устроенасовершенно аналогично, за тем исключением, что для определения поверхности требуется не одна, а две переменных.
Пример ее использования иллюстрирует рис. 9.5.g ( s , t) ; = з 2 + t 2CreateMesh (g)C c e a t e H e s h ( g , 10 , 50)Рис. 9.5. Использование функции CreateMesh с разным набором параметровО CreateMesh (F (ИЛИ д, ИЛИ fl,f2,f3> , sO , s i , tO , t l , sgrid, t g r i d , finap) —создание вложенного массива, представляющего х-, у- и z-координаты параметрической поверхности, заданной функцией F;•F{s,t) — векторная функция из трех элементов, заданная параметрически относительно двух аргументов s и t;•g ( s , t ) — скалярная функция;•fI (s, t ) , 12 (s, t ) , f3 (s, t) — скалярные функции;•so, to — нижние пределы аргументов s, t (по умолчанию -5);•s i , t i — верхние пределы аргументов s, t (по умолчанию 5);•sgrid, t g r i d — число точек сетки по переменным s и t (по умолчанию 2 0);228Часть ill.
Численные методы•fmap — векторная функция из трех элементов от трех аргументов, задающая преобразование координат.П р и м е р ы ВЛОЖеННЫХ МаССИВОВ, КОТОрЫе СОЗДаЮТСЯ ФУНКЦИЯМИ C r e a t e M e s hи createspace, приведены в листинге 9.20. Каждая матрица из числа трехвложенных матриц, образующих массив, определяет х-, у- и z-координатыточек поверхности или кривой, соответственно.Листинг 9.20. Результат действия функций CreaCeM*eh и Craat«8pac«, (рис. 9.4-9.5)CreateMesh ( g , 2 , 3} =CreateSpace ( F , 3 ) =Создание матриц специального видаВ Mathcad легко создать матрицы определенного вида с помощью одной извстроенных функций.
Примеры использования этих функций приведены влистинге 9.21.•identity{Nj — единичная матрица размера WXN;D diag(v) — диагональная матрица, на диагонали которой находятся элементы вектора v;• geninv(A) — создание матрицы, обратной (слева) матрице А;Глава 9. Матричные вычисления229• rref (A) — преобразование матрицы или вектора А В ступенчатый вид;• м — целое число;• V — вектор;• А —матрица из действительных чисел.ПримечаниеРазмер NXM матрицы А ДЛЯ функции geninv должен быть таким, чтобы ыэм.Листинг 0.21.
Создание матриц специального видаi d e n t i t y (2) =((1 W1 0diag0020003А:=geninv (А) =-1.333-0.3330.6671.0830.333-0.417/r r e f (A) =geninv (A) • А =оО1о оrref1 24531 0 - 1601 29.2.2. Слияние и разбиение матрицИз матрицы или вектора можно выделить либо подматрицу, либо векторстолбец, либо отдельный элемент. И обратно, можно "склеить" несколькоматриц в одну.Выделение части матрицыЧасть матрицы вьщеляется одним из следующих способов:О для выделения одного элемента предназначен оператор нижнего индекса (подробнее об этом операторе рассказано е разд.
"Доступ к элементаммассива" гл. 4). Оператор вводится нажатием кнопки Subscript (НижнийЧасть III. Численные методы230индекс) со значком х„ на панели Matrix (Матрица), либо нажатием клавиши <[> (листинг 9.22, вторая строка сверху);П для выделения из матрицы столбца примените оператор выделениястолбца нажатием кнопки Matrix Column с изображением угловых скобок О на панели Matrix, либо сочетанием клавиш <CtrI>+<6> (листинг 9.22). Этот оператор называют еще, по аналогии с предыдущим,оператором верхнего индекса;Очтобы выделить из матрицы строку, примените тот же оператор Ок транспонированной матрице (листинг 9.22, снизу);П для выделения подматрицы используйте встроенную функцию submatrix(A, i r , j r . i c , j c ) , возвращающую часть матрицы А, находящуюсямежду строками i r , jr и столбцами i c , jc включительно (листинг 9.23).ПримечаниеВыделить из матрицы один столбец или строку можно и с помощью функцииsubmatrix.: Листинг 9.22.
Доступ к отдельным элементам, столбцам и строкам матрицы1 24356Ао . 1 = 2А1)= ( 1 2 3Листинг 9.23. Выделение подматрицыsubmatrixsubmatrix,0,1,0,11 0-10-3-41245, 0 , 0, 0 , 1 = ( 10Те же операции применимы к матрицам-векторам и матрицам-строкам.Следует помнить только, что размер их составляет NXI И IXN, соответственно (листинг 9.24).Глава 9. Матричные вычисления231Листинг 9.24. Выделение частей из векторов и строк(о)(1-submatrix(1,0,1,0,0Слияние матрицДля того чтобы составить из двух или более матриц одну» в Mathcad предусмотрены две матричные функции (листинг 9.25):•augment ( А , в , с , . . .
) — матрица, сформированная слиянием матрицаргументов слева направо;О stack(A,E,c,...) — матрица,аргументов сверху вниз;•сформированнаяслияниемматриц-А,в,с, . . . — векторы или матрицы соответствующего размера.Листинг 9.25. Примеры слияния матрицВ:=А:=stack ( А , В) =00augment (А, В) =000031 245г \augment000000000000/116А. В,20000009.2.3. Вывод размера матрицДля получения сведений о характеристиках матриц или векторов предусмотрены следующие встроенные функции (листинг 9.26):О rows (A) — число строк;232Часть III.
Численные методыОcols (A) — число столбцов;•length (v) — число элементов вектора;•last(v) — индекс последнего элемента вектора;• А — матрица или вектор;• v — вектор.[ПримечаниеjЧисло элементов вектора и индекс его последнего элемента совпадают, еслииндексы нумеруются с 1, т. е. системная константа O R I G I N равна 1 (см. гл. 4).Листинг 9.26.
Размер матриц и векторовw := (1 2 3 )fl 2"А:= 3546v := 23,,rows {А) =3.rows ( v) =3rows (w) =]cols {A) = 2length {v) = 3cols ( v) = 1cols {w} = 3last (v) = 29.2.4. Сортировка матрицЧасто бывает нужно переставить элементы матрицы или вектора, расположив их в определенной строке или столбце в порядке возрастания или убывания. Для этого имеются несколько встроенных функций, которые позволяют гибко управлять сортировкой матриц:П sort(v) — сортировка элементов вектора в порядке возрастания (листинг'9.27);Оcsort(A.i) — сортировка строк матрицы выстраиванием элементов 1-гостолбца в порядке возрастания (листинг 9.28);•rsort(A,i} — сортировка столбцов матрицы выстраиванием элементовi-й строки в порядке возрастания (листинг 9.29);П reverse (v) — перестановка элементов вектора в обратном порядке(листинг 9.27);• v — вектор;• А — матрица;• i — индекс строки или столбца.Глава 9. Матричные вычисленияПримечание233JЕсли элементы матриц или векторов комплексные, то сортировка ведется подействительной части, а мнимая часть игнорируется.Листинг 9.27.
Сортировка векторов'з '(2\4sort(v) =reverse v =Листинг в.ЙЭ. Сортировка матриц по столбцу'l9 "А:= 3О2819csort(А, 1) = 28csort (A, 0) = 281930Листинг 9.29. Сортировка матриц по строке (матрица А из листинга 9.28)r s o r t (A, 1) =0382r s o r t (A, 2) =193О289.2.5. Норма квадратной матрицыВ линейной алгебре используются различные матричные нормы (norm), которые ставят в соответствие матрице некоторую скалярную числовую характеристику. Норма матрицы отражает порядок величины матричных элементов.