Кирьянов. Самоучитель MathCad 11. Кирьянов д в
Скачать 10.75 Mb.
|
Листинг 8.21. Решение уравнения sin(a-x)=o методом продолжения по параметру (хО , а) := r o o t ( s i n ( ах, х ) i := 0 .. 30 0 . 0 1 + := 300 + := Глава 8. Алгебраические уравнения и оптимизация 213 Результат вычислений, приведенный на 8.11, разительно отличается от предыдущего. Как видно, столь малое изменение идеологии применения численного метода привело к определению непрерывного семейства корней. Отметим, что получить результат рис. 8.10 (без продолжения по параметру) в терминах введенной нами функции можно, изменив ее первый аргумент в последней строке листинга 8.21 на константу ООО Рис. 8 . 1 1 . Решение уравнения -0 методом продолжения для ЗОО (листинг Чтобы найти другое семейство решений, нужно взять соответствующее первое начальное значение например Результат действия листинга для этого случая показан на рис. 8.12. Если взять ближе к третьему семейству решений (например то оно и будет найдено вычислительным процессором Mathcad, и т. д. С помощью метода продолжения можно решать и соответствующие задачи оптимизации, зависящие от параметра. Идеология в этом случае остается точно такой же, но вместо функций решения нелинейных уравнений root или Find вам следует применить одну из функций поиска экстремума e r r , Maximize ИЛИ Мы привели основную идею и один из возможных способов реализации метода продолжения по параметру. Безусловно, Вы можете предложить иные как математические, таки программистские решения этой проблемы. В частности, для выбора очередного начального приближения к корню можно использовать результат экстраполяции уже найденной зависи- Часть ill. Численные методы мости ха, придумать более сложные алгоритмы для ветвящихся семейств решений и т. до о о я а _ 800 600 0 V 0 1 0 . 0 1 5 0.02 - 0 . 8 . 1 2 . Решение уравнения s i n -0 методом продолжения по параметру для ГЛАВА Матричные вычисления Матричные вычисления можно условно разделить на несколько типов. Первый тип — это простейшие действия, которые реализованы операторами (см. разд. 9.1) и несколькими функциями, предназначенными для создания, объединения, сортировки, получения основных свойств матриц и т. п (см. разд. 9.2). Второй тип — это более сложные функции, которые реализуют алгоритмы вычислительной линейной алгебры, такие, как решение систем линейных уравнений (см. разд. 9.3), вычисление собственных векторов и собственных значений (см. разд различные матричные разложения (см. разд. 9.5). Простейшие операции с матрицами Простейшие операции матричной алгебры реализованы в Mathcad в виде операторов. Написание операторов по смыслу максимально приближено к их математическому действию. Каждый оператор выражается соответствующим символом. Рассмотрим матричные и векторные операции Mathcad Векторы являются частным случаем матриц размерности поэтому для них справедливы все те операции, что и для матриц, если ограничения особо не оговорены (например некоторые операции применимы только к квадратным матрицам NXN). Какие-то действия допустимы только для векторов (например скалярное произведение, а какие-то, несмотря на одинаковое написание, по-разному действуют на векторы и матрицы. Внимание! Непосредственное проведение векторных операций над строками, те. матрицами невозможно для того чтобы превратить строку в вектор, ее нужно предварительно транспонировать 984 Часть III. Численные методы Транспонирование Транспортированием называют операцию, переводящую матрицу размерности в матрицу размерности делая столбцы исходной матрицы строками, а строки — столбцами. Пример приведен в листинге 9.1. Ввод символа транспонирования (transpose) осуществляется с помощью панели инструментов Matrix (Матрица) или нажатием клавиш забывайте, что для вставки символа транспонирования матрица должна находиться между линиями ввода. Matrix : Рис. 9 . 1 . Панель инструментов Листинг 9.1. Транспонирование векторов и матриц ( 1 3 4 5 6 3 ) 2 5 3 6 9.1.2. Сложение В Mathcad можно как складывать матрицы, таки вычитать их друг из друга. Для этих операторов применяются символы <+> или <—>, соответственно. Матрицы должны иметь одинаковую размерность, иначе будет выдано сообщение об ошибке. Каждый элемент суммы двух матриц равен сумме соответствующих элементов матриц-слагаемых (листинг Листинг 9.2. Сложение и вычитание матриц А := 3 4 5 6 2 2 В := 0 - 1 - 3 - А + В Глава 9. Матричные вычисления 217 0 2 3 А-В = 5 8 Кроме сложения матриц, Mathcad поддерживает операцию сложения матрицы со скаляром (листинг 9.3). Каждый элемент результирующей матрицы равен сумме соответствующего элемента исходной матрицы и скалярной величины. Листинг 9.3. Сложение матрицы со скаляром Ах Ах Ах Результат смены знака матрицы эквивалентен смене знака всех ее элементов. Для того чтобы изменить знак матрицы, достаточно ввести передней знак минуса, как перед обычным числом (листинг 9.4). Листинг 9.4. Смена матрицы .. . ' | ( 1 2 3 ( - 1 -2 -А -А 4 5 6 J - 4 - 5 9.1.3. Умножение При умножении следует помнить, что матрицу размерности допустимо умножать только на матрицу размерности NXP (P может быть любым. В результате получается матрица размерности Чтобы ввести символ умножения, нужно нажать клавишу со звездочкой или воспользоваться панелью инструментов Matrix (Матрица, нажав на ней кнопку Dot Product (Умножение) (рис. 9.1). Умножение матриц обозначается по умолчанию точкой, как показано в листинге 9.5. Символ умножения матриц можно выбирать точно также, как ив скалярных выражениях (см. разд. "Управление отображением некоторых операторов" гл. 2). Листинг 9.5. Умножение 1 2 3 1 0 А В 5 - 1 - 3 - 4 Часть III. Численные методы с с 1 - о - з ) 1 = 4 - 4 Еще один пример, относящийся к умножению вектора на матрицу-строку и, наоборот, строки на вектор, приведен в листинге 9.6. Во второй строке этого листинга показано, как выглядит формула при выборе отображения оператора умножения No Space (Вместе). Листинг 9.6. Умножение вектора и строки 1 1 3 4 6 8 Внимание! Тот же самый оператор умножения действует на два вектора по-другому (см. разд. Аналогично сложению матриц со скаляром определяется умножение и деление матрицы на скалярную величину (листинг 9.7). Символ умножения вводится также, как ив случае умножения двух матриц. На скаляр можно умножать любую матрицу матрицы на ] = 2 4 6 8 10 12 0 . 5 1 1 . 5 2 2 . 5 3 9.1.4. Определитель квадратной матрицы Определитель (Determinant) матрицы обозначается стандартным математическим символом. Чтобы ввести оператор нахождения определителя матрицы, можно нажать кнопку Determinant (Определитель) на панели инструментов (Матрица) (рис. 9.2) или набрать на клавиатуре <|> нажав клавиши Глава 9. Матричные вычисления В результате любого из этих действий появляется нитель, в который следует поместить матрицу. Чтобы вычислить определитель уже введенной матрицы (именно этот случай показан на рис. 9.2), нужно. Переместить курсор в документе таким образом, чтобы поместить матрицу между линиями ввода (напоминаем, что линии ввода — это вертикальный и горизонтальный отрезки синего цвета, образующие уголок, указывающий на текущую область редактирования. Ввести оператор нахождения определителя матрицы. Ввести знак равенства, чтобы вычислить определитель 9.2 Ввод символа определителя матрицы Результат вычисления определителя приведен в листинге 9.8. \ Листинг 9.8. Поиск определителя квадратной матрицы о о 5 0 9.1.5. Модуль вектора Модуль вектора (vector magnitude) обозначается тем же символом, что и определитель матрицы. По определению, модуль вектора равен квадратному корню из суммы квадратов его элементов (листинг Листинг 9.9. Поиск модуля вектора 1 2 3 = 3.742 9.1.6. Скалярное произведение векторов Скалярное произведение векторов (vector inner product) определяется как скаляр, равный сумме попарных произведений соответствующих элементов Часть Численные методы Векторы должны иметь одинаковую размерность, скалярное произведение имеет туже размерность. Скалярное произведение двух векторов и v равно где в — угол между векторами. Если векторы ортогональны, их скалярное произведение равно нулю. Обозначается скалярное произведение тем же символом умножения (листинг 9.10). Для обозначения скалярного произведения пользователь также может выбирать представление оператора умножения. Совет Никогда не применяйте для обозначения скалярного произведения символ х, который является общеупотребительным символом векторного произведения (см. разд. Листинг Скалярное произведение векторов 32 Внимание! С осторожностью перемножайте несколько (более двух) векторов. По-разному расставленные скобки полностью изменяют результат умножения. Примеры такого умножения см. в листинге Листинг Скалярное произведение умноженное на третий вектор 256 288 f АУ. Векторное произведение Векторное произведение (cross product) двух векторов и v с углом 8 между ними равно вектору с модулем направленным перпендикулярно плоскости векторов и v. Обозначают векторное произведение символом х, который можно ввести нажатием кнопки Cross Product (Векторное произведение) в панели Matrix (Матрица) или сочетанием клавиш. Пример приведен в листинге 9.12. Глава 9. Матричные вычисления 221 Листинг 9.12. Векторное произведение / б. Сумма элементов вектора и след матрицы Иногда бывает нужно вычислить сумму всех элементов вектора. Для этого существует вспомогательный оператор (листинг 9.13, первая строка, задаваемый кнопкой Vector Sum (Сумма вектора) на панели Matrix (Матрица) или сочетанием клавиш Этот оператор чаще оказывается полезным не в векторной алгебре, а при организации циклов с индексированными переменными. На том же листинге 9.13 (снизу) показано применение операции суммирования диагональных элементов квадратной матрицы. Эту сумму называют следом (trace) матрицы. Данная операция организована в виде встроенной функции) — след квадратной матрицы А Листинг 9.13. Суммирование элементов вектора и диагонали матрицы ) X ( 2 3 = б r (A) = 5 9.1.9. Обратная матрица Поиск обратной матрицы возможен, если матрица квадратная и ее определитель неравен нулю (листинг 9.14). Произведение исходной матрицы на обратную по определению является единичной матрицей. Для ввода оператора поиска обратной матрицы нажмите Inverse (Обратная матрица) на панели инструментов Matrix (Матрица Листинг 9.14. Поиск обратной матрицы [ о о V 1 0 2 0 0 0 3 0 0 0 0.5 0 0 0 0.333 Часть Численные методы о о о О 3 о 0.5 О 1 о о о о 0.333 о 0.5 О л о О 0 . 3 3 3 1 О О о о о о 0 . 9 9 9 0 . 9 9 9 9.1.10. Возведение матрицы в степень К квадратным матрицам можно формально применять операцию возведения в степень п. Для этого п должно быть целым числом. Результат данной операции приведен в табл. 9.1. Ввести оператор возведения матрицы м в степень п можно точно также, как и для скалярной величины нажав кнопку Raise to Power (Возвестив степень) на панели Calculator (Калькулятор) или нажав клавишу После появления местозаполнителя в него следует ввести значение степени п. Таблица 9.1. Результаты возведения матрицы в степень О 1 -1 -2, -3, единичная матрица размерности матрицы сама матрица матрица, м-м, (мм (м Некоторые примеры возведения матриц в степень приведены в листинге 9.15. j Листинг Примеры возведения квадратной матрицы в целую степень о о 0 0 о о О о о 1 1 О о О 0 . 2 ООО 3 О О . 1 1 1 Глава 9. Матричные вычисления 0 0 2 0 0 0 3 0 0 4 0 0 0 9 Векторизация массивов Векторная алгебра Mathcad включает несколько необычный оператор, который называется оператором векторизации (vectorize operator). Этот оператор предназначен, как правило, для работы с массивами. Он позволяет провести однотипную операцию над всеми элементами массива (те. матрицы или вектора, упрощая тем самым программирование циклов. Например, иногда требуется умножить каждый элемент одного вектора на соответствующий элемент другого вектора. Непосредственно такой операции в Mathcad нет, но ее легко осуществить с помощью векторизации (листинг 9.16). Для этого. Введите векторное выражение, как показано во второй строчке листинга (обратите внимание, что в таком виде символ умножения обозначает оператор скалярного произведения векторов. Переместите курсор таким образом, чтобы линии ввода выделяли все выражение, которое требуется подвергнуть векторизации 9.3). 3. Введите оператор векторизации, нажав кнопку Vectorize (Векторизация) на панели Matrix (Матрица или сочетанием клавиш. Введите чтобы получить результат 9.3. Оператор векторизации Листинг Использование векторизации для перемножения элементов 14 Часть III. Численные методы Оператор векторизации можно использовать только с векторами и матрицами одинакового размера. Большинство неспецифических функций Mathcad не требуют векторизации для проведения одной и той же операции над всеми элементами вектора. Например, аргументом тригонометрических функций по определению является скаляр. Если попытаться вычислить синус векторной величины осуществит векторизацию по умолчанию, вычислив синус каждого элемента и выдав в качестве результата соответствующий вектор. Пример показан в листинге Листинг Векторизация необязательна для большинства функций Mathcad sin 0.841 0.909 0.141 ( 0.841 0.909 0.141 9.1.12. Символьные операции с матрицами Все матричные и векторные операторы, о которых шла речь выше, допустимо использовать в символьных вычислениях. Мощь символьных операций заключается в возможности проводить их не только над конкретными числами, но и над переменными. Несколько примеров приведены в листинге Листинг в символьных операций над векторами и матрицами + a q + b - t со с • q + d • t + + - b -d a 0 0 0 b 1 1 с Глава 9. Матричные вычисления 225 а + Ь + с Совет Смело используйте символьный процессор в качестве мощного математического справочника. Например, когда Вы хотите вспомнить какое-либо определение из области линейной алгебры (так, правила перемножения и обращения матриц показаны в первых строках листинга 9.18). 9.2. Матричные функции Перечислим основные встроенные функции, предназначенные для облегчения работы с векторами и матрицами. Они нужны для создания матриц, слияния и выделения части матриц, получения основных свойств матриц и т. п. Функции создания матриц Самым наглядным способом создания матрицы или вектора является применение первой кнопки панели инструментов Matrix (Матрицы (см. разд. "Массивы" гл. 4). Однако в большинстве случаев, в частности при программировании сложных проектов, удобнее бывает создавать массивы с помощью встроенных функций. Определение элементов матрицы через функцию — создание матрицы размера каждый i , j элемент (листинг 9.19); • — количество строк — количество столбцов ( i , j) — функция Создание матрицы ; : = i + 0 . 5 j A m a t r i x (2 , 3 , 0.5 1 { 1 1.5 Для создания матриц имеются еще две специфические функции, применяемые, в основном, для быстрого и эффектного представления каких-либо зависимостей в виде трехмерных графиков (типа поверхности или про Часть Численные методы странственной кривой. Все их аргументы, кроме первого (функции, необязательны. Рассмотрим первую из функций f , ) , , t g r i d , — Создание ного массива, представляющего у- и координаты параметрической пространственной кривой, заданной функцией F; • F(t) — векторная функция из трех элементов, заданная параметрически относительно единственного аргумента t; • ( t ) , ( t ) , — скалярные функции — нижний предел t умолчанию -5); • верхний предел t (по умолчанию 5); • tgrid — число точек сетки попеременной (по умолчанию 20); • fmap — векторная функция от трех аргументов, задающая преобразование координат. Примечание О вложенных массивах читайте в разд. "Создание 4, F(t) sin(t) , Э. Использование функции C r e a t e S p a c e с разным набором параметров Пример использования функции createspace показан на рис. 9.4. Заметьте, для построения графика спирали не потребовалось никакого дополнитель- Глава 9. Матричные вычисления 227 ного кода, кроме определения параметрической зависимости в вектор- функции Функция создания матрицы для графика трехмерной поверхности устроена совершенно аналогично, затем исключением, что для определения поверхности требуется не одна, а две переменных. Пример ее использования иллюстрирует. Использование функции CreateMesh с разным набором параметров (ИЛИ д, ИЛИ , , tO , создание вложенного массива, представляющего у- и параметрической поверхности, заданной функцией F; • — векторная функция из трех элементов, заданная параметрически относительно двух аргументов s и t; • g ( s , t ) — скалярная функция (s, t ) , (s, t ) , f3 t) — скалярные функции to — нижние пределы аргументов s, t умолчанию -5); • — верхние пределы аргументов t умолчанию 5); • sgrid, tgrid — число точек сетки переменными (по умолчанию Часть Численные методы — векторная функция из трех элементов от трех аргументов, задающая преобразование координат. П р им еры СОЗДаЮТСЯ ФУНКЦИЯМИ C r e a t e M e s h и createspace, приведены в листинге 9.20. Каждая матрица из числа трех вложенных матриц, образующих массив, определяет х, у- и точек поверхности или кривой, соответственно. Листинг 9.20. Результат действия функций ирис Создание матриц специального вида В Mathcad легко создать матрицы определенного вида с помощью одной из встроенных функций. Примеры использования этих функций приведены в листинге 9.21. — единичная матрица размера diag(v) — диагональная матрица, на диагонали которой находятся элементы вектора v; — создание матрицы, обратной (слева) матрице А Глава 9. Матричные вычисления rref (A) — преобразование матрицы или вектора А В ступенчатый вид — целое число — вектор; • А матрица из действительных чисел. Размер матрицы А ДЛЯ функции geninv должен быть таким, чтобы |