Выделение треугольных частей матриц

Практическая работа в МатЛаб

Работа с научным калькулятором

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