ВУЗ:
Составители:
Рубрика:
39
Порядок следования базисных и свободных переменных будет
сохранен в специальном массиве reoder.
// метод Жордана-Гаусса решения СЛАУ
public void JordanGauss ()
{
// создание копий матрицы коэффициентов и свободных
// членов для последующих преобразований
Matrix A = a.Copy();
Matrix B = b.Copy();
int count_null_cols = 0;
// проведение исключений по формулам Жордана-Гаусса
for(int i = 0; i < m; i++)
{
// исключение по i-ой строке
// проверка возможности исключения
// по значению ведущего элемента
if(A[i, i] != 0)
{
// исключение во всех строках, кроме ведущей
for(int k = 0; k < m; k++)
{
if(k == i)
continue;
double d = A[k, i] / A[i, i];
for(int j = i; j < n; j++)
A[k, j] = A[k, j] - d * A[i, j];
B[0, k] = B[0, k] - d * B[0, i];
}
// преобразование ведущей строки
for(int j = i + 1; j < n; j++)
A[i, j] /= A[i, i];
// преобразование i-ого свободного члена
B[0, i] /= A[i, i];
A[i, i] = 1;
}
else
{
// элемент главной диагонали
// в i-ой строке равен нулю
int k;
// поиск ненулевого элемента ниже
// в i-ом столбце
for(k = i + 1; k < m; k++)
if(A[k, i] != 0)
break;
if(k == m)
{
// все элементы столбца нулевые
Порядок следования базисных и свободных переменных будет сохранен в специальном массиве reoder. // метод Жордана-Гаусса решения СЛАУ public void JordanGauss () { // создание копий матрицы коэффициентов и свободных // членов для последующих преобразований Matrix A = a.Copy(); Matrix B = b.Copy(); int count_null_cols = 0; // проведение исключений по формулам Жордана-Гаусса for(int i = 0; i < m; i++) { // исключение по i-ой строке // проверка возможности исключения // по значению ведущего элемента if(A[i, i] != 0) { // исключение во всех строках, кроме ведущей for(int k = 0; k < m; k++) { if(k == i) continue; double d = A[k, i] / A[i, i]; for(int j = i; j < n; j++) A[k, j] = A[k, j] - d * A[i, j]; B[0, k] = B[0, k] - d * B[0, i]; } // преобразование ведущей строки for(int j = i + 1; j < n; j++) A[i, j] /= A[i, i]; // преобразование i-ого свободного члена B[0, i] /= A[i, i]; A[i, i] = 1; } else { // элемент главной диагонали // в i-ой строке равен нулю int k; // поиск ненулевого элемента ниже // в i-ом столбце for(k = i + 1; k < m; k++) if(A[k, i] != 0) break; if(k == m) { // все элементы столбца нулевые 39
Страницы
- « первая
- ‹ предыдущая
- …
- 38
- 39
- 40
- 41
- 42
- …
- следующая ›
- последняя »