logo search
Алексеев информатика

8.2.4. Вопросы программирования

Система Mathcad обладает широким набором стандартных функций, позволяет самостоятельно создавать оригинальные функции пользователя. Тем не менее при решении нестандартных задач возникает необходимость в разработке особенных алгоритмов вычислений. Для этих случаев предусмотрен собственный язык системы, с помощью которого можно решать уникальные (редкие) задачи. Заметим, что возможность программирования не является главным достоинством системы Mathcad. Главное достоинство системы – возможность решения множества типичных задач без программирования.

Рассмотрим порядок составления простейших программ на примере базовых структур программирования.

Предположим, что необходимо вычислить сумму ряда

Найти это значение в системе Mathcad можно просто, выбрав на соответствующей палитре знак суммы и заполнив пустые поля.

Для учебных целей нахождение суммы ряда выполним путем использования программы, текст которой приведен ниже (базовая структура программирования «Цикл»).

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

Ввод функции пользователя с именем sum(n) осуществляется с помощью палитры «Программирование», показанной слева. Вертикальная линия вводится с помощью кнопки Add Line, а ключевое слово for и стрелка  (локальный оператор присваивания) – с помощью одноименных кнопок.

В первой строке функции пользователя происходит обнуление результата, во второй строке формируется заголовок регулярного цикла, в третьей строке записано тело цикла, в котором идет накопление суммы.

Кроме регулярных циклов существуют итерационные циклы, в которых вычисление ведется до выполнения какого-либо условия, например, достижения заданной погрешности.

В качестве примера использования итерационных циклов рассмотрим порядок расчета иррационального числа π с помощью сходящегося ряда. Точность вычисления этого числа будет зависеть от вводимой пользователем допустимой абсолютной погрешности.

Основная идея подобных программ состоит в том, что на очередном типовом цикле вычислений (другими словами, на очередной итерации) происходит сравнение вычисленного значения члена сходящегося ряда с выбранной самим пользователем допустимой погрешностью. Если рассчитанное значение по модулю больше допустимой погрешности, то циклический процесс продолжается. В момент, когда очередной член ряда становится меньше допустимой абсолютной погрешности, вычисления прекращаются.

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

Рассмотрим порядок разработки программы для вычисления . Расчетная формула выглядит так:

Для наглядности запишем несколько членов этого знакочередующегося ряда и каждый член ряда обозначим символами аi:

Чтобы получить компактную программу, выведем рекуррентную формулу, которая позволяет рассчитать последующий член ряда по известному предыдущему члену ряда. На основании предыдущей формулы запишем п + 1-й член ряда:

Возьмем отношение п + 1-го члена ряда к n-му члену ряда:

Теперь с помощью полученного коэффициента q любой, последующий член ряда может быть выражен через предыдущий член ряда:

Блок-схема алгоритма для вычисления константы /4 приведена на рисунке.

На рисунке приняты такие обозначения:

pogr – абсолютная погрешность, с которой вычисляется число ; summaрезультат (сумма, накопленная при вычислении); а – значение очередного члена ряда; п – число членов ряда; qкоэффициент.

В программе используется оператор while (пока), который обеспечивает многократные вычисления в теле цикла, пока выполняется условие, записанное после этого оператора.

Результаты вычислений накапливаются в переменной summa. Первоначально ее значение обнуляется, а первый член ряда принимается равным единице.

Завершается программа выводом значения переменной pi (0.00001). В скобках указано принятое значение абсолютной погрешности вычислений.

Полученный результат существенно отличается от истинного значения иррационального числа π. Это объясняется большим значением выбранной погрешности.

Рассмотрим, как программно реализуется базовая структура «Ветвление». Предположим, что требуется сделать вычисления в соответствии со следующей системой уравнений:

Блок-схема алгоритма для решения этой задачи, – текст программы на языке Mathcad и результаты, полученные при расчете, – приведена ниже.

Вычисления будут осуществляться с помощью функции пользователя. Для получения результата необходимо позаботиться о введении исходных данных и выводе полученных результатов.

Прокомментируем составленную программу.

Смысл первых двух строк очевиден (аналогичные конструкции есть во многих языках программирования высокого уровня – операторы условной передачи управления). Условие ветвления в третьей строке могло быть записано по-другому: if > 4. Английское слово otherwise означает «иначе» (во всех других случаях), т. е. при х большем 4.

Во второй строке использован специальный знак равенства, который берется на палитре «Булевы операторы».

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