Міністерство освіти і науки України
Тернопільський національний технічний університет
імені Івана Пулюя
Кафедра комп’ютерних наук
ЛАБОРАТОРНА РОБОТА №3
з дисципліни “Теорія алгоритмів”
Тема роботи: Серіалізм та паралелізм у обчислювальних алгоритмах.
Тернопіль – 2010
Мета роботи: Вивчення серіалізму та паралелізму структури обчислювальних алгоритмів на прикладі алгоритмів фільтрації сигналів.
Завдання до лабораторної роботи
Для алгоритму, який описується заданою системою рівнянь (табл.1.)
1. Побудувути структурну та граф-схеми алгоритму;
2. Записати різницеве рівняння;
3. Скласти программу реалізації такого алгоритму на ЕОМ у якій:
а. операції множення та сумування реалізувати у вигляді окремих підпрограм;
b. на вхід алгоритму подати послідовність з 20 відліків синусоїди;
с. забезпечити підрахунок кількості викликів підпрограм множення та додавання.
4. Оформити звіт по виконаній роботі.
Варіант 7:
Хід роботи
1. Побудував структурну схему алгоритму
2. Побудував граф схему алгоритму
3. Різницеве рівняння алгоpитму
x5 = 44z-1 x2/(42z-1-3)
x1 = x2 – 44 Z-1 x2 – 24 Z-2 x2 / (42z-1-3)
Функція передачі в часовій формі:
H(z) = x5 / x1;
H(z) = 44z-1 / (1 – 44 Z-1 – 24 Z-2);
4. Блок – схема
Блок-схема процедури додавання(Dodavania)
Блок-схема процедури множення (Mnogenia)
5. Текст програми
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series;
type
TForm1 = class(TForm)
Button1: TButton;
Chart1: TChart;
Series1: TFastLineSeries;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
function Mnogenia(m1:real; m2:extended): extended;
function Dodavania(d1:extended; d2:extended): extended;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
n=20;
var
Form1: TForm1;
k_dod, k_mnog:integer;
i:integer;
x1,x2,x3,x4,x5:extended;
inx: array[1..n] of real;
outx: array[1..n] of extended;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
x1:=0; x2:=0; x3:=0; x4:=0; x5:=0;
k_dod:=0; k_mnog:=0;
inx[1]:=1;
for i:=2 to n do
inx[i]:=0;
for i := 1 to n do
begin
outx[i]:=x5;
x5:= x4;
x4:=Dodavania(Mnogenia(2,x2),Dodavania(Mnogenia(3,x3),Mnogenia(12,x5)));
x3:=x2;
x2:= Dodavania(Mnogenia(44,x3),Dodavania(Mnogenia(2,x4),Dodavania(Mnogenia(21,x5),x1)));
x1:=inx[i];
end;
Form1.Label1.Caption:='x1='+ floattostr(x1);
Form1.Label2.Caption:='x2='+ floattostr(x2);
Form1.Label3.Caption:='x3='+ floattostr(x3);
Form1.Label4.Caption:='x4='+ floattostr(x4);
Form1.Label5.Caption:='x5='+ floattostr(x5);
Form1.Label6.Caption:='Ôóíêö³ÿ äîäàâàííÿ âèêëèêàëàñÿ '+ inttostr(k_dod);
Form1.Label7.Caption:='Ôóíêö³ÿ ìíîæåííÿ âèêëèêàëàñÿ '+ inttostr(k_mnog);
series1.Clear;
for i:=1 to n do
begin
Series1.Add(outx[I]) ;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
function TForm1.Dodavania(d1:extended; d2:extended): extended;
begin
k_dod:= k_dod+1;
Dodavania:=d1+d2;
end;
function TForm1.Mnogenia(m1:real; m2:extended):extended;
begin
k_mnog:= k_mnog+1;
Mnogenia:=m1*m2;
end;
end.
6. Результати роботи
Висновки: На лабораторній роботі, я створив програму, де реалізував операції множення та сумування у вигляді окремих підпрограм, забезпечив підрахунок кількості викликів підпрограм множення та додавання.