ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// функция решения СЛАУ методом Жордана-Гаусса
template <class T> void Slau<T>::JordanGauss()
{
Matrix<T> A = a;
Matrix<T> B = b;
bool code = true;
int count_null_cols = 0;
for(int i = 0; i < m; i++)
{
if(A[i][i] != 0.0)
{
for(int k = 0; k < m; k++)
{
if(k == i)
continue;
T 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][j] / A[i][i];
B[0][i] = B[0][i] / A[i][i];
A[i][i] = 1;
}
else
{
int k;
for(k = i + 1; k < m; k++)
if(A[k][i] != 0.0)
break;
if(k == m)
{
if(i == n – 1 - count_null_cols)
{
count_null_cols++;
code = false;
break;
}
for(int j = 0; j < m; j++)
{
T t = A[j][i];
A[j][i] =
A[j][n-count_null_cols-1];
A[j][n-count_null_cols-1] = t;
}
int t = reoder[i];
reoder[i] =
224
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М. // функция решения СЛАУ методом Жордана-Гаусса templatevoid Slau ::JordanGauss() { Matrix A = a; Matrix B = b; bool code = true; int count_null_cols = 0; for(int i = 0; i < m; i++) { if(A[i][i] != 0.0) { for(int k = 0; k < m; k++) { if(k == i) continue; T 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][j] / A[i][i]; B[0][i] = B[0][i] / A[i][i]; A[i][i] = 1; } else { int k; for(k = i + 1; k < m; k++) if(A[k][i] != 0.0) break; if(k == m) { if(i == n – 1 - count_null_cols) { count_null_cols++; code = false; break; } for(int j = 0; j < m; j++) { T t = A[j][i]; A[j][i] = A[j][n-count_null_cols-1]; A[j][n-count_null_cols-1] = t; } int t = reoder[i]; reoder[i] = 224
Страницы
- « первая
- ‹ предыдущая
- …
- 222
- 223
- 224
- 225
- 226
- …
- следующая ›
- последняя »