3852

Розв’язування системи лінійних алгебраїчних рівнянь методом Гауса

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

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

Розв’язування системи лінійних алгебраїчних рівнянь методом Гауса Мета роботи: навчитись розв’язувати систему лінійних алгебраїчних рівнянь методом Гауса. Короткі теоретичні відомості Нехай задана система п лінійних рівнянь...

Украинкский

2012-11-09

120 KB

16 чел.

Розв’язування системи лінійних алгебраїчних рівнянь методом Гауса

Мета роботи: навчитись розв’язувати систему лінійних алгебраїчних рівнянь методом Гауса.

Короткі теоретичні відомості

Нехай задана система п лінійних рівнянь із  п  невідомими, яка в матричному записі має вигляд

(1)     – шуканий вектор – розв’язок із відповідними компонентами.

Метод Гауса полягає в зведенні квадратної системи (1) до трикутного вигляду з використан-ням алгоритму послідовного виключення невідомих.

Алгоритм методу Гауса складається з двох етапів:

  1.  Триангуляція матриці

  1.  Обчислення розв’язку

Варіант 17

наступну СЛАР розв’язати методом Гауса

X1=-0,44

X2=2,47

X3=-0,86

X4=-2.07

Текст програми:

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int k_z=4;

float A_mas[5][5]={{1.17,2,3,-2,6},{2,-0.17,-2,-3,6.64},{3,2,-1,1.83,0.68},{2,-3,2,1,-12.08}},

     A[5][5]={{1.17,2,3,-2,6},{2,-0.17,-2,-3,6.64},{3,2,-1,1.83,0.68},{2,-3,2,1,-12.08}},

     x_mas[4]={0};

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

       : TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

for (int i=0;i<=k_z;i++)

{

  for (int j=0;j<=k_z;j++)

  {

    StringGrid1->Cells[j][0]="X"+IntToStr(j+1);

    StringGrid1->Cells[i][j+1]=FloatToStrF(A[i][j],ffFixed,6,2);

  }

  StringGrid2->Cells[0][i]="X"+IntToStr(i+1);

  StringGrid3->Cells[0][i]=FloatToStrF(A[i][k_z],ffFixed,6,2);

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

 int k,i,j;

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

   for (j=0; j<=k_z; j++)

      A_mas[i][j]=A[i][j];

 for(k=0; k<k_z-1; k++)

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

     for(j=k_z; j>=k; j--)

       A_mas[i][j]=A_mas[i][j]*A_mas[k][k]-A_mas[k][j]*A_mas[i][k];

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

 {

   float sum=0;

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

     sum += A_mas[i][j]*x_mas[j];

   x_mas[i]=(A_mas[i][k_z]-sum)/A_mas[i][i];

 }

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

 StringGrid2->Cells[1][i]=FloatToStrF(x_mas[i],ffFixed,6,2);

}

//---------------------------------------------------------------------------

Результат виконання програми:

Висновок: На цій лабораторній роботі я розв’язав систему лінійних алгебраїчних рівнянь методом Гауса, а також запрограмував його.