≪
≫

Модуль I_ARI

Интервальная арифметика

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

Тип

Тип interval определяется как

type interval = record inf, sup : real end;

и является частью языкового ядра PASCAL-XSC. Он основан на представлении вещественного интервала х в форме

что эквивалентно множеству {у ет инфинум (нижнюю границу), интервала х.

6 IR^inf у С ^SUp}, где inf обознача-а sup — супремум (верхнюю границу)

Операции

Результаты всех предопределенных арифметических операций принадлежат типу interval. Предусмотрены унарные операции +, — и четыре основные бинарные операции +, —, * и /, каждая с округлением до наименьшего включающего интервала. Операции отношения =, О, <, <=, > и >= интерпретируются как соответствующие операции для множеств. Они обозначают следующие отношения:

равно;

не равно;

строгое подмножество слева;

подмножество слева;

строгое подмножество справа; подмножество справа.

Эти операции определяются на основе операций = и <= согласно (RD) (см. стр. 142). Если хну принадлежат типу interval, то

х <= у <=> (x.inf >= y.inf) and (x.sup <= y.sup).

Кроме того, данный модуль содержит операцию in для отношений «принадлежит» и «содержится в» между операндами типов real и interval и между двумя операндами типа interval соответственно. Операция in удовлетворяет условию

х in у <=> (x.inf > y.inf) and (x.sup < y.sup).

Операция >< проверяет два интервала на пустоту пересечения. Интервалы х и у не пересекаются, если х П у = 0 (пустому множеству). Операции +* и ** вычисляют интервальную оболочку и пересечение интервалов соответственно. Результатом действия операции +* является наименьший интервал, включающий оба операнда, а операции ** — пересечение интервалов. Если пересечение равно пустому множеству, фиксируется ошибка.

Левый операнд

Правый операнд

integer real

interval

унарный

+,-

integer real

+*

о

in, = , <>

+*

interval

II t л о

V

о

in, V, >< +*, **

Операции модуля I_AR1 о Е { + , -, *, /},

V € {=, О, <. <=, >, >=}

Пример 3.2.1.

Если переменные а и b типа interval определены как

а = [-1,3];

b = [3,4];

то операции +, —, *, X, +* и ** возвращают следующие результаты:

Выражение

Результат

а

+

b

[2,7]

а

—

ь

[-5,0]

а

*

ь

[-4,12]

а

+*

ь

[-1-4]

а

**

ь

[3,3]

а

><

ь

false

Функции преобразования

Следующие функции используются для преобразований между типами real и interval:

Функция

Тип результата

Значение

intval (rl,r2)

interval

Интервал c inf = rl и sup = r2

intval (г)

interval

Интервал c inf = sup - r

inf (i)

real

Нижняя граница i

sup (i)

real

Верхняя граница i

г, rl, г2 — выражения типа real, i — выражение типа interval : предполагается, что rl <= г2, иначе фиксируется ошибка.

Совмещение операции присваивания

Преобразование значения типа real в значение типа interval можно осуществить с помощью совмещенной операции присваивания:

Присваивание

Значение

i := г

i := intval (г)

1 — переменная типа interval, г — выражение типа real

Предопределенные функции

Все математические функции PASCAL-XSC, применяемые для вещественных аргументов, могут использоваться с интервальными аргументами. Эти интервальные функции F удовлетворяют соотношению F(i) D f(i) = = {/(г) : г Е г}. Кроме того, предусмотрены функции для вычисления средней точки и диаметра (оценки длины) интервала. Для использования в локализационных методах предусмотрена функция blow, вычисляющая эпсилон-расширение (см. [52]).

Функция

Тип результата

Значение

sqr (i)

interval

i2 =

= {r2 : r E i}

Интервальный квадрат

sqrt (i)

interval

/i

Квадратный корень

exp (i)

interval

ei

Экспонента

exp2 (i)

interval

2*

Показательная функция с основанием 2

exp 10 (i)

interval

10*

Показательная функция с основанием 10

In (i)

interval

ln(i)

Натуральный логарифм

log2 (i)

interval

log2(i)

Логарифм по основанию 2

log 10 (i)

interval

ig(i)

Логарифм по основанию 10

sin (i)

interval

sin(i)

Синус

cos (i)

interval

cos(i)

Косинус

tan (i)

interval

tg(i)

Тангенс

cot (i)

interval

ctg(i)

Котангенс

arcsin (i)

interval

arcsin (i)

Арксинус

arccos (i)

interval

arccos (i)

Арккосинус

arctan (i)

interval

arctg(i)

Арктангенс

arctan2 (il,i2)

interval

arctg(il/i2)

Арктангенс

arccot (i)

interval

arcctg(i)

Арккотангенс

sinh (i)

interval

sh(i)

Гиперболический синус

cosh (i)

interval

ch(i)

Гиперболический косинус

tanh (i)

interval

th(i)

Гиперболический тангенс

coth (i)

interval

cth(i)

Гиперболический котангенс

arsinh (i)

interval

arsh(i)

Обратный гиперболический синус

arcosh (i)

interval

arch(i)

Обратный гиперболический косинус

artanh (i)

interval

arth(i)

Обратный гиперболический тангенс

arcoth (i)

interval

arcth(i)

Обратный гиперболический котангенс

abs (i)

interval

Rl = = {|r| :rei}

Абсолютная величина

mid (i)

real

m —

= #*(0.5*inf(i)

+ 0.5*sup(i))

Средняя точка интервала i +

Функция

Тип результата

Значение

diam (i)

blow (i,r)

real

interval

d = sup(i) — > Диаметр интервала i -> inf(i)

| Эпсилон-расширение

i, il, i2 — выражения типа interval, г, m, d — выражения типа real J : у := (1 + г) * 1 — г * 1;

blow := intval (pred(inf(у)), succ(sup(y)));

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

Пример 3.2.2.

Если переменные а и b типа interval определены как

а := intval (—1,3);

b := intval (2);

то результатами функций abs, sqr, mid и diam будут следующие значения:

Выражение

Результат

abs (a)

[0,3]

abs (b)

[2,2]

sqr (a)

[0,9]

sqr (b)

[4,4]

mid (a)

1

diam (a)

4

Процедуры ввода-вывода

В этом модуле предусмотрены процедуры

procedure read (var f: text; var a: interval);

procedure write (var f: text; a: interval);

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

Интервал i = [я, у] должен вводиться в форме

[х,у]

или в форме

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

Вывод интервального значения производится с интервальным округлением (х округляется вниз, а у — вверх) в форме

[я, у]

с real-форматом для чисел х и у, принятым по умолчанию (он зависит от реализации).

Пример 3.2.3.

Если int — значение типа interval, то операторы

read (int);

writein (int);

считывают входные данные

0.245

и выводят интервал

[ 2.4499...99Е-001, 2.4500...01Е-001 ],

если число 0.245 точно не представимо. В зависимости от реализации может использоваться другое представление чисел типа real.

 
Посмотреть оригинал