Практическое исследование порядка точности на полиномах, страница 2

       n=10

       b=3.14

       call tint

       call Out

       write(1,'(I8,a,f20.15,a,f20.15)') n,';',rintegr,

     *';',(b-a)/n

       end if

       rintegr=0.0

       end

      program main

      implicit real*8 (a-h,o-z)

      common /int/ rintegr,a,b,isig,n

      !real*8 rintegr

      isig=0

      rintegr=0D00

      call vvod

1     print *,'Chose the action: 1- vvod n, 2- malost, 3 -exit'

      read *,j

      if (j.eq.1) then

       call trapec

       goto 1

       else

       if(j.eq.2) then

       call mal

       end if

        endif

      end

       subroutine mal

       implicit real*8 (a-h,o-z)

      common /int/ rintegr,a,b,isig,n

      !real*8 rintegr

        open(1,file='out.csv',status='old')

                do i=0,16

                n=2**i

                call tint

                write(*,'(I8,f20.15)')n,rintegr

                write(1,'(I8,a,f20.15,a,f20.15)') n,';',rintegr,

     *';',(b-a)/n

        rintegr=0D00

        end do

        pause

        close(1)

        end

Вывод.

1.  Для трех методов интегрирования было проведено практическое исследование порядка точности на полиномах:

Порядок точности k методов трапеций, гаусса 2, гаусса 4 соответственно 2, 4, 8. По таблицам видно, что для всех методов программа точно считает интегралы от полиномов степени m≤k-1; отношение погрешностей показывает насколько уменьшается погрешность при уменьшении шага разбиения в 2 раза и соответствует выведенному аналитически -- 4, 16, 256.

2.  Порядок малости для трех методов был исследован на двух сильно осциллирующих функциях, заполнена соответствующая таблица, для каждой строки также рассчитана оценка возможности применения методов Рунге и Ричардсона. По таблице видно, что область возможности применения для метода трапеций соответствует середине диапазона отрезков разбиения: в начале и конце методы Рунге и Ричардсона не работают, так как в начале шаг разбиения оказывается достаточно большим, а в конце слишком маленьким. Также видно, что при увеличении порядка точности метода интегрирования уменьшается область применения. По этим исследованиям можно сделать вывод, что данная программа дает возможность, не зная точного значения интеграла, получить его с точностью до n верных значащих цифр: в области возможности применения Рунге и Ричардсона по Рунге получаем абсолютную погрешность и определяем  количество верных цифр, делим абсолютную погрешность на приближенное значение, получаем относительную погрешность и количество верных значащих цифр.

3.  Исследование влияния длины слова. При увеличении длины слова для всех методов интегрирования область возможности применения методов Рунге и Ричардсона увеличивается, что увеличивает возможность получить больше верных значащих цифр. То есть более выгодным для использования методов численного интегрирования является реализация программы с двойной точностью.

4.  Исследование на неравномерных сетках. Была исследована одна функция на промежутках сгущения в области её экстремумов, быстрого роста и постоянства. Для всех методов интегрирования наименьшая погрешность при одинаковом количестве отрезков достигается при сгущении сетки в области быстрого роста функции по сравнению с остальными случаями, причем при увеличении порядка точности метода разница погрешностей при различных вариантах сгущения уменьшается. Значение погрешности при сгущении сетки в местах быстрого роста меньше, чем на равномерной сетке, а в области экстремумов погрешность больше, чем на равномерной для всех методов. Также было замечено на примере метода трапеций, что при существенно разном количестве отрезков разбиения(5000 и 41 соответственно) при сгущении сетки в области экстремумов и быстрого роста функции достигнута приблизительно одинаковая погрешность. Таким образом, наилучшие результаты дает сгущение сетки в местах быстрого роста функции.