Алгебраическиеоперации (-, +, *, /, \, ^, ') в системе Scilab выполняются как над скалярными элементами, так и над векторами и матрицами. При этом операнды могут быть, как действительными, так и комплексными.
На рис. 1.2.2-2 приведены примеры использования алгебраических операций и функций над скалярами, векторами и матрицами.
![]() |
Рис.1.2.2-2 Примеры алгебраических операций и функций
над векторами и матрицами
Список алгебраических операций над векторами и матрицами, а также функции detи trace, позволяющие вычислить определитель квадратной матрицы и след матрицы, приведены в Приложении 1.2, табл.1.2.2-5,причем совместимость операндов в приведенных операциях определяется правилами соответствующих алгебраических операций. Матричные алгебраические операции следуют правилам линейной алгебры, а требуемый размер и форма операндов относительно друг друга, зависит от конкретной операции.
Рассмотрим пример решения матричного уравнения вида А∙Х=В или
Х∙А=В, где Х– неизвестная матрица. Если умножить матричное уравнение на матрицу обратную к А, то оно примет вид: А-1А∙Х=А-1В или Х∙А∙А-1=В∙А-1. Так как А-1А=А∙А-1=Е, а Е∙Х=Х∙Е=Х, то неизвестную матрицу Х можно вычислить так: Х=А-1В или Х=В∙А-1. Понятно, что матричное уравнение имеет единственное решение если А и В – квадратные матрицы n -го порядка, а определитель матрицы А не равен нулю. Решив матричные уравнения А∙Х=В и
Х∙A=B, выполним проверку. Решения матричных уравнений в Scilab показаны на рис. 1.2.2-3.
![]() |
Рис. 1.2.2-3 Решение матричных уравнений
Поэлементные арифметические операции в системе 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, табл.1.2.2-6.
--> // Примеры арифметических поэлементных операций матрицами
-->
--> // Арифметические поэлементные операции над векторами
-->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 Примеры арифметических поэлементных операций
над векторами и матрицами
Если при выполнении поэлементных операций требования к размеру или размерности матрицы не выполняются, то матрицы можно преобразовать к необходимому размеру с помощью специальных функций. Например, функция matrix позволяет изменить размеры вектора или матрицы, а функция resize_matrix выполняет обрезку или расширение матрицы. В Scilab имеются также функции, которые позволяют проверить число измерений (ndims) и размеры по каждому измерению аргументов (size). Описание перечисленных выше функций будет рассмотрено в п. 1.3.2.
Поэлементные математические функции, реализованные в Scilab, используются при проведении различного вида математических расчетов. Список наиболее часто используемых в математических расчетах функций, приведен в Приложении 1.2, табл. 1.2.2-7, а примеры обращения к некоторым из библиотечных математических функций показаны на рис.1.2.2-6.
![]() |
Рис. 1.2.2-6. Примеры использования библиотечных функций Scilab
Преобразование данных к арифметическому типу
Поскольку во всех языках программирования, в том числе и в Scilab, основные арифметические операции должны иметь аргументы одного и того же типа, то необходимо осуществлять преобразование аргументов к одному типу. Например,в случае если аргументы арифметических операций разного арифметического типа, вещественные и целые. Кроме того, в Scilab могут использоваться типы данных, отличных от арифметических типов, например, логические, строковые и другие. Преобразования одних типов данных к другим допустимым типам числовых данных можно осуществить явным образом с помощью функций, список которых приведен в Приложении 1.2,табл. 1.2.2-8.
Здесь необходимо сделать несколько замечаний по поводу преобразования типов в операциях с различными типами аргументов.
Когда бинарная арифметическая операция (например, умножение) применяется между двумя различными операндами различных, но совместных типов, обычно тип одного из двух неявно преобразуется, а другой операнд устанавливает свой тип результату.
Так, результат арифметических операций между операндами целочисленного и вещественного типа с плавающей точкой двойной точности всегда преобразуются к целочисленному типу данных, и, когда это необходимо, по умолчанию, округляется, в соответствии с алгоритмом округления. То есть, он округляется до ближайшего целого числа.
Дата: 2019-11-01, просмотров: 303.