У чому полягає метод Сімпсона і як реалізувати його на мові Паскаль
Для обчислення значення інтеграла, хоча і наближеного, існує прекрасний метод, названий на честь його творця, - метод Сімпсона. Він також називається способом парабол, тому що в ньому використовується побудова параболи. Дана фігура будується максимально наближено до функції. Власне, так як побудувати параболу, у якої точки точно збігаються з точками функції, неможливо, інтеграл і знаходиться наближено. Формула знаходження його з межами 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)-{ В задании пишется точность, поэтому пока не достигнется необходимая точность, нужно повторять те же действия }
Ось такий він - метод Сімпсона. Насправді нічого складного, пишеться все дуже швидко! А тепер відкривайте свій Турбо Паскаль і починайте писати програму.