Вычисление элементарных функцийРефераты >> Радиоэлектроника >> Вычисление элементарных функций
8. Листинг и описание подпрограммы функции
8.1.Листинг подпрограммы функции
function Fx(masFx,masFhx:m;Xm:word;var ad:word):longint;
var
dx,fx1:word;
begin
ad:=Xm shr 3;
dx:=Xm and $6;
fx1:=dx*masFhx[ad];
fx1:=fx1 shr 5;
Fx:=masFx[ad]+fx1;
end;
8.2. граф – схема алгоритма
9. Листинг программы
program kir;
uses crt,dos,graph;
type
m=array[0 8] of word;
const
h=0.0625;
Mh=64;
Mf=64;
Mfh=32;
Mx=128;
function Fx(masFx,masFhx:m;Xm:word;var ad:word):longint;
var
dx,fx1:word;
begin
ad:=Xm shr 3;
dx:=Xm and $6;
fx1:=dx*masFhx[ad];
fx1:=fx1 shr 5;
Fx:=masFx[ad]+fx1;
end;
var
masFx,masFhx:m;
masfxs,masfhxs,x:array[0 8] of real;
i,Xm,ad:word;
work,F,fxn,e,ev,em,fz:real;
gd,gm:integer;
xnext,xprev,y1next,y1prev:integer;
y2next,y2prev,y3next,y3prev:integer;
y4next,y4prev:integer;
begin
clrscr;
for i:=0 to 8 do begin
x[i]:=h*i;
masfxs[i]:= (exp(x[i])-exp(-x[i]))/2;
masfhxs[i]:= (exp(x[i])+exp(-x[i]))/2;
masFx[i]:=trunc(masfxs[i]*Mf);
masFhx[i]:=trunc(masfhxs[i]*Mfh);
end;
work:=0;
repeat
begin
Xm:=trunc(work*Mx);
F:=Fx(masFx,masFhx,Xm,ad);
fxn:=(exp(work)-exp(-work))/2;
e:=fxn-F/Mf;
fz:=masfxs[ad]+(work-x[ad])*masfhxs[ad];
ev:=fz-F/Mf;
em:=e-ev;
write(' ',work:5:4,' ',Xm:2,' ',fxn:4:4,' ',F:4:0,' ');
writeln(e:4:4,' ',ev:4:4,' ',em:4:4);
work:=work+h/4;
end;
until work>0.5;
writeln(' x X f(x) F(x) E Ev Em');
readln;
gd:=detect;
initgraph(gd,gm,'c:\language\bp\bgi');
cleardevice;
floodfill (0,0,white);
setcolor(black);
line(0,0,0,480);
line(0,240,640,240);
work:=0;
xnext:=1;
xprev:=0;
y2next:=240;
y1prev:=240-trunc((exp(work)-exp(-work))*120);y2prev:=240;
y3prev:=240;y4prev:=240;
repeat
begin
work:=work+h/4;
fxn:= (exp(work)-exp(-work))/2;
y1next:=240-trunc(fxn*240);
setcolor(green);
line(xprev,y1prev,xnext,y1next);
y1prev:=y1next;
Xm:=trunc(work*Mx);
F:=Fx(masFx,masFhx,Xm,ad);
e:=fxn-F/Mf;
y2next:=240-trunc(e*240);
setcolor(cyan);
line(xprev,y2prev,xnext,y2next);
y2prev:=y2next;
fz:=masfxs[ad]+(work-x[ad])*masfhxs[ad];
ev:=fz-F/Mf;
y3next:=240-trunc(ev*240);
setcolor(magenta);
line(xprev,y3prev,xnext,y3next);
y3prev:=y3next;
em:=e-ev;
y4next:=240-trunc(em*240);
setcolor(lightgray);
line(xprev,y4prev,xnext,y4next);
y4prev:=y4next;
xprev:=xnext;
xnext:=xnext+trunc(64*work);
end;
until work=0.5;
setcolor(green);
outtextxy(0,470,'f(x)');
setcolor(cyan);
outtextxy(40,470,'E');
setcolor(magenta);
outtextxy(60,470,'Ev');
setcolor(lightgray);
outtextxy(90,470,'Em');
readln;
end.
9. Результаты работы программы
0.1563 20 0.1569 12 -0.0306 -0.0307 0.0001
0.1719 22 0.1727 14 -0.0460 -0.0462 0.0002
0.1875 24 0.1886 12 0.0011 0.0011 0.0000
0.2031 26 0.2045 14 -0.0142 -0.0142 0.0000
0.2188 28 0.2205 16 -0.0295 -0.0296 0.0001
0.2344 30 0.2365 18 -0.0447 -0.0449 0.0002
0.2500 32 0.2526 16 0.0026 0.0026 0.0000
0.2656 34 0.2688 18 -0.0125 -0.0125 0.0000
0.2813 36 0.2850 20 -0.0275 -0.0277 0.0001
0.2969 38 0.3013 22 -0.0425 -0.0428 0.0003
0.3125 40 0.3176 20 0.0051 0.0051 0.0000
0.3281 42 0.3340 22 -0.0097 -0.0097 0.0000
0.3438 44 0.3506 24 -0.0244 -0.0246 0.0002
0.3594 46 0.3672 26 -0.0391 -0.0395 0.0004
0.3750 48 0.3839 24 0.0089 0.0089 0.0000
0.3906 50 0.4006 26 -0.0056 -0.0057 0.0000
0.4063 52 0.4175 28 -0.0200 -0.0202 0.0002
0.4219 54 0.4345 30 -0.0342 -0.0347 0.0004
0.4375 56 0.4516 28 0.0141 0.0141 0.0000
0.4531 58 0.4688 30 0.0000 -0.0000 0.0001
0.4688 60 0.4861 32 -0.0139 -0.0141 0.0002
0.4844 62 0.5035 34 -0.0277 -0.0282 0.0005
0.5000 64 0.5211 33 0.0055 0.0055 0.0000
x X f(x) F(x) E Ev Em
11. Заключение
В процессе выполнения курсовой работы, используя литературу и методические указания, мы выполнили проектирование алгоритма вычисления элементарной функции с использованием таблично – алгоритмического метода. Алгоритм ориентируется на целочисленные вычисления в формате байт со знаком в дополнительном коде. Разработали программу для вычисления функции на заданном интервале аппроксимации и экспериментального анализа, полной, методической и вычислительной погрешности. Программа выводит на экран графики функции и всех погрешностей на интервале аппроксимации.
12. Список литературы
1. Руководство к лабораторной работе №4 “проектирование алгоритмов вычисления элементарных функций” по курсу:
Основы обработки данных и моделирования
2. Конспект лекций