Вычисление интеграла методами прямоугольников (средних), трапеций и Симпсона с заданной точностью.

Пример программы (лабораторная работа 5).

Варианты задания.

,

где

, , ,

, ,

– номер группы; – номер студента по журналу.

 

Текст программы на F90

function f(x) common a0,a1,a2 f=((x+a2)*x+a1)*x+a0 end   ! метод прямоугольников function pr(a,b,n) h=(b-a)/n; s=0; x=a+h/2 do i=1,n s=s+f(x); x=x+h enddo; pr=h*s end   ! метод трапеций function tr(a,b,n) h=(b-a)/n; s=(f(a)+f(b))/2; x=a+h do i=1,n-1 s=s+f(x); x=x+h enddo; tr=h*s end   ! метод Симпсона function simps(a,b,n) h=(b-a)/n; s=f(a)+f(b); x=a+h; z=1 do i=1,n-1 s=s+(3+z)*f(x); x=x+h; z=-z enddo; simps=h*s/3 end   function aintegral(a,b,eps,kmax,n,sint) n=2; s=sint(a,b,n) do k=0,kmax n=n*2; s1=sint(a,b,n); if(abs(s1-s)<eps) goto 1; s=s1 enddo 1 aintegral=s1 end   external f,pr,tr,simps parameter(s=17,g=3,eps=0.0001,kmax=20,a=0,b=3) common a0,a1,a2 real r(20) a0=-s*(g*g+s*s)/1000; a1=(s+g)**2/100; a2=-(2*g+s)/10; print '(4(2x,a,f10.4))','a0=',a0,'a1=',a1,'a2=',a2 print 100,'PR:',aintegral(a,b,eps,kmax,n,pr),'n=',n print 100,'TR:',aintegral(a,b,eps,kmax,n,tr),'n=',n print 100,'SIMPS:',aintegral(a,b,eps,kmax,n,simps),'n=',n call qatr(a,b,eps,20,f,sq,ier,r); print 100,'QATR:',sq 100 format(2x,a,f10.4,4x,a,i10) end

 

Результаты счета

 

a0= -5.0660 a1= 4.0000 a2= -2.3000

PR: 2.3520 n= 512

TR: 2.3520 n= 1024

SIMPS: 2.3520 n= 4

QATR: 2.3520

Press any key to continue