Глава 4. Решение уравнений

      4.8 Рекурсивные вычисления


MathCAD допускает внутри тела функции обращение функции к самой себе, позволяя создавать рекурсивные функции, использующие значения, известные на момент вычислений. Примером такой функции является вычисление факториала (рис. 4.20).

                                                                                        Вычисление факториала

                                                                                        fact(n):=if(n=0,1,n·(fact(n-1))

                                                                                        fact(1)=1    fact(10)=3628800

                                                                                         Вычисление квадратного корня числа А

                                                                                                 

                                                                                               

                                                                                         

                                                       Рис. 4. 20 Рекурсивное вычисление корня квадратного корня числа А

 

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

Для отметки точного вычисления корня на график нанесена метка . Для нанесения метки двойным щелчком мыши на графике откройте окно форматирования графика и на вкладке Х–У Axes установите флажок  Show Markers (Показывать маркеры). В одном из появившихся мест ввода впишите , а второе оставьте пустым.

Можно выполнить многократные рекурсивные вычисления нескольких векторных переменных одновременно. Такая разновидность рекурсивных вычислений используется для решения систем уравнений в методе конечных разностей.

На рис.4.21 описана модель развития инфекции среди животных. Четыре уравнения связывают друг с другом четыре переменные: число восприимчивых, инфицированных, умерших и выздоровевших животных.

                                                                 итерационные вычисления: модель развития эпидемии дней

                                                                                       

                                                                                  Ln -инфекция,     V - восприимчивость

                                                                                 L - смертность,    Zd - выздоровление

                                                                                 

                                             Рис. 4. 21 Рекурсивные вычисления в модели распространенной инфекции

MathCAD вычисляет все выражения справа перед присваиванием значений величинам слева. Ничто справа не может зависеть ни от чего слева.

В MathCAD 12 запрещено определять функцию пользователя посредством рекуррентных выражений, например,     f(x):=f(x)+1. При попытке вычисления f(x) вместо ее нового (рекуррентного) присваивания, как происходило в предыдущих версиях, будет организован бесконечный цикл. Для организации рекуррентных вычислений используйте новое имя функции, например f1(x):=f(x)+1, либо именной оператор (namespace operator). В MathCAD 13 и 14 переопределение функций разрешено.

В MathCAD 12 введена новая возможность переопределения переменных, размерностей и функций, причем как пользовательских, так и системных. Осуществляется это при помощи именного оператора, примером действия которого может служить переопределение функции пользователя. Вместо f(x):=f(x)+1 надо записать f(x):=f[doc](x)+1, где нижний индекс при f(x) вводится именным оператором. Для его ввода используется сочетание клавиш Ctrl+Shift+N. В качестве такого индекса допускаются только четыре вида комментариев:

Mc – для переопределения встроенных функций или переменных MathCAD;

Unit– для переопределения обозначений встроенных единиц измерения;

Doc – для переопределения выражений, введенных пользователем в текущем документе;

User – для функций, встроенных в MathCAD пользователем (в каталог UserDLL).

MathCAD 13 и 14 разрешают переопределение функций, и опреатор  Namespace оказывается ненужным.

 

НазадВперед

Оглавление  Глава 4