Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_1(векторы и матрицы).doc
Скачиваний:
67
Добавлен:
31.05.2015
Размер:
3.98 Mб
Скачать

1. Функции операций над векторами:

■ Функция length (V) - определяет длину вектора V;

Листинг 17.

>> V=[-l 0 3-2 1 -1 1];%Вектор-строка

>> length(V)%Длина вектора

ans =

7

>> W=[0,3,1,1,2];%Вектор-столбец

>> length(W)%Длина вектора

ans =

5

■ prod (V) - вычисляет произведение элементов вектора V;

Листинг 18.

>> V=[l,2,3];

>> prod(V)%Произведение элементов вектора

ans =

6

■ cumprod (V) формирует вектор того же типа и размера, что и V, каждый элемент которого рассчитывается по формулам: v1, v1 * v2, v1* v2* v3,… v1* v2* v3*…* vn- то есть i-ый элемент вектора V умножается на произведение всех предыдущих элементов;

Листинг 19.

>> V=[l,2,3];

>> cumprod(V)

ans =

1 2 6

■ sum(V) – вычисляет сумму элементов вектора V;

Листинг 20.

>> V=[-l 0 3-2 1 -1 1];

>> sum(V) %Сумма элементов вектора

ans =

1

■ cumsum(V) - формирует вектор кумулятивной суммы, это вектор того же типа и размера, что и V, каждый элемент которого рассчитывается следу­ющим образом: - то есть к i-му элементу вектора V прибавляется сумма всех предыдущих элементов;

Листинг 21.

>> V=[-l 0 3 -2 1 -1 1];

>> cumsum(V)

ans =

-1 -1 2 0 1 0 1

■ diff (V)- формирует вектор, размер которого на единицу меньше чем у вектора V, а каждый элемент представляет собой разность между двумя соседними элементами массива V, то есть: .

Листинг 22.

>>V=[-l 0 3 -2 1 -1 1];

>>diff(V)

ans =

  1. 3 -5 3 -2 2

■ min (V) - находит минимальный элемент вектора V, вызов в формате [k,n]=min(V) дает возможность определить минимальный элемент k и его номер n в массиве V;

■ max (V) - находит максимальный элемент массива V или при [k, n]= max (V) определяет максимум и его номер;

Листинг 23.

>> V=[-1 0 3 -2 1 -1 1];

>> min(V)%Минимальный элемент

ans =

-2

>> max(V)%Максимальный элемент

ans =

3

>> [k,n]=min(V) %Минимальный элемент и его номер

k =

-2

n =

4

>> [k,n]=max(V) % Максимальный элемент и его номер

k =

3

n =

3

■ mean(V) - определяет среднее арифметическое массива V;

Листинг 24.

>> V[-1 0 3 -2 1 -11];

>> mean(V)%Среднее значение массива V

ans *

0.1429

>>sum(V)/length(V)%To же что, и mean(V)

ans =

0.1429

■ dot(v1,v2)- вычисляет скалярное произведение векторов vl и v2 (функция sum (vl.*v2} выдаст тот же результат);

Листинг 25.

>>vl=[1.2,-0.3;-1.1];

>>v2=[-0.9;2.1;0.5];

>>dot(vl,v2)%Скалярное произведение

ans=

1

>> sum(v1.*v2) %Скалярное произведение

ans=

-1

■ cross (vl,v2) - определяет векторное произведение векторов vl и v2;

Листинг 26.

>> vl=[1.2;0.3;-l.l];

>> v2=[-0.9;2.1;0.5];

>> cross(vl,v2) %Векторное произведение

ans =

2.4600

0.3900

2.7900

■ sort (V) - выполняет упорядочивание массива V;

Листинг 27.

>> V=[-l 0 3 -2 1 -1 1];

>> sort(V)%Сортировка по возрастанию

ans =

-2 -1 -1 0 1 13

>> -sort(-V) %Сортировка по убыванию

ans =

  1. 1 1 0 -1 -1 -2

    1. Функции определения матриц и операций над ними:

■ eye (n[,m]) - возвращает единичную матрицу соответствую­щей размерности;

Листинг 28.

>>еуе(З)%квадратная единичная матрица

ans =

1 0 0

0 0 1

» eye(3,2)%прямоугольная единичная матрица

ans =

1 0

0 1

О 0

>> eye(3,4,5)%многомерная единичная матрица в MATLAB не определена,

>> %выдается сообщение об ошибке

??? Error using ==> eye

Third input must foe a valid numeric class name.

■ оnеs (n [, m, р,...])- формирует матрицу, состоящую из единиц;

Листинг 29

>> оnеs(2)%квадратная матрица

аns =

1 1

1 1

>> оnes(3,1)%матрица-столбец

аns =

1

1

1

>> оnеs(1,4)%матрица-строка

ans =

1 1 1 1

>> оnеs(2,3)%прямоугольная матрица

аns =

111

111

>> А=оnеs(3,2,3)%многомерный массив

А(:,:,1) =

1 1

1 1

1 1

А(:,:,2) =

1 1

1 1

1 1

А{:,:,3) =

1 1

1 1

1 1

■ zеrоs(n [, m, р, ...])- возвращает нулевую матрицу соответствующей размерности;

Листинг 30

>>zеrоs (3)%квадратная нулевая матрица

аns =

0 0 0

0 0 0

0 0 0

>>zеrоs (1,5)%матрица-строка

аns =

0 0 0 0 0

>> Z=zеrоs(3,4,2)%многомерный массив

Z(:,:,1) =

0 0 0 0

0 0 0 0

0 0 0 0

Z(:,:,2) =

0 0 0 0

0 0 0 0

0 0 0 0

■ diag (V [, к] ) - возвращает квадратную матрицу с элементами V на глав­ной или к-й диагонали; функция diag (А [, к] ), где А - ранее определен­ная матрица, в качестве результата выдаст вектор-столбец, содержащий элементы главной или к-ой диагонали матрицы А;

Листинг 31

>> V=[1,2,3]

V =

1 2 3

>> diag(V)%Диагональная матрица, V на главной диагонали

ans =

1 0 0

0 2 0

0 0 3

>> diag(V,0)%Дает тот же результат, что и diag(V)

ans =

1 0 0

0 2 0

0 0 3

>> diag(V,1)%Диагональная матрица, V на первой диагонали (выше

главной)

ans=

0 1 0 0

0 0 2 0

0 0 0 3

0 0 0 0

>> diag(V,-l) %Диагональная матрица, V на первой'диагонали (ниже главной)

ans =

0 0 0 0

1 0 0 0

0 2 0 0

О 0 3 0

>> А=[-1 2 0;2 1 -1;2 1 3]

А =

-1 2 0

2 1 -1

2 1 3

>> diag(A)% Вектор элементов матрицы А, расположенных на главной диагонали

ans=

-1

1

3

■ rand ([n, m, р, ...])- возвращает матрицу с элементами, распределенными по равномерному закону, rand без аргументов возвращает одно он чайное число;

Листинг 32

>>rand(3)%Квадратная матрица случайных чисел

ans =

0.9501 0.4860 0.4565

0.2311 0.8913 0.0185

0.6068 0.7621 0.8214

>> rand(3,2)%Прямоугольная матрица случайных чисел

ans =

0.4447 0.9218

0.6154 0.7382

0.7919 0.1763

>> R=rаnd(2,2,2)%Многомерный массив случайных чисел

R(:,:,1) =

0.9355 0.4103

0.9169 0.8936

R(:,:,2} =

0.0579 0.8132

0.3529 0.0099

>> rand %0дно случайное число

ans =

0.4057

>> rand %При каждом последующем вызове случайное число меняется ans =

0.1389

■ randn( [n, m, p...]) - возвращает матрицу, элементы которой распределены по нормальному закону, rand без аргументов возвращает одно случайное число;

Листинг 33.

>> randn{3)%Квадратная матрица случайных чисел

ans =

-0.4326 0.2877 1.1892

-1.6656 -1.1465 -0.0376

0.1253 1.1909 0.3273

>> randn(3,1)%Матрица-столбец случайных чисел

ans =

0.1746

-0.1867

0.7258

>> randn %Случайное число

ans =

-0.5883

■ linspace(a, b [, n] ) - возвращает массив из 100 или из n точек, равно­мерно распределенных между значениями а и b;

Листинг 34.

>>linspace(l,10,10)

ans =

1 2 3 4 5 6 7 8 9 10

>> linspace(l,10,20)

ans =

Columns 1 through 10

1.0000 1.4737 1.9474 2.4211 2.8947 3.3684 3.8421 4.3158 4.7895 5.2632

Columns 11 through 20

5.7368 6.2105 6.6842 7.1579 7.6316 8.1053 8.5789 9.0526 9.5263 10.0000

■ logspace{a, b [, n] ) - формирует массив из 50 или из n точек, равно­мерно распределенных в логарифмическом масштабе между значениями 10а и 10b; функция linspace (a, pi) дает равномерное распределение 50 точек в интервале от 10а до pi;

Листинг 35.

>> logspace(l,2,10)

ans =

10.00 12.9155 16.6810 21.5443 27.8256 35.9381 46.4159 59.9484 77.4264 100.00

>> logspace(l,pi)

ans =

Columns 1 through 10

10.0000 9.7665 9.5384 9.3157 9.0981 8.8856 8.6781 8.4755 8.2776 8.0843

Columns 11 through 20

7.8955 7.7111 7.5310 7.3551 7.1834 7.0156 6.8518 6.6918 6.5355 6.3829

Columns 21 through 30

6.2338 6.0883 5.9461 5.8072 5.6716 5.5392 5.4098 5.2835 5.1601 5.0396

Columns 31 through 40

4.9219 4.8070 4.6947 4.5851 4.4780 4.3734 4.2713 4.1715 4.0741 3.9791

Columns 41 through 50

3.8861 3.7953 3.7067 3.6201 3.5356 3.4530 3.3724 3.2936 3.2167 3.14151

■ repmat (A, n [, m] ) - формирует матрицу, состоящую из n на n или из n на m копий матрицы А; если А - скаляр, то формируется матрица, элементы которой равны значению А;

Листинг 36.

>>А=1 2;3 4]

А =

1 2

3 4

>> repmat (А,2)%Матрица из 4-х копий матрицы А

ans =

1 2 1 2

3 4 3 4

1 2 1-2

3 4 3 4

>> repmat(A,2,1)%Матрица из 2-х копий матрицы А

ans =

1 2

3 4

1 2

3 4

>> repmat(А,1,1)%Матрица из 1-й копии матрицы А

>> %Команда repmat (А,1) даст аналогичный результат

ans =

1 2

3 4

>> С=5

С =

5

>> repmat(С,3)%Матрица из 9-и копий матрицы С, причем С - скаляр ans =

5 5 5

5 5 5

5 5 5

>> B=repmat(С,[2,1,2])%Многомерный массив

В(:,:,1) =

5

5

В(:,:,2) =

5

5

■ reschape(A, m, n) - возвращает матрицу размерностью m*n, сформиро­ванную из А путем последовательной выборки по столбцам; если А не имеет m на n элементов, то выдается сообщение об ошибке;

Листинг 37.

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

А = %Матрица А размерностью 4x3=12

1 3 5

2 4 6

7 8 9

5 2 1

>> reshape(A,3,2) %Попытка создать из матрицы А матрицу размерностью 3x2=6

%дает сообщение об ошибке

??? Error using -=> reshape

То RESHAPE the number of elements must not change.

%Примеры формирования различных матриц из матрицы А

>>reshape(A,3,4) %13x4=12

ans =

1 5 8 6

2 3 2 9

7 4 5 1

>> reshape(A,2,6)%2х6=12

ans =

1 7 3 8 5 9

2 5 4 2 6 1

>>reshape{A, l,12)%lxl2=12

ans =

1 2 7 5 3 4 8 2 5 6 9 1

>> reshape(A,6,2)%6x2=12

ans =

1 8

2 2

7 5

5 6

3 9

4 1

>> B=reshape(A,3,2,2) %3x2x2=12

B(:,:,l) =

1 5

2 3

7 4

B(:,:,2) =

8 6

2 9

5 1

■ cat(n, А, В, [С,...]) - объединяет матрицы А и В или все входящая матрицы А,В,С,...;

Листинг 38.

>> А=[1 2;3 4];

>> В=[5 6;7 8];

>> cat(2,А,В)%0бъединение матриц

ans =

1 2 5 6

3 4 7 8

>> [А,В] %Объединение матриц аналогично cat{2,A,B)

ans =

1 2 5 6

3 4 7 8

>> cat(l,A,B) %Объединение матриц

ans =

1 2

3 4

5 6

7 8

>> [А;В] %Объединение матриц, аналогично cat(l,A,B)

ans =

1 2

3 4

5 6

7 8

■ rot90(A [, к]) - осуществляет поворот матрицы А на 90° или величие 90-к, где к - целое число;

Листинг 39.

>> А=[1 2 3;4 5 6]

А =

1 2 3

4 5 6

>> В=rоt90(А)%Матрица В получена в результате поворота А на 90 градусов

B=

3 6

2 5

1 4

>> C=rot90(B)%Матрица С получена в результате поворота В на 90 градусов

С =

6 5 4

3 2 1

>> D=rot90(A,2) %Матрица В получена в результате поворота А на 180 градусов

D =

6 5 4

3 2 1

■ tril (А [, к]) - формирует из матрицы А нижнюю треугольную матри­цу, начиная с главной или с к-й диагонали;

Листинг 40.

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

А =

1 2 3

4 5 6

7 8 9

>>tril(А)%Нижняя треугольная матрица,начиная с главной диагонали

ans =

1 0 0

4 5 0

7 8 9

>> tril(A,0)%To же, что и tril{A)

ans =

1 0 0

4 5 0

7 8 9

>> tril(А,1)%Нижняя треугольная матрица, » %начиная с первой диагонали (выше главной)

ans =

1 2 0

4 5 6

7 8 9

>> tril(A,-2) %Нижняя треугольная матрица, » %начиная со второй диагонали (ниже главной)

ans =

0 0 0

0 0 0

7 0 0

■triu (А [, к])- формирует из матрицы А верхнюю треугольную матри­цу, начиная с главной или к-й диагонали;

Листинг 41.

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

>>triu(A)%Bepхняя треугольная матрица

ans =

1 2 3

0 5 6

0 0 9

>> triu(A,2) %Верхняя треугольная матрица,

>> %начиная со второй диагонали (выше главной)

ans =

0 0 3

0 0 0

0 0 0

>> triu(A,-l) )%Верхняя треугольная матрица,

>> %начиная с первой диагонали (ниже главной)

ans =

1 2 3

4 5 6

0 8 9

■ size(A) -определяет число строк и столбцов матрицы А, результатом е работы является вектор [n; m];

Листинг 42.

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

» size(A)%Paзмерность матрицы А

ans =

4 2

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

>> size(V)%Размерность вектора-строки V

ans =

1 8

>> size(V)%Размерность вектора-столбца V

ans =

8 1

>> zeros(size(A))%Формирование нулевой матрицы такого же размера, как и А

ans =

0 0

0 0

0 0

0 0

>> ones(size(V)) %Формирование единичного вектора такого же размера-как и V

ans =

11111111

■ prod (А [,к]) - формирует вектор-строку или вектор-столбец, в зависи­мости от значения к, каждый элемент которой является произведением элементов соответствующего столбца или строки матрицы А; если значе­ние параметра к в конструкции отсутствует, то по умолчанию вычисля­ются произведения столбцов матрицы; понятно, что результатом рабо­ты функции prod (prod (A) ) будет произведение всех элементов матрицы;

Листинг 43.

>> A=[l 3;2 4];

>> prod (А) %Произведения столбцов матрицы

ans =

3 8

>> prod(A,1) %Произведения столбцов матрицы

ans =

3 8

>> prod(A,2) %Произведения строк матрицы

>> prod(prod(A)) %Произведения всех элементов матрицы

ans =

24

■ cumprod(A) -отличается от функции cumprod(V) тем, что операции, опи­санные для нее, применяются либо к строкам, либо ко столбцам матри­цы А, в зависимости от значения параметра к; по умолчанию накаплива­ние произведения выполняется по столбцам матрицы А;

Листинг 44.

>> А=[1 2 0 -1;-2 1 -1 3;2 0 1 1];

>> cuntprod(A,l)

ans =

1 2 0 -1

-2 2 0 -3

-4 0 0 -3

>> cumprod(A,2)

ans =

1 2 0 0

-2 -2 2 6

2 0 0 0

■ sum (A [, k]) - формирует вектор-строку или вектор-столбец (в зависимо­сти от значения к), каждый элемент которой является суммой элементов соответствующего столбца или строки матрицы А; если значение параметра к в конструкции отсутствует, то по умолчанию вычисляются суммы столбцов матрицы; произведение всех элементов матрицы вычисляется при помощи функции sum (sum (A) );

Листинг 45.

>> А=[1 2 3;1 2 3]

А =

12 3

12 3

>> sum(A,l) %Сумма элементов матрицы по столбцам

ans =

2 4 6

>> sum(A,2) %Сумма элементов матрицы по строкам

ans =

6

6

>> sum(sum(A)) %Сумма всех элементов матрицы

ans =

12

■ cumsum(A, [k]) -отличается от функции cumsum (V) тем, что операции, описанные для нее, применяются либо к строкам, либо ко столбцам мат­рицы А, в зависимости от значения параметра к; по умолчанию результа­том работы функции является матрица кумулятивных сумм столбцов мат­рицы А;

■ diff (А) -из матрицы А размерностью n*m формирует матрицу размер n-1*m, элементы которой представляют собой разность между элементами соседних строк А;

Листинг 46.

>>А=[1 2 0 -1;-2 1 -1 3;2 0 1 1];

>>diff(A)

ans =

-3 -1 -1 4

4 -1 2 -2

■ min(A) - формирует вектор-строку, каждый элемент которой является наименьшим в соответствующем столбце матрицы А, определить положе­ние этих элементов в матрице можно, если вызвать функцию в формате [n, m] =min (А), где n - вектор минимальных элементов столбцов матри­цы A, am- вектор номеров строк матрицы А, в которых находятся эти элементы; конструкция min(min(A)) позволит отыскать минимум среди всех элементов матрицы (листинг 47); вызов функции в виде min(A, [] , к) или [n, m]=min(A, [] , к) позволит направлять поиск, в частно­сти отыскать минимальные элементы и их положение в строках матри­цы А (листинг 48); и, наконец, функция min (А, В) сформирует матрицу (листинг 6. 49) из строк min (А) и min (В);

Листинг 47.

>> А=[1 2 0 -1; -2 1 -1 3;2 0 1 1]

А =

1 2 0 -1

-2 1 -1 3

2 0 1 1

>> min(А)%Минимальные элементы » %в столбцах матрицы А

ans =

-2 0 -1 -1

>> [n,m]=min(A)

n = %Минимумы в столбцах

-2 0 -1 -1

m = %номера их строк

2 3 2 1

>> min(min(А))%Наименьший элемент матрицы А

ans =

-2

Листинг 48.

>> min(A,[],1)%То же что и min(A), то есть формирует вектор-строку,

>> %каждый элемент которой равен минимальному в соответствующем >> %столбце матрицы А

ans =

-2 0 -1 -1

>> min(A,[],2)%Формирует вектор-столбец, каждый элемент которого,

>> %равен минимальному в соответствующей строке матрицы А

ans =

-1

-2

0

>> [n,m]-min(A,[],2)

n=%Минимумы по строкам

-1

-2

0

>> %и их положение в матрице, то есть номера столбцов,

>> %в которых они находятся

m =

4

1

2

>> min(A')%Дает те же значения, что и min(А,[],2),

>> %только в виде вектора-строки

ans =

-1 -2 0

Листинг 49.

>> А=[1 2;3 4];

>> В=[0 3;7 1];

>> min(A,B)

ans =

>> %Первая строка результирующей матрицы

>> %равна минимумам столбцов матрицы А, а вторая - матрицы В

0 2

3 1

■ max (А) - формирует вектор-строку, каждый элемент которой является наибольшим в соответствующем столбце матрицы А; действие функций [n, m]= max (A), max (max (A)), max (A, [], k),[n, m] = max(A, [], k), max (A, В) понятно из примеров листинга 50;

Листинг 50.

>> А=[1 2 0 -1;-2 1 -1 3;2 0 1 1];

>>mах(А)%Наибольшие элементы столбцов матрицы А

ans =

  1. 2 1 3

>> [n,m]=max(A) %n - максимумы по столбцам, m - их номера в строках

n =

2 2 1 3

m =

3 1 3 2

>> max(max(А))%Наибольший элемент матрицы А

ans =3

>> max(А,[],2) %Наибольшие элементы строк матрицы А

ans =

2

3

2

>>max(A')%To же что и mах(А,[],2), но в результате вектор-строка ans =

2 3 2

>> А=[1 2;3 4];

>> В=[0 3;7 1];

>> mах(А,В)

>>%Первая строка результирующей матрицы

>>%равна максимумам столбцов матрицы А, а вторая - матрицы В

ans =

1 3

7 4

■ mean (A, [k]) - формирует вектор-строку или вектор-столбец, в зависи­мости от значения к, каждый элемент которого является средним значе­нием элементов соответствующего столбца или строки матрицы А, если значение параметра к в конструкции отсутствует, то по умолчанию вы­числяются средние значения столбцов матрицы; среднее значение всех элементов матрицы вычисляет функция mean (mean (А) );

Листинг 51.

>> А=[1 2 0 -1;-2 1 -1 3;2 0 1 1];

>> mean(А)%Средние значения по столбцам

ans =

0.3333 1.0000 0 1.0000

>> mean{А,2]%Средние значения по строкам

ans =

0.5000

0.2500

1.0000

>> mean(mean(A))%Среднее всех элементов матрицы

ans =

0.5833

■ sort (A) - выдает матрицу того же размера, что и А, каждый столбец ц торой упорядочен по возрастанию;

Листинг 52.

>> А=[1 2 0 -1;-2 1 -1 3;2 0 1 1] ;

>> sort(А)%Матрица, каждый столбец которой упорядочен по возрастанию

ans =

-2 0 -1 -1

1 1 0 1

2 2 1 3

>> sort(А'}%Матрица, каждый столбец которой представляет собой » %упорядоченную по возрастанию строку исходной матрицы А ans =

-1 -2 0

0 -1 1

1 1 1.

2 3 2

>> -sort(-A) %Матрица, каждый столбец которой упорядочен по убыванию

ans =

2 2 1 3

1 1 0 1

-2 0 -1 -1

>> -sort(-A') %матрица, каждый столбец которой представляет собой

>> %упорядоченную по убыванию строку исходной матрицы А

ans =

2 3 2

1 1 1

0 -1 1

-1 -2 0

■ sqrtm(A)- относится к так называемым матричным функциям и возвра­щает матрицу X, для которой Х*Х=А;

Листинг 53.

>> А=[1 0 -3;0 1 2;-2 0 -1]

А =

1 0 -3

0 1 2

2 0 -1

>> X=sqrtm(A)

1.5302 -0.0000 -1.4186

-0.3535 1.0000 0.9457

0.9457 -0.0000 0.5845

>> Х*Х %Проверка Х*Х-А

ans =

1.0000 -0.0000 -3.0000

-0.0000 1.0000 2.0000

2.0000 -0.0000 -1.0000

>> C=sqrt(А}%Извлечение квадратного корня из каждого элемента матрицы А

С =

1.0000 0 0 + 1.732i

0 1.0000 1.4142

1.4142 0 0 + l.OOOOi

>> С*С

ans =

1.0000 + 2.4495i 0 -1.7321 + 1.73211

2.0000 1.0000 1.4142 + 1.41421

1.4142 + 1.41421 0 -1.0000 + 2.4495i

■ expm(A) и logm(А)-взаимообратные матричные функции, первая вычис­ляет матричную экспоненту еА, а вторая выполняет логарифмирование по основанию е;

Листинг 54.

>> A=[1 0 0;-1 2 0;2 1 -1];

А =

1 0 0

-1 2 0

2 1 -1

>> В=ехрm(А)

В =

2.7183 0 0

-4.6708 7.3891 0

1.1852 2.3404 0.3679

>> logm(B)

ans =

1.0000 0.0000 -0.0000

-1.0000 2.0000 -0.0000

2.0000 1.0000 -1.0000

  1. Функции, реализующие численные алгоритмы решения задач линейной алгебры:

det (А) - вычисляет определитель квадратной матрицы А;

Листинг 55.

>> А=[3 2;4 3];

>> det(А)%Определитель матрицы

ans =

1

■ trace (A)- вычисляет след матрицы А, то есть сумму элементов главной диагонали;

Листинг 56.

>> А=[1 2 3;4 -2 1;7 0 -1]

А =

1 2 3

4 -2 1

7 0 -1

>> trace(A}%След матрицы А

ans =

-2

>> sum(diag(A))%Сумма элементов главной диагонали, то же что и trace(A)

ans =

-2

>> sum(diag(A,-1)} %Сумма элементов первой диагонали (ниже главной)

ans =

4

>> sum(diag(A,2)) %Сумма элементов второй диагонали (выше главной)

ans =

3

>> trace(rot90{A)) %Сумма элементов побочной диагонали,

>> %получена как след матрицы А, развернутой на 90 градусов

ans =

8

■ norm(A [, р]) - возвращает различные виды норм матрицы А в зависи­мости от р; если аргумент р=1, 2, inf, fro не задан, то вычисляется вто­рая норма матрицы А;

Листинг 57.

>> А=[-1 2 0 ;2 1 -1 ;2 1 3];

>> norm (А,1)

ans =%Первая норма матрицы А

5

>> norm(A,2)%Вторая норма матрицы А

ans =

3.8042

» norm(A)%To же, что и norm(A,2)

ans =

>> norm{A,inf)%Бесконечная норма матрицы А

ans =

6

>> norm(A,'fro')%Евклидова норма матрицы А

ans =

5

■ cond(A[,p]) - возвращает число обусловленности матрицы А, осно­ванное на норме р;

Листинг 58.

>> А=[5 7 6 5; 7 10 8 7;6 8 10 9;5 7 9 10];

>> cond(A)%Число обусловленности матрицы

ans =

2.9841е+003

>> cond(A,2)%Число обусловленности для второй нормы, аналогично cond(M)

ans =

2.9841е+003

■ rcond(A) - вычисляет величину, обратную значению числа обусловлен­ности матрицы А относительно первой нормы; если полученная величи­на близка к единице, то матрица хорошо обусловлена, если к приближа­ется к нулю, то обусловлена плохо;

Листинг 59.

А=[5 7 6 5; 7 10 8 7;6 8 10 9;5 7 9 10];

>> rcond(A)

ans =

2.2282е-004

■ inv(A) - возвращает матрицу, обратную А;

Листинг 60.

>>А=[2 1 -5 1;1 -3 0 -6;0 2 -1 2;1 4 -7 6];

>> Р=inv(А}%Матрица, обратная А

Р =

1.3333 -0.6667 0.3333 -1.0000

-0.0741 0.2593 1.1481 -0.1111

0.3704 -0.2963 0.2593 -0.4444

0.2593 -0.4074 -0.5185 -0.1111

>> А*Р %Проверка А*Р-Е

ans =

1.0000 -0.0000 -0.0000 0.0000

0 1.0000 0.0000 0.0000

0.0000 -0.0000 1.0000 -0.0000

0.0000 -0.0000 -0.0000 1.0000

■ eig (A) - возвращает вектор собственных значений матрицы А; вызов функции в формате [М, D] = eig (А) даст матрицу М, столбцы которой – собственные векторы матрицы А, и диагональную матрицу D, содержащую собственные значения матрицы А; функция eig (А, В), где А и В - квадратные матрицы, выдает вектор обобщенных собственных значений;

Листинг 61.

>> А=[3 -2;-4 1]

>> eig(A)%Собственные значения матрицы А

ans =

5

-1

>> [M,D]=eig(A)

М = %Первый столбец - собственный вектор для 5,

второй - для -1

0.7071 0.4472

-0.7071 0.8944

D = %Собственные значения матрицы А

5 0

0 -1

>> %Проверка A*M=M*D

>> M*D

ans =

3.5355 -0.4472

-3.5355 -0.8944

>> А*М

ans =

3.5355 -0.4472

-3.5355 -0.8944

■ poly (A) - возвращает вектор-строку коэффициентов характеристическо­го полинома матрицы А;

Листинг 62.

>> А=[3 -2;-4 1];

>> poly(А)

ans =

1 -4 -5

■ linsolve(A, b) - возвращает решение системы линейных уравнений А* х= b, вызов в формате linsolve(A, b, options) позволяет задать метод решения уравнения; если задать функцию в виде [х, r]=linsolve(A,b) , то она вернет х - решение системы и r - ранг матрицы А;

Листинг 63.

>> A=[1 2 3; -2 -4 -6]

A=

  1. 2 3

-2 -4 -6

>> b=[5;6]

b=

5

6

>>x=linsolve(A,b)%Решение системы Ах=b

>>%Предупреждение: ранг меньше размерности!

Warning: Rank deficient, rank = 1, tol = 4.4686e-015.

X=

0

0

-0.4667

>> A*x %Найденное решение не верно, т.к. Ах не равно b

ans=

-1.4000

2.8000

>> [x,r]=linsolve(A,b)

X= %Решение системы

0

0

-0.4667

r=%Ранг матрицы A

1

>>%

>> А=[2 -1 1,-3 2 -5;1 3 -21;

>> Ь=[0;1;4];

>> x=linsolve(A,b)%Решение линейной системы

х =

0.4643

1.6786

0.7500

>> А*х %Решение верно

ans =

0.0000

1.0000

4.0000

■ rref (А) - осуществляет приведение матрицы А к треугольной форме, ис­пользуя метод исключения Гаусса;

Листинг 64.

>> A=[3 -2 1 5;6 -4 2 7;9 -6 3 12]

А=

3 -2 1 5

6 -4 2 7

9 -6 3 12

>> rref(A)

ans =

1.0000 -0.6667 0.3333 0

0 0 0 1.0000

0 0 0 0

■ chol (A) - возвращает разложение по Холецкому для положительно оп­ределенной симметрической матрицы А;

Листинг 65.

>> А=[10 1 1;2 10 1;2 2 10];

>> chol(А)%Разложение по Холецкому

ans -

3.1623 0.3162 0.3162

0 3.1464 0.2860

0 0 3.1334

>> А-[1 2;1 1];%Матрица не симметрическая

>> chol(A)

??? Error using --> chol Matrix must be positive definite.

>>%Матрица содержит отрицательные элементы

>> Z=[3,1,-1,2;г-5,1,3,-4;;2,0,1,-1;1,-5, 3,-3];

>> chol(Z)

??? Error using ==> chol

Matrix must be positive definite.

■ lu(А) – выполняет LU-разложение, функция [L, U, P] =lu(A) возвращает три матрицы: L - нижняя треугольная, U - верхняя треугольная и Р - мат­рица перестановок, причем P*A=L*U; функции lu (А) без параметров воз­вращает одну матрицу, которая, в свою очередь, является комбинацией матриц L и U;

Листинг 66.

>> А= [З -2 1; 5 6 -4; 2 7 9];

>> [L U, P]=lu(A)

>> %Нижняя треугольная матрица

L =

1.0000 0 0

0.6000 1.0000 0

0.4000 -0.8214 1.0000

>> %Верхняя треугольная матрица

U =

5.0000 6.0000 -4.0000

0 -5.6000 3.4000

0 0 13.3929

>> %Матрица перестановок

Р =

  1. 1 0

  2. 0 0 0 0 1

>> %Проверка: L*U-P*A

>> L*U ans -

5.0000 6.0000 -4.0000

3.0000 -2.0000 1.0000

2.0000 7.0000 9.0000

>> Р*А

ans =

5 6 -4

3 -2 1

2 7 9

>> %Комбинация из матриц L и U

>> lu(A)

ans =

5.0000 6.0000 -4.0000

0.6000 -5.6000 3.4000

0.4000 -0.8214 13.3929

>> %Выделение матрицы L

>> triu(lu(A))

ans =

5.0000 б.0000 -4.0000

0 -5.6000 3.4000

0 0 13.3929

» %Формирование матрицы U

>> U=tril(lu(A),-l)+eye(3)

U =

1.0000 0 0

0.6000 1.0000 0

0.4000 -0.8214 1.0000

■ qr (А)-выполняет QR-разложение, команда [Q, R, P]=qr(A) возвраща­ет три матрицы: ортогональную Q, верхнюю треугольную R и матрицу пе­рестановок Р, причем A*P=Q*R;

Листинг 67

>> А=[3 -2 1;5 6 -4; 2 7 9];

>> [Q, R,P]=qr(A)

Q =

-0.1010 0.2745 -0.9563

0.4041 -0.8670 -0.2915

-0.9091 -0.4158 -0.0233

R =

-9.8995 -3.7376 -0.1010

0 -8.6620 -4.3434

0 0 -4.3732

Р =

0 0 1

0 1 0

1 0 0

>> A*P-Q*R

ans =

1.0е-014 *

0.0999 0.2220 0.0888

-0.0444 -0.0888 -0.1776

0 0 -0.0444

■ svd (А) - возвращает вектор сингулярных чисел матрицы, при использова­нии в формате [U, S, V] = svd(A) выполняет сингулярное разложение матрицы А; выдает три матрицы: U - сформирована из ортонормирован-ных собственных векторов, отвечающих наибольшим собственным значе­ниям матрицы А * АT, V - состоит из ортонормированных собственных век­торов матрицы А * АT, S - диагональная матрица из сингулярных чисел (неотрицательных значений квадратных корней из собственных значений матрицы А * АT), матрицы удовлетворяют условию A= U* S*VT.

Листинг 68.

>> А=[3 -2 1;5 6 -4; 2 7 9];

>> svd(А)

ans =

11.7553

8.5347

3.7377

>> U,S,V]=svd(A)

U =

0.0058 0.0207 0.9998

0.2529 -0.9673 0.0186

0.9675 0.2527 -0.0108

S =

11.7553 0 0

0 8.5347 0

0 0 3.7377

V =

0.2736 -0.5002 0.8215

0.7042 -0.4776 -0.5253

0.6551 0.7223 0.2215

Описанные здесь векторные и матричные функции MATLAB дозволяют решать широкий круг задач линейной алгебры.