51353

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

Лабораторная работа

Информатика, кибернетика и программирование

Руководство программиста Описание структуры программы Функции PHod осуществляет прямой ход; OHod осуществляет обратный ход; Описание структур данных Описание глобальных переменных использующихся в программе: int n размер матрицы; flot rr массив в котором хрантся элементы матрицы; flot ms копия масива rr; flot x массив решений системы уравнений; FILE file файл из которого берется матрица; FILE file2 файл в который записываются результаты; Описание алгоритмов Метод Гаусса для решения системы линейных...

Русский

2014-02-10

158 KB

7 чел.

Федеральное агентство по образованию Российской Федерации

Государственное образовательное учреждение

высшего профессионального образования

Нижегородский государственный университет им. Н.И. Лобачевского

Факультет вычислительной математики и кибернетики

Отчёт по лабораторной работе

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

Выполнил:

 студент ф-та ВМК гр. 81-05

Ляшук Д.А.

Проверил:

 ассистент каф. МО ЭВМ, ВМК

Кукаева С.А.

Нижний Новгород

2013 г.


Содержание

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

[2] Введение

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

[4] Руководство пользователя

[5]
Руководство программиста

[5.1] Описание структур данных

[5.2] Описание алгоритмов

[6]
Заключение

[7] Приложения

[7.1] Приложение 1


Введение

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

Пусть исходная система выглядит следующим образом

Матрица  называется основной матрицей системы,  — столбцом свободных членов.

Тогда согласно свойству элементарных преобразований над строками основную матрицу этой системы можно привести к ступенчатому виду (эти же преобразования нужно применять к столбцу свободных членов):


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

При выполнении лабораторной работы необходимо разработать программный комплекс для поиска методом Гаусса решений систем линейных уравнений вида

A*x = b,                                   

где А - числовая не особая (т.е. имеющая не равный нулю детерминант) квадратная матрица размером N на N, b - числовой вектор-столбец размером N, а x - искомый вектор-столбец размером N. Программный комплекс должен обеспечивать:

задание пользователем исходной системы уравнений  в текстовом файле;

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

экранное отображение формирующейся системы уравнений, результата, а так же запись результатов в текстовый файл.

 


Руководство пользователя

Для работы с программой пользователю необходимо ввести значения элементов матрицы в файл inp.txt. Причем матрица в файле должна быть записана следующим образом – первое число должно означать размер матрицы, а далее со следующей строки записана сама матрица, элементы которой разделены пробелом. Затем запустить программу.

Файл inp.txt.

Работа программы.

Результаты вычислений записываются в файл out.txt.


Руководство программиста

Описание структуры программы

Функции

PHod – осуществляет прямой ход;

OHod – осуществляет обратный ход;

Описание структур данных

Описание глобальных переменных, использующихся в программе:

     int n – размер матрицы;

 float** arr – массив, в котором хрантся элементы матрицы;

 float** mas – копия масива arr;

 float* x – массив решений системы уравнений;

FILE* file – файл, из которого берется матрица;

FILE* file2 – файл в который записываются результаты;

Описание алгоритмов

Метод Гаусса для решения системы линейных уравнений состоит в приведении матрицы А посредством эквивалентных преобразований (не меняющих решение системы [12]) к треугольному виду и последующему поиску решений для вновь полученной матрицы. Краткая схема первой части метода Гаусса - прямого хода - состоит в следующем.

Алгоритм прямого хода.

  1.  Движение по главной диагонали матрицы  А.
    В цикле по переменной  
    I  от  1 до N выполняются  Шаг 2 Шаг 6.

Выбор главного элемента. Полагается R:=A[I, I]. Если R=0, то реализуется поиск главного элемента.

Преобразование текущей строки матрицы путем деления всех значений ее элементов на главный элемент. В цикле по переменной  J  от  I до N+1 выполняются вычисления
A[IJ]:= A[IJ] / R.

Вычитание текущей строки из всех ниже расположенных строк с занулением I - ого элемента в каждой из них. В цикле по K от I + 1 до N выполняются Шаг 5 Шаг 6.

Полагается m:= A[KI].

Вычитание из очередной строки текущей строки. В  цикле по J  от  I  до  N+1  делаем A[KJ]:= A[KJ] - A[IJ]* m.

Конец алгоритма.

Алгоритм обратного хода.

  1.  Поиск, начиная с последнего, всех неизвестных системы - элементов вектора x. В цикле по переменной I от N до 0 выполняются Шаг 2 Шаг 3.

Задается начальное значение элемента x[I].
x[I]:=A[I,N] .

Корректируется искомое значение x[I]. В цикле по J от N-1 до I+1 (в случае, когда I=N, этот шаг не выполняется) производятся вычисления x[I]:=  x[I] - x[J]* A[IJ].

Конец алгоритма. 

Поиск главного элемента

  1.  Если главный элемент R=A[II] равен нулю, то в остальных элементах этого столбца ищется первый ненулевой элемент. Если такой найден и его номер равен K, то меняются местами I -ая и K -ая строки матрицы А.


Заключение

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


Приложения

Приложение 1

Исходный код программы

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include<Windows.h>

void phod(float**,int);

void ohod(float**, float*, int);

int main()

{

 int n,i,j;

 float** arr;

 float** mas;

 float* x;

FILE* file;

FILE* file2;

 

{

 file=fopen("inp.txt","r+");

 fscanf(file,"%d\n",&n);

}

   x=(float*)malloc(n*sizeof(float));

arr=(float**)malloc(n*sizeof(float*));

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

{

 arr[i]=(float*)malloc(n*sizeof(float));

}

mas=(float**)malloc(n*sizeof(float*));

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

{

 mas[i]=(float*)malloc(n*sizeof(float));

}

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

{

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

 {

  fscanf(file,"%f ",&arr[i][j]);

  mas[i][j]=arr[i][j];

 }

}

 //вывод массива  

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

{

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

 {

  printf("%.3f ", arr[i][j]);

 }

 printf("\n");

}

printf("\n");

//прямой ход  

 phod(arr,n);

 //зануляем массив x

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

  {

   x[i]=0;

  }   

//обратный ход

ohod(arr,x,n);

 

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

  {

   printf("\n x%d=%.4f ",i+1,x[i]);

  }

//запись результатов в файл

 

 file2=fopen("out.txt","w");

 

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

 {

  fprintf(file2,"x%d=%.4f  ",i+1,x[i]);

 }

 fprintf(file2,"\n\n");

 fclose(file2);

 

{

 return 0;

}

 

}

 //прямой ход

void phod(float** arr,int n)

{

 int i,j,k,l;

 float r,m;

 float h;

 

 

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

  {

   if (arr[i][i]==0)

   {

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

    {

     if (arr[l][i]!=0)

     {

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

      {

      h=arr[l][j];

      arr[l][j]=arr[i][j];

      arr[i][j]=h;

      }

     }

   }

   }

   r=(arr[i][i]);

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

   {

  (arr[i][j])= (arr[i][j])/r;

   }

  

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

  {

   m=arr[k][i];

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

   {

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

   }

     }

    }

// вывод прямого хода

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

{

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

 {

  printf("%.3f ", arr[i][j]);

   

 }

printf("\n");

}

}

//обратный ход

void ohod(float** arr, float* x, int n)

{

 int i,j;

 float c;

  for(i=n-1; i>=0; --i)

  {

   c=arr[i][n];

   x[i]=c;

   for(j=n-1; j>i; j--)

   {

    x[i]=x[i]-x[j]*arr[i][j];

   }

  }

  system("pause");

}


 

А также другие работы, которые могут Вас заинтересовать

83469. Доктрини визнання урядів 35.14 KB
  Історії міжнародного права відомі спеціальні доктрини про визнання урядів, названі іменами міністрів закордонних справ Еквадору Карлоса Тобара (доктрина Тобара) і Мексики Хенаро Естради (доктрина Естради), що сформувалися на початку XX століття в практиці держав американського континенту.
83471. Інститут правонаступництва держав в міжнародному праві. Джерела міжнародного правонаступництва 35.98 KB
  Джерела міжнародного правонаступництва Для стабільності міжнародних відносин важливе значення має послідовне виконання субєктами міжнародного права укладених ними міжнародних договорів їх міжнародних зобовязань щодо території власності членства у міжнародних організаціях тощо. Інститут правонаступництва у міжнародному праві є міжгалузевим інститутом: його норми містяться в праві міжнародних договорів праві міжнародних організацій міжнародному економічному праві та ін. Тривалий час основу інституту правонаступництва складали звичаєві...
83472. Поняття правонаступництва в міжнародному праві. Види і форми правонаступництва. Підстави правонаступництва 37.07 KB
  Види і форми правонаступництва. Підстави правонаступництва. Таким чином правонаступництво являє собою правовідносини у яких беруть участь дві сторони: державапопередниця яка була змінена іншою державою в процесі правонаступництва; державаспадкоємниця яка замінила іншу державу в процесі правонаступництва.
83473. Міжнародне правонаступництво держав щодо міжнародних договорів 38.6 KB
  Відносно усних договорів і договорів між державами й іншими субєктами міжнародного права діють звичаєві норми міжнародного права. встановлює наступні правила правонаступництва щодо міжнародних договорів: а у разі створення в результаті деколонізації нової незалежної держави діє принцип tbul rs чистої дошки: нова держава не звязана договорами укладеними колишніми державамиметрополіями і не зобовязана зберігати чинність будьякого договору або ставати його учасницею в силу виключно того факту...
83474. Міжнародно-правове регулювання правонаступництва держав відносно міжнародних договорів, державної власності, державних архівів та боргів 37.84 KB
  Однією з найважливіших проблем правонаступництва щодо державної власності є проблема компенсації за власність що переходить до державинаступниці. передбачається що в принципі такий перехід власності повинен відбуватися без компенсації якщо інше не узгоджено зацікавленими державам або не передано на вирішення відповідного міжнародного органу Державапопередниця зобовязана вжити всі заходи для запобігання пошкодження або знищення власності що переходить до державинаступниці. Правонаступництво не стосується власності яка знаходиться на...
83475. Правонаступництво України в зв’язку з розпадом СРСР 39.9 KB
  Правонаступництво України щодо Союзу PCP регулюється комплексом домовленостей з питань правонаступництва що були досягнуті між країнами які увійшли після розпаду СРСР у Співдружність Незалежних Держав серед них: Меморандум про взаємопорозуміння з питань правонаступництва щодо договорів колишнього Союзу PCP що становлять взаємний інтерес 1992 p. Україна є правонаступницею прав і обовязків СРСР які не суперечать Конституції України. було закріплено що кожна держава СНД має право підтвердити чинність для себе міжнародних договорів СРСР.
83476. Поняття і види територій в міжнародному праві 35.51 KB
  За правовим режимом територія поділяється на три основні види: 1 державна територія; 2 міжнародна територія; 3 територія із змішаним режимом. Державна територія це частина простору земної кулі що знаходиться під суверенітетом держави яка здійснює відносно неї і в її межах своє територіальне верховенство. Територія із змішаним режимом територія на якій одночасно діють норми міжнародного та національного права. До територій зі змішаним режимом також відноситься державна територія міжнародного користування що включає міжнародні річки...
83477. Демілітаризовані і нейтралізовані території 36.41 KB
  Демілітаризована територія - це територія, відносно якої держава прийняли міжнародне зобовязання скоротити або взагалі не розташовувати в її межах військові укріплення і споруди, певні види озброєнь збройних сил. Такі території створюються на основі міжнародних угод з метою забезпечення міжнародної безпеки.