Всем привет!! Народ, нужна помощь, а точнее критический взгляд со стороны.
Работая по другой теме, получил, как мне кажется, новый численных методов решения разреженных СЛАУ. Перерыл кучу источников, ничего похожего на мой метод не нашёл и решил, что прежде чем светится с ним на конференциях и т.д. нужно послушать мнение форумчан. Вот его описание (извините за длинный текст)
Технология моделирования систем по частям - это новый математический метод, позволяющий распараллелить процесс моделирования сложных систем и за счёт этого повысить скорость моделирования. Технология была создана благодаря тому, что было найдено красивое и простое аналитическое решение основной задачи диакоптики, т.е. был найден метод анализа сложных систем по частям.
Одним из основных результатов разработанной технологии является численный метод решения разреженных СЛАУ по функциональным блокам. Основные черты метода опишем на примере моделирования некоторой системы, состоящей из набора связанных между собой функциональных блоков.
Итак, пусть имеется система, которую можно представить в виде набора функциональных блоков, соединённых друг с другом в N узлах (причём N<<R, где R общее количество узлов в системе). Поведение каждого из функциональных блоков описывается системой дифференциальных уравнений. При моделировании от систем дифференциальных уравнений методами численного интегрирования переходят к дискретным моделям (к СЛАУ) блоков. Далее формируют ?большую системную матрицу? (порядка R) путём включения в неё СЛАУ блоков. Причём если блоки функционально связаны, то они в матрице частично перекрываются (складываются). Полученную ?большую системную матрицу? решают прямыми или чаще итерационными методами. Это стандартный путь.
При моделировании системы по частям выполняются следующие шаги:
1. вместо формирования ?большой системной матрицы? формируется так называемая ?матрица сшивания?, ранг которой не превышает N. С помощью матрицы сшивания мы учитываем способ связи функциональных блоков между собой и их влияние друг на друга;
2. СЛАУ функциональных блоков решаются (любыми известными методами) параллельно друг другу относительно заданных значений векторов b в правой части;
3. с помощью решений, полученных на предыдущем шаге, формируем правую часть матрицы сшивания и решаем её. При формировании правой части матрицы сшивания из векторов решений СЛАУ блоков используется только небольшая часть отсчётов, т.е. процессоры на 2- 3 и 3-4 шагах обмениваются небольшим количеством данных;
4. далее опять параллельно друг другу решаем СЛАУ блоков, но с учётом решения, полученного на предыдущем шаге. На этом всё. Решения ?большой? СЛАУ для заданного значения общего вектора b* найдены. Если необходимо модифицируем вектора b блоков и ищем новые решения, перейдя к шагу 2.
Естественно результаты решения ?большой? СЛАУ стандартными методами и по функциональным блокам с учётом влияния ошибки округления совпадают. Как видно из описания, скорость решения СЛАУ по блокам на многопроцессорной системе зависит от максимального размера СЛАУ блока, размера матрицы сшивания и скорости обмена данными между процессорами, и практически не зависит от количества СЛАУ блоков и их способа соединения между собой, т.е. слабо зависит от размерности решаемой задачи.
Разработанный численный метод лежит на стыке прямых и итерационных методов решения разреженных СЛАУ. Доказано, что если коэффициенты матрицы сшивания вычислены точно, то метод является прямым, но, так как из-за ошибки округления, точно их вычислить проблематично, то метод можно отнести и к блочным итерационным методам, все собственные числа матрицы перехода которого имеют порядок приблизительно равный порядку ошибки округления, т.е. для большинства случаев практически равны нулю.
Основные отличия и преимущества нового метода от известных состоят в следующем:
1. Он не требует формирования и решения целиком ?большой? СЛАУ;
2. Не фрагменты ?большой? СЛАУ, а СЛАУ функциональных блоков системы решаются отдельно и параллельно друг другу.
3. Если в системе нет явно выраженных функциональных блоков, например при использовании метода конечных элементов, то их размер можно задать самостоятельно, руководствуясь, например, вычислительной эффективностью.
4. При решении сверх больших задач возможна вложенная реализация метода (многоярусная реализация).
5. Матрица сшивания формируется путём включения в неё обратных матриц размерности менее N, которые на первом шаге рассчитываются отдельно и параллельно друг другу каждым из функциональных блоков. Следовательно, функциональный блок легко можно исключить или включить в исследуемую систему.
6. При наличии нелинейности в одном из функциональных блоков для нахождения решения можно, либо быстро откорректировать ?матрицу сшивания?, либо выполнить несколько итераций, воспользовавшись итерационной устойчивостью метода.
Надеюсь, что это будет кому-нибудь интересно.
