Автор: Пользователь скрыл имя, 03 Октября 2011 в 20:39, курсовая работа
В данной пояснительной записке проводится описание последовательности шагов по составлению программы на алгоритмическом языке Turbo Pascal 7.0 и результаты применения этой программы для нахождения приближенного значения интеграла численным методом Симпсона и методом трапеций. Рассматриваются вопросы математической формулировки и алгоритмизации задачи, разработки блок-схемы алгоритма её решения, составления исходной Pascal-программы и реализации вычислений по составленной программе.
Введение…………………………………………………………………………4
Постановка задачи………………………………………………………………5
Математическая формулировка задачи………………………………………..7
Алгоритмизация задачи…………………………………………………………9
Идентификаторы программы…………………………………………………..12
Блок-схема алгоритма…………………………………………………………..13
Текст исходной программы………………………………………………………..
Результаты выполнения программы……………………………………………...
Анализ результатов………………………………………………………………...
Инструкция по работе с программой……………………………………………..
Заключение…………………………………………………………………………
Список использованных источников……………………………………………..
Для
указания соответствия обозначений переменных
в формулах математической формулировки
и их идентификаторов в программе сведем
их в таблицу 1:
Обозначение параметров | Смысл параметра | |
В формулах | В программе | |
А | a | Левая граница отрезка интегрирования (нижний предел интегрирования) |
В | b | Правая граница отрезка интегрирования (верхний предел интегрирования) |
N | n | Число интервалов
разбиения отрезка |
H | h | Длина интервала разбиения |
x | x | Аргумент подынтегральной функции |
dx | h1 – метод Симпсона
h2 – метод трапеций |
Приращение аргумента x |
I | S | Значение интеграла |
Блок-схема алгоритма головной программы.
Блок-схема
алгоритма подпрограммы-
Блок-схема
алгоритма подпрограммы-
Блок-схема
алгоритма подпрограммы-
Блок-схема
алгоритма подпрограммы-
Блок-схема
алгоритма подпрограммы-
Блок-схема
алгоритма подпрограммы-
Блок-схема
алгоритма подпрограммы-
program Kursovoi_integeral;
Uses crt,dos;
Label 11,12,m1;
Type
mas=Array[1..4] of String[50];
Const
menu:mas=('
'Metod Simpsona',
'Metod trapecii',
'Vixod');
var
i,s,pos: Integer;
c,kod,k10:Char;
pass: String;
ch: char;
function f(x:real): real;
begin
f:=exp(sqr(x))
end;
{____________________}
{-----------Cursorcursor init-----------}
Procedure CursorSize(Size: word);
var Regs: Registers;
Begin
With Regs do
Begin AH:=$01;
CH:=Hi(size);
Cl:=Lo(Size);
intr($10,Regs);
end;
end;
{-----------Cursor init------------------}
{-----------Cursor OFF-------------------}
procedure HiddeCursor;
begin
CursorSize($2000);
end;
{-----------Cursor OFF-------------------}
{-----------Cursor ON--------------------}
Procedure NormCursor;
begin
CursorSize($0607);
end;
{-----------Cursor ON--------------------}
{-----------Create of Frame--------------}
procedure ramka(x1,y1,x2,y2: byte);
const
a=#201;
b=#205;
c=#187;
d=#186;
e=#188;
f=#200;
Begin
Textcolor(14);
Textbackground(0);
Clrscr;
gotoxy(x1,y1);
write(a);
for i:=x1+1 to x2-1 do write(b);
write(c);
for i:=y1+1 to y2-1 do
Begin
gotoxy(x1,i);
write(d);
gotoxy(x2,i);
write(d);
End;
Gotoxy(x1,y2);
write(f);
for i:=x1+1 to x2-1 do write(b);
write(e);
End;
Procedure Okno(x1,y1,x2,y2,Fcolor,
Begin
Clrscr;
TextMode(3);
HiddeCursor;
Ramka(x1,y1,x2,y2);
Window(x1+1,y1+1,x2-1,y2-1);
textbackground(Fcolor);
textcolor(Tcolor);
Clrscr;
Gotoxy(1,1);
End;
Procedure Zastavka;
Begin
Okno(1,1,79,23,5,14);
gotoxy(3,1);
writeln(' ');
writeln(' Ministerstvo obrazovaniya Respubliki Belarus');
writeln(' Belorusskii nacionalnji texnicheskii universitet');
gotoxy(1,6);
writeln('
writeln;
writeln;
writeln;
writeln;
writeln('
writeln('
gotoxy(1,15);
writeln('Ispolnitel
writeln('
writeln('Rukovoditel
writeln;
writeln;
writeln('
window(0, 0, 80, 25);
gotoxy(40,23);
Textcolor(13);
gotoxy(1,79);
writeln('Dlay prodolzheniya nazhmite lubyu klavishy...');
repeat until keypressed;
while keypressed do ch:=readkey;
clrscr;
End;
Procedure Spravka;
var
ch: char;
Begin
Okno(1, 1, 79, 23, 5, 14);
Writeln('=====================
Writeln(' Dannaya programma pozvolyaet vichislyat integral');
Writeln('I=exp(sqrt(x))dx metodom Simpsona i metodom trapecii dlya zadannix');
Writeln('znachenii predelov integrirovaniya a - niznii i b - verxnii.');
Writeln(' Posle perexoda v menu vibirite klavishami upravleniya kursora');
writeln('neobxodimii punkt.');
Writeln(' Pri vibore metoda Simpsona ili metoda trapecii vvedite po zaprosy');
Writeln('programmi celochislennie znacheniya predelov integrirovaniya i chislo');
Writeln('intervalov integrirovaniya.');
Writeln(' Dlya integrala s drugoi podintegralnoi funkciei sleduet');
Writeln('zapisat ee v pravoi chaste virazeniya dlya vichisleniya znacheniya funkcii');
Writeln('v podprogramme-funkcii f v razdele obyavlenii golovnoi programmi.');
Window(2,2,79,24);
Textcolor(13);
gotoxy(5,20);
write(' Dlya vozvrata v menu nazhmite lubyu klavishy...');
ch:=readkey;
End;
Procedure Emenu;
Begin
clrscr;
Okno(15,9,55,17,5,7);
For i:=1 to 4 do
begin
Gotoxy(15,i+1);
if i=pos then Textbackground(8) else Textbackground(5);
write(Menu[i]);
end;
End;
procedure Exitfrom;
Begin
writeln;
gotoxy(50,26);
Writeln('Dlya prodolzeniya vichisleniya nazmite - Y, dlya vixoda - N');
ch:=readkey;
if ch =#121 then Emenu else Zastavka;
End;
Procedure Simpson;
label m1;
Var
i,n : byte;
a,b,h,h1,s,x : real;
ch: char;
Begin
Okno(1, 1, 79, 23, 5, 14);
NormCursor;
Writeln('==================>
Writeln;
Writeln;
m1:
Writeln(' Vvedite predelu integrirovaniya a i b');
Write(' Niznii pridel a=');
read(a);
Write(' Verxnii pridel b=');
read(b);
Write(' Vvedite chislo intervalov integrirovaniya N=');
read(n);
Begin
writeln;
Writeln(' Znacheniya vvedeny pravilno(Y/N)?');
ch:= readkey;
If ch=#110 then
begin
writeln;
Writeln(' Dannie vvedeni neverno. Povtoryaem vvod');
writeln;
writeln;
goto m1;
end;
h:=(b-a)/n;
h1:=h/2;