Скобка Айверсона
— функция, возвращающая 1 для истинного
высказывания
, и 0, если аргумент ложный:
[
P
]
=
{
1
,
если
P
истинно
0
,
если
P
ложно
{\displaystyle [\,P\,]={\begin{cases}1,&{\text{если }}P{\text{ истинно}}\\0,&{\text{если }}P{\text{ ложно}}\end{cases}}}
Нотация введена
Кеннетом Айверсоном
для языка программирования
APL
, и оказалась очень удобным математическим обозначением, например, с ним можно лаконично определить:
символ Кронекера
:
δ
i
j
=
[
i
=
j
]
{\displaystyle \delta _{ij}=[\,i=j\,]}
,
индикаторную функцию
:
1
A
(
x
)
=
[
x
∈
A
]
{\displaystyle \mathbf {1} _{A}(x)=[\,x\in A\,]}
,
функцию Хевисайда
:
θ
(
x
)
=
[
x
⩾
0
]
{\displaystyle \theta (x)=[\,x\geqslant 0\,]}
,
функцию знака числа
:
sgn
(
x
)
=
[
x
>
0
]
−
[
x
<
0
]
{\displaystyle \operatorname {sgn}(x)=[\,x>0\,]-[\,x<0\,]}
.
Также нотация удобна при обращении с
суммами
, поскольку позволяет выражать их без ограничений на индекс суммирования, например:
∑
i
=
1
n
a
i
=
∑
k
a
k
[
1
⩽
k
⩽
n
]
{\displaystyle \sum _{i=1}^{n}a_{i}=\sum _{k}a_{k}[\,1\leqslant k\leqslant n\,]}
,
то есть индекс
k
{\displaystyle k}
пробегает всё множество
Z
{\displaystyle \mathbb {Z} }
целых чисел
, и формально
суммируется бесконечное число слагаемых
, но лишь конечное число их отлично от нуля.
Пример вычисления с использованием нотации Айверсона суммы
S
=
∑
i
=
1
n
−
1
∑
j
=
i
+
1
n
a
i
a
j
{\displaystyle S=\sum _{i=1}^{n-1}\sum _{j=i+1}^{n}a_{i}a_{j}}
для последовательности
{
a
i
}
{\displaystyle \{a_{i}\}}
:
[
i
<
j
]
+
[
i
=
j
]
+
[
i
>
j
]
=
1
{\displaystyle [\,i<j\,]+[\,i=j\,]+[\,i>j\,]=1}
,
∑
i
,
j
a
i
a
j
[
i
<
j
]
+
∑
i
,
j
a
i
a
j
[
i
=
j
]
+
∑
i
,
j
a
i
a
j
[
i
>
j
]
=
∑
i
,
j
a
i
a
j
{\displaystyle \sum \limits _{i,j}a_{i}a_{j}[\,i<j\,]+\sum \limits _{i,j}a_{i}a_{j}[\,i=j\,]+\sum \limits _{i,j}a_{i}a_{j}[\,i>j\,]=\sum \limits _{i,j}a_{i}a_{j}}
,
S
+
∑
i
a
i
2
+
S
=
(
∑
i
a
i
)
2
{\displaystyle S+\sum \limits _{i}a_{i}^{2}+S={\biggl (}\sum \limits _{i}a_{i}{\biggr )}^{2}}
,
а так как для правой части:
∑
i
,
j
a
i
a
j
=
∑
i
∑
j
a
i
a
j
=
∑
i
a
i
∑
j
a
j
=
(
∑
i
a
i
)
2
{\displaystyle \sum \limits _{i,j}a_{i}a_{j}=\sum \limits _{i}\sum \limits _{j}a_{i}a_{j}=\sum \limits _{i}a_{i}\sum \limits _{j}a_{j}={\biggl (}\sum \limits _{i}a_{i}{\biggr )}^{2}}
,
то:
S
=
∑
1
≤
i
<
j
≤
n
a
i
a
j
=
1
2
(
∑
i
=
1
n
a
i
)
2
−
1
2
∑
i
=
1
n
a
i
2
{\displaystyle S=\sum _{1\leq i<j\leq n}a_{i}a_{j}={\frac {1}{2}}{\biggl (}\sum _{i=1}^{n}a_{i}{\biggr )}^{2}-{\frac {1}{2}}\sum _{i=1}^{n}a_{i}^{2}}
.
Литература
Грэхем Р., Кнут Д., Паташник О.
Конкретная математика. —
М.
: Мир, 1998. — 703 с. —
ISBN 5-03-001793-3
.
Kenneth E. Iverson.
A Programming Language. — the University of California: Wiley, 1962. — 286 с. —
ISBN 0471430145
.