Для вычисления значения интеграла, хотя и приближенного, существует красивый способ, нареченный в честь его создателя, – способ Симпсона. Он также именуется методом парабол, поэтому как в нем употребляется построение параболы. Данная фигура строится очень приближенно к функции. Фактически, потому что выстроить параболу, у которой точки точно совпадают с точками функции, нереально, интеграл и находится приближенно. Формула нахождения его с границами a и b смотрится вот так: 1/h*(y0+4y1+2y2+4y3+…+4yn-1+yn). Тут нам необходимо просто вычислять каждый y от 0 до n, где n мы определяем сами – чем больше, чем лучше, ведь чем больше будет y-ов, тем паче приближенное к настоящему у нас значение получится. Что касается h, то это шаг и рассчитывается по таковой формуле: (b-a)/(n-1).

В чем заключается метод Симпсона и как реализовать его на языке Паскаль

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

Но перед этим вспомним, как смотрится интеграл. Это фигура, которая ограничена линиями, начинающимися на оси иксов, другими словами а и b.

В чем заключается метод Симпсона и как реализовать его на языке Паскаль

Итак, для начала в программке необходимо сделать функцию для интегрируемой функции (простите за тавтологию), в какой просто необходимо написать f:= и то, зачем будем отыскивать интеграл. Тут очень принципиально не ошибиться в вводе функции на языке Паскаль. Но это отдельная тема для разговора. Приобретенный код будет смотреться приблизительно так:

function f(x:real):real;

И основной текст функции

begin

f:=25*ln(x)+sin(10); {вот тут и необходимо написать содержимое собственной функции}

end;

Далее напишем функцию для реализации способа Симпсона. Начало будет приблизительно такое:

function simpsonmetod(a,b:real;n:integer):real;

Дальше объявим переменные:

var

s:real; { Промежные суммы (далее поймете) }

h:real; { Шаг }

my:integer; { Просто счетчик }

mno:integer; { Очередные множители }

А сейчас, фактически, сама программка:

begin

h:=(b-a)/(n-1); { Рассчитываем шаг по стандартной формуле. Время от времени в задании пишется шаг, в таком случае эта формула не применяется }

s:= f(b)+ f(a); { Задается изначальное значение шага }

mno:=4; { Вспомните формулу — 1/h*(y0+4y1… вот эта 4 тут и пишется, 2-ой множитель будет 2, но об этом далее }

Сейчас та основная формула:

for my:=1 to n-2 do begin

s:=s+mno*f(a+h*му); { К сумме добавляем очередной множитель, умноженный на 4*yn либо 2* yn }

if (mno=4) then mno:=2 else mno:=4;{ Здесь и изменяется множитель — если на данный момент равен 4, то изменяется на 2 и наоборот}

end;

simpsonmetod:=s*h/3; { Дальше полученную в итоге цикла сумму множим на h/3 согласно формуле}

end.

Вот и все – делаем все деяния согласно формуле. Если вы еще не сообразили, как применить в основной программке способ Симпсона, пример вам в этом поможет.

Итак после написания всех функций пишем

Begin

n:=3; { Задаем n }

q:=simpsonmetod(a,b,n); { Потому что способ Симпсона состоит в том, чтоб вычислять интеграл от a до b, будет пару шажков вычисления, потому организовываем цикл }

repeat

q2:=q; { Запоминается предшествующий шаг }

n:=n+2;

q:=simpsonmetod(a,b,n); { И рассчитывается последующее значение }

until (абс(q-q2)<0.001);{ В задании пишется точность, потому пока не достигнется нужная точность, необходимо повторять те же деяния }

В чем заключается метод Симпсона и как реализовать его на языке Паскаль

Вот таковой он – способ Симпсона. По сути ничего сложного, пишется все очень стремительно! А сейчас открывайте собственный Турбо Паскаль и начинайте писать программку.