Арифметические операции и функции
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Алгебраическиеоперации (-, +, *, /, \, ^, ') в системе Scilab выполняются как над скалярными элементами, так и над векторами и матрицами. При этом операнды могут быть, как действительными, так и комплексными.

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

 

--> // Алгебраические операции над векторами --> V1 = [1 4 6 8]; V2 = [2 3 4 7]; // Создание векторов V 1 и V 2 --> --> 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 Примеры алгебраических операций и функций
над векторами и матрицами

 

Список алгебраических операций над векторами и матрицами, а также функции detи trace, позволяющие вычислить определитель квадратной матрицы и след матрицы, приведены в Приложении 1.2, табл.1.2.2-5,причем совместимость операндов в приведенных операциях определяется правилами соответствующих алгебраических операций. Матричные алгебраические операции следуют правилам линейной алгебры, а требуемый размер и форма операндов относительно друг друга, зависит от конкретной операции.

 

Рассмотрим пример решения матричного уравнения вида А∙Х=В или
Х∙А=В, где Х– неизвестная матрица. Если умножить матричное уравнение на матрицу обратную к А, то оно примет вид: А-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 Решение матричных уравнений

Поэлементные арифметические операции в системе 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.  

--> // Примеры использования встроенных математических функций Scilab -->x = 10; -->d = sqrt(x) // Квадратный корень d = 3.16227766 --> -->f = abs(-10.65) // Абсолютная величина числа-10.65 f = 10.65 --> --> sin(x)     // С инус(10)  ans = -0.544021111 --> --> factorial(3) // Факториал 3  ans = 6. --> --> hh = sin(10 + 10) .* 10.65 ./ (1 – 3.16227766 * %i) hh = 0.8838969928355 + 2.7951277141849i

 

Рис. 1.2.2-6. Примеры использования библиотечных функций Scilab

 

 

Преобразование данных к арифметическому типу

Поскольку во всех языках программирования, в том числе и в Scilab, основные арифметические операции должны иметь аргументы одного и того же типа, то необходимо осуществлять преобразование аргументов к одному типу. Например,в случае если аргументы арифметических операций разного арифметического типа, вещественные и целые. Кроме того, в Scilab могут использоваться типы данных, отличных от арифметических типов, например, логические, строковые и другие. Преобразования одних типов данных к другим допустимым типам числовых данных можно осуществить явным образом с помощью функций, список которых приведен в Приложении 1.2,табл. 1.2.2-8.

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

Когда бинарная арифметическая операция (например, умножение) применяется между двумя различными операндами различных, но совместных типов, обычно тип одного из двух неявно преобразуется, а другой операнд устанавливает свой тип результату.

Так, результат арифметических операций между операндами целочисленного и вещественного типа с плавающей точкой двойной точности всегда преобразуются к целочисленному типу данных, и, когда это необходимо, по умолчанию, округляется, в соответствии с алгоритмом округления. То есть, он округляется до ближайшего целого числа.

 

 




Дата: 2019-11-01, просмотров: 290.