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

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


Скачать 5.73 Mb.
НазваниеУчебник Для студентов по дисциплин Базовые средства математических пакетов
Анкорscilab учебник
Дата05.05.2022
Размер5.73 Mb.
Формат файлаpdf
Имя файлаУчебник Scilab.pdf
ТипУчебник
#513983
страница3 из 21
1   2   3   4   5   6   7   8   9   ...   21

matrix
позволяет изменить размеры вектора или матрицы, а функция
resize_matrix
выполняет обрезку или расширение матрицы. В Scilab имеются также функции, которые позволяют проверить число измерений (
ndims)
и раз- меры по каждому измерению аргументов (
size
). Описание перечисленных выше функций будет рассмотрено в п. 1.3.2.
Поэлементные математические функции, реализованные в Scilab, ис- пользуются при проведении различного вида математических расчетов. Спи- сок наиболее часто используемых в математических расчетах функций, при- веден в табл. 1.2.2-7.
Наиболее часто используемые математические функции. Таблица 1.2.2-7
Тригонометрические функции (аргумент задается в радианах)
sin, cos, tan, cot
Синус, косинус, тангенс и котангенс
sec, csc
Секанс, косеканс
asin,acos,atan,
atan2, acot
Арксинус, арккосинус, арктангенс и арккотангенс
asec, acsc
Арксеканс, арккосеканс
Алгебраические и арифметические функции
abs
Модуль
exp
Экспоненциальная функция
log, log2, log10
Логарифм натуральный, по основанию
2
и
10
sqrt
Квадратный корень
fix
Целая часть числа
floor
Округление до ближайшего целого значения, которое не превышает аргумент
mod(x, y), rem(x, y)
Остаток от деления x на y. Целая часть определяется со- ответственно функциями
floor
и
fix
sign
Знак числа
factorial
Вычисление факториала числа
Гиперболические функции
sinh, cosh, tanh, coth
Гиперболические синус, косинус, тангенс и котангенс
sech, csch
Гиперболические секанс и косеканс
asinh, acosh, atanh,
acoth
Гиперболические арксинус, арккосинус, арктангенс и арккотангенс;
Примеры обращения к некоторым из библиотечных математических функций показаны на рис.1.2.2-6.
--> // Примеры использования встроенных математических функций Scilab
--> x = 10;

37
--> 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.2-8.
Преобразование данных числового типа. Таблица 1.2.2-8
Ф
Функции
Назначение
Примеры
ceil(A)
Возвращает матрицу целых чи-
сел, состоящую из элементов,
округлённых в сторону +∞
--> ceil([1.3 1.5 1.7 2.5 3.7]) ans =
2. 2. 2. 3. 4.
--> ceil([-1.3 -1.5 -1.7 -2.5 -3.7]) ans =
-1. -1. -1. -2. -3.
fix(A)
Возвращает матрицу целых чи-
сел, состоящую из элементов,
округлённых в сторону нуля
y= sign(x) .* floor(abs(x)) (то же са- мое, что и int).
--> fix([1.3 1.5 1.7 2.5 3.7]) ans =
1. 1. 1. 2. 3.
--> fix([-1.3 -1.5 -1.7 -2.5 -3.7]) ans =
-1. -1. -1. -2. -3.
floor
Возвращает матрицу целых чи-
сел, состоящую из элементов,
округлённых в сторону -∞
--> floor([1.3 1.5 1.7 2.5 3.7]) ans =
1. 1. 1. 2. 3.

38
--> floor([-1.3 -1.5 -1.7 -2.5 -3.7]) ans =
-2. -2. -2. -3. -4.
int(A)
Возвращает матрицу целых чи-
сел, состоящую из элементов,
округлённых в сторону нуля
То же самое, что и fix.
--> int([1.3 1.5 1.7 2.5 3.7]) ans =
1.
1. 1. 2. 3.
--> int([-1.3 -1.5 -1.7 -2.5 -3.7]) ans =
-1. -1. -1. -2. -3.
round
Округляет до ближайшего целого
по правилам математики
--> round([1.3 1.5 1.7 2.5 3.7]) ans =
1. 2. 2. 3. 4.
--> round([-1.3 -1.5 -1.7 -2.5 -3.7]) ans =
-1. -2. -2. -3. -4.
ieee()
Устанавливает режим предупре-
ждающий о исключительных си-
туациях при операциях с плаваю-
щей точкой
--> ieee(1); 1/0
Предупреждение : деление на нуль... ans =
Inf
--> ieee(2); 1/0, log(0) ans =
Inf ans =
-Inf
isinf()
Проверяется значения на беско-
нечность inf
--> realmax + .0001E+308 ans =
Inf
--> -realmax - .0001E+308 ans =
-Inf
isnan()
Проверяется значения
на nan x = [1 2 %nan 3 %nan 4] k = find(

isnan(x)) y = x(k)
Здесь необходимо сделать несколько замечаний по поводу преобразова- ния типов в операциях с различными типами аргументов.
Когда бинарная арифметическая операция (например, умножение) при- меняется между двумя различными операндами различных, но совместных ти- пов, обычно тип одного из двух неявно преобразуется, а другой операнд уста- навливает свой тип результату.
Так, результат арифметических операций между операндами целочис- ленного и вещественного типа с плавающей точкой двойной точности всегда преобразуются к целочисленному типу данных, и, когда это необходимо, по умолчанию, округляется, в соответствии с алгоритмом округления. То есть, он округляется до ближайшего целого числа.

39
Приоритет выполнения математических операций
Приоритет выполнения математических операций в Scilab аналоги- чен приоритету, принятому в языках программирования высокого уровня: вы- числение функции, возведение в степень, умножение и деление, сложение и вычитание. Для изменения приоритета в математических выражениях, как обычно, используются круглые скобки.
Замечания по использованию данных типа double
Как известно, система Scilab по умолчанию осуществляет все вычисле- ния с максимальной возможной точностью – с вещественным типом данных с двойной точностью (
double
). Поэтому необходимо, во-первых, понимать, как представлены числовые данные этого типа в памяти компьютера, а во-вторых, особенности операций с ними.
В оперативной памяти компьютера Scilab представляет данные типа
double
в соответствии с принятыми стандартами. Любое числовое значение, хранящееся как
double
, занимает
64
бита (
8
байтов) и состоит из знака числа, мантиссы и порядка. При этом имеет допустимый диапазон отрицательных числовых значений от -
1.80D+308
до -
2.205D+308
, а положительных – от
2.23D-308
до
1.80D+308.
Переменную типа
double
в Scilab можно создать с помощью простого оператора присваивания, например,
x=34.723
Хотя характеристики представления созданных значений из набора ве- щественных чисел с плавающей точкой двойной точности известны, однако их можно уточнить, воспользовавшись функцией
number_properties,
которая возвращает значение параметра в зависимости от заданного запроса
(рис. 1.2.2-7)
-->// Примеры использования функции number_properties
-->
--> b = number_properties("radix") // Основание
b =
2.
-->
-->eps = number_properties("eps") // Относительная максимальная погрешность eps =
1.110D-16
-->
--> ps = number_properties("huge") // Максимальное допустимое положительное
-->// значение ps =
1.80D+308
-->
--> ps = number_properties("tiny") // Минимально допустимое положительное
-->// значение ps =

40 2.23D-308
Рис.1.2.2-7 Примеры использования функции
number_properties
В табл. 1.2.2-8 такжепредставлены функции, связанные с представле- нием результатов вычислений или выводом значений в командное окно, а также с представлением исключительных ситуаций
1.2.3. Логические выражения в Scilab
Логические выражения в Scilab строятся на основе математических
выражений, логических выражений, логических констант
(
%T, %F
), операций
отношения и соответствующих им функций, логических операций и функций, а также круглых скобок. Результатом логического выражения является значе- ние
T
(
True
), если выражение «Истинно», и значение
F
(
False
) в противном случае – выражение «Ложно».
Операции отношения и соответствующие им функции служат для поэлементного сравнения скалярных величин, векторов и матриц. Список опе- раций отношения приведен в табл. 1.2.3-1.
Операции отношений. Таблица 1.2.3-1
Операция
Описание
Примеры *
==
Равно
--> x == y ans =
T T F
--> a == b ans =
F
=
Не равно
--> x = y ans =
F F T
--> a = b ans =
T
<
Меньше чем
--> x < y ans =
F F T
>
Больше чем
-->x > y ans =
F F F
<=
Меньше или равно
--> x <= y ans =
T T T
>=
Больше или равно
--> x >= y ans =
T T F
* Примеры в этой таблице предполагают, что
x = [2, 3, 4], y = [2, 3, 5], a = 3 +2 * i, b = 3 + 4 * i.

41
Операции отношения выполняют поэлементное сравнение значений векторов или
матриц одинакового размера и возвращают значение равное
T
, если имеет место пол-
ное совпадение, и значение
F
в противном случае.
Операции
<, <=, >, >=
при комплексных операндах используются для сравнения
только действительных частей операндов – мнимые отбрасываются. В то же время
операции
== и =
ведут сравнения с учетом как действительной, так и мнимой части
операндов.
Логические выражения обычно используются в операторах
if, for,
while, switch
и служат для изменения последовательности выполнения опера- торов программы Scilab, а также при логической индексации матриц.
При вычислении выражений операции отношения имеют более низкий
приоритет, чем арифметические операции, но более высокий, чем логические.
На рис. 1.2.3-1 приведены примеры вычисления логических выражений.
--> // Примеры логических выражений
-->
--> // Пример1. Логическое умножение векторов
--> vF = [%T %F %F]; vK = [%T %T %F];
--> vF & vK ans =
T F F
-->
--> // Пример2. Логическое сложение матриц
--> mA = [%F %T %F; %F %T %T; %T %T %F];
--> mB = [%T%T %F; %T %T %T;%T %T %F];
--> IL = mA | mB
IL =
T T F
T T T
T T F
-->
--> // Пример3. Умножение элементов вектора на константу
--> vF = [%T %F %F];
--> vF .* %F ans =
0. 0. 0.
Рис. 1.2.3-1 Примеры логических выражений
Обратите внимание, что операнды операций отношения и логических операций
должны иметь совместимые размеры.
Список логических операций и функций приведен в табл. 1.2.3-2.

42
Логические операции. Таблица 1.2.3-2
Операция
Описание
Примеры *
b = or(A)
Логическое сложение (операция ИЛИ) над
элементами вектора или матрицы
Где b
- логический скаляр, если or(A) исполь- зуется без каких-либо вариантов "r", "c", n
(по умолчанию).
bравно %F, если все элементы A имеют значе- ние %F или ноль, включая %nan.
b равно , в противном случае (по крайней мере один элемент A имеют значение %T или ненулевой.
--> or([]) ans =
F
--> or(0) ans =
F
--> or(0+%i * 0) ans =
F
--> or(%nan) ans =
F
--> or([T, F T]) ans =
T
--> or([1 0 1; 0 4 3]) ans =
T
B = or(A, 'r')
B = or(A, 1)
B = or(A, 'c')
B = or(A, 2)
Логическое сложение (операция ИЛИ) над
элементами столбцов или строк
матрицы
Где B
- логический вектор.
Если n = 1 или| "r": or – возвращает вектор- строку логических значений
B(j) = or(A(:, j)).
Если n = 2 или " c": or возвращает вектор- столбец логических значений
B(i) = or(A(i, :))
--> B = or(A, 1)
B =
T T F
--> B = or(A, 2)
B =
T
T
T
L = A | B
Поэлементное логическое сложение (опера-
ция ИЛИ) над элементами векторов или
матриц
Где A и B вектора или матрицы с элементами целого или логического типа, которые должны иметь одинаковые размеры.
Если A или B является скаляром, она заранее расширяется до размера другого операнда.
L – вектор или матрица логических значений
--> x = [1 0 0];
--> y = [1 1 1];
--> L = x | y
L =
T T T
--> y = [1 0 1];
--> L = x | y
L =
T F T
b = and(A)
Логическое умножение (операция И) над
элементами вектора или матрицы
Где
b
- логический скаляр, если
and(A) используется без каких-либо вариан- тов "r", "c", n (по умолчанию).
B равно %F, если хотя бы один из элементов A имеют значение %F или ноль.
-->and([]) ans =
T
--> and(0) ans =
F
--> and(0 + 0*%i)

43
B равно , в противном случае (все элементы
A имеют значение %T, ненулевое или %nan.
Где A вектор или матрица булевых, целочис- ленных действительных или комплексных значений ans =
F
--> and(%nan) ans =
T
--> and([1, 0 1]) ans =
F
--> and([1 0 1; 0 4 3]) ans =
F
B = and (A, 'r')
B = and (A, 1)
B = and (A, 'c')
B = and (A, 2)
Логическое умножение (операция И) над
элементами столбцов или строк
матрицы
Где B
– вектор логических значений.
and возвращает вектор-строку логических значений
b(j) = and(A(:, j));
and возвращает вектор-столбец логических значений
b(i) = and(A(i, :)) ;
--> B = and (A, 1)
B =
T F F
--> B = and (A, 2)
B =
T
F
F
L = A & B
Логическое умножение (операция И) над
векторами или матрицами
Где A и B вектора или матрицы с элементами целого или логического типа, которые должны иметь одинаковые размеры.
Если A или B является скаляром, она заранее расширяется до размера другого операнда.
L – вектор или матрица логических значений
--> x = [1 0 0];
--> y = [1 1 1];
--> L = x & y
L =
T F F
--> y = [1 0 1];
--> L = x & y
L =
T F F
A
Логическое отрицание (операция НЕ) над
элементами матрицы логических значений
--> x = [1 0 0];
--> x ans =
T F F
--> y = [1 1 1];
--> oy = y oy =
T F F
*В примерах используются: вектора x = [1 0 0] и y = [1 1 1]; матрицы А = [5 7 0; 3 2 4; 5 0 0] и B = [6 6 0; 1 3 5; -1 0 0].

44
1.2.4. Строки символов и форматирование данных
Строки символов
Строковая константа представляется в Scilab заключением символов в одинарные или двойные кавычки, а скалярная переменная (матрица
1×1
) при- своением этой переменной значения символьной константы (рис.1.2.4-1)
--> // Создание данных строкового типа
-->
--> // Создание символьных переменных
--> a = 'Система ', b = "Scilab" a =
Система b =
Scilab
-->
--> // Создание символьной матрицы
--> mSt = ['Мы ' 'изучаем' 'Scilab' ' 6'] mSt =
!Мы изучаем Scilab6!
--> size(mSt) ans =
1.
4.
--> length(mSt) ans =
3. 7. 7. 2.
Рис. 1.2.4-1 Создание данных строкового типа
Для создания матрицы строк используется тот же синтаксис, что и для матриц арифметического типа. В примере, приведенном на рис.1.2.4-1, со- здана матрица строк размером
1×4 'Мы изучаем Scilab6'
. Для того, чтобы вы- числить ее размер, использована, как для обычных матриц, функция
size,
а для вычисления числа символов в каждом элементе матрицы – функция
length
В оперативной памяти строка представляет собой последовательность кодов символов, из которых она образуется. Однако, после создания строки, она представляется для пользователя единым целым, поэтому без специаль- ных функций при работе со строками невозможно использовать отдельные символы строки.
Следует помнить, что строки поддерживают лишь операцию
1   2   3   4   5   6   7   8   9   ...   21


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