Рекурсивные вычисления с вектором
Возможно также выполнять рекурсивные вычисления, начинающиеся с вектора и возвращающие каждый раз новый вектор. Этот тип многократных вычислений использует начальный вектор и оператор верхнего индекса Mathcad.
Марковский процесс — пример задачи, которая приводит к рекурсивным вычислениям вектора. Марковский процесс начинает с вектора v, который задает начальные значения некоторых количеств, например, число избирателей, планирующих голосовать за различных кандидатов, число грузовиков в региональных ведомствах компании, сдающей в прокат грузовики, или долей различных компаний на рынке. Каждый шаг в процессе Маркова вычисляет новый вектор, умножая предыдущий вектор на переходную матрицу A. Рисунок 12 показывает, как задать процесс Маркова. Эта методика использует верхние индексы, чтобы индексировать весь столбец матрицы сразу. Чтобы создать верхний индекс, нажмите [Ctrl]6. Появится поле между угловыми скобками: < > .
Вот как записать уравнения из Рисунка 12:
Определите переходную матрицу A. Напечатайте A, нажмите клавишу двоеточия (:) и создайте 3x3 матрицу. Чтобы создать матрицу, выберите Матрицы из меню Математика.
Щёлкните справа от матрицы и напечатайте v. Затем нажмите [Ctrl]6. Напечатайте 0 в поле для верхнего индекса.
Завершите определение начального вектора. Нажмите клавишу двоеточия (:), затем выберите Матрицы из меню Математика. Укажите, что создаётся матрица с тремя строками и одним столбцом. Потом заполните ячейки матрицы.
Напечатайте k:1;8. Это задаст дискретный аргумент k, чтобы выполнить восемь вычислений.
Чтобы выразить k-тый вектор через (k-1)-ый, напечатайте v [Ctrl] 6 k. Затем напечатайте двоеточие (:) для символа определения. Завершите формулу, напечатав после символа определения: A*v[Ctrl] 6 k-1 .
Чтобы увидеть восьмой (последний) столбец матрицы, напечатайте v [Ctrl] 68=.
Чтобы увидеть все векторы как столбцы матрицы, напечатайте v=. Обратите внимание, что в изображении справа отображаются не все столбцы.
Рисунок 12: Рекурсивные вычисления вектора к модели Марковского процесса.
Оператор верхнего индекса фактически отыскивает или определяет один столбец в матрице. Определение v<k> через v<k-1> фактически выражает каждый столбец матрицы через предшествующий столбец. В последнем равенстве на Рисунке 12 показана матрица, составленная из этих столбцов.
В этой главе показано много примеров, использующих символ нижнего индекса и дискретные аргументы. В Главе “Векторы и матрицы” содержится много примеров, использующих векторную запись без нижних индексов. Здесь есть важная деталь. Если использовать нижние индексы, когда они не требуются, или наоборот, можно не получить желаемый результат.
Нижние индексы обращаются к отдельным элементам массива. Когда дискретные аргументы используются как нижние индексы, подобно Mi, j, Mathcad пробегает элементы массива поодиночке.
Имя без нижних индексов относится к массиву целиком.
Существуют некоторые элементарные правила относительно того, когда использовать нижние индексы:
Чтобы обратиться к отдельному элементу массива, используйте числа как нижние индексы. Например, чтобы увидеть элемент матрицы (2,3), напечатайте M[2,3=.
Чтобы обратиться к массиву в целом, используйте имя массива без нижних индексов. (Термин массив означает или вектор или матрицу). Имя массива без нижних индексов следует использовать для умножения одной матрицы на другую, для применения функции mean к массиву, или для просмотра вектора или матрицы целиком — всех случаев, когда следует обращаться с массивом как с целым. Например, чтобы просмотреть на Рисунке 13 матрицу M целиком, напечатайте M=.
Чтобы обратиться к каждому из элементов массива последовательно, используйте имя массива с дискретным аргументом в качестве нижнего индекса. Это полезно при определении элементов матрицы с использованием какой-либо формулы. Например, чтобы определить матрицу M из Рисунка 13, напечатайте три формулы:
i: 0;3 j: 0;3 M [i, j: i * j |
Рисунок 13 показывает некоторые примеры употребления имен массивов с использованием нижних индексов и без.
Рисунок 13: Имена массивов с использованием нижних индексов и без.
Итерационные вычисления с нижними индексами и без
Часто быстрее использовать векторные операции, чтобы выполнить многократные вычисления, чем делать их поэлементно с помощью дискретного аргумента. Это обсуждается более подробно в разделе “Выполнение параллельных вычислений” . К сожалению, не все многократные вычисления могут быть выполнены как векторные операции. Например, рекурсивные вычисления, обсужденные ранее в этой главе, не могут быть выполнены посредством векторных операций.
Чтобы решить, следует ли переписать формулу с нижними индексами, используя векторную запись и оператор векторизации, проверьте следующее:
Если все нижние индексы в формуле одни и те же, то, вероятно, вычисление будет выполнено быстрее с использованием векторных операций. Например, рассмотрим формулу:
xi := ri cos(i)
Поскольку эта формула не содержит никакого другого нижнего индекса, кроме i, она может быть перезаписана с оператором векторизации ( [Ctrl][-] ):
x :=
Если формула содержит различные нижние индексы, или если в качестве нижнего индекса используется выражение, вычисление, вероятно, не может быть выполнено с использованием векторных операций. Например, рекурсивные вычисления включают нижние индексы i и i -1 в одной формуле. Так как нижние индексы различаются, и так как второй нижний индекс является выражением, это вычисление не может быть выполнено с использованием векторных операций.
Если дискретный аргумент появляется где-либо в формуле кроме нижнего индекса, формула не может быть переписана c использованием векторных операций. Например, ниже переменная q не может быть определена через оператор векторизации, поскольку в правой части формулы дискретный аргумент i не является индексом, а участвует в вычислении.
i := 0.1 i
Рисунок 14 показывает то же самое преобразование полярных координат в декартовы, что и Рисунок 6, выполненное двумя способами: с использованием нижних индексов и через операцию векторизации. В Mathcad второй метод намного быстрее.
Рисунок 14: Выполнение многократных вычислений с помощью векторизации.
Разделы |
|
| Список операторов Mathcad в порядке старшинства. |
| Как в Mathcad вычислять произведения и суммы по индексам. |
| Как в Mathcad использовать операторы производных. |
| Как в Mathcad использовать оператор определенного интеграла. |
| Как в Mathcad использовать булевы операторы типа > и <. |
| Как в Mathcad определять Ваши собственные операторы. |
Ниже приведен список операторов Mathcad в порядке старшинства. Более детальная информация относительно операторов над массивами приведена в Главе . Большинство операторов можно ввести в рабочий документ, используя палитры операторов. Чтобы открыть палитру операторов, нажмите на нужную кнопку на полосе кнопок непосредственно под командами меню.
В таблице, приведенной ниже, используются следующие обозначения:
A и B обозначают массивы (векторы или матрицы).
u и v обозначают векторы с вещественными или комплексными элементами.
M обозначает квадратную матрицу.
z и w обозначают вещественные или комплексные числа.
x и y обозначают вещественные числа.
m и n обозначают целые числа.
i обозначает дискретный аргумент.
t обозначает любую переменную.
f обозначает функцию.
X и Y обозначают переменные или выражения любого типа.
Операция | Обозначение | Клавиши | Описиние |
Круглые скобки | (X) | ' | Группирование операторов. |
Нижний индекс | vn | [ | Возвращает обозначенный элемент вектора. |
Двойной индекс | Am,n | [ | Возвращает обозначенный элемент матрицы. |
Верхний индекс | An | [Ctrl]6 | Извлекает столбец с номером n из массива A. Возвращает вектор. |
Векторизация |
| [Ctrl]- | Предписывает в выражении X производить операции поэлементно. Все векторы или матрицы в X должны быть одного размера. |
Факториал | n! | ! | Возвращает значение, равное n (n-1) (n-2) ... 1 . Целое число n не может быть отрицательным. |
Комплексное сопряжение |
| " | Меняет знак мнимой части X. |
Транспонирование | AT | [Ctrl]1 | Возвращает матрицу, чьи строки — столбцы А, и чьи столбцы — строки A. А может быть вектором или матрицей. |
Степень | zw | ^ | Возводит z в степень w. |
Степени матрицы, обращение матриц | Mn | ^ | n-ная степень квадратной матрицы M (использует умножение матриц). n должно быть целым. M-1 есть обращение M, другие отрицательные степени — степени обращения. Возвращает квадратную матрицу. |
Изменение знака | -X | - | Умножает X на -1. |
Суммирование элементов |
| [Ctrl] 4 | Суммирует элементы вектора v. Возвращает скаляр. |
Квадратный корень |
| \ | Возвращает положительный квадратный корень для положительного z; главное значение для невещественных z. |
Корень n-ной степени |
| [Ctrl] \ | Возвращает корень n-ой степени z; возвращает вещественный корень, когда возможно. |
Абсолютное значение | |z| | | | Возвращает . |
Длина вектора | |v| | | | Возвращает длину вектора v: , если все элементы в v вещественны. Возвращает , если вектор v содержит комплекснозначные элементы. |
Детерминант | |M| | | | Возвращает детерминант (определитель) квадратной матрицы M, результат — скаляр. |
Деление |
| / | Делит выражение X на ненулевой скаляр z. Если X — массив, делит каждый элемент на z. |
Умножение | X Y | * | Возвращает произведение X и Y, если и X и Y — скаляры. Умножает каждый элемент Y на X, если Y — массив и X — скаляр. Возвращает скалярное произведение если X и Y — векторы одного размера. Выполняет умножение матриц, если X и Y — матрицы соответствующих размеров. |
Векторное произведение | u x v | [Ctrl]8 | Возвращает векторное произведение для векторов с тремя элементами u и v. |
Суммирование |
| [Ctrl] [Shift]4 | Выполняет суммирование X по i = m, m=1, ...n. X может быть любым выражением. m и n должны быть целыми числами. |
Произведение |
| [Ctrl] [Shift]3 | Выполняет перемножение X по i = m, m=1, ...n. X может быть любым выражением. m и n должны быть целыми числами. |
Суммирование по дискретному аргументу |
| $ | Возвращает суммирование X по дискретному аргументу i. X может быть любым выражением. |
Перемножение по дискретному аргументу |
| # | Возвращает произведение X по дискретному аргументу i. X может быть любым выражением. |
Интеграл |
| & | Возвращает определенный интеграл от f (t) по интервалу [a, b]. а и b должны быть вещественными скалярами. Все переменные в f (t), кроме переменной t, должны быть определены, f (t) должна быть скалярной функцией. |
Производная |
| ? | Возвращает производную f (t) по t. Все переменные в f (t) должны быть определены. Переменная t должна иметь скалярное значение. Функция f (t) должна возвращать скаляр. |
Производная n-ного порядка |
| [Ctrl]? | Возвращает производную n-ного порядка функции f (t) по t. Все переменные в f (t) должны быть определены. Переменная t должна быть скаляром. Функция f(t) должна возвращать скаляр. n должно быть целым между 0 и 5 для численного вычисления или положительным целым для символьного вычисления. |
Сложение | X + Y | + | Сложение, если X, Y оба — скаляры. Поэлементное сложение, если X и Y — векторы или матрицы одного размера. Если X — массив, и Y — скаляр, добавляет Y к каждому элементу X. |
Вычитание | X - Y | - | Вычитание, если X, Y — скаляры. Поэлементное вычитание, если X и Y — векторы или матрицы одного размера. Если X — массив, и Y — скаляр, вычитает Y из каждого элемента X. |
Сложение с переносом | X + Y | [Ctrl][ ] | То же самое, что и сложение. Перенос чисто косметический. |
Больше чем | x > y | > | Возвращает 1, если x> y , иначе 0. x и y должны быть вещественными скалярами. |
Меньше чем | x < y | < | Возвращает 1, если x<y, иначе 0. x и y должны быть вещественными скалярами. |
Больше либо равно | x y | [Ctrl]0 | Возвращает 1, если x y , иначе 0. x и y должны быть вещественными скалярами. |
Меньше либо равно | x y | [Ctrl]9 | Возвращает 1, если x y, иначе 0. x и y должны быть вещественными скалярами. |
Не равно | z w | [Ctrl]3 | Возвращает 1, если z w, иначе 0. z и w должны быть скалярами. |
Равно | X = Y | [Ctrl]= | Возвращает 1, если X = Y, иначе 0 . Появляется как полужирное = на экране. |
- Буквенные индексы
- Ниже приводится полный список предопределенных переменных Mathcad и их значений по умолчанию:
- Используемые числа
- Специальные операции над комплексными числами
- Многозначные функции
- Создание вектора
- Создание матрицы
- Изменение размера матрицы
- Нижние индексы и элементы вектора
- Изменение способа отображения массивов
- Графическое представление матриц
- Ограничение входных массивов
- Ограничение отображаемых массивов
- Ограничение размеров массива
- Размеры и диапазон значений массива
- Специальные типы матриц
- Специальные характеристики матрицы
- Формирование новых матриц из существующих
- Собственные значения и собственные векторы
- Разложения
- Решение линейной системы уравнений
- Определение составного массива
- Отображение составных массивов
- Операторы и функции для составных массивов
- Определение и использование дискретного аргумента
- Многократные вычисления по дискретному аргументу
- Множественные дискретные аргументы и двойные индексы
- Рекурсивные вычисления с несколькими переменными
- Рекурсивные вычисления с вектором
- Советы по набору операторов
- Переменный верхний предел суммирования
- Оператор суммирования элементов вектора
- Производные более высокого порядка
- Переменные пределы интегрирования
- Изменение точности вычисления интегралов
- Криволинейные и двойные интегралы
- Определение пользовательского оператора
- Использование пользовательского оператора
- Запись функций как операторов
- Тригонометрические функции и обратные им.
- Гиперболические функции
- Логарифмические и показательные функции
- Функции Бесселя
- Специальные функции
- Введение в дискретное преобразование Фурье
- Функция if
- Циклы “while”
- Оператор “break”
- Циклы “for”
- Подпрограммы
- Рекурсия
- Что делать, когда функция root не сходится
- Некоторые советы по использованию функции root
- Решение уравнений с параметром
- Нахождение корней полинома
- Как использовать найденное решение
- Что делать, когда Mathcad не может найти решения
- Что делать, когда имеется слишком мало ограничений
- Многократное решение уравнений
- Решение одинаковых задач относительно разных переменных
- Приближенные решения
- Использование символьного решения уравнений
- Дифференциальные уравнения первого порядка
- Дифференциальные уравнения второго порядка
- Уравнения более высокого порядка
- Системы оду первого порядка
- Системы дифференциальных уравнений более высокого порядка
- Гладкие системы
- Медленно изменяющиеся решения
- Нахождение приближенного решения только в конечной точке
- Двухточечные краевые задачи
- Дифференциальные уравнения с частными производными