МАТЕМАТИЧНЕ...

72
КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА А. І. МОМОТ О. Я. ОЛІХ МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ Методичні вказівки до практичних робіт

Upload: others

Post on 25-Jun-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

КИЇВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ІМЕНІ ТАРАСА ШЕВЧЕНКА

А. І. МОМОТ О. Я. ОЛІХ

МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ

Методичні вказівки до практичних робіт

Page 2: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Рецензенти:

канд. фіз.-мат. наук, доц. В. Я . Ч ол і й, канд. фіз.-мат. наук, доц. О . В . Р ом ан ен ко

Рекомендовано до друку вченою радою фізичного факультету (протокол № 8 від 21 лютого 2011 року)

Момот, А. І.

Математичне моделювання : метод. вказівки до практ. робіт / А. І. Момот, О. Я. Оліх. – К. : Видавничо-поліграфічний центр "Київський університет", 2011. – 72 с.

Наведено короткий огляд числових методів розв’язування алгебраїчних рівнянь і систем лінійних алгебраїчних рівнянь, інтерполяції, апроксимації та інтегрування функцій однієї змінної, а також алгоритми їх практичної реалізації. Викладений матеріал та завдання відповідають робочій програмі дисципліни "Математичне моделювання".

Для студентів фізичного факультету Київського національного університету імені Тараса Шевченка.

© Момот А. І., Оліх О. Я., 2011

Page 3: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Змiст

I. Загальнi властивостi числових методiв . . . . . . . . 4II. Алгебраїчнi рiвняння . . . . . . . . . . . . . . . . . 10III. Системи лiнiйних алгебраїчних рiвнянь:

методи Гаусса та LU-розвинення . . . . . . . . . 21IV. Системи лiнiйних алгебраїчних рiвнянь:

метод прогонки, iтерацiйнi методи . . . . . . . . 32V. Iнтерполяцiя за допомогою полiномiв Лагранжа

та Ньютона . . . . . . . . . . . . . . . . . . . . . . 40VI. Iнтерполяцiя сплайнами . . . . . . . . . . . . . . . 49VII. Апроксимацiя . . . . . . . . . . . . . . . . . . . . . 57VIII. Числове iнтегрування . . . . . . . . . . . . . . . 63Список лiтератури . . . . . . . . . . . . . . . . . . . . . 71

3

Page 4: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Практичне заняття I. Загальнi властивостi число-

вих методiв

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

Розглянемо деякi особливостi обчислювальної математики,якi безпосередньо пов’язанi з величиною похибки кiнцевого ре-зультату. До них належать такi.

1. Обчислювальна математика оперує дискретними об’єкта-ми: дiйсне число розглядається як число iз плаваючою кра-пкою, вiдрiзок — як система точок, неперервна функцiя — яктаблична, тобто як набiр значень аргументу та функцiї. Однимiз наслiдкiв цього є поява похибки методу.

2. У комп’ютерному представленнi числа мають обмежену кiль-кiсть знакiв пiсля коми i це є причиною того, що при обчисле-ннях з’являтиметься машинна похибка округлення. Розгляне-мо її появу на прикладi. Припустимо, що необхiдно розв’язатирiвняння

x4 − 4x3 + 8x2 − 16x+ 15,99999999 = 0.

Один зi шляхiв розв’язання — видiлити четвертий степiнь рi-зницi:

(x− 2)4 − 10−8 = 0,

(x− 2)2 = ±10−4.

Таким чином, матимемо чотири розв’язки: x1 = 2,01;x2 = 1,99; x3 = 2 + 0,01i; x4 = 2 − 0,01i. Водночас, якщо

4

Page 5: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

похибка заокруглення δm > 10−8, то число 15,99999999 будезамiнене на 16 i отримаємо рiвняння

(x− 2)4 = 0.

Його чотири розв’язки є однаковими x1 = x2 = x3 = x4 = 2 iвiдрiзняються вiд точних розв’язкiв.

Для характеристики цього явища вводять поняття машин-ного епсiлон: це таке число εm, для якого при комп’ютернихрозрахунках

1 + εm = 1.

εm описує вiдносну похибку машинного заокруглення (або вiд-носну вiдстань мiж машинними числами); його значення зале-жить вiд того, який обсяг пам’ятi видiляється для збереженняодного числа.

3. Iснує поняття зумовленостi розв’язку, тобто чутливостi роз-в’язку до малих змiн вхiдних даних. Наприклад, система рiв-нянь

{

x+ 10y = 11;

100x + 1001y = 1101

має розв’язок x = 1, y = 1. Якщо додати до правої части-ни першого рiвняння всього одну соту (змiнити її на 0,01), томатимемо систему

{

x+ 10y = 11,01;

100x+ 1001y = 1101

iз розв’язком x = 11,01, y = 0. Тобто, вихiдна система поганозумовлена: вiдносно невелика змiна вихiдних даних призвеладо значних змiн розв’язку.

Зазначимо, що приклад з попереднього пункту також пога-но зумовлений: абсолютна похибка у вiльному членi порядку10−8 призвела до похибок розв’язку близько 10−2.

5

Page 6: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

4. Вибiр алгоритму обчислень може впливати на їх результат.Наприклад, якщо обчислювати значення функцiї exp(x) за до-помогою її розвинення в ряд

exp(x) = 1 + x+x2

2!+

x3

3!+ . . . ,

то виявляється, що для додатних значень аргументу обчисле-ння функцiї у такий спосiб дає цiлком прийнятнi значення.Водночас, для отримання правильного результату при x < 0необхiдно скористатися тим, що exp(−x) = [exp(x)]−1, тобтоспочатку за допомогою ряду обчислити значення функцiї длямодуля аргументу, а вже потiм порахувати величину, оберненудо отриманої в результатi обчислення суми.

5. Алгоритм обчислень має бути економiчним, тобто з мiнi-мiзованою кiлькiстю елементарних операцiй. Для iлюстрацiїзнайдемо суму

S = 1 + x+ x2 + x3 + . . .+ x1023 (0 < x < 1).

Якщо обчислювати кожен iз доданкiв як

x, x2 = x · x, x3 = x2 · x, . . . , x1023 = x1022 · x,

то потрiбно буде виконати 1022 операцiї множення i 1023 опе-рацiї додавання, причому кожна з них характеризуватиметьсяпохибками, пов’язаними з машинним округленням результату.З iншого боку, якщо скористатись виразом, який описує сумупрогресiї

S =1− x1024

1− x,

та врахувати, що x2 = x · x, x4 = x2 · x2, . . . , x1024 = x512 · x512,то необхiдно буде виконати всього 10 операцiй множення, однудiлення та двi вiднiмання.

6

Page 7: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Завдання I.1. Написати програму пошуку машинного епсi-лон для чисел типу float та double.

Завдання I.2. Написати програму обчислення функцiї за до-помогою її розвинення у степеневий ряд

f(x) =

∞∑

k=0

akxk ⇒ f(x) ≈

N−1∑

k=0

akxk, | aNxN | < ε,

iз точнiстю ε = 10−8 на прикладi f(x) = sin(x), f(x) = cos(x),f(x) = exp(x).

Примiтка:

exp(x) = 1 + x+x2

2!+

x3

3!+ . . .

sin(x) = x−x3

3!+

x5

5!−

x7

7!+ . . .

cos(x) = 1−x2

2!+

x4

4!−

x6

6!+ . . .

Завдання I.3. Написати функцiю, яка читає данi з файла, щоскладається зi стовпцiв чисел, i заповнює ними заданi масиви(масив).

Орiєнтовнi алгоритми

Запропонованi в цьому та наступному роздiлах алгоритминосять назву “орiєнтовнi” через те, що вони висвiтлюють осо-бливостi реалiзацiї саме числових методiв i не завжди вiдобра-жають усi деталi, якi потрiбно врахувати для того, щоб програ-ма працювала стабiльно. Наприклад, перед вiдкриттям файлабажано перевiрити, чи вiн взагалi iснує на диску; пiд час зчи-тування числових даних варто переконатися, чи дiйсно цифривнесено у файл (набрано користувачем на клавiатурi); якщоочiкується, що данi у файлi розташовано у декiлька стовпцiв,

7

Page 8: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

то слiд перевiрити, чи кожен рядок мiстить однакову кiль-кiсть чисел тощо. Але всi цi моменти бiльше стосуються якостiта рiвня програмування i в наведених алгоритмах не будутьвiдображатися.

Завдання I.2

Розглянемо розв’язання завдання на прикладi функцiї sin(x).Як вiдомо з курсу математичного аналiзу, її розвинення у рядможна записати у виглядi

sin(x) =

∞∑

k=0

qk, де qk = (−1)kx2k+1

(2k + 1)!.

Легко побачити, що, зокрема,

q2 =x5

5!=

x3 · x2

3! · 4 · 5= −q1

x2

4 · 5,

i, загалом, два послiдовнi доданки пов’язанi мiж собою спiв-вiдношенням

qk+1 = −x2

(2k + 2)(2k + 3)· qk, q0 = x.

Тобто, для обчислення k-го доданка не потрiбно безпосередньошукати значення виразiв x2k+1 i (2k + 1)!, а можна скориста-тись отриманим вище спiввiдношенням, що суттєво зменшитькiлькiсть операцiй.

Таким чином, сам алгоритм можна записати у виглядi та-кої послiдовностi операцiй.

i. У дiалоговому режимi зчитати iз клавiатури значення ар-гументу, для якого необхiдно розрахувати значення фун-кцiї.

ii. Обчислити перший доданок q0 i присвоїти його значеннярезультату.

8

Page 9: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

iii. Спираючись на значення попереднього доданка, обчисли-ти наступний.

iv. Порiвняти модуль отриманого доданка з ε. Якщо значенняε бiльше, то перейти до п. vi.

v. Додати отриманий доданок до результату. Перейти до п. iii.

vi. Вивести на екран результат.

vii. Для порiвняння вивести на екран значення функцiї дляцього ж аргументу, обчислене за допомогою вбудованихфункцiй.

Завдання I.3

i. У дiалоговому режимi отримати з клавiатури назву файлата кiлькiсть стовпцiв.

ii. Вiдкрити файл для читання.

iii. Визначити кiлькiсть рядкiв (наприклад, читаючи данi зфайла аж до його закiнчення; пiсля досягнення кiнця фай-ла повернути вказiвник на початок).

iv. Створити масив необхiдного розмiру.

v. Зчитати данi з файла в масив.

vi. Закрити файл.

vii. Вивести данi з масиву на екран.

9

Page 10: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Практичне заняття II. Алгебраїчнi рiвняння

Задачу розв’язання алгебраїчного рiвняння можна звестидо пошуку таких значень аргументу функцiї f(x), при якихзначення самої функцiї дорiвнює нулевi,

f(x) = 0, x−? ;

тобто знайти точки перетину графiка функцiї f(x) iз вiссю x.При розв’язаннi цiєї задачi, насамперед, постає завдання зна-йти дiапазон значень аргументу, де може бути розташованийрозв’язок. Розглянемо приклад, наведений на рис. 1. Значенняфункцiї у точцi x1 є додатним, а у точцi x2 — вiд’ємним, тому,очевидно, мiж цими точками знаходиться значення x таке, щоf(x) = 0. Отже, вiдрiзок [ a, b ], на якому шукається розв’язок,слiд вибирати з умови

f(a) · f(b) < 0. (II.1)

Умова (II.1) не гарантує, що на вiдрiзку є лише один корiнь,наприклад f(x1) ·f(x4) < 0, а коренiв мiж цими точками три. Iнавпаки, якщо умова (II.1) не виконується, то це може означа-ти, що на вибраному промiжку коренiв немає, як, наприклад

f(x)

xx1

x2

x3

x4 x5

Рис. 1. Приклад можливого взаємного розташування коренiврiвняння та границь вiдрiзка (точки xi), де шукається розв’язок

10

Page 11: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

на вiдрiзку [x4, x5], або їх є декiлька — вiдрiзок [x1, x3]. Окре-мим є випадок f(a) · f(b) = 0, коли кiнець вiдрiзка збiгаєтьсяiз коренем рiвняння.

Питання щодо локалiзацiї кореня (тобто про визначенняграниць вiдрiзка), як правило, алгоритмiчно не розв’язується;це, швидше, питання майстерностi того, хто проводить обчи-слення. Проте в багатьох випадках локалiзувати корiнь доситьпросто. Один iз найпростiших пiдходiв — вибрати початковийвiдрiзок довiльної ширини d таким чином, щоб одна з йогограниць збiгалася з точкою x = 0, а потiм змiщувати його навсю ширину праворуч або лiворуч доти, поки добуток значеньфункцiї у його крайнiх точках не буде вiд’ємним або нульовим.

Розглянемо основнi методи числового розв’язання алгебра-їчних рiвнянь.

Метод дiлення навпiл (або дихотомiя чи бiсекцiя)

Цей метод полягає у тому, що вихiдний вiдрiзок дiлитьсянавпiл точкою (рис. 2):

c = (a+ b)/2 . (II.2)

Якщо f(a) · f(c) > 0, тодi точка c стає лiвим кiнцем новоговiдрiзка (a → c, вiдрiзок [ a, b ] замiнюється на [ c, b ], рис. 2, а);якщо f(a) · f(c) < 0, то точка c стає правим кiнцем вiдрiзка

f(x)

x

a

f(a)b

c

f(b)

f(c)

f(x)

x

a

bc

а б

Рис. 2. Iлюстрацiя до методу дiлення навпiл: а — перший крок,б — другий

11

Page 12: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

(b → c, цей випадок зображено на рис. 2, б ). Якщо ж f(a) ·f(c) = 0, то це означає, що f(c) = 0 i точка c є розв’язком.

Операцiя подiлу повторюється, поки не починає виконува-тись одна з таких умов:

| f(c)| < δ ; (II.3)

| b− a| < δx ; (II.4)

| b− a| < εx · b , (II.5)

де δ — абсолютна точнiсть визначення функцiї, а умови (II.4)та (II.5) описують порiвняння вiдрiзка з абсолютною та вiд-носною точнiстю знаходження кореня вiдповiдно. Розв’язкомвважається координата однiєї iз границь кiнцевого вiдрiзка.Часто достатньо вiдслiдковувати лише виконання умови (II.4).

За вдалого вибору початкових значень a та b метод збiгає-ться завжди. Якщо ж функцiя має вигляд, подiбний до зобра-женого на рис. 3, то, незважаючи на те, що на вiдрiзку [ a, b ]умова (II.1) задовольняється, кореня там немає i метод дiлен-ня навпiл може дати хибний розв’язок. Аби уникнути подiбноїситуацiї, необхiдно контролювати зростання значення функцiї

f(x)

xa

bc

f(x)

xa

b

Рис. 3. Графiк функцiї, дляякої застосування методу ди-хотомiї призведе до хибногорозв’язку

Рис. 4. Графiк функцiї, корiньякої не можна визначити ме-тодом дiлення навпiл

12

Page 13: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

у точцi c, порiвняно з f(a) i f(b).Методом дiлення навпiл неможливо також знайти корiнь,

подiбний до зображеного на рис. 4, адже не можна вибративiдрiзок [ a, b ], який мiстить корiнь i при цьому функцiя маєрiзнi знаки на його границях.

Метод хорд

Цей метод вiдрiзняється вiд методу дихотомiї способом по-шуку нової границi вiдрiзка — точки c. Положення c визнача-ється з умови

c = a− f(a) ·b− a

f(b)− f(a). (II.6)

Як видно з рис. 5, точка c є перетином хорди AB з вiссю xi у цьому випадку вона знаходиться ближче до кореня, нiжсередина вiдрiзка [ a, b ]. Для подiбних трикутникiв Bbc i Aacможна записати вiдношення f(b)/(b−c) = −f(a)/(c−a), звiдки

c =af(b)− bf(a)

f(b)− f(a),

f(x)

x

a

f(a)bc

f(b)

a+b2

A

B

Рис. 5. Iлюстрацiя до пошуку наступного наближення у методiхорд

13

Page 14: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

що дозволяє легко отримати вираз (II.6). Тобто, у цьому методiпри визначеннi положення нової границi, окрiм знака функцiїна кiнцях вiдрiзка, враховується i її значення.

Пiсля визначення c змiна границi вiдрiзка вiдбувається таксамо, як у методi дiлення навпiл.

У методi хорд критерiй (II.4) незастосовний. Наприклад,у випадку, зображеному на рис. 6, положення точки b не змi-нюється, точка c iз кожним кроком наближається до кореня,але вiдрiзок [ ck, b ] не стає малим (ck — нова границя вiдрiзка,отримана пiд час k-го кроку). У цьому разi можна порiвнювативзаємне розташування точок, отриманих пiд час послiдовнихнаближень, тобто використовувати умову

| ck − ck−1| < δx , (II.7)

або можна застосовувати умову (II.3).

f(x)

x

a

b

c1 c2c3

Рис. 6. Приклад функцiї, для якої у методi хорд довжина вiдрiз-ка локалiзацiї кореня не може бути меншою за будь-яку напередзадану малу величину

У випадках, проiлюстрованих рисунками 3 та 4, при вико-ристаннi методу хорд виникають тi самi труднощi iз пошукомкореня, що i при застосуваннi методу бiсекцiї.

14

Page 15: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Метод Ньютона (або дотичних чи лiнеаризацiї)У цьому випадку розташування точки, бiльш наближеної

до шуканого розв’язку, вибирається в мiсцi перетину дотичноїдо графiка функцiї f(x) при x = b та осi абсцис (рис. 7). Ураху-вавши, що з одного боку, tgα = f ′(b), а з iншого,tgα = f(b)/(b− c), отримуємо умову для визначення положе-

ння нової границi вiдрiзка:

c = b−f(b)

f ′(b). (II.8)

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

{

f(b) · f ′(b) > 0 ;

b− f(b)/f ′(b) > a.(II.9)

Перша з них означає, що функцiя у точцi b є додатною iзростає або є вiд’ємною i спадає. Друга умова вимагає, щобзнайдена точка не виходила за межi вiдрiзка. Якщо цi умовине виконуються, то замiсть точки x = b можна використову-вати iншу границю. Для функцiї, наведеної на рис. 8, умо-ви (II.9) не виконуються у точках a та b, i тому для методу

x

a

bc1c2

α

f(b)

f(x)

Рис. 7. Спосiб пошуку наступного наближення у методi Ньютона

15

Page 16: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

f(x)

x

a

b

Рис. 8. Приклад невдалого вибору початкового вiдрiзка для ме-тоду Ньютона

Ньютона потрiбно пiдбирати iнший вiдрiзок. Загалом, вико-ристовуючи цей метод, не обов’язково задавати вiдрiзок [ a, b ],можна шукати розв’язок i навколо однiєї точки (x = b), якабуде початковим наближенням. Проте збiгатись цей метод прибудь-якому початковому наближеннi буде лише у випадку, ко-ли у всiх точках виконується умова

|f · f ′′|

(f ′)2< 1 .

У протилежному випадку метод збiгатиметься лише тодi, колипочаткова точка знаходиться у певному околi розв’язку.

Критерiєм припинення iтерацiй може бути або умова (II.3),або (II.7), де ck — наближення до розв’язку, отримане на k-му

кроцi. Фактично, згiдно з (II.8), ck+1 = ck −f(ck)

f ′(ck).

Метод сiчних

За змiстом цей метод є симбiозом методiв Ньютона та хорд.Спiльними рисами з методом Ньютона є: можливiсть знаходи-ти розв’язок в околi однiєї точки; наступне наближення роз-раховується на основi попереднього. Проте, щоб аналiтичноне обчислювати похiдну, використовують рiзницеву схему, фа-ктично проводячи хорду через точки f(ck) та f(ck−1) (рис. 9).Тобто, застосовується iтерацiйний процес, пiд час якого дляотримання наступного наближення використовуються резуль-

16

Page 17: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

f(x)

xc0c1c2c3

Рис. 9. Спосiб пошуку наступного наближення у методi сiчних

тати двох (а не одного, як у вищенаведених методах) попере-днiх крокiв:

ck+1 = ck − f(ck) ·ck − ck−1

f(ck)− f(ck−1). (II.10)

Для здiйснення першого кроку потрiбнi двi початковi точкиc0 та c1, проте не обов’язково, щоб шуканий корiнь рiвняннязнаходився на промiжку мiж ними.

У знаменнику виразу (II.10) розмiщена рiзницяf(ck)− f(ck−1). Далеко вiд кореня ця рiзниця буде великою,проте при наближеннi до кореня вона зменшуватиметься. Якнаслiдок, при машинних розрахунках виникає втрата значу-щих цифр, так зване “розхитування” розрахунку. Аби уникну-ти цього використовують так званий прийом Гарвiка: вибира-ють не дуже мале значення δx i проводять iтерацiї до виконан-ня умови (II.7); пiсля чого iтерацiї не припиняють, а повторю-ють доти, поки рiзниця | ck − ck−1| продовжує зменшуватись.Перше збiльшення цiєї рiзницi означає, як правило, початок“розхитування”, пiсля чого розрахунки припиняють i резуль-тат останньої iтерацiї не використовують.

17

Page 18: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Метод простої iтерацiїУ цьому методi рiвняння f(x) = 0 замiнюється еквiвален-

тнимx = ϕ(x) . (II.11)

Наприклад, функцiя ϕ(x) може мати вигляд

ϕ(x) = x− ψ(x)f(x) ,

де ψ(x) — довiльна неперервна знакостала функцiя. Зрозумi-ло, що коли x буде коренем вихiдного рiвняння, то рiвнiсть(II.11) також виконуватиметься. У цьому випадку iтерацiйнеспiввiдношення має вигляд

ck+1 = ϕ(ck) , (II.12)

i обчислення продовжуються, доки не буде виконуватись не-рiвнiсть (II.7).

Для того, щоб метод збiгався, необхiдно аби виконуваласьумова |ϕ′(x)| < 1 на всьому iнтервалi, де шукається розв’язок.Один iз простих варiантiв — вибрати функцiю ψ(x) у виглядiконстанти: ψ(x) = τ = const. Якщо на вiдрiзку, де шукаєтьсярозв’язок,

0 < m < f ′(x) < M

(m та M — константи), то для забезпечення збiжностi процесуможна покласти

τ =2

M +m.

Для цього методу, окрiм (II.7), iснує ще один критерiй при-пинення iтерацiй: вiдповiдь не буде вiдрiзнятися вiд точногозначення кореня бiльше нiж на δx, якщо

(ck − ck−1)2

| 2ck−1 − ck − ck−2|< δx . (II.13)

Якщо ж у методi простої iтерацiї покласти ψ(x) = 1/f ′(x), товiн зведеться до методу Ньютона.

18

Page 19: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Завдання II.1. Написати програму пошуку кореня рiвнянняf(x) = 0:

1) методом дiлення навпiл;

2) методом Ньютона;

3) методом хорд;

4) методом сiчних;

5) методом простої iтерацiї.

Порiвняти отриманi результати.

Орiєнтовнi алгоритми

Завдання II.1

i. У програмi означити функцiю, коренi якої шукаються, їїпохiдну (для методу Ньютона) або iтерацiйну функцiю(для методу простої iтерацiї).

ii. Задати величини δ, δx та максимальну кiлькiсть iтерацiйNiter.

iii. Визначити iнтервал, на якому вiдбуватиметься пошук роз-в’язку.

iv. Присвоїти нульове значення лiчильнику iтерацiй iiter.

v. Використовуючи один iз виразiв (II.2), (II.8), (II.6), (II.10)або (II.12) (залежно вiд методу), обчислити наступне на-ближення до розв’язку.

vi. Збiльшити лiчильник iтерацiй на одиницю.

vii. Залежно вiд значень функцiї f(x) у точках a, b та c змi-нити iнтервал пошуку розв’язку (для методiв дихотомiї тахорд).

19

Page 20: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

viii. Перевiрити виконання:

а) умови (II.7) (умови (II.4) для методу бiсекцiї);

б) умови iiter > Niter;

в) умови (II.3).

За виконання будь-якої з умов для методiв дiлення навпiл,дотичних, хорд та простих iтерацiй перейти до п. ix. Упротилежному випадку перейти до п. v.

Для методу сiчних при виконаннi умови (II.7) використатиприйом Гарвiка. Для цього необхiдно запам’ятати рiзницюнаближень, отриманих у двох останнiх iтерацiях, перейтидо п. v i в наступних циклах замiсть (II.7) перевiряти, чине зростає ця рiзниця. У рештi випадкiв виконувати дiї,аналогiчнi дiям за iншими методами.

ix. Вивести на екран результат.

Примiтка. Iз метою оцiнювання обчислювальної складно-стi методу на екран можна вивести також значення iiter.

20

Page 21: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Практичне заняття III. Системи лiнiйних алгебраї-

чних рiвнянь: методи Гаусса та LU-розвинення

У загальному випадку систему лiнiйних алгебраїчних рiв-нянь, у якiй кiлькiсть рiвнянь дорiвнює кiлькостi невiдомих,можна записати у виглядi

Ax = f , (III.1)

де A =

a11 a12 . . . a1na21 a22 . . . a2n...

.... . .

...an1 an2 . . . ann

— матриця коефiцiєнтiв рiв-

нянь,

f =

f1f2...fn

— вектор вiльних членiв,

x =

x1x2...xn

— вектор невiдомих.

Система (III.1) має розв’язок, причому єдиний, за умовиdet A 6= 0, тобто, коли матриця A невироджена.

Розрiзняють методи розв’язання таких систем:

1) прямi — отримується точний розв’язок (у припущеннi вiд-сутностi помилок округлення) за скiнченної кiлькостi ари-фметичних дiй;

2) iтерацiйнi — розраховується послiдовнiсть xk (k – номерiтерацiї), яка збiгається до точного розв’язку при k → ∞.

Спочатку розглянемо декiлька прямих методiв.

21

Page 22: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Метод Гаусса (або метод виключення Гаусса)

У цьому методi використовується вiдома властивiсть, якаполягає у тому, що якщо в лiнiйнiй системi помiняти мiсцямидва рядки, або до одного з рядкiв додати iнший, помноженийна якесь число, то розв’язок системи не змiниться. Метод Га-усса складається iз прямого ходу i зворотного. Метою прямогоходу є зведення лiнiйної системи до верхньої трикутної (тобтотакої, для якої всi aij = 0 при i > j). Необхiднi для цього дiївиконуються за декiлька крокiв.

Крок 1. Виключаємо x1 з усiх рiвнянь, починаючи з друго-го. Для цього до другого рiвняння додаємо перше, домножене

на

(

−a21

a11

)

; до третього — перше, домножене на

(

−a31

a11

)

, i

т. д. У результатi отримаємо систему рiвнянь

a11x1 + a12x2 + . . .+ a1nxn = f1 ;

a(1)22 x2 + . . .+ a

(1)2n xn = f

(1)2 ;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

a(1)n2 x2 + . . .+ a(1)nnxn = f (1)

n ,

де {a(1)ij } та {f

(1)i } — матриця коефiцiєнтiв рiвнянь та вектор

вiльних членiв пiсля першого кроку:

a(1)ij = aij −

ai1a11

· a1j , f(1)i = fi−

ai1a11

· f1 , i, j = 2, n . (III.2)

Крок 2. Виключаємо x2 з останнiх (n−2) рiвнянь. Для цьо-

го до третього рiвняння додаємо друге, домножене на

(

−a(1)32

a(1)22

)

;

до четвертого — друге, домножене на

(

−a(1)42

a(1)22

)

, i т. д. Отри-

22

Page 23: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

мана система рiвнянь матиме вигляд

a11x1 + a12x2 + a13x3 + . . . + a1nxn = f1 ;

a(1)22 x2 + a

(1)23 x3 + . . . + a

(1)2n xn = f

(1)2 ;

a(2)33 x3 + . . . + a

(2)3n xn = f

(2)3 ;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

a(2)n3 x3 + . . . + a(2)nnxn = f (2)

n ,

де елементи матрицi коефiцiєнтiв та вектора вiльних членiвпiсля другого кроку обчислюються за виразами

a(2)ij = a

(1)ij −

a(1)i2

a(1)22

· a(1)2j ,

f(2)i = f

(1)i −

a(1)i2

a(1)22

· f(1)2 , i, j = 3, n .

(III.3)

Крок (n− 1). Виключається xn−1 з останнього рiвняння iв результатi отримується трикутна система рiвнянь

a11x1 + a12x2 + a13x3 + . . .+ a1nxn = f1 ;

a(1)22 x2 + a

(1)23 x3 + . . .+ a

(1)2n xn = f

(1)2 ;

a(2)33 x3 + . . .+ a

(2)3n xn = f

(2)3 ;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

a(n−1)nn xn = f (n−1)

n .

(III.4)

Пiсля цього розпочинається зворотний хiд, пiд час якогопослiдовно визначаються невiдомi, починаючи з останньої:

23

Page 24: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

xn =f(n−1)n

a(n−1)nn

;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

xk =1

a(k−1)kk

· (f(k−1)k − a

(k−1)k,k+1xk+1 − . . . − a

(k−1)kn xn) ;

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

x2 =1

a(1)22

· (f(1)2 − a

(1)23 x3 − . . . − a

(1)2n xn) ;

x1 =1

a11· (f1 − a12x2 − . . .− a1nxn) .

(III.5)

Зазначимо, що визначник матрицi A можна обчислити якдобуток дiагональних елементiв матрицi (III.4)

det A = a11 × a(1)22 × a

(2)33 × . . . × a(n−1)

nn . (III.6)

При використаннi методу Гаусса може виникнути ситуа-цiя дiлення на нуль i подальшi обчислення унеможливлюю-ться. Ситуацiя дiлення на дуже мале число також є небажа-ною, тому що у цьому випадку буде накопичуватись помилка,пов’язана з машинним округленням. Як наслiдок, частiше напрактицi використовують метод Гаусса з вибором головного

елемента.

Метод Гаусса з вибором головного елементаУ цьому випадку проводять вибiр по стовпцям, а саме: пе-

ред виключенням x1 серед набору {a i1} (i = 1, n) шукаютьнайбiльший за модулем елемент. Якщо для нього i = k 6= 1,то мiняють мiсцями перший та k-й рядки матрицi A i пер-ший та k-й компоненти вектора f i лише пiсля цього викону-ють процедуру виключення першої невiдомої (крок 1 прямо-го ходу). Далi, перед початком другого кроку, подiбним чи-

24

Page 25: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

ном знаходять максимальний за модулем елемент серед набо-ру {a

(1)i2 } (i = 2, n), мiняють мiсцями другий та вiдповiдний

рядки i т. д. Якщо на одному iз крокiв не вдається знайтиу стовпцi вiдмiнний вiд нуля елемент, то матриця системи євиродженою (визначник дорiвнює нулю) i розв’язку не iснує.

Схожим способом можна реалiзувати вибiр по рядках: пе-ред виключенням xj шукається максимальний за модулем еле-

мент серед набору {a(j−1)ji } (i = j, n), потiм за необхiдностi

переставляються стовпцi матрицi A разом iз вiдповiдними ком-понентами вектора x i лише потiм розпочинається домножен-ня та додавання рiвнянь (виключення невiдомих). Звичайно, уцьому випадку необхiдно запам’ятовувати, якi невiдомi з яки-ми обмiнювались мiсцями.

Найбiльш ефективним буде метод Гаусса з одночасним ви-бором головного елемента по всiй матрицi (i по стовпцях, i порядках). Однак потрiбно вiдслiдковувати перестановки стов-пцiв, iнакше невiдомi xi будуть отриманi у неправильному по-рядку. Також, при обчисленнi цим методом детермiнанта, слiдпам’ятати, що перестановка двох рядкiв чи двох стовпцiв при-зводить до змiни знака детермiнанта на протилежний.

Отриманий числовими методами розв’язок x(1) є наближе-ним за рахунок похибок заокруглення, але його можна покра-щити (уточнити). Похибка отриманого розв’язку ε(1) = x−x(1)

(x — точний розв’язок) задовольняє рiвняння

Aε(1) = Ax− Ax(1) = f − Ax(1) .

Обчисливши праву частину, а потiм розв’язавши цю системурiвнянь, можна отримати ε(1), а отже i уточнений розв’язок:

x(2) = x(1) + ε(1) .

Через те, що при знаходженнi ε(1) знову мали мiсце по-хибки заокруглення, то x(2) не збiгається з точним розв’язкомi його знову можна покращити, знайшовши ε(2) = x − x(2) i

25

Page 26: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

т. д. Процес уточнення можна продовжувати, доки величинапохибки ε(i) не стане меншою за бажану точнiсть розв’язку.

Метод LU-розвиненняУ цьому випадку матриця A представляється у виглядi до-

бутку двох трикутних матриць:

A = L · U , (III.7)

a11 a12 . . . a1na21 a22 . . . a2n. . . . . . . . . . . .an1 an2 . . . ann

=

=

1 0 . . . 0l21 1 . . . 0. . . . . . . . . . . .ln1 ln2 . . . 1

·

u11 u12 . . . u1n0 u22 . . . u2n. . . . . . . . . . . .0 0 . . . unn

. (III.8)

Коефiцiєнти матриць {lij} та {uij} можна визначити по-слiдовно. А саме, безпосередньо перемноживши перший рядокматрицi L на матрицю U , отримаємо

u11 = a11 , u12 = a12 , . . . , u1n = a1n .

Пiсля множення другого рядка запишемо

l21 = a21/u11 ,

u22 = a22 − l21 · u12 ,

· · · · · · · · · · · · · · · · · · · · ·

u2n = a2n − l21 · u1n .

За результатом множення третього рядка матрицi L на матри-цю U дiстанемо

l31 =a31u11

,

26

Page 27: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

l32 =a32 − l31u12

u22, . . .

У загальному випадку вирази для обчислення коефiцiєнтiв ма-триць мають вигляд

uij = aij −j−1∑

k=1

likukj , i 6 j ,

lij =

aij −j−1∑

k=1

likukj

ujj, i > j .

(III.9)

Вiдповiдно, система (III.1) зводиться до вигляду

(L U )x = f , (III.10)

абоLV = f , де V = U x . (III.11)

З iншого боку, якщо переписати вирази з (III.11) детальнiше,то вони виглядатимуть так:

v1 = f1 ;l21v1 + v2 = f2 ;. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ln1v1 + ln2v2 + . . .+ vn = fn ,

(III.12)

u11x1 + u12x2 + . . .+ u1nxn = v1 ;u22x2 + . . .+ u2nxn = v2 ;. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .unnxn = vn .

(III.13)

Отже, можна з (III.12) виразити елементи вектора V

v1 = f1 , vk = fk −

k−1∑

j=1

lkjvj , k = 2, n . (III.14)

27

Page 28: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Потiм, пiдставивши отримане в (III.13), знайти i невiдомi:

xk =1

ukk

(

vk −

n∑

j=k+1

ukjxj

)

, k = (n− 1), 1 . (III.15)

Задача про розв’язання системи лiнiйних рiвнянь спорiдне-на до задачi про пошук оберненої матрицi. Так, щоб знайти ма-трицю, обернену до A, можна розв’язати набiр систем рiвняньтипу

Ax1 =

100...0

, Ax2 =

010...0

, . . . , Axn =

000...1

.

Тодi набiр розв’язкiв {xi} утворять стовпцi оберненої матрицiA−1.

Завдання III.1. Написати програму розв’язання системи рiв-нянь методом Гаусса. За її допомогою розв’язати систему рiв-нянь, коефiцiєнти якої записанi у файлi у виглядi

a11 a12 . . . a1n f1a21 a22 . . . a2n f2...

.... . .

......

an1 an2 . . . ann fn

Завдання III.2. Написати програму розв’язання системи рiв-нянь методом Гаусса з вибором головного елемента.

Завдання III.3. Написати програму пошуку визначника ма-трицi методом Гаусса.

Завдання III.4. Написати програму пошуку оберненої ма-трицi методом Гаусса.

28

Page 29: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Орiєнтовнi алгоритми

Завдання III.1—III.2

i. Вiдкрити файл.

ii. Визначити кiлькiсть рiвнянь n у системi, порахувавши, на-приклад, кiлькiсть рядкiв у файлi.

iii. Залежно вiд n створити масив необхiдного розмiру.

iv. Перевiрити правильнiсть даних у файлi (кiлькiсть чиселу кожному рядку), зчитати данi в масив.

v. Закрити файл.

vi. Провести прямий хiд методу Гаусса. Для цього присвоїтицiлiй змiннiй i значення 0.

vii. Збiльшити значення i → i+ 1.

viii. Серед множини елементiв {alk}, i 6 l 6 n, i 6 k 6 n,знайти найбiльший за модулем i визначити номер стовпцяkmax i номер рядка lmax, де вiн знаходиться.

ix. Якщо lmax вiдрiзняється вiд i, помiняти мiсцями у масивiданих i-й та lmax-й рядки матрицi коефiцiєнтiв рiвняннята вiдповiднi компоненти вектора вiльних членiв.

x. Якщо kmax вiдрiзняється вiд i, помiняти мiсцями у масивiданих i-й та kmax-й стовпцi матрицi коефiцiєнтiв рiвняння.Запам’ятати, якi стовпцi були переставленi.

xi. Якщо aii = 0, то вивести на екран напис про те, що розв’яз-ку не iснує та припинити роботу програми.

xii. Для всiх коефiцiєнтiв, якi знаходяться в рядку, номер яко-го бiльше i, та у стовпцi, номер якого бiльше i, а також

29

Page 30: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

компонентiв вектора вiльних членiв iз номером бiльшимза i, провести замiну:

alk → a∗lk = alk−aliaii

·aik , fl → f∗l = fl−

aliaii

·fi , ali = 0 ,

l, k = (i+ 1), n .

xiii. Якщо i < (n− 1), перейти до п. vii.

Примiтка. При виконаннi Завдання III.1 пп. viii–x пропу-стити.

xiv. Провести зворотний хiд методу Гаусса. Для цього надатиi значення n.

xv. Розрахувати значення i-ї невiдомої за формулою

xi =1

aii

(

fi −

n∑

k= i+1

aik xk

)

.

Врахувати, що при i = n кiлькiсть доданкiв у сумi нульова.

xvi. Зменшити значення i → i− 1.

xvii. Якщо i > 0, то перейти до п. xv.

xviii. Вивести на екран (або у файл) значення всiх невiдомих,з урахуванням перестановок стовпцiв, якi були виконанi,при виборi головного елемента.

30

Page 31: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Завдання III.3

i. Виконати пункти i–xiii алгоритму Завдання III.1—III.2 (окрiмдiй, якi стосуються компонент вектора вiльних членiв).Порахувати всi перестановки рядкiв i стовпцiв, якi буливиконанi при виборi головного елемента, i зберегти їх узмiннiй s.

ii. Обчислити визначник матрицi за формулою

det A = (−1)sn∏

i=1

aii .

iii. Вивести на екран (або у файл) результат.

Завдання III.4

i. Виконати пункти i–v алгоритму Завдання III.1—III.2.

ii. Присвоїти цiлiй змiннiй значення j = 1.

iii. Присвоїти компонентам вектора вiльних членiв значення

fl =

{

1 , l = j ;

0 , l 6= j .

iv. Виконати пункти vi–xvii алгоритму Завдання III.1—III.2.

v. Запам’ятати отриманий вектор розв’язкiв як j-й стовпецьоберненої матрицi.

vi. Збiльшити значення j → j + 1.

vii. Якщо j < n, то перейти до п. iii.

viii. Вивести на екран (або у файл) результат.

31

Page 32: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Практичне заняття IV. Системи лiнiйних алгебраї-

чних рiвнянь: метод прогонки, iтерацiйнi методи

Метод прогонкиЦе також прямий метод розв’язання системи лiнiйних алге-

браїчних рiвнянь. Вiн є модифiкацiєю методу Гаусса для окре-мого випадку розрiджених систем — систем iз тридiагональ-ною матрицею. Сама система рiвнянь виглядає так:

b1x1 + c1x2 = d1 ;

a2x1 + b2x2 + c2x3 = d2 ;

a3x2 + b3x3+ c3x4 = d3 ;

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

an−1xn−2 + bn−1xn−1 + cn−1xn = dn−1 ;

anxn−1 + bnxn= dn .(IV.1a)

Або її можна записати у виглядi

aixi−1 + bixi + cixi+1 = di , i = 1, n , (IV.1б)

a1 = cn = 0 .

Такi системи часто виникають пiд час розв’язання рiзнихзадач математичного моделювання, наприклад, при iнтерпо-ляцiї базовими сплайнами чи розв’язаннi диференцiальних рiв-нянь у частинних похiдних. Назва “тридiагональна” пов’язаназ тим, що у матрицi коефiцiєнтiв такої системи ненульовi членирозмiщенi лише на центральнiй дiагоналi i двох, розташованихпоруч iз нею.

Давайте спробуємо розв’язати цю систему методом Гаус-са, тобто перетворити матрицю коефiцiєнтiв на верхню три-кутну. Зазначимо, що в цьому випадку кожен iз n − 1 крокiвскладатиметься лише з однiєї дiї, а саме: пiд час k-го кро-ку (k = 1, (n − 1)) виключається xk з (k + 1)-го рiвняння i зцiєю метою до вказаного рiвняння додається k-те, домноже-

не на

(

−ak+1

b∗k

)

, де b∗k — коефiцiєнт перед змiнною xk у k-му,

32

Page 33: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

вже змiненому на попередньому кроцi, рiвняннi. У результатiотримуємо систему рiвнянь

b1x1 + c1x2 = d1 ;

b∗2x2 + c2x3 = d∗2 ;

. . . . . . . . . . . . . . . . . . . . . . . .

b∗n−1xn−1 + cn−1xn = d∗n−1 ;

b∗nxn = d∗n ,

(IV.2a)

де

b∗i = bi −aici−1

b∗i−1

, d∗i = di −d∗i−1ai

b∗i−1

, i = 2, n . (IV.2б)

У рiвняннях (IV.2a) виразимо xi (i = 1, n− 1) через xi+1:

xi =d∗ib∗i

−cib∗i

xi+1 , i = 1, n− 1 ;

xn =d∗nb∗n

.

(IV.3)

У (IV.3) вважається, що b∗1 = b1, d∗1 = d1. Якщо ввести

коефiцiєнти Ai = −ci

b∗iта Bi =

d∗ib∗i

, то з урахуванням (IV.2б)

для них запишемо таке рекурентне спiввiдношення:

Ai = −ci

bi −aici−1

b∗i−1

= −ci

bi + aiAi−1, i = 2, (n − 1) ,

Bi =di −

aid∗i−1

b∗i−1

bi −aici−1

b∗i−1

=di − aiBi−1

bi + aiAi−1, i = 2, n ,

A1 = −c1b1

, B1 =d1b1

.

(IV.4)

33

Page 34: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

У свою чергу, (IV.3) можна переписати у виглядi

xn =dn − anBn−1

bn + anAn−1= Bn .

xi = Ai xi+1 +Bi , i = (n− 1), 1

(IV.5)

Таким чином, розв’язання тридiагональної системи рiвняньметодом прогонки розбивається на два етапи:

а) пряма прогонка, пiд час якої за формулами (IV.4) розрахо-вуються прогоночнi коефiцiєнти Ai та Bi;

б) зворотна прогонка, коли за формулами (IV.5) розраховую-ться самi невiдомi.

Для стiйкостi алгоритму прогонки необхiдно, щоб, по-пер-

ше, |A1| =c1

b1< 1, i, по-друге, виконувалась умова дiагональ-

ного домiнування по рядках: |bn| > |an|+ |cn|, причому хоча бдля одного рядка нерiвнiсть має бути строгою.

Детермiнант матрицi коефiцiєнтiв у цьому випадку, як i уметодi Гаусса, можна знайти як добуток дiагональних елемен-тiв тридiагональної матрицi:

det A =

n∏

i=1

b∗i = −

n∏

i=1

ciAi

=

n∏

i=1

(bi +Ai−1ai) . (IV.6)

При використаннi виразу (IV.6) вважають, що A0 = 0.

Iтерацiйнi методи

У цьому випадку, як i при розв’язаннi звичайних алгебраї-чних рiвнянь, використовується замiна рiвняння (III.1) на еквi-валентне:

x = B x+ F , (IV.7)

де B = E − τA, F = τf (E — одинична матриця, τ —скалярний множник).

34

Page 35: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Тодi розв’язок шукають у виглядi послiдовностi наближень

x(k+1) = B x(k) + F , (IV.8)

причому початкове наближення до розв’язку x(0) часто ви-бирають у виглядi нульового вектора. Процес збiгатиметься,якщо всi власнi значення матрицi B за абсолютною величи-ною меншi одиницi. Критерiєм закiнчення iтерацiйного проце-су може виступати виконання однiєї iз трьох нерiвностей:

∣x(k) − x(k−1)

∣=

n∑

i=1

(

x(k)i − x

(k−1)i

)2< ε , (IV.9а)

max16 i6 n

∣x(k)i − x

(k−1)i

∣ < ε , (IV.9б)

max16 i6 n

x(k)i − x

(k−1)i

x(k)i

< ε . (IV.9в)

При |xi| ≫ 1 варто застосовувати саме критерiй (IV.9в) .Пiдiбрати скалярний коефiцiєнт τ можна, спираючись на

вигляд матрицi A. А саме, матрицю коефiцiєнтiв можна пред-ставити у виглядi

A = L+ D + U ,

де L та U — нижня та верхня трикутнi матрицi з нульовимиелементами на головнiй дiагоналi, D — дiагональна матриця.Тодi для запису B та f можна використати або вираз

B = −D−1(L+ U) , F = D−1f , (IV.10)

що вiдповiдатиме методу Якобi (iнша назва — метод про-стої iтерацiї), або

B = −(L+ D)−1U , F = (L+ D)−1f , (IV.11)

як це робиться у методi Зайделя (Гаусса—Зайделя). Якщопiдставити (IV.10) та (IV.11) у (IV.8) i записати рiвностi для

35

Page 36: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

окремих компонент вектора невiдомих, то вони виглядатимутьбiльш наочно. А саме, у методi Якобi зв’язок мiж компонен-тами вектора невiдомих на рiзних кроках iтерацiї описуєтьсярiвностями

x(k+1)1 = −

1

a11(a12x

(k)2 + a13x

(k)3 + . . .+ a1nx

(k)n − f1) ;

x(k+1)2 = −

1

a22(a21x

(k)1 + a23x

(k)3 + . . .+ a2nx

(k)n − f2) ;

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

x(k+1)n = −

1

ann(an1x

(k)1 + an2x

(k)2 + . . .+ ann−1x

(k)n−1 − fn) ,

(IV.12)а при використаннi методу Зайделя рiвностями

x(k+1)1 = −

1

a11(a12x

(k)2 + a13x

(k)3 + . . .+ a1nx

(k)n − f1) ;

x(k+1)2 = −

1

a22(a21x

(k+1)1 + a23x

(k)3 + . . .+ a2nx

(k)n − f2) ;

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

x(k+1)n = −

1

ann(an1x

(k+1)1 + an2x

(k+1)2 + . . .+ ann−1x

(k+1)n−1 − fn).

(IV.13)Тобто, у методi Зайделя при обчисленнi чергового наближенняi-ї компоненти вектора невiдомих використовуються значенняiнших компонент iз номером, меншим за i, отриманi на цьомуж кроцi, а також значення компонент iз номером, бiльшимза i, отриманi пiд час попереднього наближення. Водночас уметодi Якобi використовуються лише значення, отриманi пiдчас попереднього кроку iтерацiї.

Таким чином, розв’язання системи рiвнянь iтерацiйним шля-хом має здiйснюватись таким чином:1) вибирається початкове наближення до розв’язку, наприкладу виглядi нульового вектора;

36

Page 37: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

2) спираючись на попереднє наближення за допомогою фор-мул (IV.12) або (IV.13), розраховується наступне наближення;

3) повторюється попереднiй пункт доти, поки не буде викону-ватись умова (IV.9).

Для збiжностi достатньо щоб

| aii| >∑

j 6= i

| aij | , i = 1, n , (IV.14)

i щоб хоча б для одного з рiвнянь системи рiвнiсть була строга.Необхiдною умовою виконання процесу є: aii 6= 0 , i = 1, n.

За умови, що det A 6= 0, цього завжди можна досягти переста-новкою рядкiв та стовпцiв.

Завдання IV.1. Написати програму розв’язання тридiаго-нальної системи рiвнянь методом прогонки.

Завдання IV.2. Написати програму розв’язання системи рiв-нянь методом Зайделя.

Орiєнтовнi алгоритмиУ запропонованих алгоритмах вважається, що коефiцiєнти

систем рiвнянь знаходяться у файлi на диску комп’ютера.

Завдання IV.1

i. Вiдкрити файл.

ii. Визначити кiлькiсть рiвнянь n у системi, пiдрахувавши,наприклад, кiлькiсть рядкiв у файлi.

iii. Залежно вiд n створити масив дiйсних чисел необхiдногорозмiру.

Примiтка. Найпростiший варiант — створити двовимiр-ний масив розмiром n × (n + 1). Проте бiльшiсть комiрокмасиву будуть мiстити нулi, тому для рацiонального ви-користання оперативної пам’ятi, особливо при великих n,

37

Page 38: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

краще створити чотири одновимiрнi масиви з n дiйснихчисел.

iv. Перевiрити правильнiсть даних у файлi, зчитати данi вмасив.

v. Закрити файл.

vi. Користуючись виразами (IV.4), обчислити коефiцiєнти Ai

та Bi, i = 1, (n − 1).

vii. Користуючись виразами (IV.5), обчислити невiдомi.

viii. Вивести на екран (або у файл) отриманi результати.

Завдання IV.2

i. Вiдкрити файл.

ii. Визначити кiлькiсть рiвнянь n у системi, пiдрахувавши,наприклад, кiлькiсть рядкiв у файлi.

iii. Залежно вiд n створити масив дiйсних чисел необхiдногорозмiру.

iv. Перевiрити правильнiсть даних у файлi, зчитати данi вмасив.

v. Закрити файл.

vi. Упорядкувати матрицю коефiцiєнтiв (провести вибiр го-ловного елемента для кожного мiнора). Для цього присво-їти цiлiй змiннiй i значення 0.

vii. Збiльшити значення i → i+ 1.

viii. Серед множини елементiв {alk}, i 6 l 6 n, i 6 k 6 n,знайти найбiльший за модулем i визначити номер стовпцяkmax i номер рядка lmax, у яких вiн знаходиться.

38

Page 39: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

ix. Якщо lmax вiдрiзняється вiд i, помiняти мiсцями у масивiданих i-й та lmax-й рядки матрицi коефiцiєнтiв рiвняннята вiдповiднi компоненти вектора вiльних членiв.

x. Якщо kmax вiдрiзняється вiд i, помiняти мiсцями у масивiданих i-й та kmax-й стовпцi матрицi коефiцiєнтiв рiвняння.

xi. Якщо aii = 0, то вивести на екран напис про те, що розв’я-зок не iснує, та припинити роботу програми.

xii. Якщо i < (n− 1), перейти до п. vii.

xiii. Занулити лiчильник iтерацiй iiter = 0.

xiv. Задати максимальну кiлькiсть iтерацiй Niter та мiнiмальневiдхилення двох послiдовних iтерацiй ε.

xv. Присвоїти вектору невiдомих початкове наближення:xi = 0 , i = 1, n .

xvi. Присвоїти змiннiй i значення 1.

xvii. Розрахувати наступне наближення i-ї змiнної:

xi → xi = −1

aii

(

n∑

j=1j 6= i

aijxj − fi

)

.

xviii. Збiльшити i → i+ 1.

xix. Якщо i 6 n, то перейти до п. xvii.

xx. Збiльшити iiter → iiter + 1.

xxi. Якщо iiter > Niter, то вивести на екран напис про те, щорозв’язок не збiгається i припинити роботу програми.

xxii. Перевiрити виконання умови (IV.9в). Якщо вона викону-ється, то вивести на екран (або у файл) отриманi резуль-тати; якщо — нi, то перейти до п. xvi.

39

Page 40: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Практичне заняття V. Iнтерполяцiя за допомогою

полiномiв Лагранжа та Ньютона

Задачу iнтерполяцiї можна сформулювати так: для заданоїтаблицi значень {xi, yi = f(xi)}, i = 0, n, побудувати iнтерпо-ляцiйну функцiю ϕ(x), щоб

ϕ (xi) = yi , i = 0, n . (V.1)

Точки з координатами (xi, yi) називаються вузлами iнтер-поляцiї, вони можуть бути, наприклад, результатом числово-го розрахунку функцiї f(x). Графiк функцiї ϕ(x) проходитимечерез вузли (рис. 10). Побудова функцiї ϕ(x) дає можливiстьоцiнити значення функцiї f(x) мiж вузлами, тобто там, де їїточне значення невiдоме або його безпосереднє обчислення єресурсомiстким чи займає багато часу. Очевидно, що розв’язокзадачi iнтерполяцiї не є єдиним. Часто функцiю ϕ(x) шукаютьу виглядi полiнома.

x1 x2 x3 x4 x5

y1

y2

x6

ϕ(x)y

x

Рис. 10. Варiанти iнтерполяцiї заданих (крапки на графiку)вузлiв

Метод Лагранжа

Для спрощення припустимо, що нам потрiбно побудуватиiнтерполяцiйний полiном для таблицi iз трьох пар значень —

40

Page 41: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

(x0, y0), (x1, y1), (x2, y2). Розглянемо функцiю

L0(x) = y0(x− x1)(x− x2)

(x0 − x1)(x0 − x2).

Ця функцiя задовольняє умову (V.1) у точцi x0, а в iнших ву-злах дорiвнює нулю, тобто L0(x0) = y0, L0(x1) = 0,L0(x2) = 0. Аналогiчно запишемо функцiї

L1(x) = y1(x− x0)(x− x2)

(x1 − x0)(x1 − x2),

L2(x) = y2(x− x0)(x− x1)

(x2 − x0)(x2 − x1),

якi задовольняють умову (V.1) у двох iнших вузлах. Очевидно,що графiк функцiї L(x), яка є сумою трьох попереднiх

L(x) = L0(x) + L1(x) + L2(x) =

= y0(x− x1)(x− x2)

(x0 − x1)(x0 − x2)+ y1

(x− x0)(x− x2)

(x1 − x0)(x1 − x2)+

+ y2(x− x0)(x− x1)

(x2 − x0)(x2 − x1),

буде проходити через усi три вузли. Узагальнимо отримануформулу на випадок (n+ 1) вузла iнтерполяцiї

L(x) =

n∑

i=0

yi

n∏

j=0j 6= i

(x− xj)

(xi − xj). (V.2)

Вираз (V.2) є iнтерполяцiйним полiномом Лагранжа, якийвикористовується для iнтерполяцiї на вiдрiзку [x0, xn]. Зро-зумiло, що це полiном n-го порядку.

Метод НьютонаУ методi Ньютона нам знадобиться поняття скiнченних рi-

зниць. Воно використовується у випадку, коли точки xi рiвно-вiддаленi, тобто xi − xi−1 = h = const (i = 1, n). Набiр вузлiв

41

Page 42: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

iз такою властивiстю ще називається рiвномiрною мережею, авеличина h — кроком мережi. Для нерiвномiрної мережi роз-глядаються роздiленi рiзницi, але про них ми говорити не бу-демо.

Розрiзняють скiнченнi рiзницi вперед i назад.Скiнченнi рiзницi вперед можуть мати рiзнi порядки, мо-

жуть обчислюватись для рiзних вузлiв i описуються такимивиразами.Рiзницi першого порядку (або першi рiзницi):

∆(1) y0 = y1 − y0 = f(x0 + h)− f(x0) ,

∆(1) y1 = y2 − y1 = f(x0 + 2h)− f(x0 + h) ,

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

∆(1) yn−1 = yn − yn−1 = f(x0 + nh)− f(x0 + (n − 1)h) .

(V.3)

Iз виразу (V.3) видно, що скiнченнi рiзницi вперед першогопорядку можна визначити для всiх вузлiв, окрiм останнього.

Для рiзниць вперед другого порядку справедливо:

∆(2) y0 = ∆(1) y1 −∆(1) y0 ,

∆(2) y1 = ∆(1) y2 −∆(1) y1 ,

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

∆(2) yn−2 = ∆(1) yn−1 −∆(1) yn−2 .

(V.4)

Рiзницi вперед другого порядку можна обчислити для всiх то-чок, окрiм двох останнiх.

У загальному випадку рiзниця вперед порядку k виражає-ться формулою

∆(k) yi = ∆(k−1) yi+1 −∆(k−1) yi , i = 0, n − k , (V.5)

причому ∆(0) yi = yi i цю рiзницю можна записати для(n + 1− k) перших вузлiв. Найстарший порядок рiзницi впе-ред, який можна визначити для набору {xi, yi}, i = 0, n — це

42

Page 43: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

n-й, причому таку рiзницю можна обчислити лише для вузла(x0, y0).

У виразах (V.3)—(V.5) використовується рекурсiя: для об-числення рiзницi будь-якого порядку необхiдно розрахуватирiзницi всiх попереднiх порядкiв. Без рекурсiї скiнченнi рiзни-цi вперед обчислюються за формулою

∆(k) yi =

k∑

s=0

(−1)s+k k!

s!(k − s)!yi+s . (V.6)

Аналогiчно обчислюються скiнченнi рiзницi назад :

∇(1) yi = ∇(0) yi −∇(0) yi−1 = yi − yi−1 ,

∇(2) yi = ∇(1) yi −∇(1) yi−1 = yi − 2yi−1 + yi−2 ,

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

∇(k) yi = ∇(n−1) yi −∇(n−1) yi−1 .

(V.7)

Подiбно до попереднiх виразiв, для набору вузлiв {xi, yi},i = 0, n, скiнченну рiзницю назад k-го порядку можливо зна-йти лише для (n+1− k) останнiх точок; найстарший порядокдорiвнює n i таку рiзницю можливо обчислити лише для точки(xn, yn).

При побудовi iнтерполяцiйного полiнома Ньютона викори-стовуються саме скiнченнi рiзницi. Так, полiном Ньютона дляiнтерполяцiї вперед має вигляд

N(x) = y0 +∆(1) y0

h(x− x0) +

∆(2) y0

2!h2(x− x0)(x− x1)+

+ . . .+∆(n) y0

n!hn(x− x0)(x− x1) . . . (x− xn−1) , (V.8а)

тобто при його побудовi використовуються скiнченнi рiзницiвперед вiд 0-го до n-го порядку, обчисленi для початкової то-чки (∆(i)y0 , i = 0, n).

43

Page 44: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Якщо ввести величину t =x− x0

h, тодi

x = x0 + th ,

x− x1h

=(x0 + th)− (x0 + h)

h=

th− h

h= t− 1 ,

x− x2h

= t− 2 ,

· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·

x− xn−1

h= t− n+ 1 ,

i вираз (V.8а) можна записати у виглядi

N(x) = y0 + t ·∆(1)y0 +t(t− 1)

2!·∆(2)y0+

+ . . .+t(t− 1) . . . (t− n+ 1)

n!·∆(n)y0 . (V.8б)

Полiном Ньютона також є полiномом n-го порядку. Вико-ристовуючи формулу (V.8а) або (V.8б) можна iнтерполюватифункцiю y = f(x) на всьому вiдрiзку змiни аргументу [x0, xn],але з погляду пiдвищення точностi розрахункiв бiльш доцiльноїї використовувати для обчислення значення функцiї у точкахлiвої половини вiдрiзка. Для правої половини краще викори-стовувати iнтерполяцiйний полiном Ньютона для iнтерполяцiїназад:

N(x) = yn + t′ · ∇(1)yn +t′(t′ + 1)

2!· ∇(2)yn+

+ . . .+t′(t′ + 1) . . . (t′ + n− 1)

n!· ∇(n)yn , (V.9)

де

t′ =x− xn

h< 0 .

Рiзнi способи побудови полiномiв Лагранжа i Ньютона да-ють тотожнi iнтерполяцiйнi формули. Але полiном Ньютона

44

Page 45: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

зручнiше застосовувати у випадку, коли кiлькiсть вузлiв iн-терполяцiї не є сталою, а може збiльшуватись.

Завдання V.1. Написати програму iнтерполяцiї заданого на-бору даних за методом Лагранжа.

Завдання V.2. Написати процедуру обчислення скiнченнихрiзниць вперед для заданого набору даних iз використаннямрекурсiї.

Завдання V.3. Написати процедуру обчислення скiнченнихрiзниць вперед без використання рекурсiї.

Завдання V.4. Написати програму iнтерполяцiї заданого на-бору даних за методом Ньютона (формула iнтерполяцiї впе-ред).

Орiєнтовнi алгоритми

У запропонованих алгоритмах вважається, що набiр данихзнаходиться у текстовому файлi на диску комп’ютера, а ре-зультатом iнтерполяцiї є набiр точок {xj ,ϕ(xj)}, деj = 1, N , N ≫ n, xj ∈ [x0, xn], тобто кiлькiсть точок {xj}, вяких обраховується значення iнтерполяцiйної функцiї {ϕ(xj)},має значно перевищувати кiлькiсть точок вихiдного набору.

Завдання V.1

i. Вiдкрити файл.

ii. Визначити кiлькiсть точок, по яких буде проводитись iн-терполяцiя.

Примiтка. У формулах, наведених у теоретичнiй частинi,вважається, що точки нумеруються з нуля, тому кiлькiстьточок буде на одиницю бiльша нiж n.

iii. Створити двовимiрний масив потрiбного розмiру.

45

Page 46: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

iv. Зчитати данi у масив.

v. Закрити файл.

vi. Визначити мiнiмальне xmin та максимальне xmax значенняаргументу.

vii. Визначити крок iнтерполяцiї δx = (xmax−xmin)/N , де N —кiлькiсть точок, у яких буде розраховане значення iнтер-поляцiйної функцiї (рекомендовано вибирати N > 100).

viii. Присвоїти цiлiй змiннiй k значення 0.

ix. Вiдкрити файл для внесення результатiв.

x. Обчислити абсцису xintk iнтерполяцiйної функцiїxintk = xmin + δx · k.

xi. Якщо xintk > xmax, то перейти до п. xvi.

xii. Користуючись формулою (V.2), обчислити ординату iн-терполяцiйної функцiї yintk = L(xintk ).

xiii. Записати значення (xintk , yintk ) у файл.

xiv. Збiльшити значення k → k + 1.

xv. Перейти до п. x.

xvi. Закрити файл iз результатами.

Отриманий файл зi значеннями iнтерполяцiйної функцiїможна використати для побудови графiка, наприклад задопомогою програми OriginPro.

Завдання V.2

Назва функцiї:FD () — повертає дiйсну величину.

Аргументи функцiї:{xi, yi} , i = 0, n — набiр точок (двомiрний масив дiйсних

чисел) для iнтерполяцiї або вказiвник наних;

k — порядок рiзницi;J — номер точки, для якої визначається

рiзниця.

46

Page 47: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Назва функцiї є абревiатурою вiд слiв finite difference (скiн-ченна рiзниця). Тодi для FD

(

{xi, yi}, k, J)

послiдовнiсть вико-нання описується дуже коротко.

i. Перевiрити коректнiсть отриманих даних, тобто виконан-ня умов k > 0, J > 0 та (k + J) 6 n. У протилежномувипадку вивести вiдповiдне повiдомлення, присвоїти FD

значення 0 i припинити виконання функцiї.

ii.

FD(

k, J)

=

=

{

yJ , якщо k = 0 ;

FD(

k − 1, J + 1)

− FD(

k − 1, J)

, якщо k > 1 .

Завдання V.4

i. Вiдкрити файл.

ii. Визначити кiлькiсть точок, по яких буде проводитись iн-терполяцiя.

Примiтка. У формулах, наведених у теоретичнiй частинi,вважається, що точки нумеруються з нуля, тому кiлькiстьточок буде на одиницю бiльша нiж n.

iii. Створити двомiрний масив потрiбного розмiру.

iv. Зчитати данi у масив.

v. Закрити файл.

vi. Перевiрити рiвномiрнiсть мережi, порiвнюючи рiзницю(x1 − x0) iз iншими рiзницями (xi+1−xi) для i = 1, (n − 1).Якщо рiвномiрнiсть не виконується, то вивести вiдповiднеповiдомлення i завершити виконання програми.

Примiтка. При порiвняннi дiйсних чисел необхiдно вра-ховувати похибку машинного округлення.

47

Page 48: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

vii. Знайти крок мережi h.

viii. Визначити мiнiмальне xmin та максимальне xmax значенняаргументу.

ix. Визначити крок iнтерполяцiї δx = (xmax−xmin)/N , де N —кiлькiсть точок, у яких буде розраховане значення iнтер-поляцiйної функцiї (рекомендовано вибирати N > 100).

x. Присвоїти цiлiй змiннiй k значення 0.

xi. Вiдкрити файл для внесення результатiв.

xii. Обчислити абсцису xintk iнтерполяцiйної функцiїxintk = xmin + δx · k.

xiii. Якщо xintk > xmax, то перейти до п. xviii.

xiv. Користуючись формулою (V.8а) (або (V.8б)), обчислитиординату iнтерполяцiйної функцiї yintk . У цьому випадкудоцiльно створити окрему функцiю для розрахунку кiн-цевих рiзниць, а також обчислювати наступний доданок усумi, використовуючи значення попереднього.

xv. Записати значення (xintk , yintk ) у файл.

xvi. Збiльшити значення k → k + 1.

xvii. Перейти до п. xii.

xviii. Закрити файл iз результатами.

Отриманий файл зi значеннями iнтерполяцiйної функцiїможна використати для побудови графiка, наприклад задопомогою програми OriginPro.

48

Page 49: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Практичне заняття VI. Iнтерполяцiя сплайнами

У випадку, коли кiлькiсть вузлових точок {xi, yi = f(xi)},i = 0, n, є досить великою, то при iнтерполяцiї методом Ла-гранжа або Ньютона буде отримано полiном високого поряд-ку (степiнь полiнома на одиницю менший за кiлькiсть точок).У такому випадку часто спостерiгаються значнi розходжен-ня мiж значеннями функцiї f(x) та значеннями iнтерполяцiй-них полiномiв. Щоб уникнути цього можна використовуватине один полiном високого порядку, а набiр полiномiв низько-го (часто третього) порядку, кожен iз яких використовуєтьсядля iнтерполяцiї f(x) в рiзних частинах [x0, xn]. Набiр такихполiномiв називається сплайном.

Кубiчнi сплайн–функцiїЦе спецiальним чином побудованi полiноми третього по-

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

У цьому випадку кожен промiжок мiж сусiднiми вузламиiнтерполюється своїм полiномом третього порядку, тобто цихполiномiв на одиницю менше нiж точок, по яких вiдбуваєтьсяiнтерполяцiя. Аналiтичний вигляд для кожного з них є таким:

Si(x) = ai + bi(x− xi−1) + ci(x− xi−1)2 + di(x− xi−1)

3 , (VI.1)

xi−1 6 x 6 xi , i = 1, n .

Для того, щоб записати їх явний вигляд, необхiдно знати4n величин: {ai, bi, ci, di}. Рiвняння, для визначення цих не-вiдомих, можна отримати, виходячи з таких умов. По-перше,повиннi задовольнятися спiввiдношення (V.1), тобто

Si(xi−1) = yi−1 , Si(xi) = yi ,

а отже,ai = yi−1 , (VI.2)

49

Page 50: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

ai + bihi + cih2i + dih

3i = yi , (VI.3)

де hi = xi − xi−1 i мережа не обов’язково рiвномiрна,i = 1, n. Записавши вирази (VI.2) та (VI.3), маємо 2n рiвнянь.По-друге, щоб сплайн був гладким, першi та другi похiднi по-виннi бути неперервними для внутрiшнiх вузлiв iнтерполяцiї:

S′i(xi) = S′

i+1(xi) , S′′i (xi) = S′′

i+1(xi) , i = 1, (n − 1) ,

тобто для i = 1, (n − 1)

bi+1 = 2hici + 3h2i di + bi , (VI.4)

ci+1 = ci + 3hidi . (VI.5)

Вирази (VI.4) та (VI.5) — це ще (2n − 2) рiвняння. Двi умови(рiвняння), яких не вистачає, визначаються значеннями пер-шої та другої похiдних у точках x0 та xn. Найчастiше викори-стовують умову вiльних кiнцiв сплайну

S′′1 (x0) = 0 ,

S′′n(xn) = 0 ,

тобтоc1 = 0 , (VI.6a)

cn + 3hnbn = 0 . (VI.7a)

Але можуть задаватися й iншi граничнi умови. Наприклад,кути нахилу сплайну в крайнiх точках:

S′1(x0) = k1,

S′n(xn) = k2,

тодib1 = k1 , (VI.6б)

bn + 2hncn + 3h2ndn = k2 . (VI.7б)

50

Page 51: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Iнший варiант

S′′1 (x0) = m1 ,

S′′n(xn) = m2 ,

i тодi

2c1 = m1 , (VI.6в)

2cn + 6hndn = m2 , (VI.7в)

де k1 , k2 , m1 , m2 — заданi константи.Систему рiвнянь (VI.2)–(VI.7) можна розв’язувати, напри-

клад, методом Гаусса, але зручнiше та економiчнiше звестиїї спочатку до тридiагональної i застосувати метод прогонки.Для цього iз (VI.2) знаходимо коефiцiєнти

ai = yi−1 , i = 1, n . (VI.8)

Iз (VI.5) запишемо

di =ci+1 − ci

3hi, i = 1, n , (VI.9)

i пiдставивши у (VI.3), отримаємо

bi =yi − yi−1

hi−

hi3(ci+1 + 2ci) , (VI.10)

пiсля чого, пiдставляючи в (VI.4), маємо

hi−1 ci−1 + 2(hi−1 + hi) ci + hi ci+1 =

= 3

(

yi − yi−1

hi−

yi−1 − yi−2

hi−1

)

, i = 2, n . (VI.11)

Доповнивши останню систему якоюсь парою умов iз набору(VI.6)–(VI.7), отримаємо тридiагональну систему з (n+1) рiв-няння.

51

Page 52: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Таким чином, для обчислення iнтерполяцiйної функцiї вточцi x (x ∈ [x0, xn]) необхiдно, спираючись на вузловi точки,за допомогою виразiв (VI.8)–(VI.11) обчислити набiр коефiцi-єнтiв {ai, bi, ci, di}, визначити на якому iнтервалi знаходитьсяшукана точка x (вiдшукати номер k такий, щоб xk 6 x 6 xk−1)i тодi скористатися виразом (VI.1) iз вiдомими значеннями ak,bk, ck, dk та xk−1.

Базовi сплайни

B-сплайном, або базовим сплайном порядку (N − 1) вiдно-сно вузлiв {xi}

k+Ni=k називається функцiя

BN−1,k(x) = BN−1(xk, xk+1, . . . , xk+N , x) = N ·k+N∑

i=k

(xi − x)N−1max

k+N∏

j= kj 6= i

(xi − xj)

,

(VI.12)де

(xi − x)N−1max =

{

(xi − x)N , x 6 xi ;

0 , x > xi .

Якщо мережа рiвномiрна, тобто

xk+i = xk + i h ,

де h — крок, то при N = 4 формулу для кубiчного B-сплайну

52

Page 53: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

x

B3,k

xk−2 xk−1 xk xk+1 xk+2

Рис. 11. Вигляд кубiчного базового сплайну

з максимумом у точцi x = xk, можна записати у виглядi

B3,k(x) =

=

0 , x 6 xk−2;

(x− xk−2)3

6h4, xk−2 6 x 6 xk−1;

1

6h+

x− xk−1

2h2+

(x− xk−1)2

2h3−

(x− xk−1)3

2h4, xk−1 6 x 6 xk;

1

6h+

xk+1 − x

2h2+

(xk+1 − x)2

2h3−

(xk+1 − x)3

2h4, xk 6 x 6 xk+1;

(xk+2 − x)3

6h4, xk+1 6 x 6 xk+2;

0 , x > xk+2.

(VI.13)

Тобто, якщо звичайнi сплайни проводять лише на iнтервалiмiж двома сусiднiми точками, то базовi — на вiдрiзку, якийохоплює декiлька точок iз сукупностi тих, по яких проводи-ться iнтерполяцiя. У випадку кубiчного базового сплайну вiнбуде вiдмiнним вiд нуля на iнтервалi мiж п’ятьма послiдов-ними точками, тобто шириною чотири кроки; причому на ко-жному iз чотирьох пiдiнтервалiв (мiж сусiднiми вузлами) вiн

53

Page 54: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

описується своєю функцiєю. Вигляд функцiї (VI.13) наведенона рис. 11.

Iншою вiдмiннiстю базових сплайнiв вiд звичайних є те, щозначення iнтерполяцiйної функцiї визначається не одним по-лiномом, а сумою декiлькох, а саме, лiнiйною комбiнацiєю всiхВ-сплайнiв, проведених на сукупностях вузлiв, якi знаходя-ться в околi шуканої точки. Вiдповiдно, для виконання умови(V.1) необхiдно, щоб

βi−1 Bi−1(xi) + βiBi(xi) + βi+1 Bi+1(xi) = yi , i = 1, (n − 1) ,(VI.14)

тут βi — коефiцiєнти iнтерполяцiї, а iндекс бiля кубiчногоB-сплайну вказує на точку xi, де вiн досягає свого максималь-ного значення (порiвняно з (VI.13) iндекс “3” опущений задляскорочення запису). Тобто, необхiдно пiдiбрати такi значеннякоефiцiєнтiв iнтерполяцiї, щоб значення iнтерполяцiйної фун-кцiї f(xi) = yi збiгалося iз сумою значень трьох базових сплай-нiв, центрованих на точцi, що є аргументом функцiї xi, та двохсусiднiх, домножених на цi коефiцiєнти. Для крайнiх точок дi-апазону розглядаються лише два доданки:

β0 B0(x0) + β1B1(x0) = y0 ,

βn−1Bn−1(xn) + βnBn(xn) = yn .(VI.15)

Фактично, (VI.14) та (VI.15) — це тридiагональна система рiв-нянь, розв’язком якої є коефiцiєнти {βi}. Пiсля цього значенняiнтерполяцiйної функцiї у довiльнiй точцi розраховується, яксума значень базових сплайнiв у цiй точцi:

B(x) =

n∑

i=0

βiBi(x) . (VI.16)

Кiлькiсть ненульових доданкiв у цiй сумi для будь-якої точкине перевищуватиме чотири.

54

Page 55: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Завдання VI.1. Написати програму кубiчної сплайн-iнтерполяцiїдля заданого набору рiвновiддалених вузлiв (використовуватикубiчнi базовi сплайни).

Орiєнтовнi алгоритми

Завдання VI.1

У цiй програмi доцiльно створити окрему функцiю, яка бобчислювала значення кубiчного В-сплайну Bi(x), центрова-ного у точцi xi вiдповiдно до виразу (VI.13). Аргументами цiєїфункцiї можуть бути вказiвник на набiр вузлiв, номер вузлаi, вiдносно якого будується сплайн, та саме значення x.

i. Зчитати данi з файла у двовимiрний масив та визначи-ти кiлькiсть точок, по яких вiдбуватиметься iнтерполяцiя,враховуючи, що вони нумерюються, починаючи з нуля.

ii. Перевiрити рiвномiрнiсть отриманої мережi, порiвнюючирiзницю (x1 − x0) з iншими рiзницями (xi+1 − xi) дляi = 1, (n− 1).

iii. Визначити коефiцiєнти iнтерполяцiї {βi}. Для цього зна-йти коефiцiєнти тридiагональної матрицi:

di = yi , i = 0, n ;

ai = Bi−1(xi) , i = 1, n ;

bi = Bi(xi) , i = 0, n ;

ci = Bi+1(xi) , i = 0, (n − 1) ;

a0 = 0 , cn = 0 ,

де змiст величин ai, bi, ci та di такий самий як i у формулi(IV.1б) на с. 32.

iv. Розв’язати отриману систему рiвнянь вiдносно {βi} (див.алгоритм до Завдання IV.1 на с. 37).

55

Page 56: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

v. Визначити мiнiмальне xmin та максимальне xmax значенняаргументу.

vi. Визначити крок iнтерполяцiї δx = (xmax−xmin)/N , де N —кiлькiсть точок, у яких буде розраховане значення iнтер-поляцiйної функцiї (рекомендовано вибирати N > 100).

vii. Присвоїти цiлiй змiннiй k значення 0.

viii. Вiдкрити файл для внесення результатiв.

ix. Обчислити абсцису xintk iнтерполяцiйної функцiїxintk = xmin + δx · k.

x. Якщо xintk > xmax, то перейти до п. xv.

xi. Користуючись формулою (VI.16), обчислити ординату iн-терполяцiйної функцiї yintk .

xii. Записати значення (xintk , yintk ) у файл.

xiii. Збiльшити значення k → k + 1.

xiv. Перейти до п. ix.

xv. Закрити файл iз результатами.

56

Page 57: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Практичне заняття VII. Апроксимацiя

При iнтерполяцiї використовувалася умова (V.1) рiвностiзначень iнтерполяцiйної та вихiдної функцiй у вузлах iнтер-поляцiї. Проте у випадку, коли вихiднi данi є результатом екс-перименту, слiд ураховувати можливiсть наявностi похибок(випадкових чи систематичних). Тому використовувати умо-ву (V.1) не завжди доцiльно.

Задачу апроксимацiї можна сформулювати трохи iнакше:за набором значень {xi, yi}, i = 0, n, знайти залежнiстьy = ϕ(x), значення якої у точках xi мало вiдрiзняються вiдyi. Фактично, йдеться про знаходження емпiричної формули.

Розв’язання цiєї задачi складається iз двох етапiв:

1) пiдбiр загального вигляду функцiї;

2) визначення оптимальних значень параметрiв, якi мiститьця функцiя.

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

ϕ = a1x+ a0 , (VII.1)

де a1 та a0 — сталi, значення яких залежать вiд {xi, yi}. Зазна-чимо, що до лiнiйної залежностi отриманi експериментальноданi можна звести, використовуючи, наприклад, не декартовiкоординати. Зокрема, температурна залежнiсть провiдностi σвласного напiвпровiдника описується формулою

σ = σ0 exp

(

Eg

2kT

)

(де Eg — ширина забороненої зони, k —

стала Больцмана, T — температура, σ0 — стала). Якщо екс-периментально вимiряти залежнiсть σ(T ), то лiнiйну апрокси-мацiю отриманих даних можна застосувати у випадку, коли

57

Page 58: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

по осi ординат вiдкладати натуральний логарифм провiдно-стi, а по осi абсцис — величину, обернену до температури:

lnσ = lnσ0 +Eg

2k

1

T.

У загальному випадку

y = ϕ(x, a0, a1, . . . , am) , (VII.2)

де ai — невiдомi сталi параметри, а функцiя ϕ далеко не обо-в’язково є полiномiальною. Кiлькiсть параметрiв не має пере-вищувати кiлькiсть точок, по яких вiдбувається апроксимацiя;як правило, кiлькiсть параметрiв набагато менша.

Другий етап задачi — пiдбiр параметрiв — виконуєтьсякiлькома методами.

Метод середнiхУ цьому випадку параметри знаходять з умови, що середнє

вiдхилення вiд точок, по яких проводять апроксимацiю, маєбути рiвним нулевi:

n∑

i=0

εi =n∑

i=0

[ϕ(xi, a0, a1, . . . , am)− yi] = 0 . (VII.3)

Звичайно, одного цього рiвняння недостатньо для визначення(m+ 1) величин i тому рiзнi εi групують у (m + 1) рiвнянь.Наприклад:

ε0 + ε1 + ε2 = 0 ;

ε3 + ε4 + ε5 + ε6 = 0 ;

· · · · · · · · · · · · · · · · · · · · ·

εn−1 + εn = 0 .

(VII.4)

Метод найменших квадратiвУ цьому методi записується сума квадратiв вiдхилень

S =n∑

i=0

ε2i =n∑

i=0

[ϕ(xi, a0, a1, . . . , am)− yi]2 (VII.5)

58

Page 59: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

x

y ϕ(x)

x1

ε1

x2

ε2

x4

ε4

x6

ε6

x0

ε0

x3

ε3

x5

ε5

Рис. 12. Приклад лiнiйної апроксимацiї

i параметри знаходяться з умови мiнiмiзацiї цiєї суми:

∂S

∂a0= 0 ,

∂S

∂a1= 0 , . . . ,

∂S

∂am= 0 . (VII.6)

Наприклад, при лiнiйнiй апроксимацiї (рис. 12) за формулою(VII.1) сума квадратiв вiдхилень матиме вигляд

S =n∑

i=0

[ a0 + a1xi − yi]2 (VII.7)

i, прирiвнявши до нуля частиннi похiднi виразу (VII.7) по па-раметрах a0 та a1, можна отримати вирази для їх визначення:

a0 =

ix2i∑

iyi −

ixi∑

ixiyi

n∑

ix2i −

(

ixi

)2 ,

a1 =

n∑

ixiyi −

ixi∑

iyi

n∑

ix2i −

(

ixi

)2 .

(VII.8)

59

Page 60: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

У випадку апроксимацiї параболою

ϕ(x) = a0 + a1x+ a2x2 (VII.9)

сума квадратiв вiдхилень матиме вигляд

S =n∑

i=0

[ a0 + a1xi + a2x2i − yi]

2 , (VII.10)

i пiсля знаходження частинних похiдних отримується системарiвнянь

na0 + a1∑

i

xi + a2∑

i

x2i −∑

i

yi = 0 ;

a0∑

i

xi + a1∑

i

x2i + a2∑

i

x3i −∑

i

xiyi = 0 ;

a0∑

i

x2i + a1∑

i

x3i + a2∑

i

x4i −∑

i

x2i yi = 0 .

(VII.11)

Її розв’язок дозволяє отримати явнi вирази для параметрiв:

a2 = D−1 ·

i

yi x2i ·

n∑

i

x2i −

(

i

xi

)2

−∑

i

x3i ·

[

n∑

i

xiyi −∑

i

xi ·∑

i

yi

]

+

+∑

i

x2i ·

[

i

xiyi ·∑

i

xi −∑

i

x2i ·∑

i

yi

]

,

60

Page 61: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

a1 = D−1 ·

{

i

x4i ·

[

n∑

i

xi yi −∑

i

xi ·∑

i

yi

]

−∑

i

x2i yi ·

[

n∑

i

x3i −∑

i

xi ·∑

i

x2i

]

+

+∑

i

x2i ·

[

i

x3i ·∑

i

yi −∑

i

x2i ·∑

i

xiyi

]}

,

a0 = D−1 ·

{

i

x4i ·

[

i

yi ·∑

i

x2i −∑

i

xi ·∑

i

xi yi

]

−∑

i

x3i ·

[

i

yi ·∑

i

x3i −∑

i

xi yi ·∑

i

x2i

]

+

+∑

i

yi x2i ·

[

i

x3i ·∑

i

xi −

(

i

x2i

)

2

]}

, (VII.12)

де величина D описується виразом

D =

i

x4i ·

n∑

i

x2i −

(

i

xi

)2

−∑

i

x3i ·

[

n∑

i

x3i−

−∑

i

xi ·∑

i

x2i

]

+∑

i

x2i ·

i

x3i ·∑

i

xi −

(

i

x2i

)2

.

Iснує також модифiкований метод найменших квадратiв, у яко-му враховується те, що рiзнi точки, на основi яких проходитьапроксимацiя, можуть мати рiзну важливiсть. У цьому випад-ку сума квадратiв вiдхилень записується у виглядi

S =n∑

i=0

{

ωi [ϕ(xi, a0, a1, . . . , am)− yi]2}

, (VII.13)

де ωi — ваговi коефiцiєнти, а дiї для знаходження параметрiвзалишаються такими самими. Чим важливiша точка, тим бiль-ше значення вагового коефiцiєнта для неї. Наприклад, якщо

61

Page 62: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

помилка визначення функцiї у точцi (xi, yi) дорiвнює ∆i, томожна прийняти, що ωi = 1/∆i . У випадку, коли всi данi ма-ють однакову вiдносну похибку, то вдалим вибором ваговихкоефiцiєнтiв є ωi = 1/yi — так звана статистична вага.

Завдання VII.1. Написати програму апроксимацiї полiно-мом першого порядку за методом найменших квадратiв. Заїї допомогою обчислити коефiцiєнти полiнома для даних, щознаходяться у файлi.

Завдання VII.2. Написати програму апроксимацiї полiно-мом другого порядку за методом найменших квадратiв. Заїї допомогою обчислити коефiцiєнти полiнома для даних, щознаходяться у файлi.

Орiєнтовнi алгоритми

Завдання VII.1

i. Зчитати данi з файла у двовимiрний масив та визначитикiлькiсть точок, по яких буде вiдбуватися апроксимацiя,ураховуючи, що вони нумерюються, починаючи з нуля.

ii. Користуючись виразами (VII.8) (або (VII.12)), обчислитикоефiцiєнти апроксимуючого полiнома. У цьому випадкудоцiльно спочатку розрахувати потрiбнi суми, а потiм вжезнайти параметри прямої (параболи).

iii. Вивести на екран (або у файл) отриманi результати.

Файл зi вхiдними даними можна використати для побудо-ви точок, а отриманi параметри для побудови прямої (пара-боли), наприклад за допомогою програми OriginPro. Також уцiй програмi можна безпосередньо виконати апроксимацiю задопомогою вбудованих функцiй i порiвняти знайденi коефiцi-єнти.

62

Page 63: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Практичне заняття VIII. Числове iнтегрування

Формули числового iнтегрування функцiї однiєї змiнної на-зиваються квадратурними формулами. Якщо функцiю заданотаблично (тобто набором {xi, yi = f(xi)}, i = 0, n), то найбiльшефективними будуть квадратурнi формули iнтерполяцiйноготипу. I навпаки, коли вiдомо аналiтичний вигляд пiдiнтеграль-ної функцiї, але неможливо здiйснити саме iнтегрування, тонайбiльш ефективними будуть квадратурнi формули типу Га-усса (у цьому випадку вибирає розташування вузлових точоктой, хто проводить обчислення, i це дозволяє визначити їх та-ким чином, щоб мiнiмiзувати кiлькiсть обчислень). Розгляне-мо цi методи детальнiше.

Якщо необхiдно знайти iнтеграл

I =

b∫

a

f(x) dx , (VIII.1)

то найбiльш загальною постановкою задачi числового iнтегру-вання є замiна виразу (VIII.1) сумою

I =

n∑

i=0

Ci f(xi) +R ≈

n∑

i=0

Ci f(xi) , (VIII.2)

де Ci — ваговi коефiцiєнти, f(xi) — значення функцiї у вузло-вих точках xi, R — похибка.

Один iз варiантiв розв’язання цiєї задачi — замiнити f(x)iнтерполяцiйним полiномом:

f(x) =n∑

i=0

f(xi)χi(x) + rn(x) , (VIII.3)

де полiноми χi(xi) = 1 та χi(xj) = 0 при j 6= i , а rn(x) —

63

Page 64: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

залишковий член iнтерполяцiї (похибка замiни). Тодi

Ci =

b∫

a

χi(x) dx ;

R =

b∫

a

rn(x) dx .

(VIII.4)

Формули Ньютона—Котеса

Якщо для iнтерполяцiї функцiї f(x) використовуються по-лiноми Лагранжа, тобто

f(x) =

n∑

i=0

f(xi)∏

j=0j 6= i

(x− xj)

(xi − xj), (VIII.5)

то отриманi в результатi квадратурнi формули називаютьсяформулами Ньютона—Котеса. Залежно вiд порядку викори-стовуваних полiномiв видiляють декiлька методiв.

Метод прямокутникiв. У цьому випадку на кожномувiдрiзку, на якi розбивається область iнтегрування вузловими

f(x)

x

a=x0 x7=b

y0y1

x1x2 x3 x4 x5x6

y2

f(x)

x

y0y1

x1x2 x3x4 x5x6

y2

a=x0 x7=b

а б

y y

Рис. 13. Iлюстрацiя методу прямокутникiв iз центруванням налiвiй (а) i правiй (б ) границях вiдрiзка (випадок нерiвномiрноїмережi)

64

Page 65: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

точками, функцiя f(x) iнтерполюється полiномом нульовогостепеня:

f(xi) = yi , i = 0, n . (VIII.6)

Якщо позначити вiдстань мiж сусiднiми точками hi = xi−xi−1,i = 1, n, то iнтеграл (VIII.1) можна обчислити, використовую-чи центрування на лiвiй границi вiдрiзка (рис. 13, а)

I ≈ h1y0 + h2y1 + . . .+ hnyn−1 =

n∑

i=1

hiyi−1 , (VIII.7a)

на правiй (рис. 13, б )

I ≈ h1y1 + h2y2 + . . .+ hnyn =

n∑

i=1

hiyi (VIII.7б)

або у середнiх точках

I ≈n∑

i=1hi f(xi−1/2) , (VIII.7в)

де xi−1/2 =12(xi−1 + xi) , i = 1, n.

Останнiй варiант найпоширенiший i дає найточнiший ре-зультат серед усiх трьох. Якщо крок мiж вузловими точкамиоднаковий (hi = h = const) то (VIII.7в) перетворюється на

I ≈ h ·

n∑

i=1

f(xi−1/2) . (VIII.7в ′)

Найпростiший варiант застосування методу прямокутникiв дляобчислення iнтеграла — це використання значення функцiї ли-ше в однiй вузловiй точцi:

I =

b∫

a

f(x) dx ≈ (b− a) f(a+ b

2

)

. (VIII.8)

65

Page 66: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Метод трапецiй . У цьому наближеннi на вiдрiзку[xk, xk+1] функцiя f(x) замiнюється iнтерполяцiйним полiно-мом Лагранжа першого порядку (рис. 14):

f(x) = f(xk) +f(xk+1)− f(xk)

xk+1 − xk(x− xk) . (VIII.9)

Тодi

I ≈1

2

n∑

i=1

hi (yi−1 + yi). (VIII.10)

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

I ≈ h ·

(

y0 + yn2

+

n−1∑

i=1

yi

)

. (VIII.10 ′)

У найпростiшому випадку використовуються лише значенняфункцiї у точках на границях iнтервалу, де шукається iнте-грал:

I ≈b− a

2

[

f(a) + f(b)]

. (VIII.11)

Метод парабол (або Симпсона)Якщо iнтервал [a, b ] розбити на парну кiлькiсть вiдрiзкiв i

на кожному з iнтервалiв [x0, x2], [x2, x4], . . . , [xn−2, xn] iнтер-полювати функцiю полiномом Лагранжа другого порядку, тоу випадку рiвномiрної мережi для iнтеграла отримаємо

I ≈h

3

[

y0+4(y1+ y3+ . . .+ yn−1)+2(y2+ y4+ . . .+ yn−2)+ yn]

.

(VIII.12)Iнший варiант — використовувати точки посерединi вiдрiзкiв(аргументи з напiвцiлими iндексами); тодi кiлькiсть вiдрiзкiв,на якi розбивається iнтервал iнтегрування, може бути не лишепарною:

I ≈h

6

[

y0+4(y1/2+y3/2+. . .+yn−1/2)+2(y1+y2+. . .+yn−1)+yn]

.

(VIII.13)

66

Page 67: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

f(x)y

xa=x0 x7=b

y0

y1

x1 x2 x3 x4 x5 x6

y2

Рис. 14. Застосування методу трапецiй до обчислення iнтеграла(випадок рiвномiрної мережi)

Найпростiший випадок числового iнтегрування методом Сим-псона описується виразом

I ≈h

6

[

f(a) + 4 f

(

a+ b

2

)

+ f(b)

]

. (VIII.14)

Квадратури Гаусса

Розв’язуючи задачу пошуку такого розташування вузлiв xii такого значення вагових коефiцiєнтiв Ci , щоб rn(x) = 0 (див.вирази (VIII.2)–(VIII.3)) для полiномiв щонайбiльшого степе-ня, К. Ф. Гаусс показав, що коли в ролi n вузлiв використатинулi полiномiв Лежандра Pn+1(x) степеня (n+ 1), а ваговi ко-ефiцiєнти обчислювати за виразом

Ci =

1∫

−1

n∏

k=0k 6= i

x− xkxi − xk

dx ,

67

Page 68: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

то квадратурна формула1∫

−1

f(x) dx =n∑

i=0

Ci f(xi) (VIII.15)

буде точною для полiномiв степеня (2n + 1).Iншими словами, порядок числового iнтегрування з вико-

ристанням квадратур Гаусса може бути таким.

1. Вибирати кiлькiсть вузлiв (припустимо, їх буде n+ 1).

2. Обчислити розташування вузлiв {xi} , i = 0, n, на вiдрiзку[−1, 1] як нулiв полiнома Лежандра степеня n+1. Рекурентнаформула для полiномiв Лежандра має вигляд

P−1 = 0 ,

P0 = 1 ,

(k + 1)Pk+1(x) = (2k + 1) · x · Pk(x)− k · Pk−1(x) .

(VIII.16)

Для знаходження нулiв можна використати метод Ньютонаабо будь-який iнший метод розв’язання алгебраїчних рiвнянь.

3. Обчислити ваговi коефiцiєнти за виразом

Ci =2

(1− xi)2 ·

[

d

dxPn+1(xi)

]2 . (VIII.17)

Загалом задача, сформульована у пунктах 2 та 3, є стандар-тною i тому можна просто використати розрахованi таблицiвузлiв та вагових коефiцiєнтiв для квадратур Гаусса (табли-ця).

4. Урахувати, що iнтервал iнтегрування може вiдрiзнятися вiд[−1, 1], i тому остаточна формула матиме вигляд

b∫

a

f(x) dx =(b− a)

2

n∑

i=0

Ci f

(

a+ b

2+

b− a

2· xi

)

. (VIII.18)

68

Page 69: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Таблиця. Вузли та ваговi коефiцiєнти для квадратур Гаусса

Кiлькiсть вузлiв Положення вузлiв Ваговi коефiцiєнти

n xi ∈ [−1, 1] Ci

2 ± 0, 577350 1,0

3± 0, 774597

0,00,5555560,888889

4± 0, 861136± 0, 339981

0,3478550,652145

5± 0, 906180± 0, 538469

0,0

0,2369270,4786290,568889

6± 0, 932470± 0, 661209± 0, 238620

0,1713250,3607620,467914

Завдання VIII.1. Написати процедуру пошуку iнтеграла задопомогою квадратур Ньютона—Котеса, використовуючи

а) метод прямокутникiв iз рiзним положенням центра;

б) метод трапецiй;

в) метод парабол (Симпсона).

Завдання VIII.2. Написати процедуру пошуку iнтегралiв задопомогою квадратур Гаусса з 3 та з 5 вузлами.

Орiєнтовнi алгоритми

Завдання VIII.1

i. Зчитати данi з файла у двовимiрний масив та визначитикiлькiсть точок, по яких проводитиметься iнтегрування.

ii. Для методу парабол перевiрити:

а) що точок бiльше двох;

69

Page 70: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

б) рiвномiрнiсть мережi.

iii. Обчислити значення iнтеграла, користуючись

а) виразом (VIII.7a) для методу прямокутникiв iз центру-ванням на лiвiй границi;

б) виразом (VIII.10) для методу трапецiй;

в) виразом (VIII.12) для методу Симпсона.

iv. Вивести на екран (або у файл) отриманi результати.

Завдання VIII.2

i. Створити функцiю, яка обчислює значення пiдiнтеграль-ного виразу.

ii. Використовуючи xi та Ci iз таблицi (третiй та п’ятий ряд-ки) за виразом (VIII.18) обчислити значення iнтеграла.

iii. Вивести на екран (або у файл) отриманi результати.

70

Page 71: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Список лiтератури

1. Форсайт, Дж. Машинные методы математических вычи-слений / Дж. Форсайт, М. Малькольм, К. Моулер. — М. :Мир, 1980. — 280 c.

2. Калиткин, Н. Н. Численные методы / Н. Н. Калиткин. —М. : Наука, 1978. — 512 c.

3. Турчак, Л. И. Основы численных методов / Л. И. Турчак,П. В. Плотников. — М. : Физматлит, 2003. — 304 с.

4. Буслов, В. А. Введение в численный анализ / В. А. Буслов,С. Л. Яковлев. — СПб. : Изд-во Санкт-Петербурского гос.ун–та, 1999. — 99 с.

5. Петров, И. Б. Лекции по вычислительной математике /И. Б. Петров, А. И. Лобанов. — М. : Бином. Лабораториязнаний, 2006. — 529 с.

6. Бахвалов, Н. С. Численные методы /Н. С. Бахвалов,Н. П. Жидков, Г. М. Кобельников. — М. : Физматлит, 2002.— 630 с.

7. Каханер, Д. Численные методы и програмное обеспечение /Д. Каханер, К. Моулер, С. Нэш. — М. : Мир, 1998. — 575 с.

8. Самарский, А. А. Введение в численные методы /А. А. Самарский. — М. : Лань, 2009. — 288 с.; М. : Нау-ка, 1997. — 234 с.; М. : Наука, 1987. — 269 с.

9. Єжов, С. М. Методи обчислень / С. М. Єжов. — К. : Київ.нац. ун-т iменi Тараса Шевченка, 2001. — 174 c.

71

Page 72: МАТЕМАТИЧНЕ МОДЕЛЮВАННЯgen.phys.univ.kiev.ua/wp-content/uploads/2013/04/MomotO... · 2013-04-25 · програмі дисципліни "Математичне

Навчальне видання

МОМОТ Андрій Іванович ОЛІХ Олег Ярославович

МАТЕМАТИЧНЕ МОДЕЛЮВАННЯ

Методичні вказівки до практичних робіт

Редактор Л. В. Магда

Оригінал-макет виготовлено Видавничо-поліграфічним центром "Київський університет"

Підписано до друку 06.09.11. Формат 60х841/16

. Вид. № Фз7. Гарнітура Roman. Папір офсетний. Друк офсетний. Наклад 100. Ум. друк. арк. 4,19. Обл.-вид. арк. 4,5. Зам. № 211-5770

Видавничо-поліграфічний центр "Київський університет" 01601, Київ, б-р Т. Шевченка, 14, кімн. 43

(38044) 239 32 22; (38044) 239 31 72; тел./факс (38044) 239 31 28 Свідоцтво внесено до Державного реєстру ДК № 1103 від 31.10.02