Рішення нелінійних рівнянь методом поділу відрізка навпіл

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

МІНІСТЕРСТВО ОСВІТИ

Державна освітня установа вищої

НАУКИ «Кемеровський

ДЕРЖАВНИЙ УНІВЕРСИТЕТ »

Математичний факультет

Кафедра автоматизації досліджень і технічної кібернетики

Реферат

"Рішення нелінійних рівнянь методом поділу відрізка навпіл"

студента 3 курсу

Ткаченко Івана Сергійовича

Спеціальність 010501

«Прикладна математика та інформатика»

Викладач:

Преслер В.Т.

КЕМЕРОВО 2009

Зміст

1 Формулювання завдання

2 Математична постановка задачі

2.1 Метод рішення задачі

2.2 Способи введення, виведення та організації даних

2.3 Виняткові ситуації і реакція на них

2.4 Модульна організація програми

2.5 Специфікація даних

2.6 Організація обчислювального процесу

3 Розробка блок-схеми алгоритму завдання

4 Створення програми на алгоритмічній мові

5 побудованих тестів та налагодження програми

1 Формулювання завдання

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

2 Математична постановка задачі

2.1 Метод рішення задачі

Обчислення кореня функції методом ділення відрізка навпіл.

Корінь функції F (x) - це таке значення її аргументу х *, при якому виконується умова F (x *) = 0. Відомо, що для вирішення такого рівняння необхідно задати інтервал [a, b], на якому відбуватиметься пошук рішення. Якщо рішення дійсно існує, є на цьому інтервалі єдиним, належить заданому інтервалу і функція F (x) приймає на кордонах інтервалу значення протилежних знаків. Іншими словами, твір значень функції на кордонах інтервалу негативно: F (a) F (b) <0. Далі вихідний інтервал ділиться середньої точкою з = (а + b) / 2 на дві рівні частини, з яких вибирається лише та, яка містить рішення рівняння. Процедура розподілу відрізка навпіл повторюється до тих пір, поки корінь функції не буде знайдений із заданою точністю. Оцінкою похибки в даному випадку може бути величина останнього інтервалу | а-b | або значення | F (x) |.

2.2 Способи введення, виведення та організації даних

Вихідні дані в цьому завданні - це коефіцієнти рівняння, точність рішення і відрізок [a, b], на якому шукається рішення рівняння.

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

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

Обчислювальний процес цієї задачі базується на координатах відрізка [a, b], точності e дійсного типу і функцие .

2.3 Виняткові ситуації і реакція на них

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

2.4 Модульна організація програми

Рішення поставленої задачі являє форму програмної реалізації алгоритму як цілісна програма і функція, до якої звертається головна програма.

2.5 Специфікація даних

При рекурсивної організації програми маємо стандартний модуль, але містить функцію funct. Функція funct типу real. Функція повертає значення. Всі змінні в програмі глобальні. Значення коефіцієнтів передаються у функцію.

Вихідні дані:

a 0, a 1, a 2 - коефіцієнти рівняння типу Real;

e - точність рішення типу Real;

a, b - координати відрізка типу Real.

Результуючі дані:

x - змінна зберігає значення точки (I ітерація, корінь) типу Real;

i - лічильник ітерацій типу Integer.

Проміжні дані:

x _ pre - змінна, що зберігає попереднє значення точки (i -1 ітерація) типу Real;

d - дискримінант типу Real;

x 1-перший корінь рівняння, знайдений методом розв'язання квадратних рівнянь через дискримінант типу Real;

x 2 - другий корінь рівняння, знайдений методом розв'язання квадратних рівнянь через дискримінант типу Real;

2.6 Організація обчислювального процесу

Обчислювальний процес базується на наступному підході. Перевіряємо чи є у заданого рівняння дійсні корені за формулою: D = a 1 ^ 2 - a 0 * a 2. Якщо D <0, значить дійсних коренів немає і вирішити таку систему у нас не вийде. Якщо дійсні корені є, то знайдемо їх методом розв'язання квадратних рівнянь через дискримінант. Перевіримо єдиність кореня на заданому відрізку [a, b]. Якщо на цьому відрізку існує не один корінь або взагалі не існує коренів, то треба задати інший відрізок. Потім ділимо відрізок навпіл і перевіряємо на який його половині лежить корінь. Для цього значення функції повинна бути різного знака на кінцях відрізка. Отриманий відрізок ми знову ділимо навпіл. Цей ітераційний процес ми продовжуємо до тих пір поки модуль різниці між точкою, отриманої на i-й ітерації і точкою, отриманої на (i -1) ітерації не буде менше заданої точності. Це і буде коренем рівняння.

3 Розробка блок-схеми алгоритму завдання

Блок-схема рішення задачі представлена ​​нижче

4 Створення програми на алгоритмічній мові

Для реалізації програми вирішення поставленого завдання використаний алгоритмічну мову VBA, можливості якого достатні для реалізації завдань подібного типу. Для відображення результатів (корені рівняння) використано Windows-вікно для виведення повідомлень. Результат, виведений через це вікно, зберігається лише на час його існування. Нижче представлений лістинг варіанту програми, розроблений згідно з поданою розрахункової схеми і графічному алгоритму.

Private a0, a1, a2, e, a, b, x, i

Private Sub CommandButton1_Click ()

a0 = CDbl (TextBox2.Text)

a1 = CDbl (TextBox3.Text)

a2 = CDbl (TextBox4.Text)

e = CDbl (TextBox5.Text)

a = CDbl (TextBox9.Text)

b = CDbl (TextBox10.Text)

d = a1 ^ 2 - 4 * a0 * a2

TextBox14.Text = d

If d <0 Then

Label16.Visible = True

TextBox7.Text = ""

TextBox8.Text = ""

TextBox11.Text = ""

TextBox12.Text = ""

TextBox13.Text = ""

Exit Sub

Else

Label16.Visible = False

End If

x1 = (-a1 - d ^ (1 / 2)) / 2 * a0

x2 = (-a1 + d ^ (1 / 2)) / 2 * a0

TextBox12.Text = x1

TextBox13.Text = x2

t = 0

If (a <x1) And (a <x2) And (b> x1) And (b> x2) Then t = 1

If (a <x1) And (a <x2) And (b <x1) And (b <x2) Then t = 1

If (a> x1) And (a> x2) And (b> x1) And (b> x2) Then t = 1

If (a> x1) And (a <x2) And (b> x1) And (b <x2) Then t = 1

If t = 1 Then

Label14.Visible = True

TextBox7.Text = ""

TextBox8.Text = ""

TextBox11.Text = ""

Exit Sub

Else

Label14.Visible = False

Label16.Visible = False

i = 0

x = a

Do

i = i + 1

x_pre = x

x = (a + b) / 2

If funct (a) * funct (x)> 0 Then

a = x

Else

b = x

End If

Loop While (Abs (x - x_pre)> e)

TextBox7.Text = x

TextBox8.Text = i

TextBox11.Text = funct (x)

End If

End Sub

Private Sub CommandButton3_Click ()

UserForm1.Hide

End Sub

Function funct (x)

funct = a0 * x ^ 2 + a1 * x + a2

End Function

5 побудованих тестів та налагодження програми

В програмі завжди виводяться коріння, отримані методом вирішення квадратного рівняння, щоб порівняти їх з отриманими результатами, знайденими за допомогою методу розподілу відрізка навпіл. У ході тестування програми помилок виявлено не було. Результати завжди перебувають з точність до заданого ε.

Додати в блог або на сайт

Цей текст може містити помилки.

Математика | Реферат
40.2кб. | скачати


Схожі роботи:
Рішення систем нелінійних алгебраїчних рівнянь методом Ньютона
Рішення нелінійних рівнянь
Розвязання нелінійних диференційних рівнянь методом січних і половинного ділення
Ітераційні методи рішення нелінійних рівнянь
Розв язання нелінійних диференційних рівнянь методом січних і половинного ділення
Знаходження кореня нелінійного рівняння Методи рішення системи нелінійних рівнянь
Рішення диференційних рівнянь за методом Ейлера
Рішення системи лінійних алгебраїчних рівнянь методом Крамера
Розвязання рівнянь методом оберненої матриці та методом Гауса
© Усі права захищені
написати до нас