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

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

?льтати обчислень виводяться на екран монітора.

Дана програма пристосована для вирішення тільки одного інтегралу, а тому є вузько спеціалізованою, проте можлива зміна підінтегральної функції шляхом корегування програмного коду.

Компютер може швидко опрацьовувати дані і виводити результати на екран.

 

4. Вхідні та вихідні дані

 

Вхідні дані:

1. Інтеграл: I=;

2. Крок обчислень 0.1,0.2,0.5;

3. Порядок інтегрування: третього , четвертого та пятого порядку.

Вихідні дані:

  1. Значення інтегралу, що знаходить программа.
  2. Загальна похибка по заданим методам.
  3. Порівняння результатів з точним значенням.

 

5. Результати розрахунків

 

Результатами обчислень є знаходження значення визначеного інтеграла I=, , зазначеними методами, з кроком: h=0.1, h=0.2, h=0.5.

При розрахунку інтегралу 3-го порядку програма виведе на екран слідуючі результати:

Інтеграл Чебишева 3-го порядку: 2.649061117170

Загальна похибка: 0.0316342854

Точне розвязання (Mathcad 2001): 2.68069545714219

Крок: 0.5

 

Інтеграл Чебишева 3-го порядку: 2,66138784520

Загальна похибка: 0.0193076119

Точне розвязання (Mathcad 2001): 2.68069545714219

Крок: 0.2

 

Інтеграл Чебишева 3-го порядку: 2,67298758310

Загальна похибка: 0.00770787

Точне розвязання (Mathcad 2001): 2.68069545714219

Крок: 0.1

 

При розрахунку інтегралу 4-го порядку програма виведе на екран слідуючі результати:

Інтеграл Чебишева 4-го порядку: 2.6680680931

Загальна похибка: 0.01262744

Точне розвязання (Mathcad 2001): 2.68069545714219

Крок: 0.5

 

Інтеграл Чебишева 4-го порядку: 2,6743859370

Загальна похибка: 0.006309519

Точне розвязання (Mathcad 2001): 2.68069545714219

Крок: 0.2

 

Інтеграл Чебишева 4-го порядку: 2,676438956720

Загальна похибка: 0,00385156152

Точне розвязання (Mathcad 2001): 2.68069545714219

Крок: 0.1

 

При розрахунку інтегралу 5-го порядку програма виведе на екран слідуючі результати:

Інтеграл Чебишева 5-го порядку: 2,68069554160

Загальна похибка: 0.00000008443

Точне розвязання (Mathcad 2001): 2.68069545714219

Крок: 0.5

 

Інтеграл Чебишева 5-го порядку: 2.68069545713707

Загальна похибка: 0.00000000512

Точне розвязання (Mathcad 2001): 2.68069545714219

Крок: 0.2

 

Інтеграл Чебишева 5-го порядку: 2.68069545714209

Загальна похибка: 0,00000000010

Точне розвязання (Mathcad 2001): 2.68069545714219

Крок: 0.1

 

Висновки

 

В даній курсовій роботі було проведене дослідження чисельних методів вирішення визначеного інтегралу виду I=, по методу Чебишева.

Алгоритм методу є досить простим. Для його реалізації потрібно мати функцію, межі та крок інтегрування.

В курсовій роботі, для перевірки результатів обчислень, я використовував математичний пакет MatchCad 2001. Похибку для даної функції доцільно було б оцінювати, як абсолютне значення різниці між точним значенням та одержаним в програмі.

Однак, хоча й виникали певні труднощі з виконанням завдання, але це було безперечно цікаво, і багато чому мене навчили.

 

Література

 

  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);