Выделение треугольных частей матриц
Практическая работа в МатЛаб
Работа с научным калькулятором
1. Запустить МатЛаб
>> a = [1 2 3 4 6 4 3 4 5], // создаем простой вектор из 9 элементов
a =
1 2 3 4 6 4 3 4 5 //значения этого вектора
>> b = a + 2, // создается переменный вектор В, который равен b = a + 2
b =
3 4 5 6 8 6 5 6 7 // значения этого вектора
Чтобы создать график в MATLAB часто достаточно одной команды. Например, изобразим график результата сложения векторов, в поле с координатной сеткой
>> a = [1 2 3 4 6 4 3 4 5];
>> b = a + 2;
>> plot(b)
>> grid
Так же легко MATLAB может создать другие типы графиков: графики, с осями координат, графики с подписанными осями.
>> bar(b),
Область, в которой MATLAB особенно эффективен - это операции, с матрицами. Создать матрицу также просто, как создать вектор, используя, очку с запятой ";" для разделения рядов матрицы.
>> A = [1 2 0; 2 5 -1; 4 10 -1]
A =
1 2 0
2 5 -1
4 10 -1
>> B = [1 2 3; 4 5 6; 7 8 9]
B =
1 2 3
4 5 6
7 8 9
Перемножим по-элементно (.*)
>> C=A.*B
C =
1 4 0
8 25 -6
28 80 -9
Возможен ввод элементов матриц и векторов в виде арифметических выражений, содержащих любые доступные системе функции, например:
>> V=[1 2 3]
>> V= [2+2/(3+4) exp(5) sqrt(10)]
V = 2.2857 148.4132 3.1623
Для указания отдельного элемента вектора или матрицы используются выражения вида V(1) или M(i, j). Например, если задать
>> m=[10 20 30; 40 50 60; 70 80 90]
m =
10 20 30
40 50 60
70 80 90
Т.е. матрица оформляется как пересечение строки и столбца
>> m(1,1)
ans = 10
>> m(3,2)
ans = 80
>> m(1,3)
ans = 30
Например, если элементу m(2, 2) надо присвоить значение -6, следует записать
» m(2,2)=-6
Выражение А(:) — записывает все элементы массива А в виде столбца.
>> m(:)
Выражение М( i) с одним индексом дает доступ к элементам матрицы, развернутым в один столбец. Такая матрица образуется из исходной, если подряд выписать ее столбцы.
Было | Стало |
10 20 30 40 50 60 70 -6 90 | -6 |
> m(3)
ans = 70
>> m(4)
ans = 20
>> m(6)
ans = -6
>> m(8)=100
m =
10 20 30
40 50 100
70 -6 90
Удаление столбцов и строк матриц
Для формирования матриц и выполнения ряда матричных операций возникает необходимость удаления отдельных столбцов и строк матрицы. Для этого используются пустые квадратные скобки [ ]. Удалим второй столбец используя оператор : (двоеточие):
>> m(:,2)=[]
m =
10 30
40 100
70 90
А теперь, используя оператор : (двоеточие), удалим вторую строку:
>> m(2,:)=[]
m =
10 30
70 90
Суммирование элементов
Определены следующие функции суммирования элементов массивов:
- sum(A) — возвращает сумму элементов массива, если А — вектор, или вектор-строку, содержащую сумму элементов каждого столбца, если А — матрица;
- sum(A.dim) — возвращает сумму элементов массива по столбцам (dim-1), строкам (dim=2) или иным размерностям в зависимости от значения скаляра dim.
Пример:
» A=magic(4) | ||
А = | ||
16 2 | ||
5 11 | ||
9 7 | ||
4 14 | ||
»B=sum(A) | ||
В = |
34 34 34 34
- cumsum(A) — выполняет суммирование с накоплением. Если А — вектор, cumsum(A) возвращает вектор, содержащий результаты суммирования с накоплением элементов вектора А. Если А — матрица, cumsum(A) возвращает матрицу того же размера, что и А, содержащую суммирование с накоплением для каждого столбца матрицы А;
- cumsum(A.dim) — выполняет суммирование с накоплением элементов по размерности, определенной скаляром dim. Например, cumsum(A.l) выполняет суммирование по столбцам.
Пример:
» A=magic(4)
А =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
» В = cumsum(A)
В =
16 2 3 13
21 13 13 21
30 20 19 33
34 34 34 34
Выделение треугольных частей матриц
При выполнении ряда матричных вычислений возникает необходимость в выделении треугольных частей матриц. Следующие функции обеспечивают такое выделение:
- tril(X) — возвращает матрицу, все элементы которой выше главной диагонали X заменены нулями, неизменными остаются лишь элементы нижней треугольной части, включая элементы главной диагонали;
- tril(X.k) — возвращает неизменной нижнюю треугольную часть матрицы X начиная с k-й диагонали. При k=0 это главная диагональ, при k>0 — одна из верхних диагоналей, при k<0 — одна из нижних диагоналей.
Пример:
» М=[3.1.4:8.3.2;8.1.1]
М =
3 1 4
8 3 2
8 1 1
» tril(M)
ans =
3 0 0
8 3 0
8 1 1
- triu(X) — возвращает неизменной верхнюю треугольную часть матрицы X включая элементы главной диагонали, и заменяет нулями остальные элементы;
- triu(X.k) — возвращает неизменной верхнюю треугольную часть матрицы X начиная с k-й диагонали. При k=0 — это главная диагональ, при k>0 — одна из верхних диагоналей, при k<0 — одна из нижних диагоналей.
Пример:
м =
3 1 4
8 3 2
8 1 1
» triu(M)
ans =
3 1 4
0 3 2
0 0 1