Розв’язування рівнянь, систем рівнянь в середовищі Scilab
2-ге видання, оновлене
Урок 17
Інформатика
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.
Рівень стандарту 10(11)
Розв'язування рівнянь, систем рівнянь у середовищі Scilab
Основою для проведення розрахунків є об’єкти різних типів даних.
Внутрішня структура об’єктів прихована від очей користувачів і користувачок. В основі своїй об’єкти є масивами, у яких збережені певні дані.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Обчислення значень поліномів
Розглянемо об’єкт поліном. Із курсу алгебри ви знаєте, що поліномом називають алгебраїчне рівняння виду:
anxn + an-1xn-1 + … a1x + a0 = 0, an ≠ 0, n ≥ 1
Поліном задається функцією poly():
poly(a,vname,'c’)
масив коефіцієнтів;
а
ім’я символьної змінної;
vname
прапорець, який визначає, що коефіцієнти полінома формуються зі значень, наведених у масиві а.
'с'
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Обчислення значень поліномів
Задано поліном другого порядку з коефіцієнтами
-10, 4, 2.
-->р=роіу([-10 4 2]’х’,’с’)
p = - 10 + 4х + 2x2
Для пошуку коренів полінома в Scilab є функція roots(<ім’я полінома>).
Знайти корені квадратного рівняння
-10 + 4х + 2х2=0.
-->R=roots(p)
R =
-3.4494897
1.4494897
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Обчислення значень поліномів
Функція homer (<ім'я полінома>, <масив значень аргументу>) обчислює значення полінома для заданого значення аргументу.
Обчислити значення полінома р:
-->horner(p,8)
Ans = 150.
-->horner(p,[2.6 5 4])
ans = 13.92 60. 38.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Розв'язування системи лінійних алгебраїчних рівнянь
Scilab дає змогу розв'язувати системи лінійних алгебраїчних рівнянь виду:
Для значень A формується двовимірна матриця коефіцієнтів при невідомих, кожен рядок якої містить коефіцієнти одного рівняння
Для значень b формується вектор із вільних коефіцієнтів.
Ах = b
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Розв'язування системи лінійних алгебраїчних рівнянь
Після цього для розв'язування системи використовується функція linsolve, що має такий синтаксис:
[X] = linsolve (A, b)
це матриця коефіцієнтів при невідомих,
А
вектор вільних коефіцієнтів.
b
Функція повертає знайдені значення невідомих у вигляді масиву.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Розв'язування системи лінійних алгебраїчних рівнянь
Розв’яжемо систему лінійних рівнянь
--> А=[1 2; 1 1]; Ь=[-7;-6];
--> x=linsolve(A,b)
х =
5.
1.
Шукані значення: х = 5, y = 1.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Розв'язування системи лінійних алгебраїчних рівнянь
Якщо система не має розв’язків, то видається повідомлення "WARNING: Conflicting linear constraints!" (Конфліктуючі умови для лінійних рівнянь).
Якщо система має множину розв’язків, то функція повертає тільки один розв’язок.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Розв'язування системи лінійних алгебраїчних рівнянь
Командне вікно зручно використовувати для того, аби зрозуміти, що виконує та чи інша команда.
Але коли для виконання обчислень потрібно написати певну послідовність команд, необхідно мати можливість зберігати й редагувати програмний код.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Робота в програмному режимі
Робота в Scilab може здійснюватися не лише в режимі командного рядка, а й у так званому програмному режимі.
Програма Scilab називається сценарієм. Сценарій складається з інструкцій (команд), які описують конкретні дії з об'єктами Scilab.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Робота в програмному режимі
Зазвичай сценарії Scilab пишуться користувачем у вбудованому редакторі SciNotes. Щоб відкрити вікно SciNotes, треба:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Робота в програмному режимі
Уведемо у SciNotes такий код. Призначення інструкцій описано в коментарях, які відокремлюються двома похилими рисками «//»:
s='Hello!' //оголошення рядкової змінної
disp(s)// виведення рядка в командне вікно
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Робота в програмному режимі
SciNotes зафарбовує текст програми різними кольорами:
рядки в лапках виділено
виклики вбудованих функцій
коментарі
фіолетовим кольором
блакитним
зеленим
Що допомагає уникнути помилок під час набору тексту програми.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Робота в програмному режимі
Для збереження сценарію потрібно:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Робота в програмному режимі
Для виконання сценарію потрібно натиснути на панелі інструментів кнопку Виконати.
У командному вікні ви побачите рядки виведення:
-->exec('D:\FirstScript.sce', -1)
Hello!
Очевидно, що натискання на кнопку викликає вбудовану функцію exec(), яка виконує цей сценарій.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Робота в програмному режимі
Якщо у вашому сценарії відсутні інструкції виведення у вікні Консоль, для виведення рядків коду й результатів виконання сценарію потрібно виконати меню: Виконати ⇒ ...файл з виведенням.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Робота в програмному режимі
Існуючий файл можна відкрити за допомогою:
команди меню Файл ⇒ Відкрити
кнопкою Відкрити панелі інструментів
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Функції користувача
function <результат функції>=ім'я_функції(аргументи)
<інструкції>
endfunction
Окрім убудованих, ви можете використовувати власні функції, попередньо описавши їх за допомогою конструкції function…endfunction:
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Функції користувача
Опишемо функцію у = х2:
-->function y=f(x)
-->у=х^2
-->endfunction
Далі ви можете викликати цю функцію для обчислення її значення для різних аргументів:
-->f(4)
ans = 16.
Функції користувача можна зберігати у файлах із розширенням .sci.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Функції користувача
Опишемо та збережемо у файлі функцію cube = х3.
function y=cube(x)
у=х^3
endfunction
Зверніть увагу на те, що в разі введення службового слова function слово endfunction уводиться автоматично.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Функції користувача
Продовження…
-->cube(3)
ans = 27.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Функції користувача
Щоб викликати в Scilab раніше збережену функцію, потрібно ввести команду
exec(filename, –1).
Використаємо для обчислень функцію cube, код якої збережено у файлi cube.sci:
exec('D:\cube.sci', –1)
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Обчислення похідної функції
Ви вже знайомі з поняттям похідної функції. Знайти значення похідної функції f у точці x можна за допомогою функції numderivative (f, x).
Обчислимо похідну функції f(x) = (х + З)2 + 5, якщо х = 1.
-->function f=myfun(x)
-->f=(x+3)^2 + 5
-->endfunction
-->x=1;
-->g=numderivative (myfun, x)
g = 8.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Обчислення похідної функції
Як бачимо, навіть перше знайомство з середовищем розкриває потужні можливості пакета для розв’язування рівнянь і систем рівнянь.
До того ж система має власну мову програмування високого рівня, що дає користувачеві змогу створити нову функцію й використовувати її нарівні зі вбудованими.
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Питання для самоперевірки
-->p=poly([4 -5 1 2],’х’,’с')
-->р=роlу([1 -5]’х’,’с')
-->R=roots(p)
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Домашнє завдання
Проаналізувати
§ 17, с. 94-99
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Працюємо за комп’ютером
Сторінка
99
© Вивчаємо інформатику teach-inf.com.ua
Розділ 2
§ 17
Дякую за увагу!
2-ге видання, оновлене
Урок 17
Інформатика
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.
Рівень стандарту 10(11)