Модуль CI_ARI
Комплексная интервальная арифметика
В этом модуле предусмотрены все операции, функции и процедуры, необходимые для вычислений с комплексными интервалами.
Тип
Тип cinterval, определенный как
type cinterval = record re, im : interval end;
является частью языкового ядра PASCAL -XSC. Он основан на обычном представлении комплексного интервала z в форме
z = [^inf? ^sup] + «• [з/infA Z/sup],
что соответствует прямоугольнику на комплексной плоскости (прямоугольному интервалу).
Операции
Все предопределенные арифметические операции этого модуля выдают результат типа cinterval. Предусмотрены унарные операции +, — и четыре основные бинарные операции * и /, каждая с округлением до
наименьшего включающего комплексного интервала. Операции отношения =, О, <, <—, > и >= интерпретируются как соответствующие операции для множеств. Они обозначают следующие отношения:
равно;
не равно;
строгое подмножество слева;
подмножество слева;
строгое подмножество справа; подмножество справа.
Эти операции определяются на основе операций = и <= в соответствии с (RD) (см. стр. 142). Если у и w принадлежат к типу cinterval, то
v <= w (v.re <= w.re) and (v.im <= w.im), где операции в правой части равенства являются интервальными.
Кроме того, в этом модуле определена операция in для отношений «содержится в» и «содержится внутри». Для двух комплексных интервалов v и w операция in удовлетворяет соотношению
|
Левый операнд |
Правый операнд |
|||
|
integer real |
complex |
interval |
cinterval |
|
|
унарные |
+, — |
|||
|
integer real |
+* |
о in, =, О +* |
||
|
complex |
+* |
+* |
о in, =, <> +* |
о in, =, О +* |
|
interval |
о +* |
О in, V, >< 4-*, ** |
||
|
cinterval |
о +* |
о +* |
о V, >< +*, ** |
о in, V, >< +*, ** |
Операции модуля CI_ARI о е { + , *, /},
ve{=, о, <, < = , >, > = } v in w 4=> (v.re in w.re) and (v.im in w.im).
Операция >< проверяет комплексные интервалы на пустоту пересечения. Два комплексных интервала v, w не пересекаются, если v П w = 0. Операции +* and ** обозначают вычисление комплексной интервальной оболочки и пересечение комплексных интервалов соответственно. Результатом действия операции +* является наименьший интервал, включающий оба операнда, а операции ** — пересечение интервалов. Если пересечение равно пустому множеству, фиксируется ошибка.
Пример 3.3.1.
Если переменная са, принадлежащая к типу cinterval, равна [ — 1,3] 4-
4- i [3,4], то операции +, — и * возвращают следующие результаты:
Выражение
|
са |
+ |
са |
|
са |
— |
са |
|
са |
* |
са |
Результат
[-2,6] 4- i [6,8]
[-4,4] 4- i [-1,1] [-19,0] 4- г [-8,24]
Функции преобразования
Следующие функции используются для преобразования между типами real, complex, interval и cinterval:
|
Функция |
Тип результата |
Значение |
|
compl (il,i2) |
cinterval |
Комплексный интервал с вещественной частью П и мнимой частью i2 |
|
compl (r,i) |
cinterval |
Комплексный интервал с вещественной частью г и мнимой частью i |
|
compl (i,r) |
cinterval |
Комплексный интервал с вещественной частью 1 и мнимой частью г |
|
compl (i) |
cinterval |
Комплексный интервал с вещественной частью i и мнимой частью, равной 0 |
|
intval (cl,c2) |
cinterval |
Комплексный интервал с вещественной частью [cl.re, с2.ге] и мнимой частью [cl.im, c2.ini] |
|
intval (r,c) |
cinterval |
Комплексный интервал с вещественной частью [г, с.ге] и мнимой частью [0,c.im]<**) |
|
intval (c,r) |
cinterval |
Комплексный интервал с вещественной частью [с.ге, г] и мнимой частью |
|
Функция |
Тип результата |
Значение |
|
intval (с) |
cinterval |
Комплексный интервал с вещественной частью [с.ге, с.ге] и мнимой частью [c.im, c.im] |
|
re (ci) |
interval |
Вещественная часть ci |
|
im (ci) |
interval |
Мнимая часть ci |
|
inf (ci) |
complex |
Комплексная нижняя граница z величины ci, где z = (ci.re.inf ci.im.inf) |
|
sup (ci) |
complex |
Комплексная верхняя граница г величины ci, где z = (ci.re.sup, ci.im.sup) |
г — выражение типа real, i, il, i2 — выражения типа interval, с, cl, с2 — выражения типа complex, ci — выражение типа cinterval : предполагается, что cl <= с2, иначе фиксируется ошибка.
- (**) : предполагается, что г <— с, иначе фиксируется ошибка.
- (***) : предполагается, что с <= г, иначе фиксируется ошибка.
Совмещение операции присваивания
Преобразование типов real, complex или interval к типу cinterval можно осуществить с помощью совмещенной операции присваивания:
|
Оператор |
Значение |
|
ci := г |
ci := compl (intval (г)) |
|
ci := с |
ci := intval (c) |
|
ci := i |
ci := compl (i) |
ci — переменная типа cinterval, i — выражение типа interval, с — выражение типа complex, г — выражение типа real
Предопределенные функции
Все математические функции PASCAL-XSC, применяемые для вещественных аргументов, могут использоваться с комплексными интервальными аргументами ci. Эти комплексные интервальные функции F удовлетворяют соотношению F(ci) D f(ci) = {f(c) : с Е ci}. Кроме того, предусмотрены функции для вычисления угловой компоненты тригонометрического представления, для вычисления сопряженного числа и для вычисления средней точки, диаметра и эпсилон-расширения комплексного интервала.
|
Функция |
Тип результата |
Значение |
|
|
sqr (ci) |
cinterval |
(ci)2 |
Квадрат |
|
sqrt (ci) |
cinterval |
y/ci |
Квадратный корень |
|
exp (ci) |
cinterval |
есл |
Экспоненциальная функция |
|
exp2 (ci) |
cinterval |
2ci |
Показательная функция с основанием 2 |
|
Функция |
Тип результата |
Значение |
|
|
exp 10 (ci) |
cinterval |
10ci |
Показательная функция с основанием 10 |
|
In (ci) |
cinterval |
In (ci) |
Натуральный логарифм |
|
log2 (ci) |
cinterval |
log2 (ci) |
Логарифм по основанию 2 |
|
log 10 (ci) |
cinterval |
ig(ci) |
Логарифм по основанию 10 |
|
sin (ci) |
cinterval |
sin (ci) |
Синус |
|
cos (ci) |
cinterval |
cos (ci) |
Косинус |
|
tan (ci) |
cinterval |
tg(ci) |
Тангенс |
|
cot (ci) |
cinterval |
ctg(ci) |
Котангенс |
|
arcsin (ci) |
cinterval |
arcsin (ci) |
Арксинус |
|
arccos (ci) |
cinterval |
arccos(ci) |
Арккосинус |
|
arctan (ci) |
cinterval |
arctg (ci) |
Арктангенс |
|
arccot (ci) |
cinterval |
arcctg(ci) |
Арккотангенс |
|
sinh (ci) |
cinterval |
sh( ci) |
Гиперболический синус |
|
cosh (ci) |
cinterval |
ch (ci) |
Гиперболический косинус |
|
tanh (ci) |
cinterval |
th (ci) |
Гиперболический тангенс |
|
coth (ci) |
cinterval |
cth (ci) |
Гиперболический котангенс |
|
arsinh (ci) |
cinterval |
arsh( ci) |
Обратный гиперболический синус |
|
arcosh (ci) |
cinterval |
arch (ci) |
Обратный гиперболический косинус |
|
artanh (ci) |
cinterval |
arth( ci) |
Обратный гиперболический тангенс |
|
arcoth (ci) |
cinterval |
arcth (ci) |
Обратный гиперболический котангенс |
|
conj (ci) |
cinterval |
ci = а — ib |
Число, сопряженное числу ci = а + ib |
|
abs (ci) |
interval |
j = =/ci.re2 + ci.im |
Абсолютное значение ci 2 |
|
arg (ci) |
interval |
Угловая компонента тригонометрического представления ci |
|
|
mid (ci) |
complex |
m |
Средняя точка ci |
|
diam (ci) |
real |
d |
Длина ci |
|
blow (ci,r) |
cinterval |
t |
Эпсилон-расширение |
ci — выражение типа cinterval, г — выражение типа real | : blow := compl (blow(ci.re,r), blow(ci.im,r));
Области определения и множества значений предопределенных функций зависят от реализации и описываются в руководстве пользователя.
Пример 3.3.2.
Если переменная а типа cinterval определена как а := compl ( intval ( — 1,3), intval (3,4) );
то результатами функций abs и sqr будут следующие значения:
Выражение abs (а) sqr (а)
Результат
[-16,0] + i [-8,24]
Процедуры ввода-вывода
В этом модуле предусмотрены процедуры
procedure read (var f: text; var a: cinterval); procedure write (var f: text; a: cinterval);
|
с необязательным параметром-файлом и произвольным количеством параметров ввода-вывода, но без спецификаций формата. Комплексный интервал ci = [ж, у] + i[v, w] должен вводиться в форме |
||
|
(комплексный интервал в |
общей форме), |
|
|
либо в одной из |
следующих форм: |
|
|
(ж, [v,w]), |
где х = у, |
|
|
([ж, 3/], v). |
где v — w, |
|
|
[я,?/]. |
где v = w = 0, |
|
|
(ж, п), |
где х = у и v = w, |
|
|
X, |
где х = у и v = w = 0. |
|
Округление вещественной и мнимой компонент выполняется так, как описано в разд. 3.2.
При выводе комплексного интервала производится интервальное округление, описанное в разд. 3.2 для вещественной и мнимой компонент. Результат представляется в форме
([rr,t/],[v,w])
с форматом для real-значений х, у, v и w, принятым по умолчанию (он зависит от реализации).
Пример 3.3.3.
Если cil, ci2 и ci3 принадлежат типу cinterval, то операторы
read (cil, ci2, ci3);
writein (cil);
writein (ci2);
writein (ci3);
вводят данные
[4,5]
- (8,10)
- 100
и выводят комплексные интервалы
- ([ 4.0Е + 00, 5.0Е + 00],[ 0.0Е + 00, 0.0Е + 00])
- ([ 8.0Е + 00, 8.0Е + 00Ц 1.0Е + 01, 1.0Е + 01])
- ([ 1.0Е + 02, 1.0Е + 02Ц 0.0Е + 00, 0.0Е + 00])
В зависимости от реализации может использоваться другое предста
вление чисел типа real.