- •Тульский государственный университет
- •Содержание
- •1. Описание численных методов
- •1.1. Метод левых прямоугольников
- •1.2. Метод трапеций
- •1.3. Метод Симпсона
- •1.4. Метод Чебышева
- •2. Блок-схема алгоритма основной программы:
- •4. Результат работы программы в виде графика
- •5. Результат работы программы в виде таблицы
- •6. Теоретическая часть
- •Assign(out, ‘out.Dat’);
- •Rewrite(out);
- •Write(out,’’); Writeln(out,’ ‘);
- •Список использованной литературы
2. Блок-схема алгоритма основной программы:
2.1. Блок-схема алгоритма подпрограммы левых прямоугольников (LPR)
2.2. Блок-схема алгоритма подпрограммы трапеций (TRAP)
2.3. Блок-схема алгоритма подпрограммы Симпсона (SIMP)
2.4. Блок-схема алгоритма подпрограммы Чебышева (CHEB)
3. ТЕКСТ ПРОГРАММЫ
program kurs;
uses crt,graph;
function f(x:real):real;
begin
f:=0.47*exp(ln(x)*0.746)
end;
procedure LPR(a,b:real; var s1:real; n:integer);
var h:real;
i:integer;
begin
h:=(b-a)/n;
s1:=0;
for i:=0 to n-1 do
s1:=s1+f(a+i*h);
s1:=s1*h;
end;
procedure TRAP(a,b:real; var s2:real; n:integer);
var h:real;
i:integer;
begin
h:=(b-a)/n;
s2:=f(a)+f(b);
for i:=1 to n-1 do s2:=s2+2*f(a+i*h);
s2:=s2*h/2;
end;
procedure SIMP(a,b:real; var s3:real; n:integer);
var h:real;
i:integer;
begin
h:=(b-a)/2/n;
s3:=f(a)+f(b);
for i:=1 to 2*n-1 do
begin
s3:=s3+2*f(a+i*h);
if i mod 2 = 1 then s3:=s3+2*f(a+i*h);
end;
s3:=s3*h/3;
end;
procedure CHEB(a,b:real; var s4:real; n:integer);
var x:array [1..5] of real;
var h,xx,s:real;
i,j:integer;
begin
x[1]:=0.083751;
x[2]:=0.312730;
x[3]:=0.500000;
x[4]:=0.687270;
x[5]:=0.916249;
h:=(b-a)/n;
s4:=0;
s:=0;
for i:=1 to n do
begin
xx:=a+h;
for j:=1 to 5 do
begin
s:=s+f(a+(xx-a)*x[j]);
end;
s4:=s4+s*(xx-a)/5;
s:=0;
a:=xx;
end;
end;
procedure grafik(xn,xk:real);
var gd,gm,xl,xp,yv,yn,xt,yt,y0,xt1,yt1,dxp,dyp,kx,ky,ym,xm,k,i,xmax:integer;
nol,j:integer;
st:string[6];
x,yy,dx,ymin,ymax,dy,mx,my:real;
bord1,bord2,bord3,bord4:integer;
begin
clrscr;
dx:=(xk-xn)/100;
ymin:=f(xn);ymax:=ymin;
for i:= 1 to 100 do begin
yy:=f(xn+dx*i);
if yy<ymin then ymin:=yy;
if yy>ymax then ymax:=yy;
end;
if ymin>0 then ymin:=0;
if ymax<0 then ymax:=0;
gd:=detect;
initgraph(gd,gm,'c:\BP\Bgi');
xm:=getmaxx; ym:=getmaxy;
SetBkColor(0); bar(0,0,xm,ym);
bord1:=60; bord2:=30; bord3:=17; bord4:=60;
kx:=9; ky:=8; k:=50;
xl:=bord1;
xp:=xm-bord3;
yv:=bord2;
yn:=ym-bord4;
dxp:=(xp-xl) div kx;
dyp:=(yn-yv) div ky;
dx:=(xk-xn)/kx;
dy:=(ymax-ymin)/ky;
xl:=xp-dxp*kx;
yn:=yv+dyp*ky;
mx:=(xp-xl)/(xk-xn);
my:=(yn-yv)/(ymax-ymin);
setcolor(1);
rectangle(xl,yv,xp,yn);
outtextxy(200,10,'Grafik function y=7.36*lg(x)+0.047');
settextjustify(2,2);
settextstyle(0,1,1);
for i:=0 to kx do begin
x:=xn+dx*i;
xt:=xl+dxp*i;
str(x:6:4,st);
line(xt,yn-3,xt,yn+3);
outtextxy(xt+4,yn+8,st);
end;
settextstyle(0,0,1);
for i:=0 to ky do begin
yy:=ymin+dy*i;
yt:=yn-dyp*i;
str(yy:6:4,st);
line(xl-3,yt,xl+3,yt);
outtextxy(xl-8,yt-4,st);
end;
if xn*xk<0 then begin
xt:=xl-trunc(xn*mx);
line(xt,yn,xt,yv);
end;
if ymax*ymin<0 then begin
yt:=yn+trunc(ymin*my);
line(xl,yt,xp,yt);
end;
dx:=(xk-xn)/k;
nol:=(-bord2+ym-bord4) div 2+14;
nol:=yn;
y0:=yn-trunc((f(xn)-ymin)*my);
for i:=0 to k do begin
x:=xn+dx*i;
yy:=f(x);
xt:=xl+trunc((x-xn)*mx);
yt:=yn-trunc((yy-ymin)*my);
circle(xt,yt,3);
if i<>0 then begin
line(xt,yt,xt1,yt1);
if i mod 5=0 then begin rectangle(xl+trunc((xn+dx*(i-5)-xn)*mx),y0,xl+trunc((xn+dx*(i)-xn)*mx),nol);
for j:=1 to 4 do
line(xl+trunc((xn+dx*(i-5+j)-xn)*mx),y0,xl+trunc((xn+dx*(i-5+j)-
xn)*mx),nol);
y0:=yt;
end;
end;
xt1:=xt;
yt1:=yt;
end;
readln;
closegraph;
end;
const n1=50;
var xn,xk,eps,pog,s1,s2,s3,s4,s0:real;
n:integer;
ff:text;
begin
clrscr;
write(' Read Xn = ');readln(xn);
write(' Read Xk = ');readln(xk);
write(' Read eps = ');readln(eps);
n:=0;
grafik(xn,xk);
clrscr;
assign(ff,'result.txt');
rewrite(ff);
writeln(ff,'Курсовая работа':43);
writeln(ff,'по курсу Информатика':47);
writeln(ff,'"Приближенное вычисление значения':54);
writeln(ff,'определенного интеграла"':50);
writeln(ff,'Выполнил: студент гр. ИБ Иванов И.И.':60);
writeln(ff,'Вариант 7 y=0.47*x^0.746':52);
writeln(ff,'Xn=':25,xn:3:3,' Xk=',xk:3:3,' Eps=',eps:6:4);
writeln(ff,'Результаты вычислений':47);
writeln(ff,'┌───────────┬───────────────────────────────────────────────┬────────────┐');
writeln(ff,'│ Число │ Методы вычисления │ Точность │');
writeln(ff,'│ ├───────────┬───────────┬───────────┬───────────┤ │');
writeln(ff,'│ разбиений │ Левых │ Трапеции │ Симпсона │ Чебышева │ вычисления │');
writeln(ff,'│ │ прямоуг-в │ │ │ │ │');
writeln(ff,'├───────────┼───────────┼───────────┼───────────┼───────────┼────────────┤');
writeln('Курсовая работа':43);
writeln('по курсу Информатика':47);
writeln('"Приближенное вычисление значения':54);
writeln('определенного интеграла"':50);
writeln('Выполнил: студент гр. ИБ Иванов И.И.':60);
writeln('Вариант 7 y=0.47*x^0.746':52);
writeln('Xn=':25,xn:3:3,' Xk=',xk:3:3,' Eps=',eps:6:4);
writeln('Результаты вычислений':47);
writeln('┌───────────┬───────────────────────────────────────────────┬────────────┐');
writeln('│ Число │ Методы вычисления │ Точность │');
writeln('│ ├───────────┬───────────┬───────────┬───────────┤ │');
writeln('│ разбиений │ Левых │ Трапеции │ Симпсона │ Чебышева │ вычисления │');
writeln('│ │ прямоуг-в │ │ │ │ │');
writeln('├───────────┼───────────┼───────────┼───────────┼───────────┼────────────┤');
s0:=0;
repeat
n:=n+n1;
LPR(xn,xk,s1,n);
TRAP(xn,xk,s2,n);
SIMP(xn,xk,s3,n);
CHEB(xn,xk,s4,n);
pog:=abs(s1-s0);
writeln(ff,'│',n:9,' │',s1:10:5,' │',s2:10:5,' │',s3:10:5,' │',s4:10:5,' │',pog:11:6,' │');
writeln('│',n:9,' │',s1:10:5,' │',s2:10:5,' │',s3:10:5,' │',s4:10:5,' │',pog:11:6,' │');
s0:=s1;
until pog<eps;
writeln(ff,'└───────────┴───────────┴───────────┴───────────┴───────────┴────────────┘');
writeln(ff,' ***Требуемая точность достигнута при ',n,' разбиениях ***');
writeln('└───────────┴───────────┴───────────┴───────────┴───────────┴────────────┘') ;
writeln(' ***Требуемая точность достигнута при ',n,' разбиениях ***');
close(ff);
readln;
end.