Смекни!
smekni.com

Розрахунок інтегралів за допомогою методів Гауса та Чебишева (стр. 2 из 2)

i :integer;

h, x,a,b:Extended;

sumC,sumG,iG,iC,ec,max:Extended;

errC,errG:Extended;

begin

try

h:=StrToFloat(LabeledEdit1.Text);

a := 0.0;

b := 0.785-h;

errC:=0; errG:=0;

x:=a; sumC:=0; sumG:=0;

while x<b do begin

iG:=0; iC:=0; ec:=0; max:=0;

for i:=1 to 3 do begin

iC:=iC+(f((2*x+h)/2+h/2*tC[i]));

iG:=iG+(Ag[i]*f((2*x+h)/2+h/2*tG[i]));

ec:=ec+power((2*x+h)/2+h/2*tC[i]-(2*x+h)/2,n+1)*f_4((2*x+h)/2+h/2*tC[i]);

if f_6((2*x+h)/2+h/2*tG[i])>max then max:=f_6((2*x+h)/2+h/2*tG[i]);

end;

iC:=iC*h/n;

iG:=iG*h/2;

sumC:=sumC+iC;

sumG:=sumG+iG;

max:=power(h,2*n+1)*power(6,4)*max/power(2,2*n+1)/power(120,3)/(2*n+1);

if h/18*ec>errC then errC:=h/18*ec;

if max>errG then errG:=max;

x:=x+h;

end;

a := 0.785+h;

b := 1;

x:=a;

while x<b do begin

iG:=0; iC:=0; ec:=0; max:=0;

for i:=1 to 3 do begin

iC:=iC+(f((2*x+h)/2+h/2*tC[i]));

iG:=iG+(Ag[i]*f((2*x+h)/2+h/2*tG[i]));

ec:=ec+power((2*x+h)/2+h/2*tC[i]-(2*x+h)/2,n+1)*f_4((2*x+h)/2+h/2*tC[i]);

if f_6((2*x+h)/2+h/2*tG[i])>max then max:=f_6((2*x+h)/2+h/2*tG[i]);

end;

iC:=iC*h/n;

iG:=iG*h/2;

sumC:=sumC+iC;

sumG:=sumG+iG;

max:=power(h,2*n+1)*power(6,4)*max/power(2,2*n+1)/power(120,3)/(2*n+1);

if h/18*ec>errC then errC:=h/18*ec;

if max>errG then errG:=max;

x:=x+h;

end;

with Memo1.Lines do begin

clear;

Add('Результати обчислень: ');

Add(' Метод Гауса: '+FloatToStrF(sumG,ffFixed,8,10));

Add(' Похибка: '+FloatToStrF(errG,ffFixed,8,10));

Add(' Метод Чебишева: '+FloatToStrF(sumC,ffFixed,8,10));

Add(' Похибка: '+FloatToStrF(errC,ffFixed,8,10));

Add(' Точне розвязання (Mathcad):

'+FloatToStrF(1.1367262217813367605,ffFixed,8,10));

end;

except

on EConvertError do

Application.MessageBox('Неправильно введен_ дан_', 'Увага');

end;

end;

end.