Решение системы линейных уравнений n порядка - C (СИ)
Формулировка задачи:
Нужно составить
решение системы линейных уравнений n-го порядка
.Решение задачи: «Решение системы линейных уравнений n порядка»
textual
Листинг программы
/*Метод Гаусса*/
double tmp, xx[column];
int k;
/*прямой ход*/
for( i = 0; i < row; i++)
{
tmp = matrix[i][i];
for( j = row; j >= i; j--)
matrix[i][j] /= tmp;
for( j = i + 1; j < row; j++)
{
tmp = matrix[j][i];
for( k = row ; k >= i; k--)
matrix[j][k] -= tmp*matrix[i][k];
}
}
/*обратный ход*/
xx[row - 1] = matrix[row - 1][row];
for( i = row - 2; i >= 0; i--)
{
xx[i] = matrix[i][row];
for( j = i + 1; j < row; j++)
xx[i] -= matrix[i][j] * xx[j];
}
Объяснение кода листинга программы
В этом коде решается система линейных уравнений методом Гаусса. Вот список действий:
- Создаются временная переменная tmp и массив xx для хранения результатов.
- Выполняется прямой ход метода Гаусса:
- Для каждого i-го столбца (от 0 до row-1)
- Создается временная переменная tmp, которая равна i-му элементу в i-м столбце матрицы.
- Делается i-1 переходов по столбцам от i до 0, и на каждой строке (от i до 0) умножается i-й элемент на соответствующий элемент в i-м столбце и вычитается из соответствующих элементов в столбцах, начиная с i+1.
- Для каждого i-го столбца (от 0 до row-1)
- Выполняется обратный ход метода Гаусса:
- Создается массив xx размером row, где каждый элемент равен i-му элементу в i-м столбце матрицы.
- Для каждого i-го столбца (от row-1 до 0)
- Создается временная переменная tmp, которая равна i-му элементу в i-м столбце матрицы.
- Делается i-1 переходов по столбцам от i до 0, и на каждой строке (от i до 0) умножается i-й элемент на соответствующий элемент в i-м столбце и вычитается из соответствующих элементов в столбцах, начиная с i+1.