Література
1. В.Т.Маликов, Р.Н.Кветный. Вычислительные методы и применение ЭВМ. – К.: Вища школа, 1989.– 213 с.
2. В.М. Дубовий, Р.Н.Квєтний Методичні вказівки до лабораторних робіт з програмування та застосування ЕОМ . Навчальне видання. –Вінниця, ВПІ, 1992.
3. В.М. Дубовий, Р.Н.Квєтний. Програмування комп’ютеризованих систем управління та автоматики. - В.: ВДТУ, 1997. – 208с.
4. Р.Н.Кветний Методи комп’ютерних обчислень. Навчальний посібник.- Вінниця: ВДТУ, 2001.-148с.
5. А. І. Марченко, Л. А. Марченко “Программирование в среде Турбо Паскаль 7.0”, Київ “ВЕК+”, 1999 р.
Додаток А
Лістинг
program Kursova;
uses crt,graph;
const
a=0;
b=1;
c=1.5;
d=2;
t3:array[1..3] of real=(-0.707107,0,0.707107);
t4:array[1..4] of real=(-0.794654,-0.187592,0.187592,0.794654);
t5:array[1..5] of real=(-0.832498,-0.374541,0,0.374541,0.832498);
Type TMenuItems=array[1..10] of string;
TDelta=array[1..300] of real;
Var Item:TMenuItems;
ResM:TDelta;
i,n:integer;
h:real;
ki:integer;
M,x,Ic,I2n,nc,sc1,sc2,I1n,x1,x2:real;
s,hs,s1:string;
k:Integer;
sum,int,si:real;
Delta,AllDelta,sum1:real;
Function Fact(n:integer):integer;
begin
if n=0 then Fact:=1
else Fact:=n*Fact(n-1)
end;
{Ф-я}
function f(x1:real):real;
begin
f:=exp(-d*x1*x1+c)
end;
procedure InitGraphMode;
var gd,gm:integer;
begin
gd:=VGA;
gm:=VGAHi;
initgraph(gd,gm,'');
end;
procedure DrawCursor(x,y:integer);
var i,j:integer;
begin
setcolor(white);
setlinestyle(0,0,1);
MoveTo(x,y+3);LineTo(x+10+5,y);LineTo(x+5,y-10);LineTo(x+10+10+5,y+3);
LineTo(x+5,y+16);LineTo(x+10+5,y+6);LineTo(x,y+3);
setfillstyle(1,red);
end;
{---------------------------------------------------------------------------}
Procedure HideCursor(x,y:integer);
begin
setcolor(lightblue); {insert your background color instead of black}
setlinestyle(0,0,1);
MoveTo(x,y+3);LineTo(x+10+5,y);LineTo(x+5,y-10);LineTo(x+10+10+5,y+3);
LineTo(x+5,y+16);LineTo(x+10+5,y+6);LineTo(x,y+3);
setfillstyle(1,red);
end;
Function WaitWhileKeypressed(var FKey:boolean):char;
var result:char;
begin
FKey:=false;
while keypressed do result:=readkey; {It clears keyboard buffer}
repeat until keypressed;
result:=readkey;
if result=#0 then
begin
result:=readkey;
FKey:=true;
end;
WaitWhileKeypressed:=result;
end;
Procedure Menu(x,y:integer;Items:TMenuItems;n:integer;var point:integer);
var i:integer;
ch:char;
FKey:boolean;
begin
setbkcolor(lightblue);
setcolor(yellow);
Rectangle(10,10,625,465);
setcolor(lightgreen);
Rectangle(14,14,621,461);
setcolor(lightred);
for i:=1 to n do outtextxy(x+50,y+(i-1)*30,Items[i]);
repeat
for i:=1 to n do
if i<>point then HideCursor(x,y+(i-1)*30)
else DrawCursor(x,y+(i-1)*30);
ch:=WaitWhileKeypressed(FKey);
case ch of
#72: if point>1 then dec(point);
#80: if point<n then inc(point);
#27: point:=-1;
end;
until (ch=#13) or (ch=#27);
for i:=1 to n do HideCursor(x,y+(i-1)*30);
end;
procedure PrintArray(n:integer; m:TDelta);
var s0,s1:string;
begin
setfillstyle(1,lightblue);
bar(360,40,620,450);
for i:=1 to n do
begin
str(i,s0);
str(m[i]:5:10,s1);
if (i mod 25 =0) then
begin
readln;
bar(360,40,620,450);
end;
outtextxy(430,(i mod 25)*15+40,s0+' '+s1);
end;
end;
{-----------------------------------------------------------------------}
begin
InitGraphMode;
setcolor(blue);
h:=0.1;
repeat
cleardevice;
Item[1]:='Метод Чебишева 3-го порядку';
Item[2]:='Метод Чебишева 4-го порядку';
Item[3]:='Метод Чебишева 5-го порядку';
Item[4]:='Крок обчислень=0.1';
Item[5]:='Крок обчислень=0.2';
Item[6]:='Крок обчислень=0.5';
Item[7]:='Про автора';
Item[8]:='Вихид';
i:=1;
setcolor(white);
Menu(50,30,Item,7,i);
case i of
1:begin
setbkcolor(lightblue);x:=a; sum:=0; i:=0;
while x<=b do begin
inc(i);
x:=x+h;
si:=0;
for k:=1 to 3 do si:=si+f(x-h/2+h/2*t3[k]);
si:=h/3*si;
sum:=sum+si;
sum1:=(x-((a+b)/2))*(x-((a+b)/2))*(x-((a+b)/2))*(x-((a+b)/2))*
48*exp(-2*x*x+1.5)-384*x*x*exp(-2*x*x+1.5)+256*x*x*x*x*exp(-2*x*x+1.5);
n:=i+10;
end;
delta:=((b-a)/(n*fact(3)))*sum1;
delta:=Abs(delta);
AllDelta:=abs(delta);
str(Delta:12:10,s1);
Resm[i]:=Delta;
setcolor(red);
str(Sum:12:18,s);
str(AllDelta:12:20,s1);
str(h:2:3,hs);
setcolor(blue);
Outtextxy(100,240,'Интеграл: '+s);
Outtextxy(45,260,'Точне значення (Mathcad): 2.68069545714219');
Outtextxy(100,280,'Похибка: '+s1);
Outtextxy(100,300,'Крок: '+hs);
readln;
end;
2: begin
setbkcolor(lightblue);x:=a; sum:=0; i:=0;
while x<=b do begin
inc(i);
x:=x+h;
si:=0;
for k:=1 to 4 do si:=si+f(x-h/2+h/2*t4[k]);
si:=h/4*si;
sum:=sum+si;
sum1:=(x-((a+b)/2))*(x-((a+b)/2))*(x-((a+b)/2))*(x-((a+b)/2))*(x-((a+b)/2))*
(-960*x*exp(-2*x*x+1.5)+2560*x*x*x*exp(-2*x*x+1.5)-1024*x*x*x*x*x*exp(-2*x*x+1.5));
n:=i+10;
end;
delta:=((b-a)/(n*fact(3)))*sum1;
delta:=Abs(delta);
AllDelta:=abs(delta);
str(Delta:12:10,s1);
Resm[i]:=Delta;
setcolor(red);
str(Sum:12:18,s);
str(AllDelta:12:20,s1);
str(h:2:3,hs);
setcolor(blue);
Outtextxy(100,240,'Интеграл: '+s);
Outtextxy(45,260,'Точне значення (Mathcad): 2.68069545714219');
Outtextxy(100,280,'Похибка: '+s1);
Outtextxy(100,300,'Крок: '+hs);
readln;
end;
3:begin
setbkcolor(lightblue);x:=a; sum:=0; i:=0;
while x<=b do begin
inc(i);
x:=x+h;
si:=0;
for k:=1 to 5 do si:=si+f(x-h/2+h/2*t5[k]);
si:=h/5*si;
sum:=sum+si;
sum1:=(x-((a+b)/2))*(x-((a+b)/2))*(x-((a+b)/2))*(x-((a+b)/2))*(x-((a+b)/2))*
(x-((a+b)/2))*(-960*exp(-2*x*x+1.5)+11520*x*x*exp(-2*x*x+1.5)
-15360*x*x*x*x*exp(-2*x*x+1.5)+4096*x*x*x*x*x*x*exp(-2*x*x+1.5));
n:=i+10;
end;
delta:=((b-a)/(n*fact(3)))*sum1;
delta:=Abs(delta);
AllDelta:=abs(delta);
str(Delta:12:10,s1);
Resm[i]:=Delta;
setcolor(red);
str(Sum:12:18,s);
str(AllDelta:12:20,s1);
str(h:2:3,hs);
setcolor(blue);
Outtextxy(100,240,'Интеграл: '+s);
Outtextxy(45,260,'Точне значення (Mathcad): 2.68069545714219');
Outtextxy(100,280,'Похибка: '+s1);
Outtextxy(100,300,'Крок: '+hs);
readln;
end;
4: begin
sound(500);
setbkcolor(lightred);
h:=0.01;
Outtextxy(150,200,'Крок h=0.01 ');
Outtextxy(170,250,'Натиснить будь-яку клавишу ...');
delay(10000);
nosound;
repeat until keypressed;
end;
5: begin
setbkcolor(lightred);
h:=0.02;
Outtextxy(150,200,'Крок h=0.02 ');
Outtextxy(170,250,'Натиснить будь-яку клавишу ...');
repeat until keypressed;
end;
6: begin
setbkcolor(lightred);
h:=0.05;
Outtextxy(150,200,'Крок h=0.05 ');
Outtextxy(170,250,'Натиснить будь-яку клавишу ...');
repeat until keypressed;
end;
7: begin
setbkcolor(lightred);
Outtextxy(160,200,'Програму виконав ст.гр. 3АВ-02');
Outtextxy(210,220,'Нетяга О.В.');
repeat until keypressed;
end;
8: exit;
end;
until (i=7) or (i=-1);
CloseGraph;
end.
Додаток Б