У чому полягає метод Сімпсона і як реалізувати його на мові Паскаль

загрузка...

Для обчислення значення інтеграла, хоча і наближеного, існує прекрасний метод, названий на честь його творця, - метод Сімпсона. Він також називається способом парабол, тому що в ньому використовується побудова параболи. Дана фігура будується максимально наближено до функції. Власне, так як побудувати параболу, у якої точки точно збігаються з точками функції, неможливо, інтеграл і знаходиться наближено. Формула знаходження його з межами a і b виглядає ось так: 1 / h * (y0+4y1+2y2+4y3+... + 4yn-1+yn). Тут нам потрібно просто обчислювати кожен 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 * (y0+4y1 ... ось ця 4 тут і пишеться, другий множник буде 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 (abs (q-q2)<0.001)-{ В задании пишется точность, поэтому пока не достигнется необходимая точность, нужно повторять те же действия }

метод Сімпсона паскаль

Ось такий він - метод Сімпсона. Насправді нічого складного, пишеться все дуже швидко! А тепер відкривайте свій Турбо Паскаль і починайте писати програму.


» » У чому полягає метод Сімпсона і як реалізувати його на мові Паскаль