Компьютер для операций с функциями

 Компьютер для операций с математическими функциями (в отличие от обычного компьютера) оперирует с функциями на аппаратном уровне (то есть без программирования этих операций).

История

Вычислительная машина для операций с функциями была предложена и разработана Карцевым в 1967 году. В число операций этой вычислительной машины входили сложение, вычитание и умножение функций, сравнение функций, аналогичные операции над функцией и числом, отыскание максимума функций, вычисление неопределенного интеграла, вычисление определенного интеграла от производной двух функций, сдвиг функции по абсциссе и т. д. По архитектуре эта вычислительная машина являлась (пользуясь современной терминологией) векторным процессором. В ней использовался тот факт, что многие из этих операций могут быть истолкованы как известные операции над векторами: сложение и вычитание функций — как сложение и вычитание векторов, вычисление определенного интеграла от производной двух функций — как вычисление скалярного произведения двух векторов, сдвиг функций по абсциссе — как поворот вектора относительно осей координат и т. д. В 1966 году Хмельник предложил метод кодирования функций , то есть представления функции единым (для функции в целом) позиционным кодом. При этом указанные операции с функциями выполняются как уникальные машинные операции с такими кодами на единственном арифметическом устройстве

Позиционные коды функций одного аргумента

Основная идея

Позиционный код целого числа A представляет собой запись цифр α этого числа в некоторой позиционной системе счисления, имеющую вид A=α0α1αkαn Такой код можно назвать линейным. В отличие от него позиционный код функции F(x) одного аргумента x имеет вид F(x)=(    α22α2k α11α12α1kα00α01α02α0k) то есть является плоским и треугольным, поскольку цифры в нем образуют треугольник.\\ Указанному позиционному коду целого числа соответствует сумма вида A=k=0nαkρk,. где ρ — основание данной системы счисления. Указанному позиционному коду функции одного аргумента соответствует двойная сумма вида F(x)=k=0nm=0kαmkRkykm(1y)m, где R — целое положительное число, количество значений цифры α, y — определенная функция аргумента x.\\ Сложение позиционных кодов чисел связано с передачей переноса в старший разряд по схеме αkαk+1. Сложение позиционных кодов функций одного аргумента также связано с передачей переноса по схеме (  αk+1,m+1  αk,mαk+1,m). При этом один и тот же перенос передается одновременно в два старших разряда.

R-е треугольные коды

Треугольный код называется R-м (и обозначается как TKR), если числа αmk принимают значения из множества DR={r1,r1+1,,1,0,1,,r21,r2}, где r1,r20 и R=r1+r2+1. Например, треугольный код является троичным TK3, если αmk(1,0,1), и — четверичным TK4, если αmk(2,1,0,1).\\ Для R-х треугольных кодов справедливы следующие равенства: \{begin\{pmatrix\} \{ \{ \& 0 \{\{ \{ \{nearrow \& \{ \{\{ aR \{longrightarrow \& 0 \{end\{pmatrix\}=\{begin\{pmatrix\} \{ \{ \& a \{\{ \{ \{nearrow \& \{ \{\{ 0 \{longrightarrow \& a \{end\{pmatrix\}, \{begin\{pmatrix\} \{ \{ \& a \{\{ \{ \{nearrow \& \{ \{\{ 0 \{longrightarrow \& 0 \{end\{pmatrix\}=\{begin\{pmatrix\} \{ \{ \& 0 \{\{ \{ \{nearrow \& \{ \{\{ aR \{longrightarrow \& -a \{end\{pmatrix\}, \{begin\{pmatrix\} \{ \{ \& 0 \{\{ \{ \{nearrow \& \{ \{\{ 0 \{longrightarrow \& a \{end\{pmatrix\}=\{begin\{pmatrix\} \{ \{ \& -a \{\{ \{ \{nearrow \& \{ \{\{ aR \{longrightarrow \& 0 \{end\{pmatrix\}, где a — любое число. Существует TKR любого целого действительного числа. В частности, TKR(α)=α. Также существует TKR любой функции вида yk. В частности, TKR(y2)=(0 0 1).
agraphОдноразрядное сложение в R-х треугольных кодах состоит в том, что

  • в данном (mk)-разряде определяется сумма Smk слагаемых разрядов αmk, βmk и двух переносов pm,k1, pm1,k1, поступивших в данный разряд слева, то есть
Smk=αmk+βmk+pm,k1+pm1,k1,

  • эта сумма представляется в виде Smk=σmk+Rpmk, где σmkDR,
  • σmk записывается в (mk)-разряд суммарного кода, а перенос pmk из данного разряда передается в (m,k+1)-разряд и (m+1,k+1)-разряд.
Эта процедура описывается (как и при одноразрядном сложении чисел) таблицей одноразрядного сложения, где должны присутствовать все значения слагаемых αmkDR и βmkDR и все значения переносов, возникающих при разложении суммы Smk=σmk+Rpmk. Такая таблица может быть синтезирована при R>2.\\ Ниже приведена таблица одноразрядного сложения при R=3:

agraphСложение и вычитание R-х треугольных кодов состоит (как и в позиционных кодах чисел) в последовательно выполняемых одноразрядных операциях. При этом одноразрядные операции во всех разрядах каждого столбца выполняются одновременно.
agraphУмножение R-х треугольных кодов. Умножение некоторого кода TKR на (mk)-разряд другого кода TKR заключается в (mk)-сдвиге кода TKR, то есть сдвиге его на k столбцов влево и на m строк вверх. Умножение кодов TKR и TKR заключается в последовательных (mk)-сдвигах кода TKR и сложениях сдвинутого кода TKR с частичным произведением (как и в позиционных кодах чисел).
agraphДифференцирование R-х треугольных кодов. Производная функции F(x), определенной выше, F(x)x=yxF(x)y. Поэтому дифференцирование треугольных кодов функции F(x) заключается в определении треугольного кода частной производной F(x)y и умножении его на известный треугольный код производной yx. Определение треугольного кода частной производной F(x)y основано на соотношении x(  0 0αmk000)=(  (km)αmk 0(k2m)αmk00(m)αmk). Способ дифференцирования заключается в организации переносов из mk-разряда в (m+1,k)-разряд и в (m-1,k)-разряд, а их суммирование в данном разряде производится аналогично одноразрядному сложению.
agraphКодирование и декодирование R-х треугольных кодов. Функция, представленная рядом вида F(x)=k=0nAkyk, с целыми коэффициентами Ak, может быть представлена R-м треугольным кодом, так как эти коэффициенты и функции yk имеют R-е треугольные коды (о чем сказано в начале раздела). С другой стороны, R-й треугольный код может быть представлен указанным рядом, так как любое слагаемое αmkRkyk(1y)m в позиционном разложении функции (соответствующем этому коду) может быть представлено таким же рядом.
agraphУкорочение R-х треугольных кодов. Так называется операция уменьшения числа ненулевых столбцов. Необходимость укорочения возникает при возникновении переносов за разрядную сетку. Укорочение заключается в делении на параметр R. При этом все коэффициенты представимого кодом ряда уменьшаются в R раз, а дробные части этих коэффициентов отбрасываются. Исчезает также старший член ряда. Такое сокращение допустимо, если известно, что ряды функций являются сходящимися. Укорочение состоит в последовательно выполняемых одноразрядных операциях деления на параметр R. При этом одноразрядные операции во всех разрядах каждой строки выполняются одновременно, а переносы из младшей строки отбрасываются.

Масштабный коэффициент

R-й треугольный код сопровождается масштабным коэффициентом M, аналогичным порядку в числе с плавающей точкой. Коэффициент M позволяет представить все коэффиценты кодируемого ряда в виде целых чисел. Коэффициент M умножается на R при укорочении кода. При сложении коэффициенты M выравниваются, для чего необходимо укорачивать один из слагаемых кодов. При умножении коэффициенты M также умножаются.

Позиционные коды функций многих аргументов

Позиционный код функции двух аргументов изображен на рис. 1. Ему соответствует тройная сумма вида F(x,v)=k=0nm1=0km2=0kαm1,m2,kRkykm1(1y)m1zkm2(1z)m2, где R — целое положительное число, количество значений цифры αm1,m2,k, а y(x),z(v) — определенные функции аргументов x,v соответственно. На рис. 1 узлы соответствуют цифрам αm1,m2,k, а в кружках показаны значения индексов m1,m2,k соответствующей цифры. Позиционный код функции двух аргументов называется пирамидальным. Позиционный код называется R-м (и обозначается как PKR), если числа αm1,m2,k принимают значения из множества DR. При сложении кодов PKR перенос распространяется в четыре разряда и поэтому R7. Позиционному коду функции нескольких аргументов соответствует сумма вида F(x1,,xi,,xa)=k=0nm1=0kma=0k(αm1,,ma,kRki=1a(yikmi(1yi)mi)), где R — целое положительное число, количество значений цифры αm1,,ma,k, а yi(xi) — определенные функции аргументов xi. Позиционный код функции нескольких аргументов называется гиперпирамидальным. На рис. 2 показан для примера позиционный гиперпирамидальный код функции трех аргументов. В нем узлы соответствуют цифрам αm1,m2,m3,k, а в кружках показаны значения индексов m1,m2,m3,k соответствующей цифры. Позиционный гиперпирамидальный код называется R-м (и обозначается как GPKR), если числа αm1,,ma,k принимают значения из множества DR. При сложении кодов GPKR перенос распространяется в a-мерный куб, содержащий 2a разрядов и поэтому R(2a11).