В каталоге файлов размещен новый материал fpcSparse — модуль на языке FreePascal, в котором реализован класс, позволяющий создавать, факторизировать и решать системы квадратно-матричных уравнений с разреженными матрицами коэффициентов. Класс разработан на основе адаптации для языка FreePascal оригинального пакета Sparse1.4 (Copyright © 2003, Kenneth S. Kundert), написанного на языке С.
Помимо базовой способности создавать, факторизировать и решать системы уравнений, этот пакет имеет несколько возможностей, которые повышают его полезность:
- • Возможность обрабатывать как реальные, так и комплексные системы уравнений. Оба типа могут быть резидентными и активными одновременно. Фактически, одна и та же матрица может чередоваться между вещественной и комплексной.
- • Возможность быстро решать транспонированную систему. Эта функция полезна при расчете чувствительности схемы с использованием сопряженного метода.
- • Память для элементов в матрице распределяется динамически, поэтому размер матрицы ограничен только доступным для Sparse объемом памяти и диапазоном целочисленного типа данных, который используется для хранения индексов матрицы.
- • Возможность эффективно вычислять число обусловленности матрицы и апостериорную оценку ошибки, вызванной увеличением числа элементов во время факторизации.
- • Большая часть инициализации матрицы может быть выполнена Sparse, обеспечивая преимущества в скорости и упрощении кодирования вызывающей программы.
- • Возможность предварительного переупорядочения матриц проводимостей модифицированного МУП для повышения точности и скорости.
- • Возможность использовать разреженность в векторе правой части для уменьшения ненужных вычислений.
- • Возможность масштабировать матрицы до факторинга, чтобы уменьшить неопределенность в решении.
- • Возможность создавать и строить матрицы, не зная их окончательного размера.
- • Возможность добавлять элементы, а также строки и столбцы в матрицу после переупорядочения матрицы.
- • Возможность удалять строки и столбцы из матрицы.
- • Возможность вырезать из матрицы заполнения - ненулевые элементы, возникающие при факторизации. Это может повысить эффективность последующего переупорядочения.
- • Возможность обрабатывать матрицы, в которых строки и столбцы отсутствуют в их входном описании.
- • Возможность выводить матрицу в формах, которые могут прочитать люди или пакет Sparse. Также может быть выведена базовая статистика по матрице.
- • По умолчанию все арифметические операции и хранение чисел используют двойную точность. Таким образом, Sparse обычно дает точные результаты, даже для очень плохо обусловленных систем. При желании Sparse может быть легко настроен для использования арифметики другой точности.
|