49567 (Дослідження методів чисельного інтегрування), страница 2
Описание файла
Документ из архива "Дослідження методів чисельного інтегрування", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "49567"
Текст 2 страницы из документа "49567"
Похибка обчислень за методом Чебишева знаходиться за формулою:
2. Розробка та опис логічної частини програми
Програма складається з двох блоків. Це – інтерфейний модуль, що забезпечує користувача змогою спілкуватися з комп’ютером за допомогою клавіатури, та сама програма, що здійснює всі обчислювальні операції.
При запуску спершу ініціюється графіка та створюється меню і ініціюються змінні. Потім іде блок зчитування з клавіатури. Він аналізує введену користувачем інформацію і згідно з нею виконує певні дії. При натисканні на клавіші управління курсором відбувається переміщення по меню. При натисканні на клавішу Enter відбувається аналіз кнопки, яка була обрана на даний момент, і згідно з цим виконання певних дій. Це можуть бути такі операції:
-
обчислення інтегралу методом Чебишева 3-го порядку: виконується алгоритм, який детально пояснено в додатку Б.
-
обчислення інтегралу методом Чебишева 4-го порядку.
-
обчислення інтегралу методом Чебишева 5-го порядку
-
Задається крок обчислення h=0.1;
-
Задається крок обчислення h=0.2;
-
Задається крок обчислення h=0.5;
-
Про автора – довідка про автора програми;
-
Вихід з програми – здійснюється вихід з програмного середовища ТР;
Робота даної програми починається з підключення стандартного модуля введення-виведення crt та модуля graph для ініціалізації графіки, оскільки програма виконана в графічному режимі. Далі задаються константи інтегрування.
Тип TMenuItems – масив пунктів меню. Далі задаємо підінтегральну функцію. Процедура InitGraphMode – процедура для ініціалізації графіки, VGA - тип графічного драйверу, VGAHi – тип графічного режиму.
-
DrawCursor(x,y:integer) – процедура для малювання курсору;
-
HideCursor(x,y:integer) – процедура, що автоматично забирає курсор з екрану;
-
Function WaitWhileKeypressed(var FKey:boolean):char – функція, що очікує нажатої клавіші, цикл повторюється до тих пір, доки не буде зчитано код нажатої клавіші;
-
Procedure menu(x,y:integer;…var poin:integer) – дана процедура власне виводить на екран графічне меню та надає змогу користувачеві здійснити вибір пункту меню за допомогою графічного курсору.
3. Функціональне призначення програми
Програма призначена для обчислення визначеного інтегралу I= , методом Чебишева третього, четвертого та п’ятого порядків, також дає змогу зменшити похибку обчислень за рахунок зменшення кроку інтегрування.
Програма має гарний інтерфейс користувача з меню, що керується з клавіатури. Результати обчислень виводяться на екран монітора.
Дана програма пристосована для вирішення тільки одного інтегралу, а тому є вузько спеціалізованою, проте можлива зміна підінтегральної функції шляхом корегування програмного коду.
Комп'ютер може швидко опрацьовувати дані і виводити результати на екран.
4. Вхідні та вихідні дані
Вхідні дані:
1. Інтеграл: I= ;
2. Крок обчислень 0.1,0.2,0.5;
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. Похибку для даної функції доцільно було б оцінювати, як абсолютне значення різниці між точним значенням та одержаним в програмі.
Однак, хоча й виникали певні труднощі з виконанням завдання, але це було безперечно цікаво, і багато чому мене навчили.
Література
-
В.Т.Маликов, Р.Н.Кветный. Вычислительные методы и применение ЭВМ. – К.: Вища школа, 1989.– 213 с.
-
В.М. Дубовий, Р.Н.Квєтний Методичні вказівки до лабораторних робіт з програмування та застосування ЕОМ . Навчальне видання. –Вінниця, ВПІ, 1992.
-
В.М. Дубовий, Р.Н.Квєтний. Програмування комп’ютеризованих систем управління та автоматики. - В.: ВДТУ, 1997. – 208с.
-
Р.Н.Кветний Методи комп’ютерних обчислень. Навчальний посібник.- Вінниця: ВДТУ, 2001.-148с.
-
А. І. Марченко, Л. А. Марченко “Программирование в среде Турбо Паскаль 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 #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));