Ти тут

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

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

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

В теорії все досить просто, але потрібно було б реалізувати все це на практиці. Для багатьох програмістів немає кращого способу для вирішення такого завдання, як метод Сімпсона - Паскаль або Делфі. В даному середовищі можна дуже просто не тільки обчислити інтеграл, а й побудувати до нього графік функції і навіть вибудувану до неї трапецію. Отже, розберемося, як можна швидко реалізувати метод Сімпсона і при бажанні навіть самим пояснити, як тут і що організовано, всім, хто цікавиться.

Відео: Метод Гаусса рішення лінійних рівнянь

Але перед цим згадаємо, як виглядає інтеграл. Це фігура, яка обмежена лініями, які починаються часткою на осі іксів, тобто а і b.

метод Сімпсона

Відео: Сортування вставками / Insertion sort C / C ++ (rus)

Отже, для початку в програмі потрібно створити функцію для інтегрованої функції (вибачте за тавтологію), в якій просто потрібно написати 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, але про це далі}

Тепер та сама основна формула:

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.

Відео: DIY [Нескінченна шоколадка] Endless Chocolate Bar

Ось і все - робимо все дії згідно з формулою. Якщо ви ще не зрозуміли, як застосувати в основній програмі метод Сімпсона, приклад вам в цьому допоможе.

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

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) lt; 0.001) - {У завданні пишеться точність, тому поки не достигнется необхідна точність, потрібно повторювати ті ж дії}

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

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

Поділися в соц мережах:

Увага, тільки СЬОГОДНІ!

Схожі повідомлення


Увага, тільки СЬОГОДНІ!