8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 41 42 43 44 45 46 47 ... 177

4.2. Операторы цикла (for. while, break, continue) * 145

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

Однако если вы попробуете подсчитать интеграл с помощью метода средних прямоугольников с фиксированной шириной интервала разбиений, то получить правильный ответ будет весьма проблематично. Это связано с тем, что функция на всем своем промежутке изменяется весьма неравномерно. Так, если шаг будет выбран слишком большим, то значительная ошибка будет допущена при интегрировании функции в окрестности нуля (а именно эта область и определяет основное значение интеграла), Если же шаг выбрать достаточно малым, то подсчет будет вестись очень долго. Поэтому, очевидно, каким-то образом следует связать значение функции в центре промежутка с его шириной, а также с уровнем точности. Нетрудно догадаться, что чем больше значение функции в центре отрезка разбиенин, тем меньше должна быть его ширина С точностью же должна быть пропорциональная связь: чем выше точность, тем меньше шаг. Наиболее просто можно осуществить связь между параметрами в следующем виде:

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

Довольно часто в алгоритмах нужно предусматривать ситуации, в которых работа цикла должна быть досрочно прервана. К примеру, если численный метод сходится в случае некоторых задач медленно, может накапливаться ошибка, искажающая результат Чтобы избежать получения ошибочного ответа, нужно прервать работу цикла, если будет превышен лимит на количество итераций. Одной из технических возможностей реализации этого является использование оператора break (Прервать) (вводится сочетанием клавиш Ctrt+Shift+«[»). Ввиду того, что цикл бывает нужно остановить при выполнении некоторого условия, оператор break почти всегда используется с условным оператором if (или, реже, с оператором ошибки on error).

while ul > TOL


Пример 4.14. Использование оператора break

lntecjral2(f.a,b,N) :=

b-a

N V fa Ie I.N

<- a Z *- О

x2

Ч«)1>]°15

Z «- "Singularity" I break

1п*еага12(П,-5,5,1000) ="Smgukriiy" lnlegFal2(f2.-?.5,1000) - 83.3335 Integral 2(f2. -5,5.10000) = 83.33333

r

f2(x)dx- 83.33333

В примере 4.14 рассмотрена профамма вычисления интеграла по методу трапеций. Использовать данный метод в случае существования точек разрыва второго рода нельзя, поэтому следует преду смотреть такого рода ситуации. Л сделать это можно очень просто: в том случае, если величина функции на границе элементарной трапеции превысит некоторое значение, то никл должен быть остановлен (оператор break) и в качестве ответа должно быть выдано сообщение о проблеме при вычислении:

* <М

> 10

15

Z 4- "Singularity" break

Иногда алгоритм содержит несколько условий, причем при выполнении одного из них рассмотрение остальных приведет к ошибке. В этом случае нужно после выполнения операций, прописанных в первом условии, сразу же перейти к рассмотрению следующего значения циклической переменной. Чтобы это сделать, следует использовать специальный оператор continue (Продолжить) (сочетание клавиш Ctrl+«]»), Употребление оператора continue аналогично оператору break.

Пример 4.15. Использование оператора continue

Sum:

S <- 0

for п с- U.. 1000

Sun-,!

continue S «- S + n

34-0

for ae0..10O0 S*-S + a if trunc

s

Sum » 3 J3667x 10s

Suml -3JM7« ]{


4.3. Условные операторы (if, otherwise) :- 147

В примере 4.15 приведены алгоритмы подсчета суммы всех неделящихея без остатка на 3 чисел от 0 до 1000. В одном из них используется оператор continue, с помощью которого пропускаются все неподходящие под условие значения. Само же условие задается с помощью встроенной функции trunc(n), которая служит для определения целой части числа.

Циклы программ Mathcad работают довольно быстро. Убедиться в этом можно, используя появившуюся в Mathcad 12 функцию time. Данная функция возвращает машинное время в секундах. Записав в переменную, когда начал работать цикл, можно найти время его работы как разность значения, возвращенного time по завершении прокрутки цикла, и величины этой переменной. Например, проверим, за сколько будет просуммирован 1 ООО ООО членов гармонического ряда:

timeO<- вте(0) = 1.412 S<- О

for i е 1.. 1000000

S«-S+-

i

time(l) - timeO

Итак, миллион членов ряда был просуммирован всего за полторы секунды. Столь высокая производительность дает возможность реализовывать в Mathcad алгоритмы, связанные с очень объемными вычислениями.

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

4.3. Условные операторы (if, otherwise)

Из всех программных операторов оператор условия if (Если) (сочетание клавиш Shift-m J») является, пожалуй, наиболее важным. Его приходится использовать практически во всех создаваемых алгоритмах.

Условный оператор if имеет два маркера:

I If

В правый маркер вводится условие, в левый — операция, которая должна быть проделана в случае, если условие выполнится (если же оно не выполняется, система просчитывает программу, пропуская данный фрагмент). Как уже говорилось, в маркер оператора может быть внесено несколько условий.

Оператор otherwise (Иначе) предназначен для определения того действия, которое должно быть выполнено, если условие оператора if (Если) окажется неистинным

Одновременно может быть использовано несколько условных операторов if (Если). Оператор otherwise (Иначе) в таком случае будет задействован, если не выполнятся условия всех операторов if (Если).



0 ... 41 42 43 44 45 46 47 ... 177