Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПР_КТіООР.doc
Скачиваний:
37
Добавлен:
11.05.2015
Размер:
9.89 Mб
Скачать

Завдання до практичної роботи:

Завдання 1. Побудуйте два графіки в рамках одних осей координат:

у = e-2x

z = arctg(x1/2)

x є [0,4].

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

Завдання 2. Побудувати графіки функцій у(x) і z(x) в різних підобластях одного графічного вікна. Інтервали зміни для х визначите самостійно.

Завдання 3. Побудуйте поверхню:

f(x,y)= ln(x2+y2-xy)

Завдання 4. Побудувати гістограму випадкових чисел, розподілених за нормальним законом. Десять тисяч чисел згенерувати за допомогою функції randn(m,n).

Практична робота №8 Рішення алгебраїчних і трансцендентних рівнянь в середовищі matlab

Мета: Вивчення методів рішення рівнянь

Теоретичні питання

Рішення алгебраїчних і трансцендентних рівнянь в середовищі MATLAB здійснюється за допомогою наступних вбудованих функцій: solve(), fzero(), roots().

Технологія рішення рівнянь за допомогою функції solve()

Функція solve() представляється в наступному виді:

solve('f(x)', х)

де: 'f(x)' – рівняння, записане в одинарних лапках;

х – шукане невідоме.

Рівняння f(x) = 0 записується в довільній формі. При цьому, якщо знак рівності відсутній, то програма сприйме рівняння у вигляді f(x) = 0.

Аргумент х при вирішенні рівняння можна опустити.

Розглянемо технологію визначення кореня рівняння за допомогою функції solve| () на прикладі.

Нехай, необхідно розв’язати рівняння:

sin х + х -1 = 0

Програма рішення рівняння має вигляд:

>> Y = solve('sin(x) + х - 1 = 0)

Після натиснення клавіші <Enter> отримаємо:

Y =

0.510973

Функція solve() у ряді випадків дозволяє визначити всі корені рівняння f(x) = 0 без вказівки початкових значень х або області допустимих значень, знайти не тільки дійсні, але і комплексні корені рівняння f(x) = 0.

Відмінність функції solve() в тому, що вона дозволяє розв’язувати рівняння, подані в аналітичній формі.

Тобто,

2х - 3( а – b ) = 0

Рішення матиме вигляд:

>> Y=solve('2^x-3*(a-b) = 0')

Y=

Log((3*a-3*b|)/log|(2))

Функція solve() має наступний недолік. Вона не вимагає інформації про початкове значення кореня або області допустимих значень. Тому в випадку трансцендентного рівняння і в ряді інших випадків вона не знаходить всіх коренів рівняння.

Технологія визначення дійсних коренів рівняння за допомогою функції fzero()

Функція fzero() має наступні реалізації:

fzero (' f (х) ', х)

fzero (' f (х) ', [xl, х2])

fzero (' f ( х ) ', х, tol, trace)

fzero (' f ( x ) ', [xl, x2], tol)

fzero (' f ( x ) ', [xl, x2], tol, trace)

У виразах функції прийняті наступні позначення:

' f (х) ' – розв’язуване рівняння, узяте в одинарні лапки;

х – початкове наближення (значення) шуканого кореня;

[xl, х2] – область допустимих значень;

tol – задана погрішність обчислення кореня;

trace – значення кореня в кожній ітерації.

Технологія визначення кореня рівняння:

2х - 4x + хsin х = 0,

якщо відомо, що корені знаходяться між х=1 і х=4.

Рішення:

>> Y = fzero('2^x - 4 * х + х * s i n ( x ) ' , 1)

Y=

0.3478

>> Y = fzero('2^x - 4 * х + х * s i n ( x ) ' , 4)

Y=

4.4761

Потрібно визначити дійсний корінь рівняння, використовуючи функцію

fzero (' f (х) ', [xl, х2])

На рис. 8.1 приведений графік функції

Рисунок 8.1 – Графік функції ln(4 - 2х) + х2 - 2 = 0

З рис. 8.1 видно, що областями ізоляції коріння можуть бути: [0;-1], [l;1.5], [l.5;1.95].

Тоді програма визначення кореня і результати рішення за­дачі матимуть вигляд:

>> X1 = fzero (' log ( 4 - 2 * х) + х^2 - 2 ', [0,-1]);

>> Х2 = fzero (' log ( 4 - 2 * х) + х^2 - 2 ', [1,1.5]);

>> Х3 = fzero (' log ( 4 - 2 * х) + х^2 - 2 ', [1.5,1.95]);

>> X = [Хl, Х2, Х3]

Після натиснення клавіші <Enter> отримаємо:

Х =

0.594 1.2774 1.9001

Необхідно обчислити корінь рівняння

In (4 - 2х) + х2 - 2 = 0

з області ізоляції [0; -1] з видачею інформації про кожну ітерацію (число ітерацій не більше 50).

Програма рішення задачі і результат мають вигляд:

>> fzero (' log ( 4 - 2 * х) + х^2 - 2 ', [0,-1],50)

ans =

Funt-count х f (х)

1 0 -0.613706

2 -1 0.791759

3 -0.436657 -0.225557

4 -0.634142 0.0638411

5 -0.590577 -0.00619106

6 -0.594428 -0.000141692

7 -0.594518 1.45892 e 008

8 -0.594516 -3.13434 e 006

ans =

-0. 5945

Таким чином, функція fzero дозволяє знайти всі корені рівняння f(x) = 0. Для цього необхідно знати області допустимих значень.

З врахуванням цих особливостей системи MATLAB комп'ютерна технологія рішення алгебраїчних і трансцендентних рівнянь полягає у виконанні процедур, перерахованих нижче:

  • визначення області ізоляції кореня графоаналітичним методом;

  • визначення дійсного кореня рівняння за допомогою функції fzero(), при заданих значеннях погрішності tol;

  • визначення комплексного кореня рівняння за допомогою функції solve('f(x)').

Технологія визначення коренів многочлена за допомогою функції roots()

Функція roots() має вигляд:

roots(z),

де z – вектор коефіцієнтів многочлена.

Необхідно визначити корені многочлена:

у = 2х5 - 3х4 + 5х3 + х2 + 7х + 3.

Рішення має вигляд:

>> Y = roots( [2 -3 5 1 7 3] )

Y=

1.2189 + 1.4110 i

1.2189 - 1.4110 i

-0.2719 + 1.0105 i

-0.2719 - 1.0105 i

-0.3940.

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