Купить Matlab  |  Mathematica  |  Mathcad  |  Maple  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Форум  |  Download
https://hub.exponenta.ru/


Дискретные аргументы
  •   Дискретные аргументы
  • Таблицы вывода
  • Ввод числовых значений в таблицу
  • Итерационные вычисления
  • Рекурсивные вычисления
  • Вектор или символ нижнего индекса

    В начало книги

  •  

    Список встроенных функций

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

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

    Рекурсивные вычисления с одной переменной

    Классический метод для вычисления квадратных корней состоит в следующем:

    • Чтобы найти f3.gif (878 bytes), начните с предполагаемого значения, которое можно рассматривать как приближение к истинному.
    • Вычислите новое приближение, основанное на старом приближении, по формуле

    f4.gif (1511 bytes).

    • И так далее, пока приближения не сойдутся к ответу.

    Рисунок 10 показывает, как выполнить этот метод в Mathcad.

    10-17.gif (9092 bytes)

    Рисунок 10: Использование рекурсивных вычислений для вычисления квадратного корня.

    Характерные особенности этого примера:

    • Начальное значение определено как нулевой элемент массива, guess0.
    • Каждый элемент guessi+1 определяется через предыдущий.

    Зависимость элементов массива от предварительно вычисленных элементов массива — та особенность, которая отличает рекурсивные вычисления от более простого многократного вычисления, обсужденного в предыдущем разделе.

    Рекурсивные вычисления с несколькими переменными

    Удобно использовать запись вектора Mathcad, чтобы выполнить многократные вычисления нескольких переменных одновременно. Эта разновидность рекурсивных вычислений — мощный метод для решения системы уравнений в конечных разностях.

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

    Например, рассмотрим модель эпизоотии с четырьмя переменными: через i обозначим число инфицированных животных, через s — число восприимчивых, через d — число умерших, через r — число выздоровевших и приобретших иммунитет. Четыре уравнения, которые связывают эти переменные в каждый момент:

    il+1 = 0.0001 f2.gif (823 bytes)sl f2.gif (823 bytes)il
    sl+1 = sl - 0.0001 f2.gif (823 bytes)sl f2.gif (823 bytes)il
    dl+1 = dl + 0.55 f2.gif (823 bytes)il
    rl+1 = rl + 0.45f2.gif (823 bytes) il

    10-18.gif (12071 bytes)

    Рисунок 11: Вычисления в модели распространения инфекции.

    Рисунок 11 показывает, как выполнить одновременные вычисления, используя эти уравнения.

    Сделаем одно очень важное замечание относительно этого примера: все индексы l+1 собраны по левую сторону уравнения. Правая сторона содержит только индекс l. Mathcad вычисляет все выражения справа перед выполнением любых присваиваний левой стороне. Это означает, что ничто справа не может зависеть ни от чего слева.

    Рекурсивные вычисления с вектором

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

    Марковский процесс — пример задачи, которая приводит к рекурсивным вычислениям вектора. Марковский процесс начинает с вектора v, который задает начальные значения некоторых количеств, например, число избирателей, планирующих голосовать за различных кандидатов, число грузовиков в региональных ведомствах компании, сдающей в прокат грузовики, или долей различных компаний на рынке. Каждый шаг в процессе Маркова вычисляет новый вектор, умножая предыдущий вектор на переходную матрицу A. Рисунок 12 показывает, как задать процесс Маркова. Эта методика использует верхние индексы, чтобы индексировать весь столбец матрицы сразу. Чтобы создать верхний индекс, нажмите [Ctrl]6. Появится поле между угловыми скобками: < > .

    Вот как записать уравнения из Рисунка 12:

    • Определите переходную матрицу A. Напечатайте A, нажмите клавишу двоеточия (:) и создайте 3x3 матрицу. Чтобы создать матрицу, выберите Матрицы из меню Математика.

    10-19.gif (1441 bytes)

    • Щёлкните справа от матрицы и напечатайте v. Затем нажмите [Ctrl]6. Напечатайте 0 в поле для верхнего индекса.

    10-20.gif (961 bytes)

    • Завершите определение начального вектора. Нажмите клавишу двоеточия (:), затем выберите Матрицы из меню Математика. Укажите, что создаётся матрица с тремя строками и одним столбцом. Потом заполните ячейки матрицы.

    10-21.gif (1350 bytes)

    • Напечатайте k:1;8. Это задаст дискретный аргумент k, чтобы выполнить восемь вычислений.

    10-22.gif (968 bytes)

    • Чтобы выразить k-тый вектор через (k-1)-ый, напечатайте v [Ctrl] 6 k. Затем напечатайте двоеточие (:) для символа определения. Завершите формулу, напечатав после символа определения: A*v[Ctrl] 6 k-1 .

    10-23.gif (1126 bytes)

    • Чтобы увидеть восьмой (последний) столбец матрицы, напечатайте v [Ctrl] 68=.

    10-24.gif (1499 bytes)

    • Чтобы увидеть все векторы как столбцы матрицы, напечатайте v=. Обратите внимание, что в изображении справа отображаются не все столбцы.

    10-25.gif (2043 bytes)

    10-26.gif (7871 bytes)

    Рисунок 12: Рекурсивные вычисления вектора к модели Марковского процесса.

    Оператор верхнего индекса фактически отыскивает или определяет один столбец в матрице. Определение v<k> через v<k-1> фактически выражает каждый столбец матрицы через предшествующий столбец. В последнем равенстве на Рисунке 12 показана матрица, составленная из этих столбцов.

    В начало страницы  К предыдущему разделуК следующему разделу

    Список встроенных функций

    | На первую страницу | Поиск | Купить Matlab

    Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter


    Copyright © 1993-2024. Компания Softline. Все права защищены.

    Дата последнего обновления информации на сайте: 04.03.17
    Сайт начал работу 01.09.00