Урок "Розв’язування задач із різних предметних галузей. Практична робота № 3. Обчислення статистичних характеристик засобами LO Calc i Scilab"
08.11.2020 10:12
1. Побудова графіків функції однієї змінної
Scilab містить набір функцій для графічного подання інформації. Функція plot призначена для побудови графіка функції у = f(x). Загальний вигляд команди:
де х, у — два вектори однакового розміру. Вектор значень х має бути заданий перед використанням у функції plot.
Задати заголовок графіка, найменування осей можна за допомогою функції
Розв’язування задач із різних предметних галузей
1. Побудова графіків функції однієї змінної
Scilab містить набір функцій для графічного подання інформації. Функція plot призначена для побудови графіка функції у = f(x). Загальний вигляд команди:
plot (х, у)
де х, у — два вектори однакового розміру. Вектор значень х має бути заданий перед використанням у функції plot.
Задати заголовок графіка, найменування осей можна за допомогою функції
xtitle(caption, хсар, усар),
де caption — заголовок графіка, хсар, усар — підписи осей X, У.
Приклад 1. Побудова синусоїди:
Приклад 1. Побудова синусоїди:
-->x=0:0.1:2*%pi';-->plot(x,sin(x));-->xtitle('Графік функції f(x)=sin(x)','x', 'y');-->xgrid; // побудова ліній сітки
2. Розв'язування нелінійних рівнянь
Ми вже розглянули функцію roots(f(x)), яку застосовують для пошуку коренів рівняння f(x) = 0, де f(x) є поліномом. Але існують рівняння, які не можна розв’язувати алгебраїчними методами. Для розв’язування таких рівнянь існують методи наближених обчислень. Для наближеного обчислення кореня нелінійного рівняння f(x) = 0 спочатку необхідно визначити інтервал [а,b], на якому існує єдиний корінь рівняння. Визначити такий інтервал можна, наприклад, за графіком функції f(x). Після цього в Scilab для розв’язування таких рівнянь застосовують функцію
де х0 — початкове наближення кореня рівняння (x0 є [а,b]),
Ми вже розглянули функцію roots(f(x)), яку застосовують для пошуку коренів рівняння f(x) = 0, де f(x) є поліномом. Але існують рівняння, які не можна розв’язувати алгебраїчними методами. Для розв’язування таких рівнянь існують методи наближених обчислень. Для наближеного обчислення кореня нелінійного рівняння f(x) = 0 спочатку необхідно визначити інтервал [а,b], на якому існує єдиний корінь рівняння. Визначити такий інтервал можна, наприклад, за графіком функції f(x). Після цього в Scilab для розв’язування таких рівнянь застосовують функцію
fsolve(x0,f),
де х0 — початкове наближення кореня рівняння (x0 є [а,b]),
f — функція, що описує ліву частину рівняння f(x) = 0.
Приклад 2. Знайти корінь рівняння х5 - х3 + 1 = 0 на інтервалі [-1.5;1.5]. Відомо, що в даному інтервалі рівняння має один корінь. Опишемо функцію f(x) = х5 - х3 + 1 = 0, і задамо початкове наближення кореня -1.5:
-->function y=f(x)-->у=х.^5-х.^3+1;-->endfunction-->x=fsolve(-1.5,f)
Отримуємо відповідь:
-->x=fsolve(-1.5,f)x = -1.2365057
Приклад 3. Знайти корені рівняння (0,2x + 0.5)3 = cosx на інтервалі [-6;5].
-->function y=f(x) // опис функції-->у=(0.2*х+0.5)^3 -cos(x)-->endfunction-->х=-6:0.1:5; // побудова графіка функції-->plot(x,f(x))-->xgrid();
На графіку видно, що на зазначеному інтервалі рівняння і має три корені. В такому випадку початкові наближення можна задати у вигляді вектора й викликати функцію один раз:
-->x=fsolve([-4,7;-1,5;1.2 ],f)x =-4.6345094-1.56424111.1657393
3. Пошук мінімуму функції однієї змінної
Розглянемо пошук локального мінімуму функції однієї змінної як найпростішу оптимізаційну задачу.
Для знаходження значення мінімуму функції у Sсilab існує функція
[fmin,xmin]=optim(cst,x0)
де х0 — масив початкових наближень довжиною n.
Функція повертає значення мінімуму функції (fmin) і точку, в якій функція досягає цього значення (xmin).
Головною особливістю функції optim є структура функції cst, яка має бути такою:
Функція повертає значення мінімуму функції (fmin) і точку, в якій функція досягає цього значення (xmin).
Головною особливістю функції optim є структура функції cst, яка має бути такою:
function [f,g,ind]=cst(x,ind)f=<функція, мінімум якої шукаємо>g=<похідна функції f>endfunction
Значення параметра ind є внутрішнім параметром для зв'язку між optim і cst.
Приклад 4. Знайти мінімум функції f(x) = (0,2x + 0.5)3 - cosx на інтервалі [-5;5].
Як видно з графіка (див. попередній рис.), функція досягає мінімуму в околі хmin ≈ -0.2. Виконаємо команди:
Як видно з графіка (див. попередній рис.), функція досягає мінімуму в околі хmin ≈ -0.2. Виконаємо команди:
-->function y=fm(x)-->y=(0.2*x+0.5)^3-cos(x);-->endfunction-->function[f,g,ind]=cst(x,ind)-->f=fm(x)-->g=numderivative(fm,x)-->endfunction-->x0=-0.2; // Початкове наближення точки мінімуму-->[fmin,xmin]=optim(cst,x0) // виклик функції optim для пошуку точки (fmin,xmin)xmin = -0.1346805fmin = -0.8850776
Для пошуку максимуму функції f(x) треба застосувати функцію optim для функції -f(x).
Як видно з прикладів, перед пошуком коренів нелінійного рівняння або мінімуму функції доцільно побудувати графік функції f(x). Аналіз графіка функції дає змогу визначити, скільки коренів існує на вказаному інтервалі, дібрати початкове наближення, що суттєво впливає на результат.