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

Дослідження правил розв’язання системи лінійних алгебраїчних рівнянь методом Гауса, який полягає в зведенні квадратної системи до трикутного вигляду з використанням алгоритму послідовного виключення невідомих. Триангуляція матриці. Обчислення розв’язку.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык украинский
Дата добавления 18.01.2013
Размер файла 70,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

Національний університет «Львівська політехніка»

Кафедра автоматизованих систем управління

Звіт

до лабораторної роботи № 2

з курсу «Чисельні методи в інформатиці»

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

Виконала:

Ст. групи КН-31

Шевців Уляна

Прийняв: Романчук Я. П.

Львів - 2011

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

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

(1)

- шуканий вектор - розв'язок із відповідними компонентами.

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

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

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

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

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

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

лінійний алгебраїчний рівняння гаус

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

#include <vcl.h>

#pragma hdrstop

#include "SLAU.h"

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

#pragma package(smart_init)

#pragma link "CSPIN"

#pragma link "XPManifest"

#pragma resource "*.dfm"

TForm1 *Form1;

int k_z=4;

float A_mas[100][100]={{1.02,2,3,-2,6},{2,-0.02,-2,-3,7.84},{3,2,-1,1.98,0.08},{2,-3,2,1,-8.48}},

A[100][100]={{1.02,2,3,-2,6},{2,-0.02,-2,-3,7.84},{3,2,-1,1.98,0.08},{2,-3,2,1,-8.48}},

x_mas[100]={0};

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::StGrPaint ()

{

int i,j;

k_z=StrToInt(CSpinEdit1->Text);

StringGrid1->RowCount=k_z;

StringGrid1->ColCount=k_z;

StringGrid3->RowCount=k_z;

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

{

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

{

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

}

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

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

}

}

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

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,

int ARow, TRect &Rect, TGridDrawState State)

{

int H;

AnsiString str;

PChar s;

Cardinal Flag;

((TStringGrid*)Sender)->Canvas->FillRect(Rect);

str = ((TStringGrid*)Sender)->Cells[ACol][ARow];

s = str.c_str();

Flag = DT_CENTER;

Flag = Flag | DT_WORDBREAK;

Rect.Left+=3;

Rect.Right+=3;

H = DrawTextA(((TStringGrid*)Sender)->Canvas->Handle,s,strlen(s),&Rect,Flag);

if (H > ((TStringGrid*)Sender)->RowHeights[ARow])

((TStringGrid*)Sender)->RowHeights[ARow] = H;

}

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

void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,

int ARow, bool &CanSelect)

{

StGrPaint ();

}

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

void __fastcall TForm1::FormCreate(TObject *Sender)

{

StringGrid2->RowCount=-1;

StringGrid2->ColCount=-1;

StGrPaint ();

}

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

void __fastcall TForm1::StringGrid1KeyPress(TObject *Sender, char &Key)

{

if ((Key < '0' || Key > '9') && Key != 8 && Key != ',' && Key != '-') Key= 0;

}

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

void __fastcall TForm1::StringGrid1SetEditText(TObject *Sender, int ACol,

int ARow, const AnsiString Value)

{

if(Value!="")

{

AnsiString AS = Value;

if (AS.Pos(",")) AS.Delete(AS.Pos(","),1);

if (AS.Pos("-")==1) AS.Delete(AS.Pos("-"),1);

if ((AS.Pos(",")==0)&&(AS.Pos("-")==0)&&(Value!="-")&&(Sender==StringGrid1)) A[ARow][ACol]=StrToFloat(Value);

if ((AS.Pos(",")==0)&&(AS.Pos("-")==0)&&(Value!="-")&&(Sender==StringGrid3)) A[ARow][k_z]=StrToFloat(Value);

}

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int k,i,j;

StringGrid2->RowCount=k_z;

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];

}

StGrPaint ();

}

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

void __fastcall TForm1::CSpinEdit1Change(TObject *Sender)

{

StGrPaint ();

}

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

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

Висновок

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

Размещено на Allbest.ru


Подобные документы

  • Розробка програмних модулів базових операцій обробки на підставі розрядно-логарифмічного кодування. Дослідження алгоритму розв'язку системи лінійних алгебраїчних рівнянь. Реалізація алгоритму Гауса. Покращення точності розрахунків за допомогою рл-чисел.

    курсовая работа [427,2 K], добавлен 20.11.2013

  • Програма чисельного розв'язку систем лінійних алгебраїчних рівнянь (СЛАР) з розрідженою матрицею, економне витрачання оперативної пам'яті дозволяє розв’язувати багато систем високих ступенів за допомогою персональних комп'ютерів. Методи розв’язку СЛАР.

    дипломная работа [1,1 M], добавлен 01.08.2009

  • Головні особливості середовища Turbo Pascal. Властивості та вигляд системи лінійних алгебраїчних рівнянь. Опис схеми єдиного ділення (метод Гауса). Структура вхідної та вихідної інформації, текст програми, блок-схеми всіх процедур і головної програми.

    курсовая работа [276,1 K], добавлен 07.02.2011

  • Розв’язання системи рівняння методом Гауса за схемою з частковим вибором головного елементу. Рішення задачі Коші методом Рунге-Кутта. Знаходження моментів кубічних сплайнів методом прогонки. Розв’язування системи нелінійних рівнянь методом Ньютона.

    контрольная работа [252,3 K], добавлен 04.06.2010

  • Розв’язання системи лінійних та нелінійних рівнянь у програмі MathCAD. Матричний метод розв'язання системи рівнянь. Користування панеллю інструментів Математика (Math) для реалізації розрахунків в системі MathCAD. Обчислення ітераційним методом.

    контрольная работа [1023,4 K], добавлен 08.04.2011

  • Основні означення системи лінійних рівнянь. Елементарні перетворення системи лінійних рівнянь. Алгоритм метода Жордана-Гаусса. Метод повного виключення невідомих. Приклад використовування методу Жордана-Гаусса. Складання програму мовою Borland C++ 4.5.

    курсовая работа [139,6 K], добавлен 20.12.2013

  • Види рівнянь та методи їх розв’язань. Чисельні методи уточнення коренів, постановка задачі. Рішення нелінійного рівняння методом простих та дотичних ітерацій. Використання програмних засобів. Алгоритми розв’язку задач. Програми мовою С++, їх тестування.

    курсовая работа [232,2 K], добавлен 12.02.2013

  • Задача лінійного програмування. Розв’язання задачі геометричним методом. Приведення системи рівнянь до канонічного вигляду. Розв’язання симплекс-методом. Розв’язок двоїстої задачі. Задача цілочислового програмування і дробово-лінійного програм.

    контрольная работа [385,2 K], добавлен 04.06.2009

  • Розв’язання нелінійних алгебраїчних рівнянь методом дихотомії. Вирішення задачі знаходження коренів рівняння. Розробка алгоритму розв’язання задачі і тестового прикладу. Блок-схеми алгоритмів основних функцій. Інструкція користувача програмою мовою С++.

    курсовая работа [2,0 M], добавлен 24.09.2010

  • Розробка програмного забезпечення для розв'язку системи лінійних рівнянь за формулами Крамера, головні особливості мови Turbo Pascal. Методи розв'язування задачі, архітектура програми та її опис. Контрольний приклад та результат машинного експерименту.

    курсовая работа [47,7 K], добавлен 23.04.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.