Произведение комплексных чисел, использующее только три умножения
мы делаем умножение комплексного числа следующим образом:
(a + i * b) * (c + i * d) = (a * c - b * d) + i * (a * d + b * c)
реальная и мнимая части результата являются
real part = (a * c - b * d)
imag part = (a * d + b * c)
Это включает в себя четыре реальных умножения. Как мы можем сделать это только с тремя реальными умножениями?
4 ответов
вас интересуют два номера : A=ac−bd
и B=ad+bc
.
Вычислить три действительных умножения S1=ac,S2=bd, and S3=(a+b)(c+d)
.
Теперь вы можете вычислить результаты
A=S1−S2
и B=S3−S1−S2
.
этот процесс называется умножением Карацубы и широко используется в алгоритмическом анализе.
Он используется для поиска ближайшей пары точек.
для полноты, я хотел бы отметить алгоритм комплексного умножения Гаусса, что является еще одним способом сделать сложное умножение только с тремя умножениями. Подводя итог, вы вычисляете
k1 = c * (a + b)
k2 = a * (d - c)
k3 = b * (c + d)
Real part = k1 - k3
Imaginary part = k1 + k2
некоторые алгоритмы, например,Split-radix FFT установите более высокие ожидания на сложное умножение, требующее сложности ровно 3 Реальных умножения и 3 Реальных сложения.
(a+ib)(c+id)=ac−bd+i(ad+bc)
x=a(c−d)
y=a+b
z=a−b
ac-bd=zd+x
ad+bc=yc−x
в БПФ y и z полностью исходят из факторов twiddle, поэтому их можно предварительно вычислить и сохранить в таблице поиска. Таким образом, требование выполнено. БПФ трюки
Валлабх Патаде уже ответил о том, как выполнять произведение между двумя комплексными числами только с тремя вещественными умножениями. Применение Карацубаалгоритм действительно следующий
x = a + i * b;
y = c + i * d;
real(x * y) = a * c - b * d;
imag(x * y) = (a + b) * (c + d) - a * c - b * d;
теперь вопрос: можем ли мы выполнить произведение между двумя комплексными числами с меньше чем три реальных умножений?
ответ нет и виноград по теорема на
S. Winograd, "On the number of multiplications required to compute certain functions", Commun. Pure Appl. Math. 23 (1970), 165-179.
минимальное число умножений, требуемое при вычислении произведения между двумя комплексными числами, равно трем.