Решить систему линейных алгебраических уравнений (СЛАУ) методом Гаусса

  • ID: 07010 
  • 28 страниц
250 рубСкачать

антиплагиат в подарок

SLAUGauss.cpp

SLAUGauss.exe

Отчет.docx

Содержание:


Постановка задачи

Решить систему линейных алгебраических уравнений (СЛАУ) методом Гаусса.

Программа была разработана в среде Visual C++6.0.

Текст программы

#include "stdio.h"

#include "iostream.h"

// возвращает true если LU-разложение для матрицы,

// состоящей из строк и столбцов с currRowAndColumn п numberOfEquation, было найдено

bool getLUDecomposition( double **matrixU, double **matrixL, int currRowAndColumn, int numberOfEquation ) {

bool result;

int i, k; // переменные циклов

double tempItem; // Вспомогательная переменная

// если текущий элемент на диагонали равен 0 - LU-разложение не найдено

result = ( matrixU[currRowAndColumn][currRowAndColumn] != 0 );

if ( result && currRowAndColumn < numberOfEquation - 1 ) {

// определение новых значений элементов матрицы U

// и получение нового столбца в матрице L

for ( i = currRowAndColumn + 1; i < numberOfEquation; i++ ) {

matrixL[i][currRowAndColumn] = matrixU[i][currRowAndColumn] / matrixU[currRowAndColumn][currRowAndColumn];

tempItem = - matrixL[i][currRowAndColumn];

for ( k = currRowAndColumn; k < numberOfEquation; k++ ) {

matrixU[i][k] = matrixU[i][k] + matrixU[currRowAndColumn][k]*tempItem;

}

}

// рекурсивный вызов

result = getLUDecomposition( matrixU, matrixL, currRowAndColumn + 1, numberOfEquation );

}

return result;

}

void main() {

int i, j;

int size;

double **matrixU, **matrixL;

cout