Файл: Элементы математического моделирования в программных средах MATLAB 5 и Scilab (Андриевский Фрадков).pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.04.2024
Просмотров: 424
Скачиваний: 1
Приложение А. Использование системы Scilab
А.1. Принципы построения системы
В конце 1990-х годов всем, интересующимся вычислительными аспектами и автоматизированным проектированием систем управления, стал доступен пакет Scilab, аналогичный по своим возможностям пакету MATLAB, но имеющий перед ним одно бесспорное преимущество: Scilab распространяется абсолютно свободно, т.е. бесплатно. Система Scilab разработана специалистами из французского Научно-исследова- тельского института по информатике и автоматике (INRIA) и может быть скопирована (вместе с документацией) из сети Интернет: http://www-rocq.inria.fr/scilab/.
Ниже приводятся основные сведения о системе и демонстрационные примеры конструкций языка и возможностей системы Scilab [128].
Scilab состоит из трех отдельных частей: интерпретатора, библиотек функций (процедуры Scilab) и библиотек подпрограмм на языках Фортран и С. Подпрограммы на Фортране и С, строго говоря, не входят в Scilab: они вызываются интерпретатором. Большая их часть доступна независимо, например из сетевой базы данных Netlib: http://www.netlib.org/. Некоторые подпрограммы слегка модифицированы для лучшей совместимости с интерпретатором Scilab. Основным достоинством Scilab, как и системы MATLAB, является возможность легко оперировать с числовыми матрицами: такие операции, как сложение, умножение, транспонирование, слияние, вырезание, выполняются непосредственно. Scilab также дает возможность манипулирования с более сложными объектами (такими как полиномы, полиномиальные или рациональные матрицы передаточных функций) при помощи обработки списков и типизированных списков. Это в свою очередь открывает пути естественного символического представления таких объектов, как линейные системы и графы. При этом синтаксис операций идентичен используемому при работе с постоянными векторами и матрицами и очень похож на синтаксис языка MATLAB.
Scilab предоставляет широкий спектр процедур анализа нелинейных систем: решение уравнений, численное инте-
203
грирование явных или неявных систем, методы оптимизации (в том числе недифференцируемой). В состав системы Scilab входят сотни математических функций; встроенные библиотеки по линейной алгебре (включая работу с разреженными матрицами, кронекеровским и шуровским представлениями); по системам управления (классической, линейноквадратичной и #°°-оптимизации, редукции моделей, идентификации и др.); пакет программ по линейным матричным неравенствам (LMI), по обработке сигналов и фильтрации и пакет анализа и оптимизации сетей Metanet.
Прилагаемый к пакету Scilab тулбокс Scicos предоставляет средства графического описания и моделирования взаимосвязанных дискретных и непрерывных систем (аналогично системе SIMULINK) [128].
Имеются развитые графические возможности (двумерная и трехмерная графика, анимация). Возможности символических вычислений реализуются через интерфейс с Maple. Наконец, имеется система параллельных вычислений Parallel Scilab.
Общая философия Scilab состоит в создании вычислительной среды, предоставляющей пользователю:
-гибкий набор типов данных с естественным и простым синтаксисом (например, поддерживается тип данных "строка символов", а функции считаются объектами и могут определяться в системе Scilab и передаваться как входные или выходные аргументы других функций);
-достаточный набор вычислительных процедур как осно-
ву для выполнения разнообразных вычислений;
-открытую среду программирования, в которую легко добавляются новые примитивы;
-поддержку разработки новых библиотек и тулбоксов, в частности добавление новых модулей на Фортране и С.
Приведем некоторые примеры конструкций и текстов на Scilab.
А.2. Основные конструкции языка
Скалярные объекты
Синтаксические правила определения скалярных объектов и действий с ними на Scilab, как и многие другие конструкции,
204
идентичны соответствующим правилам языка MATLAB. Рассмотрим некоторые примеры определения таких объектов.
а=1 |
- |
вещественная константа; |
|
1==1 |
- |
логическое выражение; |
|
' s t r i n g ' |
- |
строка |
символов; |
z=poly(0, ' z ' ) |
- многочлен от z, имеющий один ну- |
||
|
|
левой |
корень; |
p=l+3*z+4.5*z~2 |
- |
многочлен от z. |
|
Для задания рациональных |
функций (например, передаточ- |
ных функций при исследовании динамических систем) используются конструкции вида
р = 1 + 3z + 4.5z~2 r=z/p
В результате выполнения этих операторов получим:
г =
z
l + 3z + 4.5z 2
Матрицы
Матричные объекты вводятся операторами вида
А= [а+1 2 3; 0 |
0 |
a t a n ( l ) ; |
5 9 - 1 ] ; |
|
Здесь определена ЗхЗ-матрица вещественных |
констант. |
|||
Чтобы задать матрицу логических |
констант размера 1x2 ис- |
|||
пользуем выражение |
|
|
|
|
Ъ= [e/.t, т . |
|
|
|
|
Матрицы строк задаются операторами вида |
|
|||
M c = [ ' t h i s ' , ' i s ' ; |
' а ' , ' m a t r i x ' ] |
|
||
(здесь определена 2х2-матрица строк). |
|
|||
Может быть введена и матрица |
многочленов. |
Выражение |
||
Мр=[р, 1 - z; 1, z*p] |
|
|
||
задает 2х2-матрицу многочленов вида |
|
|||
Мр = |
|
|
|
|
! l + 3 z |
+ 4.5z~2 |
1 - z |
! |
|
! |
1 |
z + 3z~2 +4.5z~3 |
! |
205
Аналогично матрица |
рациональных |
функций |
|
|||||
F = |
|
|
|
|
|
|
|
|
, |
1 + 3z + 4J>z 2 ^ |
|
- 1 |
|
, |
|||
|
- 2 + 4г - Зг 2 + г 3 |
2 - 2г + Г 2 ^ |
|
|||||
I |
1 |
|
|
г + 3г^2 + 4.5г~\ |
, |
|||
|
- 2 + 4г - Зг 2 + г 3 - 2 + 4г - Зг 2 + г 3 |
|
||||||
задается |
оператором |
F=Mp/poly([l+'/.i |
1-JJi |
l ] , ' z ' ) . |
||||
Можно задавать и разреженные |
матрицы. |
Выполнив опе- |
||||||
ратор |
|
|
|
|
|
|
|
|
Sp=sparse( [ 1 , 2 ; 4 , 5 ; 3 , 1 0 ] , [ 1 , 2 , 3 ] ) |
|
|
|
|||||
получим: |
|
|
|
|
|
|
|
|
|
sP = |
|
|
|
|
|
||
|
( 4, 10) sparse matrix |
|
|
|||||
|
( |
1, 2) |
1. |
|
|
|
|
|
|
( 3, |
10) 3. |
|
|
|
|
||
|
( 4, 5) |
2. |
|
|
|
|
Разреженные матрицы могут |
иметь |
и другой тип элементов, |
например - логический: S p |
( l , 1 0 ) |
~ S p ( l , l ) . |
Списки
Лля образования списка используется оператор list. Выполнив
L = l i s t ( a , - ( 1 : 5 ) , М р , [ ' t h i s ' , ' i s ' ; ' а ' , ' l i s t ' ] ) ,
получим список элементов разного типа: |
|
|||
L = |
|
|
|
|
L(l) |
|
|
|
|
1. |
|
|
|
|
L(2) |
|
|
|
|
! - 1. - 2. - 3. - 4. - 5. ! |
|
|||
L(3) |
|
|
|
|
! |
1 + Зг + 4.5z 2 |
1 - г |
! |
|
! |
|
1 |
г + 3z~2 + 4.5z~3 |
! |
L(4) |
|
|
|
|
! |
this is |
! |
|
|
! |
a list |
! |
|
|
206
Можно также создать типизированный список с помощью оператора tlist:
L t = t l i s t ( [ ' m y l i s t ' , ' c o l o r ' , ' p o s i t i o n ' , ' w e i g h t ' ] , ' b l u e ' , [ 0 , 1 ] , 1 0 ) >
Для извлечения элемента из списка используются операторы вида L t С c o l o r ' ) .
Динамические системы
Линейную динамическую систему ("ЛС-систему", см. 3.3.2) можно задать стандартными уравнениями состояния. Операторы:
A=diag([2, 3, 4]); В=[1 0; 0 |
1; |
0 0]; |
||||||
С= [1 -1 |
0]; |
D=0*C*B; |
х0=[0; |
0; |
0]; |
|||
Sl=syslin('c',A,B,C,D,x0) |
|
|
|
|||||
- приводят к |
|
|
|
|
|
|
|
|
S1 = |
|
|
|
|
|
|
||
Sl(l) (state-space system:) |
|
|
||||||
lss |
|
|
|
|
2. |
0. |
0. |
|
Sl(2) |
= |
A matrix |
= |
|||||
0. |
3. |
0. |
||||||
Sl(3) |
= |
В matrix |
= |
0. |
0. |
4. |
||
|
|
|
||||||
|
1 . |
|
0 . |
|
|
|
|
|
|
0. |
|
1. |
|
|
|
|
|
|
0. |
|
0. |
|
|
|
|
|
Sl(4) = |
С matrix |
= |
|
|
|
|||
! 1. - 1 . 0. ! |
|
|
|
|
||||
Sl(5) = |
D matrix |
= |
|
|
|
|||
! |
0. |
|
0. ! |
|
|
|
|
Sl(6) = XO (initial state) =
0.!
0.!
0.!
Sl(7) = Time domain =
с
Структура SI с точки зрения языка является типизированным списком, доступ к элементам которого осуществляется операторами вида
207
S l ( ' A ' ) , S l ( ' C ' )
Для преобразования уравнений состояния к передаточной функции используется оператор ss2tf. Выполнив
Slt=ss2tf(S1)
получим: |
|
|
Sit |
= |
- 1 |
, |
1 |
|
• |
- 2 + 5 |
- 3 + 5 |
Операторы Sit ('num'), Sit ( ' d e n ' ) позволяют извлечь матрицы числетелей и знаменателей передаточной функции.
Операторы |
|
|
|
|
v=l:5; |
W=v'*v |
- умножение матрицы-константы; |
||
W(l,:) |
|
- |
извлечение |
первого столбца; |
W(:,\$) |
- |
извлечение |
последней строки; |
|
Mp'*Mp+eye |
- |
матрица многочленов. |
Лля матрицы Мр, значение которой задано выше, в результате выполнения последнего оператора получим:
ans |
= |
|
|
|
column 1 |
^ |
^ |
^ |
|
! |
3 + 6z + 18* |
2 + 27г 3 + 20.25* |
4 ! |
|
! |
|
1 + Зг + 4.5z~2 |
! |
|
column 2 |
|
2 |
|
|
! |
|
|
|
!^ 1 + Зг + 4.5г
!2 — 2г + 2 + 6-Гз + 18г~4 + 27г~5 + 20.25г~6
Mpl=Mp(l ,l)+4.5*'/,i |
- |
комплексная |
матрица; |
|||||
|
Fi=C*(z*eye-A)~(-l)*B; |
- |
вычисление |
передаточной |
||||
|
|
|
|
|
|
функции; |
|
|
|
F ( : , l ) * F i |
|
|
|
- действия |
с |
рациональными |
|
|
|
|
|
|
|
функциями. |
|
|
|
В результате выполнения двух последних операторов по- |
|||||||
лучим: |
|
|
|
|
|
|
|
|
ans |
|
|
|
|
1 |
+ Зг + 4.5г~2 |
||
|
1 + Зг + 4.5г~2 |
|
||||||
4 |
- Юг + Юг |
2 - |
5г |
3 + г |
4 |
6 - 14г + 13г |
г ^ б г 3 + г 4 |
|
|
|
1 |
|
|
|
|
|
|
4 |
- Юг + Юг |
2 - |
5г |
3 + г 4 |
6 — 14г + 13г 2 — 6г 3 + г 4 |
208