КампутарыПраграмаванне

У чым заключаецца метад Сімпсана і як рэалізаваць яго на мове Паскаль

Для вылічэнні значэння інтэграла, хоць і набліжанага, існуе выдатны метад, названы ў гонар яго стваральніка, - метад Сімпсана. Ён таксама называецца спосабам парабалы, таму як у ім выкарыстоўваецца пабудова парабалы. Дадзеная фігура будуецца максімальна набліжана да функцыі. Уласна, так як пабудаваць парабалу, у якой пункту дакладна супадаюць з кропкамі функцыі, немагчыма, інтэграл і знаходзіцца набліжана. Формула знаходжання яго з межамі 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

 

 

 

 

Newest

Copyright © 2018 be.delachieve.com. Theme powered by WordPress.