Кампутары, Праграмаванне
У чым заключаецца метад Сімпсана і як рэалізаваць яго на мове Паскаль
Для вылічэнні значэння інтэграла, хоць і набліжанага, існуе выдатны метад, названы ў гонар яго стваральніка, - метад Сімпсана. Ён таксама называецца спосабам парабалы, таму як у ім выкарыстоўваецца пабудова парабалы. Дадзеная фігура будуецца максімальна набліжана да функцыі. Уласна, так як пабудаваць парабалу, у якой пункту дакладна супадаюць з кропкамі функцыі, немагчыма, інтэграл і знаходзіцца набліжана. Формула знаходжання яго з межамі a і b выглядае вось так: 1 / h * (y 0 + 4y 1 + 2y 2 + 4y 3 + ... + 4y n-1 + y n). Тут нам трэба проста вылічаць кожны y ад 0 да n, дзе n мы вызначаем самі - чым больш, чым лепш, бо чым больш будзе y-ов, тым больш набліжанае да сапраўднага у нас значэнне атрымаецца. Што тычыцца h, то гэта крок і разлічваецца па такой формуле: (ba) / (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 = (ba) / (n-1); {Разлічваем крок па стандартнай формуле. Часам у заданні пішацца крок, у такім выпадку гэтая формула не ўжываецца}
s: = f (b) + f (a); {Задаецца пачатковае значэнне кроку}
mno: = 4; {Успомніце формулу - 1 / h * (y 0 + 4y 1 ... вось гэтая 4 тут і пішацца, другі множнік будзе 2, але пра гэта далей}
Цяпер тая самая асноўная формула:
for my: = 1 to n-2 do begin
s: = s + mno * f (a + h * му); {Да суме дадаем чарговы множнік, памножаны на 4 * y n або 2 * y n}
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 (abs (q-q2) <0.001); {У заданні пішацца дакладнасць, таму пакуль не дасягне неабходная дакладнасць, трэба паўтараць тыя ж дзеянні}
Вось такі ён - метад Сімпсана. На самай справе нічога складанага, пішацца ўсё вельмі хутка! А цяпер адкрывайце свой Турба Паскаль і пачынайце пісаць праграму.
Similar articles
Trending Now