![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Команди керування середовищем
Таблиця 1.1. Команди керування середовищем Scilab
2. Засоби програмування. Оператори і команди Найпростішим способом використання Scilab є безпосереднє введення команд в консолі. Результат виконання команди при цьому відображається відразу ж після її введення і виконання. Покрокове виконання є найбільш ефективним способом для того, щоб зрозуміти поведінку готових програм, і найчастіше дозволяє досить швидко перейти до розробки власних алгоритмів. Символи " -> " представляють собою запрошення Scilab і відображаються автоматично, коли Scilab очікує введення чергової команди від користувача. Набравши інструкцію s = " Hello World! " і натиснувши клавішу < Enter>, ми вкажемо Scilab виконати команду: створити змінну s, яка містить заданий текст. Реалізований раніше і збережений у файл алгоритм, який представляє послідовність інструкцій для вирішення деякої задачі, називається скриптом.
Створення.sce та.sci файлів Залежно від вмісту файлу розширенням файлів може бути.sce або.sci: · файли з розширенням. sci містять визначення функцій Scilab – виконання таких файлів призводить до завантаження даних функцій в робоче середовище пакету, після чого їх можна використовувати точно так само, як вбудовані функції Scilab; · файли з розширенням. sce можуть містити як визначення функцій, так і виконувані інструкції - зазвичай в результаті виконання такого файлу обчислюються значення змінних, відбувається виведення результатів в консоль, відображення графіків, читання або запис файлів і т.д. Для того щоб створити.scі файл потрібно відкрити вбудований редактор SciNotes набрати текст програми та в меню вибрати Файл -> Зберегти як ввести назву файлу та вибрати тип файлу.sci. Приклад програми, що міститься у файлі stepin.sci function rez=stepin (a, b) rez=a^b; endfunction
Використовуючи функцію exec в консолі, ми запускаємо дану функцію на виконання, а потім її використовуємо: --> exec(" SciLab/stepin.sci") --> function rez=stepin (a, b) --> rez=a^b; --> endfunction --> stepin(4, 5) ans = 1024. Для того щоб створити.sce файл потрібно відкрити вбудований редактор SciNotes набрати текст програми та в меню вибрати Файл -> Зберегти як ввести назву файлу та вибрати тип файлу.sce. Приклад програми, що міститься у файлі myscript.sce a1 = 5; a2 = 8; a3 = a1 * a2; disp(a3); Використовуючи функцію exec в консолі, ми запускаємо даний скрипт на виконання: --> exec(“myscript.sce”) --> a1 = 5; --> a2 = 8; --> a3 = a1 * a2; --> disp(a3); exec(fun [, mode]) exec(path [, mode]) fun: ім’я файлу, в якому знаходиться Scilab функція (функція визначена безпосередньо в Scilab); path: рядок, що містить повний шлях до файлу, що містить функцію; mode: цілий скаляр, що може приймати наступні значення: 0: по замовчуванню -1: нічого не друкувати 1: повідомлення (echo) для кожного командного рядка 2: prompt --> друкує 3: echoes + prompts 4: stops зупинка перед кожним " prompt" 7: stops + prompts + echoes: корисно для демонстрацій.
Конструкції мови Існують такі вагомі особливості SciLab: · Імена змінних в Scilab можуть мати довільну довжину, проте лише перші 24 символи імені є значущими, тому щоб уникнути помилок слід використовувати імена довжиною до 24 символів. Допустимими символами в іменах змінних є латинські букви, цифри, а також символи " %", " _", " #", "! ", " $", "? ". Слід зазначити, що деякі змінні, імена яких починаються символом " %", мають особливий сенс у Scilab; · Scilab чутливий до регістру символів; · Нумерація елементів масивів починається з одиниці; · Коментар починається «//» і діє лише до кінця рядка. Далі приведені ключові слова мови SciLab та їх призначення.
Таблиця 2.1. Оператори керування програмою
Короткий синтаксис і приклади основних конструкцій. Умовний оператор if Найпростіший випадок – для виконання блоку команд, якщо виконується деяка умова: синтаксис: if умова then команди SciLab End приклад: if ((a > = 0.90) & (d > = 60)) then pass = 1; end; Складніший варіант для - для організації алгоритмів розгалуження: у дві гілки: синтаксис: if умова then команди SciLab Else команди SciLab End приклад: if ((a > = 0.90) & (d > = 60)) then pass = 1 else pass=0 end;
у декілька гілок: синтаксис: if умова1 then команди SciLab Else if умова2 then команди SciLab Else if умова3 then команди SciLab Else команди SciLab End End End
приклад: if a< b then x = a else if b< a then x = b else if c< a+b then x = c else x = d end end end
у декілька гілок, без вкладених операторів if: синтаксис: if умова1 then команди SciLab elseif умова2 then команди SciLab elseif умова3 then команди SciLab Else команди SciLab End
приклад: if a< b then x = a elseif b< a then x = b elseif c< a+b then x = c else x = d end В залежності від виконання однієї з умов, працює відповідна гілка програми, якщо ж всі умови невірні, то виконуються команди після else. Кількість гілок може бути довільною, їй відповідає кількість elseif, або кількість вкладених операторів if.
Оператор select Цей оператор призначений для виконання перемикання між умовами. Кожна гілка розгалуження визначається оператором case, перехід в неї виконується, коли змінна оператора select приймає значення, вказане після case. Після виконання однієї з гілок, відбувається вихід зі select, при цьому значення, задані в інших case вже не перевіряються. Якщо жодне значення не співпало з визначеними в case, то виконується гілка програми, що відповідає else. синтаксис: select вираз case вираз1 команди SciLab case вираз2 команди SciLab ... Else команди SciLab End
приклад: select (a+b) case 0 disp(‘a+b= 0’) case 1 disp(‘a+b=1’) case 2 disp(‘a+b= 2’) else disp(‘a+b> 2’) end
Оператор циклу for Оператор for застосовується для повторення деякої дії задане число разів. Найчастіше використовується числовий лічильник, що пробігає ряд значень. синтаксис: for змінна циклу = початкове значення: крок: кінцеве значення команди SciLab End приклад: for m = -1: 0.1: 2 for n = 1: 10 a(n) = 1/(m+n -1); end end якщо крок циклу пропущений, то він становить 1 (за замовчуванням).
Оператор циклу while Оператор while призначений для повторення деякого блоку інструкцій до тих пір, поки умова циклу залишається істинною. синтаксис: Приклад while умова команди SciLab End Приклад: eps = 1; x = 4; while (1+eps+x) > 1 eps = eps/2; x=x-0.2; end eps = eps*2 Оператори break, continue При організації циклічних обчислень, варто передбачити виникнення помилок всередині циклу. Для цього існує оператор break. Він дозволяє виходити з циклу в довільний момент часу. У випадку вкладених циклів цей оператор здійснює вихід з внутрішнього циклу. Його можна застосовувати як для циклу while так і для циклу for.
приклад: eps = 1; x=4; while (1+eps+x) > 1 eps = eps/2; x=x-0.2; if x==0 break end end приклад: for m = -1: 0.1: 2 for n = 1: 10 a(n) = 1/(m+n -1); if a(n)< =-10 break end end end
Інструкція continue дозволяє негайно перейти до виконання наступної ітерації, пропустивши команди, наступні після continue в тілі циклу. Зустрівши команду continue, інтерпретатор Scilab переходить до заголовку циклу, перевіряє умову продовження, і, якщо воно істинне, робить наступну ітерацію. Наступний приклад демонструє обчислення суми s = 1 +3 +5 +7 +9 = 25. Використана тут функція modulo (i, 2) повертає 0 за умови, якщо i парне. У даному випадку скрипт нарощує значення i та використовує инструкцію continue для переходу до наступної ітерації:
приклад: s = 0 i = 0 while (i < 10) i = i + 1 if (modulo (i, 2) == 0) then continue end s = s + i end
Обробка виняткових ситуацій - оператор try … catch. Цей оператор дозволяє обійти виняткові ситуації (прогнозовані помилки) і прийняти певні міри при їх виникненні, не завершуючи програму.
синтаксис: try команди SciLab, виконання яких може привести до помилки catch команди SciLab, які треба виконати при виникненні помилки в блоці між try і catch End приклад: try a=load(‘my_file’); pie(a) catch disp(‘file not found’) end; x=[1.3, 2, 3] x=2*x таким чином, при відсутності потрібного файлу, програма видасть відповідне повідомлення але продовжить свою роботу.
Основні команди і оператори мови SciLab та їх призначення Таблиця 2.2. Основні команди та оператори SciLab
Таблиця 2.5. Елементарні математичні функції SciLab
Таблиця 2.6. Функції для роботи з рядками
Таблиця 2.7. Функції перетворення систем числення
3. Робота з векторами і матрицями Всі дані в системі SciLab є масивами. Масив – це впорядкована, пронумерована сукупність однорідних даних. Масив повинен мати ім’я. Масиви розрізняються за кількістю вимірів: одновимірні, двовимірні, багатовимірні. Розміром масиву називають кількість елементів, вздовж кожного виміру. Доступ до елементів здійснюється за допомогою індексу. Важливим є те, що вектор, вектор-рядок, вектор-стовпець, матриця, тензор – це математичні об’єкти, а одновимірні двовимірні або багатовимірні масиви – це способи зберігання цих об’єктів в пам’яті комп’ютера. В SciLab нумерація елементів масивів починається з одиниці, тобто індекси повинні бути більші або рівні одиниці.
Створення векторів та матриць Ввід векторів і матриць з командного рядка відбувається в квадратних дужках - «[]», при чому стовпці (тобто елементи в рядку) відділяються комою - «,» або пробілом – «», а самі рядки крапкою з комою – «;».
Таблиця 3.1. Приклади створення векторів і матриць
Ввід можна здійснювати і іншим чином. Кожен новий рядок матриці(або вектору-стовпця) можна вводити з нового рядка, наприклад, в командному рядку вводимо: B=[1 2 3 далі натискаємо клавішу «Enter». При цьому SciLab не виконує жодних дій, а чекає на продовження вводу. Після останнього введеного рядка слід набрати закриваючу квадратну дужку, що є ознакою завершення вводу і «Enter». Ще один спосіб вводу матриці полягає в тому, що матрицю можна трактувати як вектор-рядок, кожен елемент якого є вектором-стовпцем, або навпаки. Таблиця 3.2. Створення матриць
Застосувавши функції визначення розміру і розмірності для вище введених матриць, будемо мати:
Таблиця 3.3 Функції визначення розміру і розмірності матриці
Звертання до елементів матриць і векторів Доступ до елементів вектора відбувається за допомогою індексу в круглих дужках після імені масиву, в якому зберігається вектор. Елементам масиву можна присвоювати нові значення, вони можуть приймати участь у виразах, з них можна формувати нові масиви. Для того, щоб певні елементи одного вектору помістити в інший у заданому порядку, існує індексація за допомогою вектору. Доступ до елементів матриці відбувається за допомогою двох індексів – номерів рядка та стовпця, також в круглих дужках після імені матриці. Розміщення елементів матриці в пам’яті визначає ще один спосіб звертання до них. Матриця А розміру m на n зберігається у виді вектору довжиною m, в якому елементи матриці розташовані один за одним, по рядках: [A(1, 1) A(1, 2) …A(1, n) … A(m, 1) A(m, 2) …A(m, n)]. Тому, для доступу до елементів матриці можна використовувати лише один індекс, який задає порядковий номер елементу матриці в загальному векторі. Зручним є також спосіб звертання до цілих блоків елементів векторів або матриць. Для цього використовується індексація за допомогою двокрапки – «:». При цьому до двокрапки вказується перший елемент блоку, після – останній. Якщо треба виділити з матриці цілий рядок або стовпець, то в якості одного з індексів слід вказати номер цього рядка, або стовпця, а інший індекс замінити двокрапкою.
Таблиця 3.4. Звернення до елементів матриці
Таблиця 3.5. Прикади операцій над матрицями
Логічні функції над масивами
Таблиця 3.6. Логічні функції над масивами
Знищення рядків, стовпців, елементів В SciLab парні квадратні дужки – «[]» позначають пустий масив, який дозволяє знищувати стовпці і рядки матриці, або елементи вектору. При цьому розмір результуючої матриці буде менший, ніж вхідної.
Таблиця 3.7. Операції знищення елементів матриці
Створення матриць спеціального виду Таблиця 3.8. Створення матриць спеціального виду
Інші операції над масивами Таблиця 3.9. Інші операції над масивами
Елементарні операції над векторами і матрицями Додавання, віднімання над векторами і матриця однакового розміру відбувається так, ніби вони є скалярними величинами. Для цього використовуються відповідні позначення арифметичних операцій: «+» і «-». Також, всі елементарні математичні функції в SciLab пристосовуються до виду вхідних аргументів і якщо вони є векторами чи матрицями, то результат буде відповідно. Вектором або матрицею. Крім того, існує можливість примусово задати поелементну роботу з масивами.
Таблиця 3.10. Елементарні операції над векторами і матрицями
Множення і ділення векторів і матриць Як відомо, операції множення і ділення для векторів і матриць не є тривіальними. Вектор можна помножити на вектор скалярно (внутрішній добуток), векторно, або утворити так званий зовнішній добуток. Результатом скалярного добутку є число, векторного – вектор, а зовнішнього – матриця. Скалярний добуток векторів a, b довжиною N, що містять дійсні числа, визначається формулою: Зовнішнім добутком векторів a, розміру N і b, розміру M називається матриця С, розміру Для множення матриць слід пам’ятати, що відповідні розмірності в них повинні співпадати множення виконується за допомогою оператора «*». Транспонування матриці виконується за допомогою «.’», а знаходження спряженої матриці за допомогою «’». Піднесення до степеня квадратної матриці, виконується за допомогою оператора «^». Поелементне піднесення до степеня матриці, виконується за допомогою оператора «.^». Для ділення елементів одної матриці на відповідний елемент другої, використовується «./», а другої на першу, відповідно «.\». Функції обробки даних для матриць і векторів Таблиця 3.11. Функції обробки для матриць і векторів
4. Можливості вводу і виводу неграфічної інформації Для вводу даних з клавіатури, або за допомогою миші, під час виконання програми існують такі найпростіші вбудовані засоби:
Функція input Дозволяє ввід довільних даних з клавіатури, під час виконання програми. Запит на ввід відображається в командному вікні. Має таке застосування: синтаксис: змінна = input(' рядок тексту, що виведеться ') змінна = input(' рядок тексту ', 's') приклад: а = input('введітьзначення змінної А: ') b= input('продовжити роботу? Y/N', 's') В першому випадку може бути введено довільне число, матриця, вектор, або рядок символів в лапках. В другому випадку довільні введені значення будуть трактуватися як рядок символів.
Функція x_dialog синтаксис: змінна = x_dialog( 'title', ’value’ ) Функція x_dialog виводить на екран діалогове вікно з ім’ям title, після чого користувач може клацнути ОК, і тоді рядок value повернеться в якості результату у змінну. Або ввести нове значення замість value, яке і повернеться в якості результату у змінну. приклад: а = x_dialog('введітьзначення змінної А: ', ’value’)
Операція виводу на екран неграфічних даних в системі SciLab може бути здійснена кількома способами. Найпростіший з них – це відсутність в кінці рядка знаку «;». При цьому відбувається автоматичне відображення в командному вікні обрахованих, або просто вказаних даних. Наприклад: --> a=12; --> b=13; --> c=25; --> x=a+b; --> x=a+b x = --> c c =
Функція disp Ще один спосіб відображення даних – використання функції « disp » з параметром, який вказує, що слід вивести. При цьому назва параметра не виводиться. --> disp(x) Функція print Функція print записує значення змінних у файл. Синтаксис: print('file-name', x1, [x2,...xn]) Відображення графіків та інших зображень є поширеною задачею при аналізі даних і створення звітів. Scilab надає широкі можливості для створення і налаштування різних типів графіків і діаграм. У даному розділі ми розглянемо створення двомірних, трьохвимірних, контурних графіків, потім відобразимо на графіку назву і легенду і, нарешті, побачимо, як зберегти результати відображення у файл для подальшого використання.
Таблиця 5.1. Основні графічні функції SciLab
Команда figure Ця команда призначено для створення пустого графічного вікна і відображення його на екрані. Це вікно стає активним, тобто всі наступні графічні функції будуть здійснювати побудову графіків саме в ньому. Для отримання нового графічного вікна, слід знову використати команду figure. Щоб мати можливість переходу між вікнами, варто скористатися його номером, тобто використовувати команду з параметром: figure(номер). При цьому в будь який момент програми можна зробити активним довільне графічне вікно. Номер графічного вікна є також, вказівником на це вікно, тобто команда In=figure приведе до того, що у змінній In буде зберігатися номер(вказівник) активного вікна. Для очищення всього активного вікна існує команда clf (clear figure), а для того, щоб очистити лише графік, але залишити осі, заголовок і назви осей, використовується команда cla (clear axes). Ці команди також можна використовувати з параметром, який вказує номер потрібного вікна. Будь-яка команда створення графіку(plot, bar, і т.ін.) автоматично створює одне графічне вікно. Якщо не користуватися командою figure, то кожен наступний вивід буде здійснюватися в єдине вікно, знищуючи попередній графік.
Команда subplot Дана команда дозволяє розбити графічне вікно на декілька підграфіків з власними осями координат. Вона розташовує підграфіки у виді матриці:
|