Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3324_KT / УМК_Красноярск_Учебное пособие_МатЛаб_МатКад.pdf
Скачиваний:
195
Добавлен:
28.03.2015
Размер:
5.19 Mб
Скачать

24.ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD

24.8.Операторы циклов

Рис. 24.17

После команды увеличения индексной переменной добавлена инструкция break и условный оператор. В условном операторе проверяется, превышает ли индексная переменная значение 10. Если это так, то выполнение процедуры прекращается. Здесь легко прослеживается главное отличие в работе инструкций continue и break: если в первом случае пропускается соответствующая итерация, то во втором – завершается работа.

24.9. Рекурсия

Под рекурсией в общем случае подразумевают ситуацию, когда в теле описания процедуры (или функции) вызывается эта же процедура (или функция), но уже с другим аргументом. Иными словами, если функция или процедура ссылается на саму себя, имеет место рекурсия. Часто рекурсия бывает следствием ошибки, допущенной пользователем. Но если рекурсию реализовать правильно, то можно создавать эффективные, компактные и достаточно простые программные коды.

Как иллюстрацию к использованию рекурсии рассмотрим процедуру вычисления двойного факториала – произведения чисел "через один", т. е. для четной границы это произведение всех четных чисел, начиная с 2, а для нечетной границы – нечетных, начиная с 1.

Как видим, код состоит всего из одного условного оператора. Проверяемым является условие, что аргумент больше 2. Если это условие выполнено, вычисляется произведение аргумента на значение, возвращаемое процедурой для аргумента, уменьшенного на 2. При невыполнении условия в качестве значения возвращается аргумент. Таким образом, процедура будет по рекур-

Математическое программное обеспечение. Учебное пособие

-239-

24.ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD

24.9.Рекурсия

сии вызывать (с уменьшением аргумента с шагом 2) сама себя до тех пор, пока аргументом не станет число, не большее 2, т. е. 2 или 1. Наличие при каждом рекурсивном вызове процедуры множителя обеспечивает корректное вычисление двойного факториала. Подтверждением тому служат примеры, приведенные внизу под блоком описания процедуры – см. рис. 24.18.

Рис. 24.18

Рекурсия позволяет существенно сократить программный код. При этом вопрос о том, упрощается алгоритм выполнения программы или нет, остается открытым. Однако нельзя отрицать простоты решения целого ряда задач с помощью рекурсивного описания процедур.

Математическое программное обеспечение. Учебное пособие

-240-

25.РЕШЕНИЕ СИСТЕМ УРАВНЕНИЙ

ИНЕРАВЕНСТВ В MATHCAD

25.1.Решениеуравненийисистем

Вданном параграфе кратко рассматриваются функции и методы, которые могут использоваться в MathCad для численного решения алгебраических уравнений и систем. Сразу следует отметить, что далее соответствующие приемы еще будут обсуждаться, в частности, в главе, посвященной численным методам, и при обсуждении символьных вычислений. Здесь же приводятся элементарные сведения по данному вопросу и только в той части, что касается поиска приближенного численного решения.

Для решения уравнений предназначена функция root(). Первым аргументом указывается функциональная зависимость, которая должна обращаться в нуль, а вторым – переменная, относительно которой решается уравнение. Например, вызов команды root (f (х) ,х) приведет к решению уравнения f(x) = 0 относительно переменной х. Иногда корень уравнения следует искать на каком-то определенном интервале значений переменной. В этом случае у функции root () указываются еще два дополнительных аргумента – границы диапазона, на котором ищутся решения. Так, если решение упомянутого уравнения следует искать на диапазоне значений переменной х от а до b, то соответствующая команда будет иметь вид root (f (x), x, a, b). Причем если два последних аргумента функции root () не указаны, то для поиска решения уравнения предварительной переменной, относительно которой это уравнение решается, следует присвоить начальное значение. Чем ближе оно окажется к искомому корню уравнения, тем эффективнее будет проходить процесс вычисления этого корня – см. рис. 25.1.

Отдельный и довольно часто встречающийся класс выражений составляют полиномы. Искать корни полинома можно с помощью функции polyroots(). Аргументом последней указывается вектор-столбец коэффициентов полинома (первый элемент соответствует нулевой степени переменной полинома, второй элемент – первой степени и т. д.) – см. рис. 25.2.

Системы линейных уравнений решаются посредством функции lsolve(),

которая имеет два аргумента: первый аргумент является матрицей коэффициентов системы уравнений, а второй – вектор-столбцом правых частей этих уравнений.

Математическое программное обеспечение. Учебное пособие

-241-

25.РЕШЕНИЕ СИСТЕМ УРАВНЕНИЙ И НЕРАВЕНСТВ В MATHCAD

25.1.Решение уравнений и систем

Рис. 25.1

Рис. 25.2

Математическое программное обеспечение. Учебное пособие

-242-