ПОИСК Статьи Чертежи Таблицы Программное обеспечение решения систем линейных алгебраических уравнений из "Применение ЭВМ для решения задач теплообмена " В математическом обеспечении ЕС ЭВМ имеется пакет прикладных программ, предназначенных для решения систем линейных алгебраических уравнений [15]. Подпрограммы написаны на ФОРТРАНе и могут быть использованы не только на ЕС ЭВМ, но и на других типах ЭВМ. Эти подпрограммы реализуют прямые методы какдля матриц общего вида, так и для матриц специального вида (симметричных, ленточных). Ниже рассмотрим несколько широко применяемых подпрограмм, которые далее будут использованы при решении задач теплопроводности, лучистого и конвективного теплообмена. [c.17] Чтобы решить систему линейных уравнений с помощью какой-ли-бо стандартной подпрограммы, пользователь должен составить головную (вызывающую) программу, в которой элементы матрицы А и столбца правых частей В линейной системы АХ = В записываются в некоторые массивы, а затем выполняется вызов стандартной подпрограммы. При работе со стандартными подпрограммами из пакета [151 начинающие программисты часто допускают некоторые типичные ошибки, связанные с формированием массивов, в которые записываются элементы матриц. Например, такие ошибки возникают, когда в вызывающей программе матрица формируется в виде двумерного массива А, предельные размеры которого, установленные в операторе DIMENSION, превышают фактические размеры М X М. Остановимся на данном вопросе подробнее. [c.17] Формы представления матриц. Входными параметрами рассматриваемых ниже подпрограмм являются массивы А и В, содержащие элементы матрицы А и столбца В, расположенные в строго определенной последовательности, число уравнений М, а также некоторые дополнительные параметры для матриц специального вида. Эти стандартные подпрограммы позволяют решать системы с произвольным числом уравнений М, поскольку число М и массивы А, В входят в число формальных параметров подпрограммы, а фактические размеры массивов устанавливаются в головной программе. Таким образом стандартная подпрограмма оперирует с матрицей А как с массивом переменной длины /И X УИ и не знает о предельных размерах массивов, определенных в головной программе пользователем в операторе DIMENSION. При этом элементы матрицы А должны быть расположены в массиве А подряд в определенной последовательности. Например, для матрицы общего вида в соответствующей области машинной памяти последовательно по столбцам должны быть записаны М элементов Qi,, йл 1,. ... а м, , ами. [c.17] Пример показывает, что если фактический размер матрицы М меньше указанного максимального размера УИО в операторе DIMENSION, то элементы в ячейках памяти располагаются не подряд. Порядковый номер ячейки К, соответствующей элементу А(1, J), определяется формулой К = (J 1) МО -f I, где МО — максимально возможная длина столбца. [c.18] Однако, как отмечалось выше, в вызываемой стандартной подпрограмме матрица А представлена в виде массива переменной длины, а элементы матрицы должны быть расположены в массиве А под ряд без пропусков ячеек. Поэтому при обращении к стандартной подпрограмме, проводимом при М = 3, будут использованы числа, содержащиеся в первых девяти (М М — 3 3 =9) ячейках, за резервированных под массив А в вызывающей программе. Очевидно, что эти числа не соответствуют коэффициентам построенной в вызывающей программе матрицы А (3, 3). Это происходит потому, что при описании матрицы в подпрограмме в виде массива А (М, М) переменной длины выбор номера К ячейки памяти, соответствующей элементу А (I, J), производится на основе формулы К = (J — 1) М -Ь I, где М — фактическая длина столбца, указанная при обращении к подпрограмме. Таким образом, при М М0 матрица А будет передаваться в подпрограмму неправильно. [c.18] Переход к векторной форме хранения матриц, необходимый для работы со стандартными подпрограммами, можно осуществить одним из следующих трех способов. [c.18] Если матрица имеет специальный вид, например является симметричной или ленточной, то для работы со стандартными подпрограммами коэффициенты матрицы всегда должны быть записаны подряд в одномерный массив в последовательности, зависящей от вида матрицы и используемой подпрограммы. Примеры таких способов записи штриц будут рассмотрены ниже. [c.19] Перейдем к краткому описанию ряда наиболее важных подпрограмм. [c.19] В главах 3 и 4 будут рассмотрены еще две подпрограммы SYSTRD—для решения систем с трехдиагональной матрицей и МСНВ — для решения систем уравнений с ленточной симметричной матрицей методом квадратного корня. [c.21] Вернуться к основной статье