ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// функция решения СЛАУ методом Жордана-Гаусса
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
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
// функция решения СЛАУ методом Жордана-Гаусса
template void 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
- …
- следующая ›
- последняя »
