scilab учебник. Учебник Scilab. Учебник Для студентов по дисциплин Базовые средства математических пакетов
Скачать 5.73 Mb.
|
часть числа --> 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 Примеры арифметических поэлементных операций над векторами и матрицами |