Автор работы: Пользователь скрыл имя, 16 Февраля 2013 в 16:57, курсовая работа
Розв’язком системи лінійних рівнянь означає знайти таку сукупність значень невідомих х, у, z, при підстановці яких в дану систему перетворює всі рівняння в тотожності.
Для розв’язку системи будемо використовувати матриці
1. Зміст завдання.
2. Виконання роботи в MathCAD 14.
3. Виконання роботи в Microsoft Excel.
4. Виконання роботи в Delphi 7.
Мiнiстерство науки та оcвiти
Національний гірничий університет
Кафедра ПЗКС
КУРСОВА РОБОТА
з дисципліни «Обчислювальна техніка
та програмне забезпечення»
Дніпропетровськ 2011 р.
Зміст
Дано систему лінійних рівнянь з трьома невідомими:
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. Розв'язання методом Крамера.
2. Розв'язання методом Гаусса
За замовчуванням нумерація індексів елементів векторів або матриць починається з 0.
Змінити початок нумерації можна за допомогою змінної ORIGIN
Формування розширеної матриці системи:
Приведення матриці D до трикутного виду:
Виділення розв'язку вихідної системи з матриці С:
3.Розв'язання матричним
4.Розв'язання за допомогою
5.Розв'язання за допомогою блоку Given...Find.
Система записана в загальноприйнятому виді; знак символьної рівності = вводиться з панелі Boolean:
Розв’язок за допомогою оберненої матриці.
Дано систему лінійних рівнянь:
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.
Розв’язано вірно.
Виконуємо проект за допомогою компонентів 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(A12.Caption)*
+StrToFloat(A13.Caption)*
-(StrToFloat(A31.Caption)*
+StrToFloat(A21.Caption)*
+StrToFloat(A11.Caption)*
LA.Caption:=
A11.Caption+'*'+A22.Caption+'*
' + '+A12.Caption+'*'+A23.Caption+
' + '+A13.Caption+'*'+A21.Caption+
' - (' +A31.Caption+'*'+A22.Caption+'
' + ' +A21.Caption+'*'+A12.Caption+'
' + ' +A11.Caption+'*'+A32.Caption+'
//МАТРИЦЯ А1 ( у нас R )
r:=StrToFloat(R11.Caption)*
+StrToFloat(R12.Caption)*
+StrToFloat(R13.Caption)*
-(StrToFloat(R31.Caption)*
+StrToFloat(R21.Caption)*
+StrToFloat(R11.Caption)*
LR.Caption:=
R11.Caption+'*'+R22.Caption+'*
' + '+R12.Caption+'*'+R23.Caption+
' + '+R13.Caption+'*'+R21.Caption+
' - (' +R31.Caption+'*'+R22.Caption+'
' + ' +R21.Caption+'*'+R12.Caption+'
' + ' +R11.Caption+'*'+R32.Caption+'
//МАТРИЦЯ А2 ( у нас D )
d:=StrToFloat(D11.Caption)*
+StrToFloat(D12.Caption)*
+StrToFloat(D13.Caption)*
-(StrToFloat(D31.Caption)*
+StrToFloat(D21.Caption)*
+StrToFloat(D11.Caption)*
LD.Caption:=
D11.Caption+'*'+D22.Caption+'*
' + '+D12.Caption+'*'+D23.Caption+
' + '+D13.Caption+'*'+D21.Caption+
' - (' +D31.Caption+'*'+D22.Caption+'
' + ' +D21.Caption+'*'+D12.Caption+'
' + ' +D11.Caption+'*'+D32.Caption+'
//(Функція FloatToStr перетворює математичну величину у текст)
//МАТРИЦЯ А3 ( у нас K )
k:=StrToFloat(K11.Caption)*
+StrToFloat(K12.Caption)*
+StrToFloat(K13.Caption)*
-(StrToFloat(K31.Caption)*StrT
+StrToFloat(K21.Caption)*
+StrToFloat(K11.Caption)*
LK.Caption:=
K11.Caption+'*'+K22.Caption+'*
' + '+K12.Caption+'*'+K23.Caption+
' + '+K13.Caption+'*'+K21.Caption+
' - (' +K31.Caption+'*'+K22.Caption+'
' + ' +K21.Caption+'*'+K12.Caption+'
' + ' +K11.Caption+'*'+K32.Caption+'
//Розраховуємо значення 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