- •С.В. Ерин
- •Основы работы с Scilab
- •Объекты scilAb Скалярные величины
- •Векторы
- •Двумерные матрицы
- •Единичные матрицы
- •Создание строки, элементы которой будут последовательными целыми числам от n до m
- •Нахождение суммы и произведения элементов матрицы
- •Нечисловые (символьные) матрицы
- •Полиномы и полиномные матрицы Алгебраический полином можно определить командой poly
- •Генератор случайных чисел
- •Операции над числовыми матрицами
- •Определение корней полинома
- •Индексирование элементов в матрицах
- •2D графика
- •Следующая функция позволяет отобразить линии вспомогательной сетки в осях координат
- •Изображение нескольких рисунков в одном графическом окне
- •Программирование с использованием встроенного текстового редактора Scipad
- •Литература1. Алексеев е.Р., Чеснокова о.В., Рудченко е.А. Scilab: Решение инженерных и математических задач. – м: «Бином». 2008 г. Лабораторная работа №2
- •Получение случайных чисел из данного распределения.
- •Примеры:
Генератор случайных чисел
Команда rand генерирует последовательность случайных чисел.
Синтаксис
rand(m1,m2,.. [,key])
rand(x [, key])
rand()
rand(key)
rand("info")
Параметры
mi : integers
key : символьная переменная (character string), принимающая значение "uniform" и "normal". Значение "uniform" соответствует равномерному распределению, а "normal" - Гауссовскому.
x: матрица. Во внимание принимается только ее размер.
Примеры использования.
-->a=rand(2,5)
a =
0.5376230 0.2256303 0.7608433 0.6723950 0.3911574
0.1199926 0.6274093 0.0485566 0.2017173 0.8300317
rand() без аргументов дает случайное скалярное число, случайным образом
изменяющееся при следующем вызове.
-->a=rand()
a =
0.4829179
rand("info") возвращает текущий тип генератора случайных чисел (равномерный или нормальный)
-->str=rand("info")
str =
uniform
Операции над числовыми матрицами
В Scilab определены следующие основные операции над матрицами:
A+B Сложение
A-B Вычитание
c*A Умножение на число
A*B Умножение матрицы на матрицу
A.*B Поэлементное умножение матриц
A' Транспонирование (поменять местами строки и столбцы)
matrix Преобразование вектора или матрицы в матрицу (вектор) другого размера
Пример
-->a=[1 2 3;4 5 6]
a =
1. 2. 3.
4. 5. 6.
-->b=matrix(a,1,6)
b =
1. 4. 2. 5. 3. 6.
Нахождение суммы и произведения элементов матрицы
y=sum(x)
y=sum(x,'r') или y=sum(x,1)
y=sum(x,'c') или y=sum(x,2)
Параметры
x : вектор или матрица
y : скаляр или вектор
sum(x) даcт сумму всех элементов вектора или матрицы x, .
-->a=[1 2 3;4 5 6]
a =
1. 2. 3.
4. 5. 6.
-->sum(a)
ans =
21.
y=sum(x,'r') или, эквивалентно, y=sum(x,1) есть строка, равная поэлементной сумме элементов столбцов.
-->sum(a,'r')
ans =
5. 7. 9.
y=sum(x,'c') или, эквивалентно, y=sum(x,2) есть столбец, равный поэлементной сумме элементов строк.
-->sum(a,'c')
ans =
6.
15.
Аналогичным образом работает команда нахождения произведения элементов матрицы prod
y=prod(x,'r') или y=prod(x,1)
y=prod(x,'c') или y=prod(x,2)
Нечисловые (символьные) матрицы
Символьные матрицы - это матрицы, элементы которых имеют строковый тип (strings).
Строковые элементы должны быть заключены в апострофы или кавычки.
-->a=['a1','a2';'a3','a4']
a =
!a1 a2 !
! !
!a3 a4 !
Символьные матрицы можно складывать друг с другом. При этом происходит слияние соответствующих элементов.
-->b=['b1','bbb2';'b3','b4']
b =
!b1 bbb2 !
! !
!b3 b4 !
-->c=a+b
c =
!a1b1 a2bbb2 !
! !
!a3b3 a4b4 !
Полиномы и полиномные матрицы Алгебраический полином можно определить командой poly
Способ 1.
p=poly(a,"x", ["flag"])
a : матрица или действительное число
x : символьная переменная. Переменная полинома.
"flag" : строковая переменная, принимающая значение "roots" или "coeff". По
умолчанию принимает значение "roots".
Можно писать сокращенно: "flags"= "r" или "c".
Флаг "c" означает, что параметр a будет иметь смысл коэффициентов полинома. Флаг "r" означает, что параметр a будет иметь смысл корня полинома.
Например, объявим полином p=1-3x+2x2
-->q1=poly([1,-3,2],'x','c')
q1 =
1 - 3x + 2x2
Или объявим полином, заданный своими корнями p=(x-1)(x-2)
-->q1=poly([1,2],'x','r')
q1 =
2 - 3x + x2
Полиномиальную
дробь
можно
задать следующими способами
-->h=poly([1,-2],'x','c')/poly([3,1,-4],'x','c')
h =
1 - 2x
----------
3 + x - 4x2
или
-->h1=poly([1,-2],'x','c');
-->h2=poly([3,1,-4],'x','c');
-->h=h1/h2
h =
1 - 2x
-----------
3 + x - 4x2
