Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №32.doc
Скачиваний:
12
Добавлен:
01.05.2014
Размер:
129.02 Кб
Скачать

1995-98 (C) сПбГэту, Мойсейчук Леонид.

Список обработанных файлов.

----------------------------------------------------------------------

NN Имя обработанного файла

----------------------------------------------------------------------

1. Plab1.pas

----------------------------------------------------------------------

Таблица с результатами измерений ( используется 2 из 416 записей )

----------------------------------------------------------------------

Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)

----------------------------------------------------------------------

1 : 1 1 : 2 214.01 1 214.01

----------------------------------------------------------------------

Профилирование программы интегрирования методом Симпсона

(измерение времен выполнения функциональных участков)

uses sampler;

const szUnit : string = 'Plab1.pas';

const tol = 1.0E-4;

var sum,upper,lower,

erf,twopi : real;

function fx(x: real): real;

begin

fx:=exp(-x*x)

end;

procedure simps(lower,upper,tol : real; var sum : real);

var i : integer;

x,delta_x,even_sum,

odd_sum,end_sum,

sum1 : real;

pieces : integer;

begin

pieces:=2;

delta_x:=(upper-lower)/pieces;

odd_sum:=fx(lower+delta_x);

even_sum:=0.0;

end_sum:=fx(lower)+fx(upper);

sum:=(end_sum+4.0*odd_sum)*delta_x/3.0;

writeln(pieces:5,sum);

repeat

pieces:=pieces*2;

sum1:=sum;

delta_x:=(upper-lower)/pieces;

even_sum:=even_sum+odd_sum;

odd_sum:=0.0;

for i:=1 to pieces div 2 do

begin

x:=lower+delta_x*(2.0*i-1.0);

odd_sum:=odd_sum+fx(x)

end;

sum:=(end_sum+4.0*odd_sum+2.0*even_sum)*delta_x/3.0;

until abs(sum-sum1)<=abs(tol*sum1)

end;

begin

Sample(szUnit,1);

twopi := 2.0/sqrt(pi);

Sample(szUnit,2);

lower := 0.0;

Sample(szUnit,3);

upper := 1;

Sample(szUnit,4);

writeln;

Sample(szUnit,5);

writeln('Erf? ');

Sample(szUnit,6);

if upper >= 0.0 then

begin

Sample(szUnit,7);

simps(lower,upper,tol,sum);

Sample(szUnit,8);

erf:=twopi*sum;

Sample(szUnit,9);

writeln('Erf of ',upper:7:2,', is ',erf:12:8);

Sample(szUnit,10);

end;

Sample(szUnit,11);

end.

Отчет о результатах измерений для программы PLAB1.EXE.

Создан программой Sampler ( версия от Feb 15 1999 )

1995-98 (C) сПбГэту, Мойсейчук Леонид.

Список обработанных файлов.

----------------------------------------------------------------------

NN Имя обработанного файла

----------------------------------------------------------------------

1. Plab1.pas

----------------------------------------------------------------------

Таблица с результатами измерений ( используется 11 из 416 записей )

----------------------------------------------------------------------

Исх.Поз. Прием.Поз. Общее время(мкс) Кол-во прох. Среднее время(мкс)

----------------------------------------------------------------------

1 : 1 1 : 2 8.00 1 8.00

----------------------------------------------------------------------

1 : 2 1 : 3 0.02 1 0.02

----------------------------------------------------------------------

1 : 3 1 : 4 0.02 1 0.02

----------------------------------------------------------------------

1 : 4 1 : 5 25.49 1 25.49

----------------------------------------------------------------------

1 : 5 1 : 6 33.11 1 33.11

----------------------------------------------------------------------

1 : 6 1 : 7 0.20 1 0.20

----------------------------------------------------------------------

1 : 7 1 : 8 103.24 1 103.24

----------------------------------------------------------------------

1 : 8 1 : 9 0.24 1 0.24

----------------------------------------------------------------------

1 : 9 1 : 10 50.52 1 50.52

----------------------------------------------------------------------

1 : 10 1 : 11 0.05 1 0.05

----------------------------------------------------------------------

Вывод: Оптимизация такая же как в программе на С++.

Профилирование оптимизированной программы интегрирования методом Симпсона

(измерение времени полного выполнения программы)

uses sampler;

const szUnit : string = 'Plab1.pas';

const tol = 1.0E-4;

var sum,upper,lower,

erf,twopi : real;

function fx(x: real): real;

begin

fx:=exp(-x*x)

end;

procedure simps(lower,upper,tol : real; var sum : real);

var i : integer;

x,delta_x,even_sum,

odd_sum,end_sum,

sum1 : real;

pieces : integer;

begin

pieces:=2;

delta_x:=(upper-lower)/pieces;

odd_sum:=fx(lower+delta_x);

even_sum:=0.0;

end_sum:=fx(lower)+fx(upper);

sum:=(end_sum+4.0*odd_sum)*delta_x/3.0;

writeln(pieces:5,sum);

repeat

pieces:=pieces*2;

sum1:=sum;

delta_x:=(upper-lower)/pieces;

even_sum:=even_sum+odd_sum;

odd_sum:=0.0;

for i:=1 to pieces div 2 do

begin

x:=lower+delta_x*(2.0*i-1.0);

odd_sum:=odd_sum+fx(x)

end;

sum:=(end_sum+4.0*odd_sum+2.0*even_sum)*delta_x/3.0;

until abs(sum-sum1)<=abs(tol*sum1)

end;

begin

Sample(szUnit,1);

twopi := 2.0/sqrt(pi);

lower := 0.0;

upper := 1;

if upper >= 0.0 then

begin

simps(lower,upper,tol,sum);

erf:=twopi*sum;

end;

Sample(szUnit,2);

end.

Отчет о результатах измерений для программы PLAB1.EXE.

Создан программой Sampler ( версия от Feb 15 1999 )