
Итерационные циклы
Итерационные циклы реализуются оператором while, шаблон которого представлен на рис. 7.13. Он имеет два маркера – один на строкеwhileдля записи условий выполнения цикла, другой для записи тела цикла. Тело цикла выполняется при истинности условия выполнения цикла.
Рис. 7.12. Программа отделения корней
Чтобы исключить зацикливание, в теле цикла должен быть обязательно оператор, делающий условие выполнения цикла ложным.
Рис. 7.13. Формат шаблона while
Рис. 7.14. К методу половинного деления
Пример 7.5. Уточнение приближенных корней, интервалы для которых найдены выше, выполняются разными методами. Рассмотрим метод половинного деления. Сущность его в следующем. Выбирается интервал и находится x1, (рис.7.14). Затем проверяется условие: если f()f(x1)<0, т.е. на интервале ,x1 функция f(x) поменяла знаки, то интервал x1, отбрасывается и x1 становится . Если условие f()f(x1)<0 не выполняется, т.е. на интервале ,x1 функция f(x) не поменяла знаки, то отбрасывается интервал ,x1 и x1 становится . Вычисляется новое значение x1 и процесс повторяется.
На рис.7.15 представлена программа уточнения корней методом половинного деления. Входными параметрами являются: описание функции f(),вектор интервалов v, возвращаемый программой отделения корней (см. рис. 7.12) и заданная степень точности eps. Уточнение корней выполняется оператором while, найденные корни записываются в вектор w. Программа имеет счетчик числа итераций sh для каждого корня, значения которого сохраняется вектором z. Представлены результаты работы программы в виде вектора K0 (корни уравнения) и K1 (число выполненных итераций при нахождении каждого корня).
Операторы управления
Существует четыре оператора управления: break, continue, return и on error.
Оператор break используется для прерывания выполнения программы или циклов for и while. Его шаблон имеет только ключевое слово, часто включаемое в условные конструкции if.
Рис. 7.15. Программа уточнения корней полинома
Оператор continue используется только в теле операторов циклов for и while для прерывания выполнения итерации и передачи управления на продолжение следующего цикла. Шаблон его имеет также только ключевое слово.
Оператор return осуществляет выход из программы и возвращает значение предыдущей строки или выражение, записанное в его маркер.
Оператор перехвата ошибок on error используется в структурах, имеющих ошибки прерывания (например, деление на 0 и др.). Шаблон оператора имеет два маркера, записанных в одной строке с ключевым словом: в правый записывается выражение для вычисления, в котором при определенных условиях могут возникнуть ошибки прерывания, в левый – возвращаемое значение при обнаружении ошибки прерывания.Оператор перехвата ошибок удобно применять в комбинации со встроенной функцией error(S). Она приводит к генерации ошибки в обычной для Mathcad форме с сообщением S.
Примеры использования операторов управления можно найти в приведенных ниже программах.
Пример 7.6. Программа расчета эвольвентной функции inv()=tg() - , приведенная на рис. 7.16, работает в двух режимах. В первом режиме (k=0) вводимый параметр моделирует угол в радианах и программа возвращает значение inv (). Во втором режиме (k=1) параметр моделирует значение эвольвентной функции inv(), тогда программа возвращает значение угла в радианах. В этом режиме поиск корня уравнения осуществляется с помощью метода Ньютона. Переменной g передается inv(), затем локальной переменной задается начальное значение вблизи значения /2, находится рассогласование . Затем открывается цикл while, выполняемый до тех пор, пока модуль рассогласования больше заданной степени точности (10-7). При выполнении тела цикла проводится касательная, находится новое значение аргумента () как точка пересечения касательной с осью х, уточняется и цикл повторяется.
Программа имеет высокое быстродействие, компактную форму и находит большое практическое применение при расчете геометрии зубчатых передач.
Рис. 7. 16. Программа расчета эвольвентной функции
Пример 7.7. Рассмотрим программы расчета факториала (рис.7.17). Алгоритмы их не нуждаются в особых комментариях: один из них (fact) использует оператор while (пока n > 0), другой (factor) – операторы while (бесконечный цикл) и break (если n = 0), третий алгоритм (fac) использует рекурсию (при n ≠ 0):
Рис. 7.17. Программы расчета факториала