Matlab

Вы возможно уже знаете, что особые свойства магического квадрата связаны с различными способами суммирования его элементов. Если вы берёте сумму элементов вдоль какой-либо строки или столбца, или вдоль какой-либо из двух главных диагоналей, вы всегда получите одно и тоже число. Давайте проверим это, используя MATLAB. Первое утверждение, которое мы проверим -

sum (А)

MATLAB выдаст ответ

ans =

34 34 34 34

Когда выходная переменная не определена, MATLAB использует переменную ans, коротко от answer - ответ, для хранения результатов вычисления. Мы подсчитали вектор-строку, содержащую сумму элементов столбцов матрицы А. Действительно, каждый столбец имеет одинаковую сумму, магическую сумму, равную 34.

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

sum(A') '

вызывает результат вектор-столбец, содержащий суммы в строках

ans = 34

34

34

34

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

diag (A)

ans = 16

10

7

1

А функция

sum (diag (А) ) вызывает

ans = 34

Другая диагональ, называемая антидиагональю, не так важна математически, поэтому MATLAB не имеет специальной функции для неё. Но функция, которая вначале предполагалась для использования в графике, fliplr, зеркально отображает матрицу слева направо.

sum(diag(fliplr(A)))

ans = 34

Индексы

Элемент в строке i и столбце j матрицы А обозначается A(i,j). Например, А(4,2) - это число в четвертой строке и втором столбце. Для нашего магического квадрата А(4,2) = 15. Таким образом, можно вычислить сумму элементов в четвертом столбце матрицы А, набрав

A(1,4) + А(2,4) + А(3,4) + А(4,4)

получим

ans = 34

Однако это не самый лучший способ суммирования отдельной строки.

Также возможно обращаться к элементам матрицы через один индекс, A(k). Это обычный способ ссылаться на строки и столбцы матрицы. Но его можно использовать только с двумерными матрицами. В этом случае массив рассматривается как длинный вектор, сформированный из столбцов исходной матрицы.

Так, для нашего магического квадрата, А(8) - это другой способ ссылаться на значение 15, хранящееся в А(4,2).

Если вы пытаетесь использовать значение элемента вне матрицы, MATLAB выдаст ошибку:

t=A(4,5)

??? Index exceeds matrix dimensions.

С другой стороны, если вы сохраняете значение вне матрицы, то размер матрицы увеличивается.

X=A;

X(4,5) = 17

X =

16 3 2 13 0

5 10 11 8 0

9 6 7 12 0

4 15 14 1 17

Оператор двоеточия

Двоеточие : - это один из наиболее важных операторов MATLAB. Он проявляется в различных формах. Выражение

1:10

- это вектор-строка, содержащая целые числа от 1 до 10

123456789 10

Для получения обратного интервала, опишем приращение. Например

100:-7:50

что дает

100 93 86 79 72 65 58 51

ИЛИ

0:pi/4:pi

что даст

О 0.7854 1.5708 2.3562 3.1416

Индексное выражение, включая двоеточие, относится к части матрицы.

A(1:k, j)

это первые k элементов j -го столбца матрицы А.

Так

sum(A(l:4,4))

вычисляет сумму четвертой строки. Но есть и лучший способ. Двоеточие, само по себе, обращается ко всем элементам в строке и столбце матрицы, а слово end — к последней строке или столбцу. Так

sum(А (:, end) )

вычисляет сумму элементов в последнем столбце матрицы А

ans = 34

2. Выражения

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

• переменные

• числа

• операторы

• функции

Переменные

В MATLAB нет необходимости в определении типа переменных или размерности. Когда MATLAB встречает новое имя переменной, он автоматически создает переменную и выделяет соответствующий объем памяти. Если переменная уже существует, MATLAB изменяет ее состав и если это необходимо выделяет дополнительную память. Например,

num_students = 25

создает матрицу 1x1 с именем num_students и сохраняет значение 25 в ее единственном элементе.

Имена переменных состоят из букв, цифр или символов подчеркивания. MATLAB использует только первые 31 символ имени переменной. MATLAB чувствителен к регистрам, он различает заглавные и строчные буквы. Поэтому А и а - не одна и та же переменная. Чтобы увидеть матрицу связанную с переменной, просто введите название переменной.

2.1 Числа

MATLAB использует принятую десятичную систему счисления, с необязательной десятичной точкой и знаками плюс-минус для чисел. Научная система счисления использует букву е для определения множителя степени десяти. Мнимые числа используют i или j как суффикс. Некоторые примеры правильных чисел приведены ниже

3 -99 0.0001

9.6397238 1.60210e-20 6.02252e23

1i -3.14159j 3e5i

Числа с плавающей точкой обладают ограниченной точностью - приблизительно 16 значащих цифр и ограниченным диапазоном – приблизительно от 10-308 до 10308

2.2 Операторы

Выражения используют обычные арифметические операции и правила старшинства.

+ сложение

– вычитание

* умножение

/ деление

Λ степень

' комплексно сопряженное транспонирование

() определение порядка вычисления

2.3 Специальные символы

[ ] – квадратные скобки используют для создания матриц и векторов;

– пробел служит для разделения элементов матриц;

, – запятая применяется для разделения элементов матриц и операторов в строке ввода;

; – точка с запятой отделяет строки матриц, а точка с запятой в конце оператора (команды) отменяет вывод результата на экран;

: – двоеточие используется для указания диапазона (интервала изменения величины) и в качестве знака групповой операции над элементами матриц;

% – знак процента обозначает начало комментария;

! – отмечает начало команды DOS

’ – апостроф указывает на символьные строки.

2.4 Функции

MATLAB предоставляет большое количество элементарных математических функций, таких как abs, sqrt, exp, sin. Вычисление квадратного корня или логарифма отрицательного числа не является ошибкой: в этом случае результатом является соответствующее комплексное число. MATLAB также предоставляет и более сложные функции, включая Гамма функцию и функции Бесселя. Большинство из этих функций имеют комплексные аргументы. Чтобы вывести список всех элементарных математических функций, наберите

help elfun Для вывода более сложных математических и матричных функций, наберите


Страница: