Скачиваний:
0
Добавлен:
01.03.2025
Размер:
683.01 Кб
Скачать

Информационная структура

Входные данные

  • n – количество уравнений – целое число >0;

  • A – двумерный массив с матрицей – nxn типа Double;

  • B – одномерный массив с вектором – n чисел типа Double;

Локальные данные

  • i – номер элемента вектора решений – целое число от 1 до n;

  • XOrder – одномерный массив с исходными порядковыми номерами вектора решений – n целых чисел;

Выходные данные

  • X – одномерный массив с вектором решений – n чисел типа Double, определён при ECode=0;

  • ECode – код ошибки для хранения информации о том, что система имеет решение, несовместна или неопределённа – целое число.

Разработка алгоритма

Рисунок 20. Схема алгоритма процедуры решения СЛАУ методом Гаусса

Разработка исходного текста процедуры

Sub GaussSolve(A() As Double, B() As Double, X() As Double, n As Long, ECode As Byte)

Dim XOrder() As Long, i As Long

ReDim XOrder(1 To n) 'размер локального массива

For i = 1 To n 'по строкам i от 1 до n

XOrder(i) = i 'исходный порядок

Next i 'следующий элемент

ForwardStage A, B, XOrder, n, ECode 'Прямой ход

If ECode = 0 Then BackStage A, B, X, XOrder, n 'Обратный ход

End Sub

Процедура прямого хода.

В процессе прямого хода главную матрицу приводят к верхнетреугольной форме, обнуляя значения столбцов под главной диагональю. Столбцы обрабатываются последовательно, начиная с первого. Для каждого из столбцов выполняется поиск и перемещение главного элемента столбца на главную диагональ. Поиск осуществляется в части матрицы, не содержащей уже обработанных столбцов и соответствующих им строк с главными элементами. Для обнуления элементов столбца под главной диагональю, получившуюся после перестановки строку с главным элементом столбца вычитают из остальных строк, предварительно помножив на величину, равную отношению элемента обнуляемого столбца каждой из остальных строк (если он уже не нулевой) к главному элементу столбца.

Если система имеет единственное решение, в каждом столбце главный элемент не будет равен нулю. Если у одного из столбцов главный элемент получился равным нулю, то если соответствующий элемент вектора свободных членов тоже равен нулю, система неопределённа, иначе – несовместна.

Информационная структура

Входные данные

  • n – количество уравнений – целое число >0;

  • A – двумерный массив с матрицей – nxn типа Double;

  • B – одномерный массив с вектором – n чисел типа Double;

  • XOrder – одномерный массив с исходными порядковыми номерами вектора решений – n целых чисел;

Локальные данные

  • i – номер текущего диагонального элемента массива, под которым будет обнуляться столбец – целое;

  • j – номер текущей строки массива, в которой обнуляется i-й элемент – целое;

  • k – номер элемента строки, i-й столбец которой обнуляется – целое;

  • C – коэффициент, при умножении на который элемент i-го столбца j-й строки будет равен текущему диагональному - типа Double;

Выходные данные

  • ECode – код ошибки – целое число.

  • A – двумерный массив с верхнетреугольной матрицей – nxn типа Double, определён при ECode=0;

  • B – одномерный массив с преобразованным вектором свободных членов – n чисел типа Double, определён при ECode=0;

  • XOrder – одномерный массив с порядковыми номерами вектора решений – n целых чисел, определён при ECode=0;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]