МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
КАФЕДРА ЕОМ
Звіт
по лабораторній роботі №1
з курсу
“ АЛГОРИТМИ ТА МЕТОДИ ОБЧИСЛЕНЬ ”
Підготував: ст. гр.
Прийняв:
Львів-2009ТЕМА: Ознайомлення з пакетом математичного моделювання Scilab-5.0.3.
МЕТА: Освоїти синтаксис та команди пакету Scilab. Уміти практично використовувати дані команди для побудови графіків, діаграм та розв’язування лінійних і нелінійних рівнянь.
Короткі теоретичні відомості про пакет Scilab-5.0.3:
Scilab — пакет наукових програм для чисельних обчислень, що надає потужне відкрите оточення для інженерних і наукових розрахунків. З 1994 року розповсюджується у вигляді джерельних кодів через Інтернет. Тепер Scilab підтримується компанією Scilab Consortium, створеною в 2003 році. У ній зараз 25 учасників, зокрема Mandriva, INRIA та ENPC (Франція). 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 та інші.[1]
До складу пакету також входить Scicos інструмент для редагування блокових діаграм і симуляції (аналог simulink в пакеті — MATLAB). Є можливість спільної роботи Scilab з програмою LabVIEW. Програма доступна для різних операційних систем, включаючи GNU/Linux та Microsoft Windows. Є можливість розширення можливостей програми зовнішніми програмами і модулями, написаними на різних мовах програмування. Програма має відкритий початковий код, дозволяючи в т.ч. вільне комерційне використання і розповсюдження незмінених версій, а також некомерційне (для кому. необхідне узгодження з INRIA) розповсюдження змінених версій, які повинні включати джерельний код. Наступна версія програми за попередніми даними розповсюджуватиметься під сумісною з GPL ліцензією CeCILL license.
Відмінності від деяких комерційних програм:
Безкоштовність
Маленький розмір (дистрибутив займає менш 20мб проти більш ніж двохгігабайтного пакету MATLAB)
Можливість запуску в консолі без використання графічного інтерфейсу. Це дозволяє проводити автоматизовані обчислення, є пакетний режим.
Приклади:
Прості обчислення
Код, що задає матрицю і обраховує визначник:
M=[1 6 8; 7 8 8; 1 6 0]
det(M)
Побудова простого графіка функції
// x initialisation
x=[0:0.1:2*%pi]';
//simple plot
plot2d(sin(x))
Складніший графік функції:
Графік, намальований з допомогою Scilab
set("figure_style","new") //create a figure
subplot(211)
a=gca() //get the current axes
a.box="off";
t=-%pi:0.3:%pi;plot3d(t,t,sin(t)'*cos(t),80,50,'X@Y@Z',[5,2,4]);
subplot(212)
plot2d(); //simple plot
a=gca(); //get the current axes
a.box="off";a.x_location="middle";
ЗАВДАННЯ:
Вивести на екран два графіки функцій в одній системі координат.
Вибір функцій (таблиця 1.)( ):
– ша функція: згідно варіанту;
– га: номер Вашого варіанту + 5 (напр. Ваш варіант №3, результатом буде варіант №8)( );
x=-6.28:0.02:6.28;
y=x^3-0.1*x^2+0.4*x-1.5;
z=cos(x^2)-cos(x)*3-1;
plot(x,y,x,z)
Теоретичні відомості по 2 пункту завдання : Знаки ! замінюють зображення круглих дужок для матриць. Вектор-рядок
->v=[1,-3%i,7] v = ! 1. - 3. i 7. !
Зауваження: v=[1+3] є число 4, а то ж саме, але з пропуском перед "+" v=[1 +3] - вже вектор-рядок. Якщо ж пропуск був після знаку "+", то це знову число. Задана операція транспонування: <вектор-строка>'' Приклад.
b=v'
Результат: b = ! 1. ! ! 4. ! ! 8. !
Вектор-стовпець: елементи мають бути розділені за допомогою крапки з комою. -->v=[4;3+%i;3.33]
v = ! 4. ! ! 3. + i ! ! 3.33 !
Аналогічний вектор-рядок має бути закінчена знаком ''.
-->v=[4;3+%i;3.33]' v = ! 4. 3. - i 3.33 !
Для вектора (сроки) x[n], где x[0]=xmin, x[n]=xmax, а x[i]=x[i-1]+delta, допустимо следующее задание данных: x=[xmin:delta:xmax], где xmax, xmin и delta могут быть арифметическимими выражениями. Пример. x=[0:0.1:2*%pi] В Scilab определены арифметические операции над векторами.
Як створити двовимірну матрицю?
Спосіб 1. Прямое задание матрицы. Пример. b=[11 22 33;21 22 23;31 32 33] Результат: b = ! 11. 22. 33. ! ! 21. 22. 23. ! ! 31. 32. 33. !
Спосіб 2. Cоставлені матриці з декількох підматриць.
Приклад. a=[1 2;3 4] а = ! 1. 2. ! ! 3. 4. ! b=[5 5;7 8] b = ! 5. 5. ! ! 7. 8. ! c=[9 10;11 12] з = ! 9. 10. ! ! 11. 12. ! d=[а,b,c] d = ! 1. 2. 5. 5. 9. 10. ! ! 3. 4. 7. 8. 11. 12. !
Спосіб 3. У Scilab існує тип змінних "розріджена матриця" (sparse). Розріджена матриця - це матриця, більшість елементів якої рівні 0. Використання такого типа змінних для великих матриць економить машинну пам'ять і підвищує швидкодію. Для завдання матриць такого типа служить команда sparse. Щоб конвертувати розріджену матрицю в звичний вигляд служить команда full.
Наприкладsp=sparse([1,2;4,5;3,10],[1,2,3]) sp = ( 4, 10) sparse matrix ( 1, 2) 1. ( 3, 10) 3. ( 4, 5) 2. r=full(sp) r = ! 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. ! ! 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ! ! 0. 0. 0. 0. 0. 0. 0. 0. 0. 3. ! ! 0. 0. 0. 0. 2. 0. 0. 0. 0. 0. !
Які операції можна виконати над числовими матрицями?
У Scilab визначені основні операції над матрицями:
А+В додавання,А-В віднімання, c*A множення на число, A*B множення матриці на матрию, A' Транспонування (поміняти місцями рядки і стовпці). matrix Перетворення вектора або матриці в матрицю (вектор) іншого розміру. Існують і інші операції. Синтаксис таких операцій дивитеся в описі, але дія таких операцій на перший погляд мало зрозуміло, і, ймовірно, не варто на них зупинятися. Можливо, є ще якісь нестандартні операції.
ВИСНОВОК: У даній лабораторній роботі я вивчив основні поняття про пакет SciLab.