RSS    

   Учебное пособие: Матричная математическая система MATLAB

>> M=[1 2 3; 4 5 6; 7 8 9];

задает квадратную матрицу, которую можно вывести:

>> M

M =

1       2       3

4       5       6

7       8       9

Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции, например:

>> V= [2+2/(3+4),exp(5),sqrt(10)];

>> V

V = 2.2857          148.4132    3.1623

Для указания отдельного элемента вектора или матрицы используются выражения вида V(i) или M(i, j). Например, если задать

>> М(2, 2)

ans = 5

то результат будет равен 5. Если нужно присвоить элементу M(i, j) новое значение x, следует использовать выражение


M(ij)=x

Например, если элементу M(2, 2) надо присвоить значение 10, следует записать

>> M(2, 2)=10

Вообще говоря, в тексте программ MATLAB лучше не использовать i и j как индексы, так как i и j – обозначение квадратного корня из –1. Но можно использовать I и J.

Выражение M(i) с одним индексом дает доступ к элементам матрицы, развернутым в один столбец. Такая матрица образуется из исходной, если подряд выписать ее столбцы. Следующий пример поясняет подобный доступ к элементам матрицы M:

>> M=[1 2 3; 4 5 6; 7 8 9]

M =

1       2       3

4       5       6

7       8       9

>> M(2)

ans = 4

>> M(8)

ans = 6

>> M(9)

ans = 9

>> M(5)=100;

>> M

M =

1       2       3

4       100   6

7       8       9

Здесь уместно отметить, что размер векторов и матриц в данной книге учебного характера ограничен. Однако система MATLAB способна работать с очень большими векторами и матрицами. Например, последняя версия MATLAB может работать с матрицами размера n×n, где максимальное значение n = 248 – 1, тогда как предшествующие версии имели максимальное значение n = 231. При этом размеры файла, который может хранить матрицу, могут достигать 18 Гб.

Задание векторов и матриц с комплексными элементами

Из курса математики известно о существовании комплексных чисел вида a + b * i, где a – действительная часть числа, b – мнимая часть и i – мнимая единица (корень квадратный из –1). Возможно задание векторов и матриц с комплексными элементами, например:

>> i=sqrt(-1);

>> CM = [1 2; 3 4] + i*[5 6; 7 8]

или

>> CM = [1+5*i 2+6*i; 3+7*i 4+8*i]

Это создает матрицу:

CM =

1.0000 + 5.0000i          2.0000 + 6.0000i

3.0000 + 7.0000i          4.0000 + 8.0000i


Возможно разделение элементов не только пробелами, но и запятыми.

Понятие о матричных операциях и магические матрицы

Наряду с операциями над отдельными элементами матриц и векторов система позволяет производить операции умножения, деления и возведения в степень сразу над всеми элементами, то есть над массивами. Для этого перед знаком операции ставится точка. Например, оператор * означает умножение для векторов или матриц, а оператор .* – поэлементное умножение всех элементов массива. Так, если M – матрица, то M.*2 даст матрицу, все элементы которой умножены на скаляр – число 2. Впрочем, для умножения матрицы на скаляр оба выражения – M*2 и M.*2 – оказываются эквивалентными.

Имеется также ряд особых функций для задания векторов и матриц. Например, функция magic(n) задает магическую матрицу размера n×n, у которой сумма всех столбцов, всех строк и даже диагоналей равна одному и тому же числу:

>> M=magic(4)

M =

16     2      3       13

5       11     10     8

9       7       6       12

4       14     15     1

>> sum(M)

ans = 34     34     34     34

>> sum(M’)

ans = 34     34     34     34

>> sum(diag(M))

ans = 34

>> M(1,2)+M(2,2)+M(3,2)+M(4,2)

ans = 34

Уже сама по себе возможность создания такой матрицы с помощью простой функции magic заинтересует любителей математики. Но векторных и матричных функций в системе множество, и мы их детально рассмотрим в дальнейшем. Для стирания переменных из рабочей области памяти служит команда clear.

Конкатенация (объединение) матриц

Описанный способ задания матриц позволяет выполнить операцию конкатенации – объединения малых матриц в большую матрицу. Например, создадим вначале магическую матрицу размера 3×3:

>> A=magic(3)

A =

8       1       6

3       5       7

4       9       2

Теперь можно построить матрицу, содержащую четыре матрицы:

>> B=[A A+16;A+32 A+16]

B =

8       1       6       24     17     22

3       5       7       19     21     23

4       9       2       20     25     18

40     33     38     24     17     22

35     37     39     19     21     23

36     41     34     20     25     18

Полученная матрица имеет уже размер 6×6. Вычислим сумму ее столбцов:

>> sum(B)

ans =          126   126   126   126   126   126

Любопытно, что она одинакова для всех столбцов. А для вычисления суммы строк используем команду

>> sum(B.')

ans =          78     78     78     174   174   174

Здесь запись B.' означает транспонирование матрицы B, то есть замену строк столбцами. На этот раз сумма оказалась разной. Это отвергает изначально возникшее предположение, что матрица B тоже является магической. Для истинно магической матрицы суммы столбцов и строк должны быть одинаковыми:

>> D=magic(6)

D =

35     1       6       26     19     24

3       32     7       21     23     25

31     9       2       22     27     20

8       28     33     17     10     15

30     5       34     12     14     16

4       36     29     13     18     11

>> sum(D)

ans =          111   111   111   111   111   111

>> sum(D.')

ans =          111   111   111   111   111   111

Более того, для магической матрицы одинаковой является и сумма элементов по основным диагоналям (главной диагонали и главной антидиагонали).

Удаление столбцов и строк матриц

Для формирования матриц и выполнения ряда матричных операций возникает необходимость удаления отдельных столбцов и строк матрицы. Для этого используются пустые квадратные скобки – [ ]. Проделаем это с матрицей M:

>> M=[1 2 3; 4 5 6; 7 8 9]

M =

1       2       3

4       5       6

7       8       9

Удалим второй столбец, используя оператор : (двоеточие):

>> M(:,2)=[ ]

M =

1       3

4       6

7       9

А теперь, используя оператор : (двоеточие), удалим вторую строку:


>> M(2,:)=[ ]

M =

1       3

7       9


Работа с демонстрационными примерами с командной строки

Вызов списка демонстрационных примеров

Одним из самых эффективных методов знакомства со сложными математическими системами является ознакомление со встроенными примерами их применения. Система MATLAB содержит многие сотни таких примеров – по примеру практически на каждый оператор или функцию. Наиболее поучительные примеры можно найти в разделе demos справки или выполнив команду:

>> help demos

Examples and demonstrations.

Type 'demo' at the command line to browse more demos of

MATLAB, the Toolboxes, and Simulink.

demo – Run demonstrations.

Mathematics.

intro – Basic Matrix Operations

inverter – Inverses of Matrices

buckydem – Graphs and Matrices

sparsity – Sparse Matrices

matmanip – Matrix Manipulation

integerMath – Integer Arithmetic Examples

Здесь весьма длинный список примеров обрезан.

Пример – вывод изображения поверхности

Исполнив команду

>> wernerboy


можно наблюдать изображение сложной поверхности Вернера–Боя, показанной на рисунке в окне графики.

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

Что больше – e^pi или pi^e?

Рассмотрим еще один простой пример, дающий ответ на сакраментальный вопрос о том, какое значение больше – e^pi или pi^e? Для запуска этого примера надо исполнить команду

>> e2pi

и наблюдать красочное шоу – графики степенных функций x^y и y^x с построением на них линий заданных функций и оценкой их значений – рисунке. Этот пример – наглядная демонстрация перехода от узких понятий к более широким.

Так можно легко убедиться в том, что все же e^pi больше, чем pi^e. Можно проверить это и помощью логического оператора сравнения > (результат 1 означает, что неравенство выполняется и дает логическое значение TRUE):

>> e^pi>pi^e

ans = 1


Встроенные фигуры

MATLAB имеет ряд встроенных фигур, которые можно легко выводить на построение простым указанием их названия. Так, введя команду knot, можно задать построение еще одной сложной пространственной фигуры узла с функциональной окраской. Можно убедиться в том, что имеется возможность вращать полученную фигуру. В данном примере показан также вывод шкалы цветовых оттенков – справа от фигуры.

Просмотр текстов примеров и m-файлов

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

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.