Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Вычисление интегралов с заданной точностью




 

Уменьшая шаг, мы добиваемся большей точности результата. Это подсказывает алгоритм двойного пересчета, когда вычисления проводятся с шагом h, а затем с шагом h/2. Результаты сравниваются и если разность по модулю полученных квадратур удовлетворяет условию

,

где наперед заданная точность, то расчет заканчивается.

Детальнее проанализировав этот алгоритм, нетрудно заметить, что выполняются лишние действия. Действительно, когда проводится повторный расчет с уменьшенным вдвое шагом, происходит повторное вычисление значений функции в некоторых из узлов. Проиллюстрируем сказанное на методе трапеций.

1. Пусть n=1, т.е. на интервале [a,b] всего одна трапеция. Обозначим квадратурную формулу как

 

, где

Если n=2, то

 

 

где

Далее при n=4:

 

,

где .

Эти выкладки позволяют составить следующую рекуррентную формулу

 

, (7.14)

 

где ; . Она позволяет сделать алгоритм двойного пересчета более экономичным.

Вычисляя квадратурные формулы с шагом h и h/2, можно существенно улучшить результат, составляя комбинацию этих результатов, как это делалось в методах численного дифференцирования. Запишем

 

;

,

откуда нетрудно получить постоянную , подставляя которую во второе из этих равенств, получим соотношение

 

(7.15)

 

Запишем его для метода трапеций в узлах :

 

 

подставляя в (7.15), получим

 

формулу Симпсона для частичного интервала. Следовательно, комбинируя в методе двойного пересчета формулы трапеций, получаем метод парабол, имеющий точность на два порядка выше.

Обобщение этих выводов связано с формулой Ромберга:

 

, (7.16)

 

где , а результаты удобно представить в виде треугольной таблицы

где индекс i описывает изменение по строкам, а j - по столбцам.

Процедура заканчивается, когда диагональные элементы удовлетворяют условию:

 

(7.17)

 

Составим подпрограмму-функцию, реализующую метод Ромберга

 

function TrRomb(a,b,eps: real; f1:fun): real;

const m=10;

var q:array{1..m,1..m] of real;

h,s:real; i,j,k,m1,m2: integer;

Begin

h:=b-a; i:=1; m1:=1;

q[1,1]:=0.5*h*(f1(a)+f1(b));

Repeat

s:=0; Inc(i);

if (i>=m) then

begin writeln(‘Error!’); Exit end;

for k:=1 to m1 do

s:=s+ f1(a+h*(k-0.5));

m1:=m1*2; m2:=1;

q[i,1]:= 0.5*(q[i-1,1]+ h*s); h:=0.5*h;

for j:=2 to i do

begin m2:=m2*4;

q[i,j]:=(m2*q[i.j-1] - q[i-1.j-1])/(m2-1)

End;

until (abs(q[i.j] - q[i-1.j-1]) < eps);

TrRomb:= q[i.i]

End;

 

Приведем результаты расчетов в виде треугольной таблицы для выбранного нами теста

0.0000000000

1.5707963268 2.0943951024

1.8961188979 2.0045597550 1.9985707318

1.9742316019 2.0002691699 1.9999831309 2.0000055500

1.9935703438 2.0000165910 1.9999997525 2.0000000163 1.9999999962

1.9983933610 2.0000010334 1.9999999962 2.0000000001 2.0000000000 2.0000000000

 

Первый столбец – это уже известные нам результаты, когда в методе трапеций мы просто уменьшали шаг вдвое. Видно, что скорость сходимости в таком подходе невелика. Однако смещение по таблице вправо, т.е. комбинация с соответствующим весом предыдущих результатов говорит сама за себя.

Дальнейшее развитие этого алгоритма, связанное с изменением шага интегрирования в зависимости от функциональных колебаний, именуется адаптивной квадратурой. О нем Вы можете прочитать в специальной литературе.

 

  1. Метод Гаусса

 

Рассмотрим один из методов численного интегрирования, в котором расположение узлов и весов выбирается специальным образом. Это позволяет значительно снизить погрешность получаемых результатов. В связи с этим такие методы именуются методами наивысшей точности.

Рассмотрим интегрирование в области от –1 до +1, тогда

(7.18)

 

Специальный выбор узлов связан с тем, что - это корни полинома Лежандра степени n, а веса - получаются из решения системы нелинейных уравнений. Полиномы Лежандра имеют следующий вид

 

(7.19)

 

Например, для n=2 , а корни равны соответственно .

Для n=3 , корни этого полинома , 0 и .

Весовые коэффициенты можно найти из следующего соотношения

(7.20)

 

Например, при n=2 , а при n=3

 

При программировании значения узлов и весов удобно хранить в виде массива данных, поэтому следующая таблица будет весьма полезна:

n=6

 

n=8

 

Нами рассмотрена квадратурная формула (18) для интервала [-1,1]. Перейдем к другим пределам интегрирования

 

(7.21)

 

где ; . Теперь написать подпрограмму не составит труда

 

function Int_G3(a,b:real; f: fun):real;

const n=3;

t: array[1..3] of real = (-0.93244695142, -0.6612093865, -0.2386191861);

w: array[1..3] of real = (0.1713244924, 0.3607615730, 0.4679139346);

var alfa,beta,s:real; k:integer;

begin

s:=0; beta:=0.5*(a+b); alfa:=0.5*(b-a);

for k:=1 to n do

s:=s+w[k]*(f (beta+alfa*t[k]) + f (beta - alfa*t[k]));

Int_G3:=s*alfa

end;

Вычислим интеграл :

Представим вычисления в пакете Excel. Значения функции представим в сеточном виде для более удобного их применения (табл.7.1.).

 

 

Таблица 7.1. Значение функции

i xi f(xi)
     
  0,314159265 0,309016994
  0,628318531 0,587785252
  0,942477796 0,809016994
  1,256637061 0,951056516
  1,570796327  
  1,884955592 0,951056516
  2,199114858 0,809016994
  2,513274123 0,587785252
  2,827433388 0,309016994
  3,141592654  

 

По методу прямоугольников значение интеграла функции равно 1.983523538.

По методу трапеций значение интеграла функции равно 1.983523538.

По методу парабол (Симпсона)значение интеграла функции равно 2.00010952.

Таким образом, метод парабол дает самые точные значения.

 

Представим данные вычисления в пакете MathCAD.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных