Решение линейной системы уравнений в Delphy, MathCAD, Excel

Автор работы: Пользователь скрыл имя, 16 Февраля 2013 в 16:57, курсовая работа

Описание работы

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

Содержание работы

1. Зміст завдання.
2. Виконання роботи в MathCAD 14.
3. Виконання роботи в Microsoft Excel.
4. Виконання роботи в Delphi 7.

Файлы: 1 файл

kursovoy_Polishko.doc

— 667.50 Кб (Скачать файл)

Мiнiстерство науки та оcвiти

Національний гірничий університет

 

 

 

 

 

 

 

 

 

Кафедра ПЗКС

 

 

 

 

 

 

 

 

 

 

КУРСОВА РОБОТА

з дисципліни «Обчислювальна техніка

та програмне забезпечення»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                                                                                                          Провірив: доц. Кандзюба С. П.

                                                                                                                           

                                                                                                           Виконав: ст. гр. ЕЕ-10-1

                                                                                                           Полішко Микита  

                                                                                                           Варіант 7

 

 

 

 

 

 

 

Дніпропетровськ 2011 р.

 

Зміст

 

 

  1. Зміст завдання.
  2. Виконання роботи в MathCAD 14.
  3. Виконання роботи в Microsoft Excel.
  4. Виконання роботи в Delphi 7.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Зміст завдання.

 

 Дано систему лінійних рівнянь з трьома невідомими:

 

a11*x+2y-1,3z=10;

 

2,1x+a22*y+0,4z=6;  

 

3,1x-1,8y+ a33*z=4

 

де а11 = 3,3+0,1*К; a22 = 2,5+0,2*К; a33 = 5+0,25*К; К=7 (номер варіанту).

 Отримуємо:

 

4x+2y-1,3z=10;

2,1x+3,9y+0,4z=6;

3,1x-1,8y+6,75z=4


 

 Треба розв’язати її у трьох програмах  (MathCAD 14, Microsoft Excel, Delphi 7) будь-якими відомими методами.

 

 Розв’язком системи лінійних рівнянь означає знайти таку сукупність значень невідомих х, у, z, при підстановці яких в дану систему перетворює всі рівняння в тотожності.

 Для розв’язку системи будемо використовувати матриці.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Виконання роботи в MathCAD 14.

 

 Приведемо загальний вигляд документу:

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 Тепер розглянемо його детальніше:

 

 Завдання.

 

 Розв'язати систему лінійних алгебраїчних рівнянь, задану в матричній формі А*Х=В,

де матриця А - коефіцієнти  при невідомих, а матриця В - вільні члени.

 







 

 

 

 

 

1. Розв'язання методом  Крамера.

 

2. Розв'язання методом Гаусса

 За замовчуванням нумерація індексів елементів векторів або матриць починається з 0.

Змінити початок нумерації можна  за допомогою змінної ORIGIN

 

 Формування розширеної матриці системи:

 

 

 Приведення матриці D до трикутного виду:

 

 Виділення розв'язку вихідної системи з матриці С:

 

3.Розв'язання матричним методом.

4.Розв'язання за допомогою функції  isolve.

5.Розв'язання за допомогою блоку Given...Find.

 Система записана в загальноприйнятому виді; знак символьної рівності = вводиться з панелі Boolean:

  1. Виконання роботи в Microsoft Excel.

 Розв’язок за допомогою оберненої матриці.

 

Дано систему лінійних рівнянь:

4x+2y-1,3z=10;

 

2,1x+3,9y+0,4z=6;

 

3,1x-1,8y+6,75z=4

 

 

 Розв’язком буде матриця Х=А^(-1)*В, де Х – стовпець невідомих, А^(-1) – обернена матриця від матриці А з коефіцієнтами при невідомих, В – стовпець вільних членів.

 

 

4

2

-1,3

 

10

А:=

2,1

3,9

0,4

В:=

6

 

3,1

-1,8

6,75

 

4


 

 Обернена матриця А^(-1) находиться за допомогою функції МОБР(_:_), де "_:_ " – це діапазон ячійок, котрий займає матриця А. Після вводу діапазонів ячійок треба натиснути  клавішу F2, а потім клавіші CTRL+SHIFT+ENTER.

 

Розв’язок (матриця Х) знайдемо за допомогою функції МУМНОЖ(_:_;_:_). В скобках будуть задані діапазони ячійок матриць, котрі ми перемножуємо, тобто матриць А^(-1) і В. Після вводу діапазонів ячійок треба натиснути  клавішу F2, а потім клавіші CTRL+SHIFT+ENTER.

 

 

Перевірка: А*Х=В

Перевірку виконуємо за допомогою  функції МУМНОЖ(_:_;_:_). В скобки вводимо діапазони ячійок матриць А та Х. Після вводу діапазонів ячійок треба натиснути  клавішу F2, а потім клавіші CTRL+SHIFT+ENTER.

 

Розв’язано вірно.

  1. Виконання роботи в Delphi 7.

 

 Виконуємо проект за допомогою компонентів Panel, Edit, Label з панелі Standard:

 

 

 Форма матиме вигляд:

 

 

 Приведемо текст програми:

 

unit F1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls, StdCtrls, Math;

 

type

  TForm1 = class(TForm)

    Panel1: TPanel;

    Panel2: TPanel;

    E11: TEdit;

    E12: TEdit;

    E13: TEdit;

    E21: TEdit;

    E22: TEdit;

    E23: TEdit;

    E31: TEdit;

    E32: TEdit;

    E33: TEdit;

    E1: TEdit;

    E2: TEdit;

    E3: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    LA: TLabel;

    A11: TLabel;

    A12: TLabel;

    A13: TLabel;

    A21: TLabel;

    A22: TLabel;

    A23: TLabel;

    A31: TLabel;

    A32: TLabel;

    A33: TLabel;

    B1: TLabel;

    B2: TLabel;

    B3: TLabel;

    Button1: TButton;

    Label15: TLabel;

    R11: TLabel;

    R12: TLabel;

    R13: TLabel;

    R23: TLabel;

    R22: TLabel;

    R21: TLabel;

    R31: TLabel;

    R32: TLabel;

    R33: TLabel;

    Label25: TLabel;

    D11: TLabel;

    D12: TLabel;

    D13: TLabel;

    D23: TLabel;

    D22: TLabel;

    D21: TLabel;

    D31: TLabel;

    D32: TLabel;

    D33: TLabel;

    Label35: TLabel;

    K11: TLabel;

    K12: TLabel;

    K13: TLabel;

    K23: TLabel;

    K22: TLabel;

    K21: TLabel;

    K31: TLabel;

    K32: TLabel;

    K33: TLabel;

    Label16: TLabel;

    Label17: TLabel;

    Label18: TLabel;

    Label19: TLabel;

    Label20: TLabel;

    Label21: TLabel;

    Label22: TLabel;

    Label23: TLabel;

    LR: TLabel;

    Label26: TLabel;

    LD: TLabel;

    Label28: TLabel;

    LK: TLabel;

    Label24: TLabel;

    Label27: TLabel;

    Label29: TLabel;

    Label30: TLabel;

    Label31: TLabel;

    Label32: TLabel;

    Label33: TLabel;

    Label34: TLabel;

    Label36: TLabel;

    Label37: TLabel;

    Label38: TLabel;

    Label39: TLabel;

    Label40: TLabel;

    Label41: TLabel;

    Label42: TLabel;

    Label43: TLabel;

    Label44: TLabel;

    Label45: TLabel;

    Label46: TLabel;

    Label47: TLabel;

    Label48: TLabel;

    X: TLabel;

    Y: TLabel;

    Z: TLabel;

    LX: TLabel;

    LY: TLabel;

    LZ: TLabel;

    procedure E11Exit(Sender: TObject);

    procedure E12Exit(Sender: TObject);

    procedure E13Exit(Sender: TObject);

    procedure E21Exit(Sender: TObject);

    procedure E22Exit(Sender: TObject);

    procedure E23Exit(Sender: TObject);

    procedure E31Exit(Sender: TObject);

    procedure E32Exit(Sender: TObject);

    procedure E33Exit(Sender: TObject);

    procedure E1Exit(Sender: TObject);

    procedure E2Exit(Sender: TObject);

    procedure E3Exit(Sender: TObject)

//Ці процедури задаємо за допомогою інспектора об’єктів для кожного з Edit:

 

 

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.E11Exit(Sender: TObject);

begin

A11.Caption:=E11.Text;

D11.Caption:=E11.Text;

K11.Caption:=E11.Text;

end;

 

procedure TForm1.E12Exit(Sender: TObject);

begin

A12.Caption:=E12.Text;

D12.Caption:=E12.Text;

K12.Caption:=E12.Text;

end;

 

 

 

 

 

procedure TForm1.E13Exit(Sender: TObject);

begin

A13.Caption:=E13.Text;

D13.Caption:=E13.Text;

K13.Caption:=E13.Text;

end;

 

procedure TForm1.E21Exit(Sender: TObject);

begin

A21.Caption:=E21.Text;

R21.Caption:=E21.Text;

K21.Caption:=E21.Text;

end;

 

procedure TForm1.E22Exit(Sender: TObject);

begin

A22.Caption:=E22.Text;

R22.Caption:=E22.Text;

K22.Caption:=E22.Text;

end;

 

procedure TForm1.E23Exit(Sender: TObject);

begin

A23.Caption:=E23.Text;

R23.Caption:=E23.Text;

K23.Caption:=E23.Text;

end;

 

procedure TForm1.E31Exit(Sender: TObject);

begin

A31.Caption:=E31.Text;

R31.Caption:=E31.Text;

D31.Caption:=E31.Text;

end;

 

procedure TForm1.E32Exit(Sender: TObject);

begin

A32.Caption:=E32.Text;

R32.Caption:=E32.Text;

D32.Caption:=E32.Text;

end;

 

procedure TForm1.E33Exit(Sender: TObject);

begin

A33.Caption:=E33.Text;

R33.Caption:=E33.Text;

D33.Caption:=E33.Text;

end;

 

 

 

 

 

 

procedure TForm1.E1Exit(Sender: TObject);

begin

B1.Caption:=E1.Text;

R11.Caption:=E1.Text;

D21.Caption:=E1.Text;

K31.Caption:=E1.Text;

end;

 

procedure TForm1.E2Exit(Sender: TObject);

begin

B2.Caption:=E2.Text;

R12.Caption:=E2.Text;

D22.Caption:=E2.Text;

K32.Caption:=E2.Text;

end;

 

procedure TForm1.E3Exit(Sender: TObject);

begin

B3.Caption:=E3.Text;

R13.Caption:=E3.Text;

D23.Caption:=E3.Text;

K33.Caption:=E3.Text;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var

   a: Variant;

   r: Variant;

   d: Variant;

   k: Variant;

begin

 

//МАТРИЦЯ А (Функція StrToFloat перетворює текст у математичну величину)

 

a:=StrToFloat(A11.Caption)*StrToFloat(A22.Caption)*StrToFloat(A33.Caption)

   +StrToFloat(A12.Caption)*StrToFloat(A23.Caption)*StrToFloat(A31.Caption)

   +StrToFloat(A13.Caption)*StrToFloat(A21.Caption)*StrToFloat(A32.Caption)

   -(StrToFloat(A31.Caption)*StrToFloat(A22.Caption)*StrToFloat(A13.Caption)

   +StrToFloat(A21.Caption)*StrToFloat(A12.Caption)*StrToFloat(A33.Caption)

   +StrToFloat(A11.Caption)*StrToFloat(A32.Caption)*StrToFloat(A23.Caption));

 

LA.Caption:=

A11.Caption+'*'+A22.Caption+'*'+A33.Caption +

   ' + '+A12.Caption+'*'+A23.Caption+'*'+A31.Caption +

   ' + '+A13.Caption+'*'+A21.Caption+'*'+A32.Caption +

' - (' +A31.Caption+'*'+A22.Caption+'*'+A13.Caption +

' + ' +A21.Caption+'*'+A12.Caption+'*'+A33.Caption  +

  ' + ' +A11.Caption+'*'+A32.Caption+'*'+A23.Caption+') = '+ FloatToStr(a);

 

 

 

 

 

 

//МАТРИЦЯ А1 ( у нас R )

 

r:=StrToFloat(R11.Caption)*StrToFloat(R22.Caption)*StrToFloat(R33.Caption)

   +StrToFloat(R12.Caption)*StrToFloat(R23.Caption)*StrToFloat(R31.Caption)

   +StrToFloat(R13.Caption)*StrToFloat(R21.Caption)*StrToFloat(R32.Caption)

   -(StrToFloat(R31.Caption)*StrToFloat(R22.Caption)*StrToFloat(R13.Caption)

   +StrToFloat(R21.Caption)*StrToFloat(R12.Caption)*StrToFloat(R33.Caption)

   +StrToFloat(R11.Caption)*StrToFloat(R32.Caption)*StrToFloat(R23.Caption));

 

LR.Caption:=

R11.Caption+'*'+R22.Caption+'*'+R33.Caption +

   ' + '+R12.Caption+'*'+R23.Caption+'*'+R31.Caption +

   ' + '+R13.Caption+'*'+R21.Caption+'*'+R32.Caption +

' - (' +R31.Caption+'*'+R22.Caption+'*'+R13.Caption +

' + ' +R21.Caption+'*'+R12.Caption+'*'+R33.Caption  +

  ' + ' +R11.Caption+'*'+R32.Caption+'*'+R23.Caption+') = '+ FloatToStr(r);

 

//МАТРИЦЯ А2 ( у нас D )

 

d:=StrToFloat(D11.Caption)*StrToFloat(D22.Caption)*StrToFloat(D33.Caption)

   +StrToFloat(D12.Caption)*StrToFloat(D23.Caption)*StrToFloat(D31.Caption)

   +StrToFloat(D13.Caption)*StrToFloat(D21.Caption)*StrToFloat(D32.Caption)

   -(StrToFloat(D31.Caption)*StrToFloat(D22.Caption)*StrToFloat(D13.Caption)

   +StrToFloat(D21.Caption)*StrToFloat(D12.Caption)*StrToFloat(D33.Caption)

   +StrToFloat(D11.Caption)*StrToFloat(D32.Caption)*StrToFloat(D23.Caption));

 

LD.Caption:=

D11.Caption+'*'+D22.Caption+'*'+D33.Caption +

   ' + '+D12.Caption+'*'+D23.Caption+'*'+D31.Caption +

   ' + '+D13.Caption+'*'+D21.Caption+'*'+D32.Caption +

' - (' +D31.Caption+'*'+D22.Caption+'*'+D13.Caption +

' + ' +D21.Caption+'*'+D12.Caption+'*'+D33.Caption  +

  ' + ' +D11.Caption+'*'+D32.Caption+'*'+D23.Caption+') = '+ FloatToStr(d);

 

//(Функція FloatToStr перетворює математичну величину у текст)

//МАТРИЦЯ А3 ( у нас K )

 

k:=StrToFloat(K11.Caption)*StrToFloat(K22.Caption)*StrToFloat(K33.Caption)

   +StrToFloat(K12.Caption)*StrToFloat(K23.Caption)*StrToFloat(K31.Caption)

   +StrToFloat(K13.Caption)*StrToFloat(K21.Caption)*StrToFloat(K32.Caption)

   -(StrToFloat(K31.Caption)*StrToFloat(K22.Caption)*StrToFloat(K13.Caption)

   +StrToFloat(K21.Caption)*StrToFloat(K12.Caption)*StrToFloat(K33.Caption)

   +StrToFloat(K11.Caption)*StrToFloat(K32.Caption)*StrToFloat(K23.Caption));

 

LK.Caption:=

K11.Caption+'*'+K22.Caption+'*'+K33.Caption +

   ' + '+K12.Caption+'*'+K23.Caption+'*'+K31.Caption +

   ' + '+K13.Caption+'*'+K21.Caption+'*'+K32.Caption +

' - (' +K31.Caption+'*'+K22.Caption+'*'+K13.Caption +

' + ' +K21.Caption+'*'+K12.Caption+'*'+K33.Caption  +

  ' + ' +K11.Caption+'*'+K32.Caption+'*'+K23.Caption+') = '+ FloatToStr(k);

 

 

 

//Розраховуємо значення X  Y  Z

 

LX.Caption:= FloatToStr(r)+' / ' +   FloatToStr(a)+' = ';

LY.Caption:= FloatToStr(d)+' / ' +   FloatToStr(a)+' = ';

LZ.Caption:= FloatToStr(k)+' / ' +   FloatToStr(a)+' = ';

X.Caption:= FloatToStr(RoundTo(r/a,-3));

Y.Caption:= FloatToStr(RoundTo(d/a,-3));

Z.Caption:= FloatToStr(RoundTo(k/a,-3));

 

//Функція RoundTo(…,-3) округлює величину до третього знаку після коми

 

  end;

 

end.

 

 Після натиснення клавіші F9 (Run) та вводу коефіцієнтів при невідомих отримаємо:

 

 

 

 


Информация о работе Решение линейной системы уравнений в Delphy, MathCAD, Excel