Урок "Розв’язування задач із різних предметних галузей. Практична робота № 3. Обчислення статистичних характеристик засобами LO Calc i Scilab"

08.11.2020 10:12
Розв’язування задач із різних предметних галузей 

    1. Побудова графіків функції однієї змінної
    Scilab містить набір функцій для графічного подання інформації. Функція plot призначена для побудови графіка функції у = f(x). Загаль­ний вигляд команди:


plot (х, у) 

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


xtitle(caption, хсар, усар)
 
де caption — заголовок графіка, хсарусар — підписи осей XУ.

    Приклад 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 для розв’язування таких рівнянь застосовують функцію


fsolve(x0,f),

де х0 — початкове наближення кореня рівняння (x0 є [а,b])
        f — функція, що описує ліву частину рівняння f(x) = 0
 
    Приклад 2. Знайти корінь рівняння х5 - х+ 1 = 0 на інтервалі [-1.5;1.5]. Відо­мо, що в даному інтервалі рівняння має один корінь. Опишемо функ­цію f(x) = х5 - х+ 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.5642411
   1.1657393
 

    3. Пошук мінімуму функції однієї змінної
    Розглянемо пошук локального мінімуму функції однієї змінної як найпростішу оптимізаційну задачу.
    Для знаходження значення мінімуму функції у Sсilab існує функція

 

[fmin,xmin]=optim(cst,x0) 
 
де х0 — масив початкових наближень довжиною n.

    Функція повертає значення мінімуму функції (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. Виконаємо команди: 
 
-->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.1346805
fmin = -0.8850776

 

    Для пошуку максимуму функції f(x) треба застосувати функцію optim для функції -f(x)
    Як видно з прикладів, перед пошуком коренів нелінійного рівняння або мінімуму функції доцільно побудувати графік функції f(x). Аналіз гра­фіка функції дає змогу визначити, скільки коренів існує на вказаному ін­тервалі, дібрати початкове наближення, що суттєво впливає на результат.