Смекни!
smekni.com

Дослідження методів чисельного інтегрування (стр. 3 из 3)


Література

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.

Додаток Б