Оскільки зазначені відмінності часто стають джерелом помилок, необхідно чітко засвоїти призначення кожного з операторів і застосовувати оператор ". '" В разі, коли потрібно тільки транспонування (будь то матеріальна або комплексна матриця), і оператор "'" - коли необхідно виконати транспонування і сполучення .
4.13 Множення векторів
Припустимо, u R є вектором-стовпцем, а v R - вектором-рядком. Тоді елементи матриці = uv є твори =. Наступний фрагмент демонструє обчислення матриці A:
Зазвичай в курсах лінійної алгебри розглядаються тільки вектори-стовп- ци, що позначаються на зразок u R. У цьому випадку відповідний векторстрока буде записаний як u. У Scilab змінна може містити безпосередньо вектор-рядок, а значить при множенні транспонувати цей вектор не знадобиться.
Також джерелом помилок може служити і зворотне припущення, що в змінної зберігається вектор-рядок, в той час як насправді змінна містить вектор-стовпець. Тому всякий алгоритм, який працює тільки
and (A, "r") постолбцовое "І" and (A, "c") порядкове "І" or (A, "r") постолбцовое "АБО" or (A, "c") порядкове "АБО"
Таблиця 17. Функції порядкового і постолбцового порівняння елементів матриці.
з певним типом матриць, повинен перевіряти розмірності вхідних аргументів і генерувати повідомлення про помилку в разі невідповідності.
4.14 Порівняння речових матриць
Порівняння двох матриць можливе за умови однакових розмірів. При виконанні цієї умови оператори, представлені в табл. 6. можуть застосовуватися і до матричних операндам. В результаті порівняння двох матриць утворюється матриця логічних значень, де кожен елемент являє результат порівняння відповідних елементів вихідних матриць. Логічні оператори "", "|" і ін. Також застосовні до матриць. Крім того, матриці логічних значень можуть виступати в якості параметрів функцій and і or, зміст яких розкриває табл. 17.
У наступному прикладі ми визначаємо матрицю A і порівнюємо її з числом 3 (при цьому кожен елемент матриці порівнюється з цим значенням). Потім ми створюємо другу матрицю B і порівнюємо її з першої. Нарешті, використовуючи функцію or, ми виконуємо порядкове порівняння, в результаті якого отримуємо вектор логічних значень, що вказує, які з стовпців матриці A містять елементи, що перевершують відповідні елементи матриці B.
4.15 Числа з плаваючою точкою в якості індексів
Припустимо, що матриця A має розмір 2 × 2. Для того щоб звернутися до елементів матриці, можуть застосовуватися як жорстко задані в тексті програми індекси, так і значення, що обчислюються динамічно в ході виконання, в тому числі нецілі, як показано далі:
--> A = testmatrix ( "hilb". 2)
--> A (2. [1.0 1.1 1.5 1.9])
Цей приклад демонструє, що всі значення 1.0, 1.1, 1.5 і 1.9 округлюються до 1, як при використанні функції int, усікається дробову частину числа. Наприклад, результатом кожного з наступних викликів: int (1.0), int (1.1), int (1.5) і int (1.9) - буде значення 1, а вираження int (-1.0), int (-1.1), int (-1.5 ) і int (-1.9) повертають число -1 1.
Зауважимо, що округлення відбувається відповідно до особливостей роботи функції int, а не floor, яка на відміну від int негативні значення округлює в меншу сторону. Справді, припустимо, що A представляє матрицю 4 × 4, наприклад, створену в результаті виклику
A = testmatrix ( "hilb". 4)
Функція triu (A, k) повертає верхню трикутну частину переданої їй матриці A, що лежить вище k-ой діагоналі. Команди triu (A, -1), triu (A, int (-1.5)) і triu (A, -1.5) повертають один і той же результат, в той час як інструкція triu (A, floor (-1.5)) еквівалентна triu (A, -2).
Така поведінка може здатися дивним, але сприяє однаковості мови Scilab. Дійсно, при зверненні до елементів матриці з використанням змінних як індекси, типом змінної найчастіше буде число з плаваючою крапкою. В цьому випадку перетворення значення відбувається за допомогою функції int. Сказане ілюструє наступний фрагмент:
Зверніть увагу, що в цьому прикладі змінні i і j мають тип з плаваючою точкою.
1 З точки зору внутрішнього устрою Scilab це пояснюється використанням функції int на рівні викликів З або Fortran всередині шлюзів Scilab для перетворення чисел з плаваючою точкою в цілі.