Решение систем линейных уравнений по методу Гаусса

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

 

 

 

1.Main.cpp-головной модуль

2.show_vector.cpp, show_vector.h- служит для вывода столбцом свободных членов. матрицы на экран

3.pryamoi_hod.cpp,pryamoi_hod.h-модуль служит для вывода получившейся матрицы путем линейных преобразований на экран

4.obratni_hod.cpp, obratni_hod.h-модуль служит для нахождения неизвестных и вывода результата на экран

 

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

 

В данной работе задача разработки прикладной программы формирования видеотеки была решена с использованием технологии сверху-вниз. На основании проведенной отладки и испытаний с помощью контрольных примеров можно сделать вывод, что полученная прикладная программа решает поставленную задачу правильно и в полном объеме.

В результате выполнения курсового проекта были разработаны решение простейших задач линейной алгебры. Число этих функций сравнительно невелико, однако можно легко добавить в более сложные функции, построенные на базе уже имеющихся. Программа позволяет работать с матрицами и векторами, элементы которых могут быть любого типа, однако на практике чаще всего используется целый тип и тип чисел с плавающей запятой. Программа написана на языке С++, однако может быть легко переписана на любом из современных языков программирования, так как приведены довольно простые алгоритмы всех компонентных функций. Были максимально предусмотрены всевозможные ошибки, которые могут возникнуть при использовании функций . Особое внимание уделялось разумному выделению памяти подобъекты во время выполнения программы, поэтому все функции были тщательно отлажены.Данные функции могут быть эффективно применены на практике в задачах, требующих операций с матрицами и векторами, а также связанных с решением систем линейных алгебраических уравнений.

 

6.Список рекомендуемой литературы

 

1. Керниган, Брайан У., Ритчи, Деннис М. Язык программирования С, 2-е издание.: Пер. с анг.- М.: Вильямс, 2006.

. С.А. Орлов. Технологии разработки программного обеспечения. Учебное пособие. 2-е изд. - СПб.: Питер, 2003. - 480 с.: ил.

. Шилдт, Герберт. Полный справочник по С, 4-е издание.: Пер. с анг.- М.: Вильямс, 2005.

. Борисенко В.В. Основы программирования - Интернет-университет информационных технологий - ИНТУИТ.ру, 328 стр. - 2005 г.

. Костюкова Н.И., Калинина Н.А. Язык Си и особенности работы с ним - Интернет-университет информационных технологий - ИНТУИТ.ру, 208 стр. 2006 г.

. Крутицкая Н.И., Тихонравов А.В., Шишкин А.А., Аналитическая геометрия и линейная алгебра с приложениями

 

7.Приложение

 

.1.Основная программа

 

// main.cpp

// головной модуль приложения

#include //i/o

#include //getch

#include

 

#include "obratni_hod.h"

#include "pryamoi_hod.h"

#include "show_vector.h"

main()

{i,j,n;**a, *b, *x;

{("Enter NUM of equations: ");

scanf("%d",&n);

//Выделяем память под матрицу А и векторы В и Х

a = (double **)malloc(n*sizeof(double));= (double *)malloc(n*sizeof(double));= (double *)malloc(n*sizeof(double));(i = 0; i < n; i++)

{[i] = (double *)malloc(n*sizeof(double));

//Ввод a(j = 0; j < n; j++)

{("a[%d][%d] = ",i + 1,j + 1);("%lf",&a[i][j]);

}

}

//Ввод b(i = 0; i < n; i++)

{("b[%d] = ",i + 1);("%lf",&b[i]);

}

("\tSee input\r\n");("Matrix A:\r\n");(i = 0; i < n; i++)(n, a[i]);("Vector B:\r\n");(n, b);

("\tSolving on Gauss method\r\n");(n, a, b);("Forvard Gauss course\r\n");//Прямой ход("Matrix A:\r\n");(i = 0; i < n; i++)(n, a[i]);("Vector B:\r\n");(n, b);

(n, a, b, x);("Back Gauss course\r\n");//Обратный ход("Matrix A:\r\n");(i = 0; i < n; i++)(n, a[i]);("Vector B:\r\n");(n, b);

("Results :\r\n");(n, x);

("Press Y for new input\r\n");

//Чистим память((void *)a);((void *)b);((void *)x);

}(toupper(getch()) == Y);0;

}

 

7.2.Модуль obratni_hod

 

// obratni_hod.h

// интерфейс модуля "obratni_hod.h "

 

#ifndef obratni_vector_h

#define obratni_vector_h

 

#include ObratniHod(int n, double **a, double *b, double *x);

#endif

 

// obratni_hod.cpp

// реализация модуля "obratni_hod "

#include "obratni_hod.h"

ObratniHod(int n, double **a, double *b, double *x)

{s = 0;[n - 1] = 1.0*b[n - 1]/a[n - 1][n - 1];(int i = n - 2, j; 0 <= i; i--)

{= 0;(j = i + 1; j < n; j++)

{= s+a[i][j]*x[j];

}[i] = 1.0*(b[i] - s)/a[i][i];

}

}

 

7.3.Модуль pryamoi_hod

 

// pryamoi_hod.h

// интерфейс модуля " pryamoi_hod.h"

 

#ifndef pryamoi_hod_h

#define pryamoi_hod_h

 

#include //i/oShowVector(int n, double * vec);

 

#endif

 

// pryamoi_hod.cpp

// реализация модуля " pryamoi_hod"

#include "pryamoi_hod.h"

PryamoiHod(int n, double **a, double *b)

{v;(int k = 0,i,j,im; k < n - 1; k++)

{= k;(i = k + 1; i < n; i++)

{(fabs(a[im][k]) < fabs(a[i][k]))

{= i;

}

}(im != k)

{(j = 0; j < n; j++)

{= a[im][j];[im][j] = a[k][j];[k][j] = v;

}= b[im];[im] = b[k];[k] = v;

}(i = k + 1; i < n; i++)

{= 1.0*a[i][k]/a[k][k];[i][k] = 0;[i] = b[i] - v*b[k];(v != 0)(j = k + 1; j < n; j++)

{[i][j] = a[i][j] - v*a[k][j];

}

}

}

}

 

.4.Модуль show_vector

 

// show_vector.h

// интерфейс модуля " show_vector"

 

#ifndef show_vector_h

#define show_vector_h

 

#include

#include

PryamoiHod(int n, double **a, double *b);

#endif

// show_vector.cpp

// реализация модуля "show_vector"

 

#include "show_vector.h"

ShowVector(int n, double * vec)

{(int i = 0; i < n; i++)("%.3f ",vec[i]);("\r\n");

}