Метод Гаусса

Автор работы: Пользователь скрыл имя, 30 Мая 2012 в 20:13, курсовая работа

Описание

В современном мире техника проникла практически во все сферы человеческой жизни. С помощью ЭВМ решаются самые различные задачи. Одной из которых является нахождение определителя матрицы, в частности с помощью метода Гаусса.

Содержание

Введение……………………………………………………………….2
1.Описание метода Гаусса
2.Постановка задачи.………………………………………………..3
1.1. Математическая постановка задачи………………………….1
1.2. Входные данные………………………………………………..1
1.3. Выходные данные……………………………………………..2
3.Алгоритм решения задачи………………………………………..2
3.Контрольный пример……………………………………………..3
Заключение…………………………………………………………...3
Список используемой литературы………………………………..3
Приложение 1………………………………………………………..4
Приложение 2………………………………………………………..7

Работа состоит из  1 файл

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

— 104.50 Кб (Скачать документ)


Содержание

 

Введение……………………………………………………………….2

1.Описание метода Гаусса

2.Постановка задачи.………………………………………………..3

     1.1. Математическая постановка задачи………………………….1

     1.2. Входные данные………………………………………………..1

     1.3. Выходные данные……………………………………………..2

3.Алгоритм решения задачи………………………………………..2

3.Контрольный пример……………………………………………..3

Заключение…………………………………………………………...3

Список используемой литературы………………………………..3

Приложение 1………………………………………………………..4

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

 

 

 

 

 

 

 

 

 

 

 

 

Введение.

 

              В современном мире техника проникла практически во все сферы человеческой жизни. С помощью ЭВМ решаются самые различные задачи. Одной из которых является нахождение определителя матрицы, в частности с помощью метода Гаусса.

 

 

Метод Гаусса

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

Элементарные преобразования системы уравнений — это:

          Вычеркивание из системы тривиальных уравнений, т.е. таких, у которых все коэффициенты равны нулю;

          Умножение любого уравнения на число, отличное от нуля;

          Прибавление к любому i-му уравнению любого j-то уравнения, умноженного на любое число.

Элементарные преобразования переводят систему уравнений в равносильную.

 

. Решить систему уравнений методом Гаусса:

                                                      x +  y - 3z = 2,

                                                    3x - 2y +  z = - 1,

                                                    2x +  y - 2z = 0.

Решение. Выпишем расширенную матрицу данной системы

                                                    1   1   -3   2

                                                    3   -2   1   -1

                                                   2   1   -2   0

и произведем следующие элементарные преобразования над ее строками:

а) из ее второй и третьей строк вычтем первую, умноженную соответственно на 3 и 2:

 

 

 

                     1   1   -3   2             1   1   -3   2

                     3   -2   1   -1    ~      0   -5  10  -7

                      2   1   -2   0            0   1    4   -4

                  

б) третью строку умножим на (-5) и прибавим к ней вторую:

                                     1   1   -3   2

                                     0   -5  10  -7

                                     0   0  -10  13

В результате всех этих преобразований данная система приводится к треугольному виду:

 

                                                    x + y - 3z = 2,

                                                    0x -5y + 10z = -7,

                                                    0x+0y - 10z = 13.

 

Из последнего уравнения находим z = -1,3. Подставляя это значение во второе уравнение, имеем y = -1,2. Далее из первого уравнения получим

x = - 0,7.

 

 

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

 

Написать программу, вычисляющую определитель

квадратной матрицы с помощью метода Гаусса.

Основной задачей является практическое освоение курса «Языки и методы программирования» учебного плана специальности 010400 «Прикладная математика и информатика», очной формы обучения. Овладевание навыками работы со специальной литературой.

 

 

 

 

1.c. Математическая постановка задачи:

 

      |a11 a 12 ...a1n |                       |b11 b12 ...  b1n  |            

A= |a21 a22 ... a2n |  =>           B= |0 b22 ...      b2n  | 

      |   .     .         .  |                       |   .     .         .      |

      |an1 an2 ... ann |                      |0 0  ...         bnn  |

 

1.d. Входные данные:

              Размерность вводимой далее матрицы

         Элементы матрицы

 

 

1.e. Выходные данные:

              Новая видоизменённая с помощью элементарных преобразований матрица,такая что элементы ниже главной диагонали равны 0.

2. Алгоритм решения задачи.

 

      Ввод размерности матрицы

      Выделение памяти под двумерный массив,заполнение массива вещественными элементами.

      Выполнение функции det

      Выполнение преобразований над элементами матрицы по формуле m[i][j] = m[i][j] - m[i][k] * m[k][j] / m[k][k];Где 0<k<n, j=k+1, i=k+1; (все действия происходятся в циклах)   

      Обнуление элементов,находящихся под главной диагональю(необходимо для вывода треугольной формы матрицы)

      Расчёт определителя

      Вывод на экран треугольного вида матрицы

      Освобождение памяти от массива delete [] mas[i]; delete [] mas;

 

 

 

 

 

 

 

 

3. Контрольный пример:

 

По составленной блок-схеме (см. Приложение 1) напишем код программы (см. Приложение 2).

Заключение:

 

              Суть метода Гаусса состоит в том, что с помощью некоторых операций исходную систему уравнений можно свести к более простой. Метод Гаусса позволяет решать любые линейные системы, он находит широкое применение и содержится в пакетах стандартных программ для ЭВМ.

Список использованной литературы:

      Ильин В. А., Позняк Э. Г. Линейная алгебра: Учебник для вузов. — 6-е изд., стер. — М.: ФИЗМАТЛИТ, 2004. — 280 с.

      Волков Е. А. Численные методы. — М.: Физматлит, 2003.

      Амосов А. А., Дубинский Ю. А., Копченова Н. П. Вычислительные методы для инженеров. — М.: Мир, 1998.

 

 

Приложение 1:

main

 

 

 

 

 

Det
 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение 2:

 

#include <iostream>

using namespace std;

 

float det(float **m, unsigned n);

 

int main()

{

setlocale(0, "");

cout << "Введите размерность матрицы: ";

unsigned n;

cin >> n;

 

float **mas = new float * [n]; //Объявление двумерного массива (матрицы nxn)

for (unsigned i = 0; i < n; i++)

  mas[i] = new float [n];

 

for (unsigned i = 0; i < n; i++) //Ввод матрицы

  for (unsigned j = 0; j < n; j++)

  {

   cout << "Введите mas[" << i+1 << ',' << j+1 << "]: ";

   cin >> mas[i][j];

  }

 

system("cls");

cout << "Введенная матрица:" << endl;

for (unsigned i = 0; i < n; i++) //Вывод матрицы

{

  for (unsigned j = 0; j < n; j++)

   cout << mas[i][j] << '\t';

  cout << endl;

}

 

cout << "\nОпределитель матрицы равен " << det(mas, n) << '.' << endl << "\nТреугольный вид матрицы:\n"; //Вывод определителя

 

for (unsigned i = 0; i < n; i++) //Вывод треугольного вида матрицы

{

  for (unsigned j = 0; j < n; j++)

   cout << mas[i][j] << '\t';

  cout << endl;

}

cout << endl;

 

for (unsigned i = 0; i < n; i++) //Удаление двумерного массива

  delete [] mas[i];

  delete [] mas;

system("pause");

return 0;

}

 

float det(float **m, unsigned n)

{

if (n == 1)

  return m[0][0];

 

for (unsigned k = 0; k < n; k++) //Преобразования над главной диагональю

  for (unsigned i = k + 1; i < n; i++)

   for (unsigned j = k + 1; j < n; j++)

    if (m[k][k])

     m[i][j] = m[i][j] - m[i][k] * m[k][j] / m[k][k];

 

for (unsigned i = 1; i < n; i++) //Обнуление эл-тов под главной диагональю

  for (unsigned j = 0; j < i; j++)

   m[i][j] = 0;

 

float det = m[0][0]; //Расчет определителя

for (unsigned i = 1; i < n; i++)

  det = det * m[i][i];

 

return det;

}

13

 



Информация о работе Метод Гаусса