У меня есть (я думаю) точное решение, однако оно может быть долгим. Основной проблемой было бы вычисление на очень очень большой (и, надеюсь, разреженной) матрице.
Допустим, у вас есть N
баллов в вашем объеме. Давайте назовем p1...pN
эти точки. То, что вы ищете, это f(p1)...f(pN)
Давайте возьмем точку pi
. У него 26 соседей. Давайте назовем их pi-1...pi-26
. Я полагаю, у вас есть доступ для каждой точки pi
к коэффициентам линейной комбинации. Назовем их ci-1...ci-j...ci-26
(для "коэффициента линейной комбинации для точки pi
ее j-го соседа)
Давайте сделаем еще лучше, вы можете считать, что pi
- это линейная комбинация всех точек в вашем пространстве, за исключением того, что большинство из них (кроме 26) равны 0. У вас есть коэффициенты ci-1...ci-N
.
Теперь вы можете построить большую матрицу N*N
из этих ci-j
коэффициентов:
+--------------------- -------+
| 0 | c1-2 | c1-3 | ... | c1-N | |f(p1)| |f(p1)|
+--------------------- -------+ | | | |
| c2_1| 0 | c2-3 | ... | c1-N | |f(p2)| |f(p2)|
+--------------------- -------+ * . . = . .
| | . . . .
. . . . . .
+--------------------- -------+ . . . .
| cN-1| cN-2 | cN-3 | ... | 0 | |f(pN)| |f(pN)|
+--------------------- -------+
Удивительно! Решение, которое вы ищете, это один из собственных векторов, соответствующих собственному значению 1!
Используйте оптимизированную матричную библиотеку, которая эффективно вычисляет собственные векторы (для разреженной матрицы) и надеюсь, что она уже распараллелена!
Редактировать: Забавно, я просто перечитал ваш пост, кажется, я только что дал вам ваше решение BCGSTAB ... Извините! ^^
Повторное редактирование: На самом деле, я не уверен, вы говорите о "Biconjugate Gradient Stabilized Method"? Потому что я не вижу линейного метода, о котором вы говорите, если вы делаете градиентный спуск ...
Повторное редактирование: я люблю математику =) Я даже могу доказать, что при условии sum of the ci = 1
, что 1 на самом деле является собственным значением. Я не знаю размерности соответствующего пространства, но оно как минимум 1!