Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инстр_Mathem_v8.doc
Скачиваний:
4
Добавлен:
16.11.2019
Размер:
1.91 Mб
Скачать

O

Таблица 7. 1

Логические операторы

Оператор

Значение

==

равно

!=

не равно

===

тождественно равно

>

больше

>=

больше или равно

x == y == z

все равны

x != y != z

все различны

!p

отрицание (не)

p&&q&&…

конъюнкция (и)

p || q || …

дизъюнкция (или)

ut [] = .

7. Циклические операции

7.1. Цикл For

Формат команды: For[start, test, incr, body]

Функция For имеет не более четырех аргументов. Аргумент start описывает предварительные действия. Test – проверка условия выполнения цикла. Необязательный аргумент incr – увеличение индекса – счетчика циклов. Body – тело цикла. Сначала выполняется start, затем повторно выполняются body и incr до тех пор, пока значение test есть ИСТИНА (True). Аргументы оператора For отделяются друг от друга запятыми, формулы внутри аргументов отделяются друг от друга знаком точка с запятой.

Пример 7.1

Программа, иллюстрирующая работу цикла For. Программа включает два оператора: цикл For, в котором подсчитывается значение целой величины I, и команду вывода на экран найденного значения.

In[] := For[ i=1, i<5, i++]; i

Out [ ] = 5

Обратим внимание на момент окончания цикла. При i=4 условие i<5 выполнено, так что величина i еще раз увеличивается на единицу, и окончательное значение равно 5.

Пример 7.2

Составим программу вычисления “машинного эпсилон” – числа, которое определяет относительную точность арифметики, использующей представление чисел с плавающей запятой. По определению машинный эпсилон eps – это минимальное положительное число, для которого выполняется условие: 1. + eps > 1. Иначе говоря, это минимальное число, при котором правая и левая части в этом неравенстве различимы. Программа имеет вид:

In[] := For[ep=1., 1.+ep>1., ep=ep/2]; 2 ep

Out [ ] = 2.84217*10-14

Сначала числу ep присваивается значение 1.0, затем это число многократно делится пополам до тех пор, пока не нарушится условие выполнения цикла. На печать выводится значение ep, полученное на предпоследнем шаге.

7.2. Цикл While

Формат команды: While[test, body] – подсчитываются повторно условие test и тело цикла body до тех пор, пока истинность условия не нарушится.

7.3. Цикл Do

Формат команды: Do[expr, {i, imin, imax, di}] – подсчитывается выражение expr для значений i, принимающих значения от imin до imax с шагом di. Значения imin и di можно не указывать, если эти значения равны 1. Индекс i можно не указывать, если expr от него не зависит, так что минимальный формат цикла имеет вид: Do[expr, {imax}] – вычисления повторяются imax раз.

Do[ body, {i {i1, i2, i3, …}}] – для I используютя значения из списка значений.

Более общий формат команды: Do[expr, {i, imin, imax}, {j, jmin, jmax}] – для каждого значения i вычисления повторяются при меняющихся значениях j.

Пример 7.3

Напишем еще одну программу вычисления “машинного эпсилон”:

In[ ] := ep2=1.; Do[If[1.+ep2>1., ep2=ep2/2, Break[]], {70}]; 2 ep2

Out[ ] = 2.84217*10-14

А

Таблица 7.2. Примеры логических выражений

Входное выражение

Выходное выражение

{1.==1, 1.===1}

{True, False}

1.+10^-14 ==1

True

1.+2*10^-14==1

False

1+10^-100 ==1

False

3 != 2 != 3

False

Pi ^ E < E ^ Pi

True

x != x && y == y

False

x != x || y == y

True

лгоритм программы совпадает с алгоритмом предыдущей программы для вычисления машинного эпсилон, однако, поскольку цикл Do не содержит встроенной проверки условий выполнения операций цикла, программа включает условную функцию If. Eсли условие e2>1.0 выполнено, производятся действия цикла; как только условие нарушается, происходит выход из цикла по команде Break[ ].