Основи роботи в scilab

Основні терміни
Scilab (читається Сайлеб) - пакет прикладних математичних програм, що надає потужне відкрите оточення для інженерних (технічних) і наукових розрахунків.
CeCILL (від «CEA CNRS INRIA Logiciel Libre») - це ліцензія на вільне програмне забезпечення, адаптована до міжнародного законодавства і законодавства Франції, подібна GNU General Public License і зберігає сумісність з ним.
Система m лінійних алгебраїчних рівнянь з n невідомими (чи, лінійна система, також вживається абревіатура СЛАР) в лінійної алгебри - це система рівнянь виду

Звичайні диференціальні рівняння (ОДУ) - це диференціальне рівняння виду

де - невідома функція (можливо, вектор-функція, тоді, як правило, теж вектор-функція зі значеннями в просторі тієї ж розмірності; в цьому випадку говорять про систему диференціальних рівнянь), що залежить від незалежної змінної, штрих означає диференціювання по. Число (порядок старшої похідної, що входить в дане рівняння) називається порядком диференціального рівняння (1)

1. Система комп'ютерної математики SciLab: Історія розробки. Можливості та ключові особливості. Гідності й недоліки.

Scilab містить сотні математичних функцій, і є можливість додавання нових, написаних на різних мовах (C, C ++, Fortran і т. Д.). Також є різноманітні структури даних (списки, поліноми, раціональні функції, лінійні системи), інтерпретатор і мова високого рівня.
Scilab був спроектований як відкрита система, і користувачі можуть додавати в нього свої типи даних і операції шляхом перевантаження.
В системі є безліч інструментів:
2D і 3D графіки, анімація
Лінійна алгебра, розріджені матриці (sparse matrices)
Поліноміальні і раціональні функції
Інтерполяція, апроксимація
Симуляція: рішення ОДУ і ДУ
Scicos: гібрид системи моделювання динамічних систем і симуляції
Диференціальні і не диференціальні оптимізації
Обробка сигналів
паралельна робота
Статистика
Робота з комп'ютерною алгеброю
Інтерфейс до Fortran, Tcl / Tk, C, C ++, Java, LabVIEW
Scilab має схожий з MATLAB мову програмування. До складу пакету входить утиліта, що дозволяє конвертувати документи Matlab в Scilab.
Scilab дозволяє працювати з елементарними і великим числом спеціальних функцій (Бесселя, Неймана, інтегральні функції), має потужні засоби роботи з матрицями, полиномами (в тому числі і символьно), виробляти чисельні обчислення (наприклад, чисельне інтегрування) і рішення задач лінійної алгебри, оптимізації і симуляції, потужні статистичні функції, а також засіб для побудови і роботи з графіками.
Для численних розрахунків використовуються бібліотеки Lapack, LINPACK, ODEPACK, Atlas і інші.
До складу пакету також входить Scicos - інструмент для редагування блокових діаграм і симуляції (аналог simulink в пакеті MATLAB). Є можливість спільної роботи Scilab з програмою LabVIEW.

Ключові особливості
Відмінності від деяких комерційних програм:
Безкоштовність.
Вільність (з версії 5.0).
Маленький розмір - дистрибутив 4 версії займав менше 20 МБ проти більш ніж двухгігабайтного пакета MATLAB. Інсталятор 5 версії (5.4.0) збільшився в обсязі до 108 МБ.
Можливість запуску в консолі без використання графічного інтерфейсу, в тому числі у версії під Windows (в UNIX і Windows версіях MatLab-а ця можливість присутня теж). Це дозволяє виробляти автоматизовані обчислення, є пакетний режим.

Гідності й недоліки
Пошуки гідності і недоліків на просторі інтернету ні чого не дали. Так що розповім про те, що я помітив сам.
Якщо говорити про переваги, тут найголовнішим для мене є безкоштовність даного пакета, в порівнянні з тією ж Mathematic, коли для виконання лабораторних роботи доводилося шукати серійник або crack. Далі - це кросплатформенних, тому що я більше віддаю перевагу використовувати Gentoo, ніж Windows. В принципі большенство достоїнств описано в пункті Ключові особливості.
З недоліків я бачу тільки 2: Це немає такої візуалізації програмування як в Mathematic, а так само система використовує перш за все чисельні підходи, для обчислення, що може позначитися на точності.

2. Основи роботи в SciLab. Призначені для користувача і системні змінні. Математичні вирази. коментарі

Перш ніж перейти далі, розглянемо сам інтерфейс. При запуску відкривається командне вікно.

Основи роботи в scilab

Є 2 варіанти роботи: 1 - це робота в тому ж командному вікні, 2 - відкрити SciNotes (щось на зразок блокнота з підсвічуванням) де можна написати код, який пізніше запустити, результат виконання з'явиться в командному вікні.

Для прикладу я розгляну висновок Hellow world.

Командна строка. Використовуємо функцію виведення на дисплей disp ()

Основи роботи в scilab

При роботі в SciNotes ви отримаєте щось схоже

для виконання коду, треба або натиснути на стрілку в право :) (як у багатьох середовищах розробки)
або Виполненіе-> ... без відображення команд
в принципі можна використовувати і інші методи виконання, і не використовувати висновок на екран
Результатом виконання буде:

тому можна сказати що інтерфейс вивчений, далі я буду приводити просто код і результат виконання

SciLab чутливий до реєстру, тобто А та а - різні змінні змінні.

Основні операції:
+ складання
- віднімання
* множення
/ Поділ справа, тобто x / y = xy ^ (- 1)
розподіл зліва, тобто xy = x ^ (- 1) y
^ Піднесення до степеня, тобто x ^ y
** зведення в ступінь (еквівалентно ^)
'Ермітовим сполучення (комплексне сполучення і транспонування)

Елементарні математичні функції.

acos acosd acosh acoshm acosm acot acotd acoth
acsc acscd acsch asec asecd asech asin asind
asinh asinhm asinm atan atand atanh atanhm atanm
cos cosd cosh coshm cosm cotd cotg coth
cothm csc cscd csch sec secd sech sin
sinc sind sinh sinhm sinm tan tand tanh
tanhm tanm
exp expm log log10 log1p log2 logm max
maxi min mini modulo pmodulo sign signm sqrt
sqrtm

y = int8 (x) 8-бітове число зі знаком [-2 ^ 7; (2 ^ 7) -1] = [-128; 127]
y = uint8 (x) 8-бітове число без знака [0; (2 ^ 8) -1] = [0; 255]
y = int16 (x) 16-бітове число зі знаком [-2 ^ 15; (2 ^ 15) -1] = [-32768; 32767]
y = uint16 (x) 16-бітове число без знака [0; (2 ^ 16) -1] = [0; 65535]
y = int32 (x) 32-бітове число зі знаком [-2 ^ 31; (2 ^ 31) -1] = [-2147483648; 2147483647]
y = uint32 (x) 32-бітове число без знака [0; (2 ^ 32) -1] = [0; 4294967295]

iconvert перетворення до целочисленному поданням
inttype визначення типу цілого числа

найпростіший спосіб виклику користувача функції:

outvar = myfunction (invar)

квадратні дужки "[" і "]" позначають початок і кінець перерахування
елементів матриці,
коми "," відокремлюються елементи матриці, що знаходяться в одному рядку,
крапка з комою ";" розділяє рядки матриці.

size визначити розмір матриці
matrix змінити розмір матриці
resize_matrix створити нову матрицю заданого розміру і скопіювати
в неї елементи з вихідної матриці

Операції над матрицями:
Звернення до елементів матриці
i = 1; 2, а j = 3; 4
для цього візьмемо вже готову матрицю

--> A = testmatrix ( "hilb", 5)
A =
25. - 300. 1050. - 1400. 630.
- 300. 4800. - 18900. 26880. - 12600.
1050. - 18900. 79380. - 117600. 56700.
- 1400. 26880. - 117600. 179200. - 88200.
630. - 12600. 56700. - 88200. 44100.
--> A (1: 2, 3: 4)
ans =
1050. - 1400.
- 18900. 26880

A матриця цілком
A (.) Матриця цілком
A (i: j, k) елементи матриці в k-му стовпці з i-ой по j-й рядок
A (i, j: k) елементи матриці в i-му рядку з j-ого по k-ий стовпець
A (i, :) i-й рядок матриці
A (:, j) j-ий стовпець матриці

Генерація одиничної матриці

Операції над матрицями
+ складання. + поелементне складання
- віднімання .- поелементне віднімання
* Множення. * Поелементне множення
/ Поділ справа ./ поелементне ділення справа
розподіл зліва. поелементне ділення зліва
^ Або * зведення в ступінь: ^ поелементне спорудження до рівня
'Ермітовим сполучення (комплексне сполучення і транспонування)
.'Транспонування без сполучення

приклад множення числа на еденічние матрицю 2 на 2

5. Визначення одновимірний і багатовимірних масивів. Спеціальні матричні функції

функції роботи з матрицями
chol розкладання Холесского
companion супроводжує матриця
cond число обумовленості
det визначник матриці
inv зворотна матриця
linsolve рішення систем лінійних рівнянь
lsq метод найменших квадратів
lu LU-розкладання з вибором опорного елемента
qr QR-розкладання
rcond зворотне число обумовленості
spec власні значення та вектори
svd розкладання по сингулярним числах матриці
testmatrix генерація спеціальних матриць (Гільберта, Франка та ін.)
trace слід матриці

6. Визначення одновимірний і багатовимірних масивів. Рішення СЛАР. Символьні масиви і операції над ними

Текст файлу-сценарію з рішенням завдання за формулами Крамера

--> A = [2 1 -5 1; 1 -3 0 -6; 0 2 -1 2; 1 4 -7 6]; // Матриця коефіцієнтів
--> B = [8; 9; -5; 0]; // Вектор вільних коефіцієнтів
--> // Перша допоміжна матриця
--> A1 = A; A1 (:, 1) = b;
--> // Друга допоміжна матриця
--> A2 = A; A2 (:, 2) = b;
--> // Третя допоміжна матриця
--> A3 = A; A3 (:, 3) = b;
--> // Четверта допоміжна матриця
--> A4 = A; A4 (:, 4) = b;
--> // Головний визначник відмінний від нуля
--> D = det (A);
--> // Визначники допоміжних матриць
--> D (1) = det (A1);
--> D (2) = det (A2);
--> D (3) = det (A3);
--> D (4) = det (A4);
--> // Вектор невідомих
--> X = d / D
x =
3.
- 4.
- 1.
1.
--> // Перевірка
--> P = A * x-b
P =
0.
0.
- 8.882D-16
2.665D-15

Рішення системи методом Гаусса

--> A = [2 -1 1, 3 2 -5; 1 3 -2];
--> B = [0; 1; 4];
--> // Приведення розширеної матриці до трикутного вигляду
--> C = rref ([A b]);
--> // Виділення останнього стовпчика з матриці,
--> // x - рішення системи
--> X = C (1: 3,4: 4)
x =
0.4642857
1.6785714
0.75
--> A * x // Перевірка
ans =
- 5.551D-16
1.
4.

7. Чисельне інтегрування. Підходи до інтегрування. Інтегрування функцій заданих користувачем

Чисельне інтегрування (історична назва: (чисельна) квадратура) - обчислення значення певного інтеграла (як правило, наближене). Під чисельним інтеграцією розуміють набір чисельних методів відшукання значення певного інтеграла.
Інтегрування за методом трапецій
проинтегрируем функцію, корінь з 2 * x-1 на відрізку від 1 до 10 з розбивкою в 1 крок

--> X = 1: 10
x =
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
--> Y = sqrt (2 * x-1)
y =
column 1 to 6
1. 1.7320508 2.236068 2.6457513 3. 3.3166248
column 7 to 10
3.6055513 3.8729833 4.1231056 4.3588989
--> Inttrap (x, y)
ans =
27.211585

Квадратурні формули Ньютона Котеса

8.Чісленное диференціювання. Підходи до диференціювання.

Чисельне диференціювання - сукупність методів обчислення значення похідної дискретно заданої функції.
В основі чисельного диференціювання лежить апроксимація функції, від якої береться похідна, інтерполяційним многочленом. Всі основні формули чисельного диференціювання можуть бути отримані за допомогою першого интерполяционного многочлена Ньютона (формули Ньютона для початку таблиці).
в точці

v = 0: 3;
--> Numdiff (my, v)
ans =
17. 0. 0. 0.
0. 32. 0. 0.
0. 0. 52.999999 0.
0. 0. 0. 80.000002

--> Function f1 = my1 (x), f1 = 3 * (x + 2) ^ 2 + 5, endfunction;
--> My1 (v)
ans =
17. 32. 53. 80.

9. Рішення ОДУ засобами SciLab. Функції застосовуються для рішення ОДУ. Рішення крайових задач.

Існує 4 способи для вирішення ОДУ:
1. За допомогою команди ode, яка є Солвер для вирішення звичайного
диференціального рівняння.
2. За допомогою команди odedc, яка обчислює рішення змішаної дискретно
безперервної системи.
3. Команда dassl, яка дає рішення неявно вираженого диференціального рівняння.
4. За допомогою команди impl, яка дає рішення неявно вираженого лінійного
диференціального рівняння.

--> Y0 = 1;
--> T0 = 1;
--> T = 1: 0,01: 1.5;
--> Deff ( "[ydot] = f (t, y)", «ydot = y ^ (1/3) * t»)
--> Y = ode (y0, t0, t, f);
--> Y_exact = ((t ^ 2 + 2) / 3) ^ (1.5); // це функція точного рішення для порівняння
--> My_er = y-y_exact;
--> Plot (t, y-y_exact) // це графік помилки обчислення від аргументу t

результатом є такий графік

Основи роботи в scilab

за одне можна побачити Графічне вікно. Побудова графіків буде детально розглянуто далі.

10. Побудова двомірних графіків в системі SciLab. Основні функції і типи графіків.

функція plot
розглянемо приклад:

як можна помітити перший параметр функції - це відрізок, а другий функції
так само існує можливість намалювати відразу кілька функцій, якщо їх перерахувати:

Схожі статті