Главная страница

scilab учебник. Учебник Scilab. Учебник Для студентов по дисциплин Базовые средства математических пакетов


Скачать 5.73 Mb.
НазваниеУчебник Для студентов по дисциплин Базовые средства математических пакетов
Анкорscilab учебник
Дата05.05.2022
Размер5.73 Mb.
Формат файлаpdf
Имя файлаУчебник Scilab.pdf
ТипУчебник
#513983
страница2 из 21
1   2   3   4   5   6   7   8   9   ...   21
часть числа
--> imag(complex(5,9)) ans =
9.
real(Z)
Выделяет вещественную
часть числа
--> real(complex(5,9)) ans =
5.
gcd(V)
lcm(V)
Вычисляет наибольший об-
щий делитель и
наименьшее общее кратное
--> V = uint16([2^2 * 3^5,…
> 2^3 * 3^2, 2^2 * 3^4 * 5])
V =
972 72 1620
--> y = gcd(V) y =

28 36
--> lcm(V) ans =
9720
atan(imag(Z),real(Z))
atan(imag(Z),real(Z))…
*180/%pi
Возвращает фазу угла в
радианах
Возвращает фазу угла в
градусах
--> argZ = atan(imag(1 + %i),…
> real(1 + %i)) * 180 / %pi argZ =
45.
abs(Z)
Вычисляет модуль
комплексного числа.
--> Z = 1 + %i;
--> modZ = abs(Z) modZ =
1.4142136
isreal(Z)
isreal(a)
isreal(b)
Возвращает логическое
значение T, если число дей-
ствительное и F – если
комплексное
--> Z = complex(5, 9);
--> a = 67.76;
--> isreal(b) ans =
F
--> isreal(Z) ans =
F
Системные константы – это константы, имеющие символические имена (поименованные константы) значения и смысл которых задаются систе- мой при загрузке. Имена всех системных констант начинаются с символа
%
(кроме константы
ans
). Например, системная константа
%
pi
представляет число
π=3.1415926…
С
истемные константы описаны в табл.1.2.2-3.
Системные константы. Таблица 1.2.2-3
Системная
константа
Назначение
Значения системных
констант
%i
Мнимая единица sqrt(-1)
%pi
Число π
3.1415926…
%eps
Погрешность числа с плавающей точкой
2
-52
%e
Основание натурального логарифма
2.71828182
%inf
Значение машинной бесконечности
%nan
Указание на нечисловой характер данных
(Not-a-Number)
%s
%z
Переменные, используемые для определе- ния полиномов
--> z = poly(0, "z");
--> s = poly(0, "s");
ans
Переменная, хранящая результат послед- ней операции
Переменные – это объекты, имеющие имена (идентификаторы). Они способны хранить разные по значению и типу данные в оперативной памяти компьютера. В зависимости от типов данных переменные могут быть число-
выми, логическими, символьными, полиномиальными, структурами и ячей-
ками и т.д. Их имена задаются по следующим правилам:

29

имена переменных могут состоять из букв латинского и русского ал- фавитов (верхнего и нижнего регистра) и цифр;

имена переменных не могут начинаться с цифры, но могут начи- наться с символов:
%
,
_
(подчеркивание),
#, !, $, ?
;

в именах переменных не должны входить пробелы;

имена переменных не должны совпадать с именами других перемен- ных или функций, то есть должно быть уникальными;

для обозначения переменных желательно использовать содержатель- ные имена.
Поскольку Scilab является матричной системой, все ее переменные яв- ляются матрицами. В Scilab принято, как и в математике, двумерный массив называть матрицей, а одномерный – вектором. Вектора, в свою очередь, мо- гут быть вектор-строкой или вектор-столбцом. Элементы векторов и мат- риц являются индексированными переменными (п. 1.3.3).
Отметим, что индексы у векторов и матриц в Scilab имеют целочисленные значения,
которые начинаются с
1
. Даже скалярные объекты рассматриваются как матрицы
размера
1×1
.
Матрицы характеризуются размерностью, размером матрицы и разме-
ром каждого измерения. Поэтому вектор, являясь одномерным массивом, имеет размерность
1
, а матрица – размерность
2
Для вектора размер – это число его элементов, а для матрицы размер определяется произведением числа ее строк
n
и столбцов
m
как
n×m
. Если число строк равно числу ее столбцов (
n==m
), матрица называется квадратной.
Для вектора, имеющего одно измерение, размер измерения совпадает с его размером, а для матрицы размер первого измерения – это количество эле- ментов в столбце
n
, а второе
– количество элементов в строке
m
Для работы с матрицами существует большое количество встроенных библиотечных функций, которые будут рассмотрены в дальнейшем, а с дру- гими можно будет ознакомиться мере необходимости по документации Scilab
В табл. 1.2.2-4 приведены функции, используемые при обработке мат- риц, то есть функции, которые определяют размер матрицы, число измерений и размер каждого измерения.
Функции, определяющие структуру матрицы. Таблица 1.2.2-4
Функция
Назначение
Пример использования
length(М)
Возвращает число элементов в
матрице
--> М = [1 2 3;2 3 4;4 5 6];
--> length(M) ans =
9.
--> V = [3 4 5 6 7];
--> length(V) ans =

30 5.
length(Y(:, 1))
Возвращает число строк
матрицы
--> X = [1 2;2 3;4 5];
--> length(X(:, 1)) ans =
3.
length(X(1, :))
Возвращает число столбцов мат-
рицы
--> X = [1 2;2 3;4 5];
--> length(М(1, :)) ans =
2.
size(М)
[n, m] = size(М)
size(M, 1)
size(M, 2)
Возвращает вектор, содержащий
количество строк и столбцов
матрицы М, или только число
строк, или только число столб-
цов
--> M = [1 3; 2 4; 4 6];
--> size(М) ans =
2.
3.
--> [n, m] = size(M) m =
3. n =
2.
--> size(M, 1) ans =
2.
--> size(M, 2) ans =
3.
ndims(T)
n = ndims(T)
Возвращает число измерений
матрицы
--> T = [2 3 4; 4 3 2; 5 7 8];
--> ndims(T) ans =
2.
Рассмотрение арифметических операций начнем с определения опера- ции присваивания, которая является универсальной операцией для задания всех типов объектов Scilab и присваивании соответствующих значений.
Операция присваивания используется, как для объявления (задания типа переменной), так и задания (присваивания) значений переменной и обо- значается символом «равно»:
ИмяПеременной = Выражение
При выполнении операции присваивания происходит вычисление вы- ражения, расположенного справа от знака присваивания, а затем результат со- храняется в переменной, имя которой указано слева от знака присваивания.
При этом тип переменной присваивается типу результата, что сразу после вы- полнения оператора присваивания находит свое отражение в окне
Обозреватель переменных.
Обратите внимание, что в Scilab переменные и их типы заранее не декларируются (не
объявляются). Тип переменной определяется типом результата вычисленного выра-
жения, значение которого после вычисления присваивается переменной.

31
Следует отметить, что тип одной и той же переменной может меняться в процессе
сессии, так как данные в Scilab не имеют строгой типизации. Например, если в пере-
менной хранился текст, то на следующем шаге выполнения в нее можно записать
число, а затем и логическое значение. Scilab следит за соответствием типов только
при вычислении значений выражений.
Арифметические операции и функции
Алгебраические операции
(-, +, *, /, \, ^, '
) в системе Scilab вы- полняются как над скалярными элементами, так и над векторами и матрицами.
При этом операнды могут быть, как действительными, так и комплексными.
На рис. 1.2.2-2 приведены примеры использования алгебраических опе- раций и функций над скалярами, векторами и матрицами.
--> // Алгебраические операции над векторами
--> V1 = [1 4 6 8]; V2 = [2 3 4 7]; // Создание векторов V1 и V2
-->
--> V = V1 + V2 // Вычисление суммы векторов
V =
3. 7. 10. 15.
-->
--> U = V1^2 // Возведение в квадрат вектора V1
U =
1. 16. 36. 64.
-->
--> // Алгебраические операции над матрицами
--> mA = [1 2 3; -1 2 0; 3 2 4] mA =
1. 2. 3.
-1. 2. 0.
3. 2. 4.
-->
--> mB = [1 2; -2 1; 0 1];
--> mC = mA * mB // Алгебраическое произведения матриц mC =
-3. 7.
-5. 0.
-1. 12.
-->
--> mP = mA^2 // Возведение матрицы в квадрат mP =
8. 12. 15.
-3. 2. -3.
13. 18. 25.
--> d = det(mP) // Определитель квадратной матрицы d =
64.
Рис.1.2.2-2 Примеры алгебраических операций и функций над векторами и матрицами

32
Список алгебраических операций над векторами и матрицами, а также функции
det
и
trace
, позволяющие вычислить определитель квадратной мат- рицы и след матрицы, приведены в табл.1.2.2-5, причем совместимость опе- рандов в приведенных операциях определяется правилами соответствующих алгебраических операций. Матричные алгебраические операции следуют пра- вилам линейной алгебры, а требуемый размер и форма операндов относительно друг друга, зависит от конкретной операции.
Алгебраические матричные операции и функции. Таблица 1.2.2-5
Операции
и функции
Назначение
Описания
+
Сложение
A + B складывает матрицы A и B.
+
Унарный плюс
+A возвращает A.
-
Вычитание
A - B вычитает B из A.
-
Унарный минус
-A меняет знакA.
*
Матричное
умножение
C = A * B – алгебраическое произведение мат- риц A и B, при условии, что количество столб- цов A равно числу строк B.
^
Матричное
возведение в степень
A^B – возведение матрицы A в степень B, если B яв- ляется скаляром. Для других значений B вычисле- ния включают собственные значения и собственные вектора.
/
Деление матриц
слева направо
X = B / A – решение уравнения X * A = B, при условии, что матрицы A и B имеют одинаковое коли- чество столбцов. С точки зрения операций деления слева и транспонирования
B / A = (A' \ B')'.
\
Обратное (справа
налево) деление
матриц
Х = A \ B – решение уравнения A * X = B, при условии, что матрицы A и B имеют одинаковое коли- чество строк.
'
Транспонирование
матрицы
B = A' – комплексно-сопряженное транспонирова- ния матрицы A. Для комплексных матриц эта опера- ция не предполагает сопряжения.
d = det(mA)
Вычисление
определителя
матрицы
--> A = [3 2; 4 3];
--> det(A) //Определитель матрицы ans = 1
t = trace(A)
Вычисление следа
матрицы, то есть
суммы элементов
главной диагонали
--> A = [1 2 3; 4 -2 1; 0 3 -1]
--> trace(A) //СледматрицыА
ans =
-2
--> // то же что и
--> sum(diag(A)) ans =
-2

33
Рассмотрим пример решения матричного уравнения вида
А∙Х=В
или
Х∙А=В
, где
Х
– неизвестная матрица. Если умножить матричное уравнение на матрицу обратную к
А
, то оно примет вид:
А
-1
А∙Х=А
-1
В
или
Х∙А∙А
-1
=В∙А
-1
. Так как
А
-1
А=А∙А
-1

, а
Е∙Х=Х∙Е=Х
, то неизвестную матрицу
Х
можно вычислить так:
Х=А
-1
В
или
Х=В∙А
-1
. Понятно, что матричное уравнение имеет единственное решение если
А
и
В
– квадратные матрицы
n
-го порядка, а определитель матрицы
А
не равен нулю.
Решив матричные уравнения
А∙Х=В
и
Х∙A=B, выполним проверку. Решения матричных уравнений в Scilab показаны на рис. 1.2.2-3.
--> // Примеры решения матричных уравнений
--> A = [3 2; 4 3];
--> B = [1 7; 3 5];
-->
--> // Решение матричного уравнения A∙X=B
--> X = A \ B // Первый способ
X =
-3. 11.
5. -13.
-->
--> X = inv(A) * B // Второй способ, использующий обратную матрицу
X =
-3. 11.
5. -13.
-->
--> А * X - B // Проверка ans =
0. 0.
0. 0.
-->
--> // Решение матричного уравнения X∙A=B
--> X = B / A // Первый способ
X =
-25. 19.
-11. 9.
-->
--> X = B * inv(A) // Второй способ, использующий обратную матрицу
X =
-25. 19.
-11. 9.
-->
--> X * A – B // Проверка ans =
0. 0.
0. 0.
Рис. 1.2.2-3 Решение матричных уравнений

34
Поэлементные арифметические операции в системе Scilab, операции
с точкой
(-
,
+
,
.*
,
./
,
.\
,
.^
,
.'
) – это операции между элементами массивов.
Они осуществляют вычисления, как над скалярными элементами, так и над элементами одномерных и двумерных массивов, при этом используются как действительные, так и комплексные операнды.
Операции с точкой между элементами массивов отличаются от алгебра- ических матричных операций концептуально, хотя их операнды в оперативной памяти компьютера структурно представлены одинаково. Поэтому для упро- щения изложения, в дальнейшем будет использоваться термины вектор и мат- рица для любых операций в системе Scilab, а концептуальный (содержатель- ный) смысл, использованных данных будет зависеть от решаемой задачи.
Отметим, что поэлементные операции, аргументами которых являются вектора и матрицы, выполняются поэлементно только над матрицами, имею- щими одинаковые размерности и размеры по каждому измерению.
Примеры некоторых операций над скалярными данными приведены на рис. 1.2.2-4, а над элементами матриц на рис. 1.2.2-5.
--> // Арифметические операции над скалярными данными
-->
--> a = 2.3; b = -14.654;
--> c = a .* b
// Формат вывода результата по умолчанию
c =
-33.7042
--> r = a ./ b r =
-0.1569537
-->
--> format(4)
// Формат вывода результата с округлением
--> c = a * b c =
-34.
--> r1 = a / b r1 =
-0.2
-->
--> format(16)
// Формат вывода результата с двойной точностью
--> c = a .* b c =
-33.7042
--> r1 = a / b r1 =
-0.1569537327692
Рис.1.2.2-4 Примеры арифметических поэлементных операций над скалярами данными (матрицами размерностью
1х1
)
Список используемых арифметических операций над элементами мат- риц приведен в табл.1.2.2-6.

35
Арифметические поэлементные операции над матрицами. Таблица 1.2.2-6
Операция
Назначение
Описание
+
Сложение
A + B поэлементное сложение A и B
+
Унарный плюс
+A возвращает A
-
Вычитание
A - B поэлементное вычитание B из A
-
Унарный минус
-A поэлементное присвоение в A
.*
Поэлементное
умножение
C = A .* B поэлементное умножение A и B
.^
Поэлементное
возведение в степень
A .^ B поэлементное возведение A в степень B
.\
Поэлементное обратное
деление массивов
X = A .\ B – поэлементное обратное деле- ние A и B
./
Поэлементное деление
X = B ./ A поэлементное деление A и B.
.'
Транспонирование мас-
сива
A .' – поэлементная операция транспонирова- ния A
--> // Примеры арифметических поэлементных операций матрицами
-->
--> // Арифметические поэлементные операции над векторами
--> vX = [1 4 6] vX =
1. 4. 6.
--> z = (-vX.^2 + vX ./ 4) .\ 4 z =
-5.333333333 -0.266666667 -0.115942029
--> vX1 = -vX, vX1 .* vX vX1 =
1. -4. -6. ans =
-1. -16. -36.
-->
--> // Арифметические поэлементные операции над элементами матриц
--> M1 = [1 2 3; 3 2 1];
--> M2 = 3 .* M1
M2 =
3. 6. 9.
9. 6. 3.
--> M3 = M2 + M1.^2
M3 =
4. 10. 18.
18. 10. 4.
Рис.1.2.2-5 Примеры арифметических поэлементных операций над векторами и матрицами

36
Если при выполнении поэлементных операций требования к размеру или размерности матрицы не выполняются, то матрицы можно преобразовать к необходимому размеру с помощью специальных функций. Например, функ- ция
1   2   3   4   5   6   7   8   9   ...   21


написать администратору сайта