
- •Лекция-5 основы численных методов
- •§ 2.5. Методы численного интегрирования
- •2.5.1. Понятие о формулах численного интегрирования.
- •2.5.2. Формула прямоугольников (формула «средних»).
- •2.5.3. Формула трапеций.
- •2.5.4. Формула Симпсона.
- •2.5.5. Вычисление интеграла с заданной точностью.
- •2.5.6. Пример численного интегрирования полинома.
- •2.5.7. Пример программы (лабораторная работа 5). Вычисление интеграла методами прямоугольников (средних), трапеций и Симпсона с заданной точностью.
2.5.7. Пример программы (лабораторная работа 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
Замечание.
1. В приведенной программе реализованы все три рассматриваемые в настоящем курсе формулы численного интегрирования:
п/п PR – вычисление интеграла по формуле прямоугольников;
п/п TR – вычисление интеграла по формуле трапеций;
п/п SIMPS – вычисление интеграла по формуле Симпсона.
2. Переменная
(в программе – kmax)
определяет количество отрезков, на
которые делится интервал интегрирования
для вычисления интеграла с заданной
точностью. При этом значение n
последовательно удваивается до тех
пор, пока изменение приближенного
значения интеграла не станет меньше
заданного малого числа
(в
программе – eps),
значение которого вводится. При расчете
было принято:
kmax =20, eps =0.0001.
3. К данной программе (проекту) необходимо подключить стандартную подпрограмму QATR.FOR.
4. Формальному параметру sint (имени подпрограммы) в подпрограмме-функции aintegral соответствуют фактические параметры pr,tr и simps (имена подпрограмм-функций). Эти параметры, а также фактический параметр f в обращении к стандартной подпрограмме qatr, должны быть перечислены в списке оператора external:
external f,pr,tr,simps .
5. Параметры a0,a1,a2 вычисляются в основной программе и передаются в подпрограмму-функцию f оператором общих областей common:
common a0,a1,a2 .