суббота, 29 марта 2014 г.

Freemat. Векторы и матрицы

Freemat, как и MATLAB, "заточен" на работу с матрицами. Это означает, что все операции выполняются максимально быстро, и их запись не вызывает у пользователя лишних проблем.


Начнём с вектора. Чтобы ввести его элементы, достаточно перечислить их в квадратных скобках после имени переменной. Если элементы разделяются пробелом или запятой, получится вектор-строка, если точкой с запятой - вектор-столбец. Матрица точно также задаётся с помощью квадратных скобок, элементы строки разделяются пробелом или запятой, точка с запятой означает переход к следующей строке. Чтобы вызвать определённый элемент матрицы, нужно указать его имя и в круглых скобках через запятую перечислить индексы.
Диапазон значений можно задать функцией linspace(a,b,n), где a и b - границы интервала, n - число точек. Если параметр n не указан, по умолчанию число элементов 100. Можно, также, воспользоваться записью a:h:b. В этом случае h - величина шага.
Матрицы можно формировать из уже существующих. Для этого достаточно записать их имена в квадратных скобках. Правила здесь те же, что для скалярных величин: разделение имён пробелами или запятыми приведёт к горизонтальному размещению элементов массива, точкой с запятой - к вертикальному.
Двоеточие на месте индекса означает все элементы из данной строки или столбца. Т.е. выражение A(:,m) выведет столбец m, а A(n,:) - строку n. Для удаления какой-либо строки (или столбца) используется выражение A(n,:)=[]. Выделить область матрицы можно с помощью выражения A(a1:a2,b1:b2), где величины в скобках означаю начало и конец интервала для строк и столбцов соответственно.
Ещё несколько функций для создания матриц.
eye(n) - формирует единичную матрицу размера n x n.
zeros(n1,n2...nM) - массив нулей размером n1 x n2 x ... nM.
ones(n1, n2...nM) - то же, что zeros, только массив заполнен единицами.

Операции сложения, вычитания, умножения матриц и векторов обозначаются так же, как операции над обычными числами. Это относится и к умножению матрицы на скаляр. Деление может осуществляться правым слешем (левая матрица делится на правую) или левым (правая матрица делится на левую). Для поэлементного умножения, деления или возведения в степень перед знаком действия ставится точка. 
Для транспонирования матрицы достаточно добавить к её имени апостроф.
det(A) - вычисляет определитель квадратной матрицы A.
inv(A) - вычисляет матрицу, обратную к A.
cond(A) - число обусловленности матрицы A.
norm(A,p) - вычисляет норму матрицы A, определяемую параметром p.
size(A) - если после имени A указать 1, функция вернёт число строк, 2 - столбцов и т.д.
max(A) - возвращает наибольшие значения матрицы A в каждом из столбцов.
min(A) - наименьшие значения в столбцах матрицы A.
rref(A) - приводит матрицу A методом Гаусса к диагональному виду.



Комментариев нет:

Отправить комментарий