Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР_ОТП_M03434

.pdf
Скачиваний:
4
Добавлен:
07.02.2016
Размер:
744.43 Кб
Скачать

31

x=input('x= '); z=average(x);

disp(['середнє значення = ', num2str(z)]); k=menu('Що робити?'.

'Продовжити роботу'. 'Закінчити роботу');

end

3.4 Індивідуальні завдання до лабораторної роботи

Для заданих нелінійних рівнянь (таблиця 1, колонки 1 і 2) знайти відрізки локалізації коріння:

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

-графіка функції, що входить в нелінійне рівняння;

-вертикально розташованої таблиці табуляції функції з наступною шапкою

Аргумент Функція

-списку знайдених відрізків локалізації.

2.Скласти програму-сценарій для організації повторного виклику функції, створеної в п.2. Організувати зміну початкових даних в діалоговому режимі.

Таблиця 3.1 - Варіанти індивідуальних завдань

1

2

1

3x4+4x3-12x2-5=0

ln(x)+(x+1)3=0

2

2x3-9x2-60x+1=0

X 2x=1

3

x4-x-1=0

x+cos(x)=1

4

2x4 - x2-10=0

x+lg(1+x)=1.5

5

3x4+8x3+6x2-10=0

lg(2+x)+2x=3

6

x4 -18x2+5x-8=0

2x+5x-3=0

7

x4+4x3-12x2+1=0

5x+3x =0

8

x4 - x3-2x2+3x-3=0

3ex=5x+2

9

3x4+4x3-12x2+1=0

5x=6x+3

10

3x4-8x3-18x2+2=0

2ex+5x-6=0

11

2x4-8x3+8x2-1=0

2arctg(x)-x+3=0

12

2x4+8x3+8x2-1=0

(x-3) cos(x)=1

PDF created with pdfFactory Pro trial version www.pdffactory.com

 

 

 

32

 

 

 

 

 

13

x4-4x3-8x2+1=0

 

xx= 20-9x

14

2x4-9x3-60x2+1=0

 

x lg(x)=1

15

x5 +x2-5=0

 

tg3x=x-1

16

3x4+4x3-12x2-7=0

 

5x =1+e-x

17

3x4+8x3+6x2-11=0

 

5x =3-ex

18

x4 -18x3-10=0

 

arctg(x2+1/x)=x

19

3x4-8x3-18x2+2=0

 

tg(0.55x+0.1)=x2

20

x4 -18x -10=0

 

5x-6x =7

21

x4

+18x -10=0

 

5x-6x =3

22

x4

+18x3-6x2+x-10=0

 

5x =1+e-2x

23

x5

+12x3-6x2+x-10=0

 

7x-6x =2

24

3x5-8x3-18x2+2=0

 

5x =2+e-2x

25

x3

-18x -10=0

 

x 2x=3

3.5Контрольні питання

1.Чим відрізняються два види М-файлів: М-сценарії и М-функції..

2.Форма операторів:

-циклу із заданим числом повторень;

-циклу з передумовою;

-умовного;

-перемикання.

3.Уведення даних із клавіатури.

4.Оператори виводу значень на екран.

5.Оператори припинення виконання програми, створення меню.

6.Призначення та формат функції feval.

PDF created with pdfFactory Pro trial version www.pdffactory.com

33

ЛАБОРАТОРНА РОБОТА № 4

РІШЕННЯ НЕЛІНІЙНИХ РІВНЯНЬ МЕТОДАМИ ПОЛОВИННОГО РОЗПОДІЛУ ТА ХОРД

4.1Мета роботи

Вивчення чисельних методів рішення нелінійних рівнянь та придбання практичних навиків роботи в системі MatLab.

4.2Завдання до лабораторної роботи

Для виконання лабораторної роботи необхідно.

1.Вивчити алгоритми ітераційних методів(половинного роз-

поділу та хорд).

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

3.Виконати в MatLab індивідуальні завдання наведені в розділі 4.4 та завдання на самостійну роботу – розділ 4.5.

4.Зберегти результати роботи (програми, протоколи обчислень, графіки).

5.Скласти звіт.

4.3Основні теоретичні відомості

Найбільш загальний вигляд нелінійного рівняння: f(x)= 0, (4.1)

де функція f(x) визначена і безперервна на кінцевому або безкінцевому відрізку [а, b].

Коренем рівняння називається таке значення x , при якому

f (x)= 0 . Корінь x називається простим, якщо f '(x) ¹ 0 , інакше корінь називається кратним. Ціле число k називається кратністю кореня,

якщо при x = x разом з функцією дорівнюють нулю її похідні до (k-1) порядку включно:

_

_

_

f (x) =

f ' (x) = ... =

f (k −1) (x) = 0

PDF created with pdfFactory Pro trial version www.pdffactory.com

34

Постановка обчислення наближеного значення кореня точніс-

тю ε: знайти таке значення x, що x x < ε .

Рішення задачі розбивається на два етапи: на першому етапі здійснюють локалізацію кореня, на другому етапі проводять ітераційне уточнення кореня. На етапі локалізації кореня знаходять достатньо вузькі відрізки (або відрізок, якщо корінь єдиний), які містять один і лише один корінь рівняння f (x) = 0 . На другому етапі наближене

значення кореня із заданою точністю. Часто замість відрізка локалізації досить вказати початкове наближення до кореня.

4.3.1 Методи ітераційного уточнення коренів нелінейних рівнянь

Метод бісекції (розподілу навпіл)

Нехай [а,b] – відрізок локалізації. Припустимо, що функція f(x) безперервна на [а,b] і на кінцях набуває значень різних знаків f (a) × f (b) < 0 .

Алгоритм методу розподілу навпіл полягає в побудові послідовності вкладених відрізків, на кінцях яких функція набуває значень різних знаків. Кожен наступний відрізок отримують діленням навпіл попереднього. Опишемо один крок ітерацій методу. Нехай на k-ом

кроці знайдений відрізок [a(k) ,b(k) ] такий, що

f (a(k) ) × f (b(k) ) < 0 .

Знайдемо середину відрізка

c(k) =

a(k) + b(k)

 

. Якщо f (c(k ) ) = 0 , то

 

 

2

 

 

c(k ) – корінь і задача вирішена. Якщо ні, то из двух половин відрізка вибираємо той, на кінцях якого функція має протилежні знаки:

a(k +1)

= a(k) ,

b(k +1) = c(k )

a(k +1)

= c(k ) ,

b(k+1) = b(k )

, якщо f (a(k) ) × f (c(k ) ) < 0 , , якщо f (a(k) ) × f (c(k ) ) > 0 ,

PDF created with pdfFactory Pro trial version www.pdffactory.com

35

Рисунок 4.1 – Метод розподілу навпіл

Критерій закінчення ітераційного процесу: якщо довжина відрі-

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

Теорема про збіжність методу бісекцій. Нехай функція f(x)

безперервна на [а,b] і на кінцях набуває значень різних знаків f (a) × f (b) < 0 . Тоді метод сходиться і справедлива оцінка погріш-

ності: x(k) x (b(k) a(k) )/ 2 = (b a) / 2k +1.

З останнього равенства легко отримати апріорну оцінку кількості кроків, необхідних для досягнення заданої точності:

b - a

£ ε ,

звідки отримуємо k ³1 +

ln((b - a) / ε )

.

2k +1

 

 

 

ln 2

Приклад програми-функції, яка вирішує рівняння методом розподілу навпіл, наведений в Лістингу 4.1.

Лістинг 4.1. Файл Bisection.m function [x,k]=Bisection(f,a,b,eps) %Data Inputf – ім'я функції;

%a і b – ліва і права границі інтервалу локалізації;

%eps – точність;

%Data Output

x – корінь;

%k – кількість ітерацій.

PDF created with pdfFactory Pro trial version www.pdffactory.com

36

ya= feval(f,a); yb= feval(f,b); if ya*yb>0

error('[a, b] не є інтервалом локалізації'); end;

k=0;

while abs(a-b)>eps

k=k+1; x=(a+b)/2; fx=feval(f,x); if fx==0

break; elseif fa*fx<0

b=x; fb=fx; else

a=x; fa=fx; end;

end;

Метод хорд

В деяких випадках декілька більшою швидкістю збіжності володіє метод хорд, якого на другому етапі при виборі чергового наближення усередині відрізка, що містить корінь, враховується величина нев'язки на кінцях відрізка: вибирається ближче до того кінця, де не- в'язка менша.

Геометричний сенс полягає в заміні кривої y = f (x) хордою.

Чергове наближення знаходиться як точка пересічення хорди віссю абсцис.

Рисунок 4.2 – Метод хорд

Якщо [a,b] – відрізок, що містить корінь, то рівняння хорди

PDF created with pdfFactory Pro trial version www.pdffactory.com

xk +1 = xk -

37

x - a

=

y - f (a)

b - a

f (b) - f (a)

 

Для точки пересічення хорди віссю абсцис x = x1, y = 0 маємо

x1 = a -

b - a

× f (a) ,

f (b) - f (a)

 

 

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

знаків, і т.д. При цьому, якщо функція і її друга похідна зберігають знак на даному проміжку, то отримані наближення сходитимуться до кореню монотонно. В цьому випадку у всіх отриманих проміжків один кінець буде , саме той, на якому збігаються знаки функції і другої похідної. Цей кінець називають нерухомим, а протилежний кінець відрізку приймають за початкове наближення до кореню. Н с – той з кінців відрізку [a,b] , для якого виконується умова

f (c) × f '' (c) > 0 , а x0 - початкове значення (протилежний кінець відрізку), тоді ітерації проводимо по формулі:

c - xk × f (xk ) , k=0,1,2,… f (c) - f (xk )

4.3.2 Функції MatLab для вирішення нелінійних рівнянь Функція fzero

Функція

[x, fval, exitflag, output] = fzero(fun, x0, 0ptions, p1, p2,…)

Пробує знайти нуль функції fun поблизу x0, якщо x0 є скаляром. Вхідні аргументи:

fun – покажчик на функцію;

x0 – початкове наближення або інтервал локалізації кореня; 0ptions - параметри, що задають точність і спосіб представлення

результатів обчислень(докладніше читайте в help); p1,p2,…- додаткові аргументи функції fun.

Вихідні аргументи:

x – знайдене значення кореня;

Fval – значення функції для знайденого значення кореня; Exitflag = 1, означає, що корінь знайдений;

PDF created with pdfFactory Pro trial version www.pdffactory.com

38

output – структура з значеннями:

output.algorithm – алгоритми, які використовувалися для знаходження кореня;

output.func - кількість обчислень значень функції; output.iterations - кількість ітерацій.

Приклад 4.1. Обчислити число π, шляхом знаходження нуля функції sin поблизу 3.

>>x = fzero(@sin,3) x = 3.1416

Приклад 4.2. Знайти нулі функції cos між 1 і 2: >>x = fzero(@cos,[1 2])

x =

1.5708

Відмітимо, що cos(1) и cos(2) мають різні знаки.

Приклад 4.3. Вирішимо нелінійне рівняння x^3-5*x^2-x+2 = 0 поблизу x = 4. Для задавання функції, що входить в нелінійне рівняння, використовуємо команду inline.

>>f=inline(‘x.^3-5*x.^2-x+2’); >> fzero(f,4)

ans = 5.1190

Змінимо початкове значення на x = 2

>> fzero(f,2)

отримаємо

ans = 0.5684

Задамо інтервал локалізації корня x[3 6]:

>>z = fzero(f; [3 6]) ans = 5.1190

Приклад 4.4. Для функції, що входить в нелінійне рівняння x - cos(x) = 0, створимо файл fun.m (лістинг 1.1).

Лістинг 1.1. Файл fun.m function y=fun(x)

y=x-cos(x);

Рішення:

>>x=fzero('fun', 4)

x= 5.1190

PDF created with pdfFactory Pro trial version www.pdffactory.com

39

Функція roots

Функція

r=roots(c)

служить для знаходження всіх коренів нелінійного рівняння виду: c1xn + c2 xn−1 + ...+ cn+1x0 =0

Вхідний аргумент с – вектор-рядок, вектор-рядок, що містить коефіцієнти полінома.

Приклад 4.5. Знайти нулі функції f (x) = x3 − 2x − 5

Визначимо анонімну функцію f, і знайдемо її нулі поблизу 2: >>f = @(x)x.^3-2*x-5;

>>z = fzero(f,2)

z = 2.0946

Оскільки ця функція є поліномом, виклик функції

>>roots([1 0 -2 -5])

знайде той же дійсний корінь, а також комплексну пару коренів: 2.0946

-1.0473 + 1.1359i -1.0473 - 1.1359i

4.4Індивідуальні завдання до лабораторної роботи

Для заданого нелінійного рівняння (варіанти індивідуальних завдань наведені в першій колонці Додатка А, стор. 65) виконати:

1.Визначити кількість коренів нелінійного рівняння в заданій вами області, для кожного кореня знайти відрізки локалізації.

2.Знайдіть один з коренів методами:

а) розподілу навпіл, б) хорд.

3. Разом з "ручним" рішенням представте рішення, що отримуються стандартними засобами MatLab.

PDF created with pdfFactory Pro trial version www.pdffactory.com

40

4.5Завдання на самостійну роботу

Здля підготовки до модульного контролю і самоперевірки приведені в Додатку 2 (стор. 65).

4.6Контрольні питання

1.Сформулюйте постановку задачі наближеного розв'язання нелінійного рівняння і основні етапи її розв'язання.

2.Опишіть алгоритм методу розподілу навпіл.

3.Опишіть алгоритм методу хорд.

4.Перерахуйте вбудовані функції MatLab (і їх формати) для вирішення нелінійних рівнянь. На яких методах засновані алгоритми реалізовані в цих функціях? Що можна сказати про точність отриманих рішень?

PDF created with pdfFactory Pro trial version www.pdffactory.com