Метод Гаусса решения СЛАУ

Автор работы: Пользователь скрыл имя, 21 Марта 2013 в 14:01, курсовая работа

Описание работы

Матрицы возникающих систем могут иметь различные структуры и свойства. Уже сейчас имеется потребность в решении систем линейных алгебраических уравнений с матрицами полного заполнения порядка нескольких тысяч. При решении ряда прикладных задач методом конечных элементов в ряде случаев появляются системы, обладающие симметричными положительно определёнными ленточными матрицами порядка несколько десятков тысяч с половиной ширины ленты до тысячи. И, наконец, при использовании в ряде задач метода конечных разностей необходимо решить системы разностных уравнений с разрежёнными матрицами порядка миллион. Одним из самых распространенных методов решения систем линейных алгебраических уравнений является метод Гаусса.

Содержание работы

ВВЕДЕНИЕ
1. ПОСТАНОВКА ЗАДАЧИ
2. МАТЕМАТИЧЕСКИЕ И АЛГОРИТМИЧЕСКИЕ ОСНОВЫ РЕШЕНИЯ ЗАДАЧИ
2.1 ОПИСАНИЕ МЕТОДА
2.2 АЛГОРИТМ
3. ФУНКЦИОНАЛЬНЫЕ МОДЕЛИ И БЛОК-СХЕМЫ РЕШЕНИЯ ЗАДАЧИ
4. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ РЕШЕНИЯ ЗАДАЧИ
5. ПРИМЕР ВЫПОЛНЕНИЯ ПРОГРАММЫ
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ

Файлы: 12 файлов

2. Содержание.doc

— 26.50 Кб (Скачать файл)

3. Введение.doc

— 27.50 Кб (Просмотреть файл, Скачать файл)

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

— 35.50 Кб (Просмотреть файл, Скачать файл)

4.2 Мат. и алг. основы решения задачи.doc

— 63.00 Кб (Просмотреть файл, Скачать файл)

4.2 Метод Гаусса.doc

— 44.50 Кб (Просмотреть файл, Скачать файл)

4.2.2 Алгоритм решения.doc

— 108.50 Кб (Просмотреть файл, Скачать файл)

4.3 Блок-схема.doc

— 29.50 Кб (Просмотреть файл, Скачать файл)

4.4 Метод Гаусса на С++.doc

— 29.00 Кб (Скачать файл)

4. Программная реализация  решения задачи

int razmer; //размер матрицы  
double **a, // матрица с коэфицентами  
*x, // х  
*b; // свободные члены  
/* Здесь переменной razmer необходимо присвоить размер матрицы */  
// создание динамических переменных  
b = new double[razmer];  
x = new double[razmer];  
a = new double*[razmer];  
for(int i=0; i < razmer; i++){  
a = new double[razmer];  
}  
/* Здесь нам надо присвоить значения матрице а, и заполнить свободные члены b */  
// начинаем решать)  
// частный случай, если размер матрицы == 1  
if(razmer == 1){  
if(a[0][0] != 0){  
cout << "x=" << b[0]/a[0][0] << endl;  
}else{  
cout << "Х любое" << endl;  
}  
getch();  
exit(0);  
}  
// прямой проход  
// идем слево на право по коэфицентам х  
for(int k=0; k < razmer-1; k++){  
// вычитаем по строкам  
for(int m=k+1; m < razmer; m++){  
// если на диагонали элемент = 0, то поменяем местами строки  
if(a[m][m] == 0) exchange(a, razmer, m, get_n_no_empty(a, razmer, m));  
 
double koeficent=a[m][k]/a[0][k];  
//вычисление новых коэфицентов уравнения  
b[m] = b[m] - b[0] * koeficent;  
for(int z=0; z < razmer; z++){  
a[m][z] = a[m][k] - a[0][k] * koeficent;  
}  
}  
}  
// ищем решения  
for(int m=razmer-1; m >= 0; m--){  
double sum=0;  
// идем по строке спаво налево, считая сумму корень*коэфицент, до текущего корня  
for(int i=razmer-1; i > m; i--){  
sum += x * a[m];  
}  
x[m] = (b[m] - sum)/a[m][m];  
}  
// вывод решений  
cout << "###Решения:" << endl;  
for(int i=0; i < razmer; i++){  
cout << "x[" << i << "]=" << x << endl;  
}  
pause();




4.5 Пример выполнения программы.doc

— 23.50 Кб (Просмотреть файл, Скачать файл)

5. Заключение.doc

— 28.50 Кб (Просмотреть файл, Скачать файл)

6. Список использованных источников и литературы.doc

— 27.00 Кб (Просмотреть файл, Скачать файл)

Блок-схема.gif

— 14.12 Кб (Скачать файл)

Информация о работе Метод Гаусса решения СЛАУ