Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР_студентам_cбросить / Пособие_MathCAD / Лаб_7_Программирование (Восстановлен).doc
Скачиваний:
84
Добавлен:
12.04.2015
Размер:
384 Кб
Скачать

Итерационные циклы

Итерационные циклы реализуются оператором 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. Программы расчета факториала