Численное интегрирование методом Симпсона с заданной точностью

End.

Begin

Begin

Var

Begin

f:=1/x

end;

a,b,e: real;

i: integer;

x,s,dx: real;

n: integer;

writeln('[a,b],n');

readln(a,b,n);

{вычисление длины отрезка – основания прямоугольника (дельта)}

dx:=(b-a)/n;

for i:=0 to n-1 do

{вычисление абсцыссы середины очередного отрезка разбиения}

x:=a+dx*i+dx/2;

s:=s+dx*f(x);

end;

writeln('int=',s);

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

Принцип метода Симпсона состоит в замене под­ын­те­граль­ной функ­ции f(х) интерполяционным мно­гочленом Нью­­то­на вто­рой сте­пени. Тогда для каждого эле­мен­тар­­но­го от­резка [хi,хi+1] име­ем следующее значение площади подынтегральной кривой:

.

Для всего отрезка интегрирования [a,b] формулой Симпсона:

Данное выражение называется формулой Сим­сона. Оно от­носится к формулам по­вы­шен­ной точ­нос­ти и яв­ля­ется точ­ной для мно­го­чле­нов второй и третьей сте­пе­ни.

Рисунок 31 – Геометрическая интерпретация численного интегрирования методом Симпсона

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

.

Рассмотренные формулы численного интегрирования требуют чёткого указания количества разбиений отрезка интегрирования. Однако классическое использование численного метода предполагает вычисление значения (корня, интеграла и т.д.) с заданной точностью.

Точность любой формулы численного интегрирования зависит от величины отрезка разбиения D.

Будем вычислять значение интеграла при разных значениях D (D1, D2, D3,…), где Di+1 = 2Di. Как только разница между значением интеграла, вычисленного при Di и интеграла, вычисленного при Di+1, станет меньше, чем значение e, будем считать, что интеграл вычислен с заданной точностью e.

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

program simp;

function f(x: real): real;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: