Векторы и матрицы в Scilab

Данный пост является продолжением поста Основы работы в Scilab.

Векторы и матрицы представляют собой одномерный и двумерный массивы.
Значение нижней границы индексации элементов массива в Scilab по умолчанию равно единице.
Одномерный массив (вектор-строку) можно задать с помощью команды
X=a:h:b

где X -название массива, a и b — значения первого и последнего элементов массива, h — шаг, с которым изменяются элементы массива.
Возможна запись вида

X=a:b

В этом случае шаг автоматически принимается равным единице.

Пример. Задать вектор-строку X с элементами -2,-1,0,1,2.

-->X=-2:2
 X  =
 
  - 2.  - 1.    0.    1.    2.  

--> 

Пример. Задать вектор-строку X с элементами -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2.

-->X=-2:0.5:2
 X  =
 
  - 2.  - 1.5  - 1.  - 0.5    0.    0.5    1.    1.5    2.

--> 

Другой способ определить вектор — перечислить все его элементы.
В этом случае нужно выполнить команду

X=[x1,x2,...,xn] 

или команду

X=[x1 x2 ... xn]

где X -имя вектора, x1,x2,...,xn — элементы массива.

Пример. Задать вектор-строку X с элементами -5, 0.5, -7, 25.

-->X=[-5 0.5 -7 25]
 X  =
 
  - 5.    0.5  - 7.    25. 

-->  

Для того, чтобы задать вектор-столбец, необходимо перечислить элементы через точку с запятой.

Пример. Задать вектор-столбец X с элементами -5, 0.5, -7, 25.

-->X=[-5; 0.5; -7; 25]
 X  =
 
  - 5.   
    0.5  
  - 7.   
    25.  

-->  

Другой способ задать вектор-столбец — использовать транспонирование матриц.
Операция транспонирования задается с помощью знака '.

Пример.

-->X=[-2:2]'
 X  =
 
  - 2.  
  - 1.  
    0.  
    1.  
    2.   

-->  

или

-->X=-2:2;
 
-->X'
 ans  =
 
  - 2.  
  - 1.  
    0.  
    1.  
    2.  

-->   

Для доступа к элементам вектора нужно указать название вектора и в круглых скобках номер элемента.

Пример.

-->X=-1:1
 X  =
 
  - 1.    0.    1.  
 
-->X(1)
 ans  =
 
  - 1.  
 
-->X(2)
 ans  =
 
    0.  
 
-->X(3)
 ans  =
 
    1.  

-->

Для того, чтобы задать матрицу с элементами xij, нужно выполнить команду
вида

X=[x00 x01 ... x0n; 
   x10 x11 ... x1n; 
   ...
   xn0 xn1 ... xnn].

Для доступа к элементам нужно указать название матрицы и в круглых скобках номер элемента.

Пример.

-->X=[-1 0 1; 0 1 2; 5 4 7]
 X  =
 
  - 1.    0.    1.  
    0.    1.    2.  
    5.    4.    7.  

-->X(3,3)
 ans  =
 
    7.  

-->

Матрицы можно формировать на основе имеющихся

-->a1=[1 1 1]; a2=[2 2 2]; a3=[3 3 3];
 
-->A=[a1 a2 a3]
 A  =
 
    1.    1.    1.    2.    2.    2.    3.    3.    3.  
 
-->A=[a1; a2; a3]
 A  =
 
    1.    1.    1.  
    2.    2.    2.  
    3.    3.    3.  

-->

С помощью знака ":" можно выполнять различные операции с матрицами

Пример.

-->X=[-1 0 1; 0 1 2; 5 4 7]
 X  =
 
  - 1.    0.    1.  
    0.    1.    2.  
    5.    4.    7.  
 
-->X(1,:) //Выделяет из матрицы X первую строку
 ans  =
 
  - 1.    0.    1.  
 
-->X(:,1) //Выделяет из матрицы X первый столбец
 ans  =
 
  - 1.  
    0.  
    5.  
 
-->X(1,:)=[] //Удаляет из матрицы X первую строку
 X  =
 
    0.    1.    2.  
    5.    4.    7.  
 
-->X(1:2,2:3) //Выделяет из матрицы X подматрицу
 ans  =
 
    1.    2.  
    4.    7.  

-->

При работе с матрицами в пакете Scilab можно использовать следующие операции:

1. + — сложение;

Пример.

-->A=[1 2 3]; B=[3 4 5];
 
-->A+B
 ans  =
 
    4.    6.    8.  

-->

2. – –- вычитание;

Пример.

-->A=[1 2 3]; B=[3 4 5];
 
-->A-B
 ans  =
 
  - 2.  - 2.  - 2.  
 
-->

3. ’ –- транспонирование;

-->A=[1 2 3];
 
-->A'
 ans  =
 
    1.  
    2.  
    3.  
 
-->

4. * — умножение;

Пример.

-->A=[1 2 3]; B=[3 4 5]';
 
-->A*B
 ans  =
 
    26.  

-->

5. * –- умножение на число;

Пример.

-->A=[1 2 3];
 
-->3*A
 ans  =
 
    3.    6.    9.  

-->

6. ˆ — возведение в степень.

7. .ˆ — поэлементное возведение в степень;

Пример.

-->A=[1 2 3];
 
-->A.^3
 ans  =
 
    1.    8.    27.  
 
-->


8. \ — A\B = A-1*B;

Пример.

-->A=[1 2; 3 5]; B=[2;5];
 
-->A\B
 ans  =
 
    0.  
    1.  
 
-->


9. / — B/A = B*A-1;

Пример.

-->A=[0;1]; B=[2;5];
 
-->A/B
 ans  =
 
    0.    0.   
    0.    0.2    
 
-->


10. .* — поэлементное умножение матриц Ai*Bi;

Пример.

-->A=[1 2 3]; B=[3 4 5];
 
-->A.*B
 ans  =
 
    3.    8.    15.    
 
-->


11. .\ — поэлементное левое деление (Bi/Ai);


-->A=[1 2 3]; B=[3 4 12];
 
-->A.\B
 ans  =
 
    3.    2.    4.  

-->


12. ./ — поэлементное правое деление (Ai/Bi).


-->A=[5 2 6]; B=[1 2 3];
 
-->A./B
 ans  =
 
    5.    1.    2.    

-->


Если к заданной матрице применить некоторую функцию, то элементы матрицы будут преобразованы в соответствии с этой функцией.


Пример.

-->X=[0 %pi];
 
-->cos(X)
 ans  =
 
    1.  - 1.      

-->


При работе с матрицами можно использовать встроенные функции. Рассмотрим некоторые из них.

Функция length(X) возвращает количество элементов матрицы X.

Пример.

-->X=[1 2 3 4 5];
 
-->length(X)
 ans  =
 
    5.  

-->


Пример.

-->X=[1 2; 3 4; 5 6];
 
-->length(X) //кол-во всех элементов матрицы X
 ans  =
 
    6.  
 
-->length(X(:,1)) //кол-во строк матрицы X
 ans  =
 
    3.  
 
-->length(X(1,:)) //кол-во столбцов матрицы X
 ans  =
 
    2.  

-->


Функция size(X) возвращает вектор, содержащий количество строк и столбцов матрицы X.


Пример.

-->X=[1 2; 3 4; 5 6];
 
-->size(X)
 ans  =
 
    3.    2.  
  
-->


Функция max(X) возвращает максимальный элемент матрицы X.
Функция min(X) возвращает минимальный элемент матрицы X.
Функция sum(X) возвращает сумму элементов матрицы X.
Функция prod(X) возвращает произведение элементов матрицы X.
Функция det(X) возвращает определитель матрицы X.
Функция inv(X) возвращает матрицу, обратную к X.
  • avatar
  • 0

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.