Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1 семестр_1 / ЛА / Модуль 4 / МП-12_Николаев_Олег_lab1_m4

.docx
Скачиваний:
16
Добавлен:
05.06.2015
Размер:
29.6 Кб
Скачать

Отчет к упражнению 1

Проверить на примерах 10 свойств операций над матрицами

1) Сложение и вычитание допускается только для матриц одинакового размера.

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

B=[8 5 3;4 7 9;9 3 1];

C=A+B

C =

9 7 6

8 12 15

12 10 9

C=A-B

C =

-7 -3 0

0 -2 -3

-6 4 7

B=[8 5 3;4 7 9];

C=A+B

??? Error using ==> plus

Matrix dimensions must agree.

Error in ==> Untitled at 7

C=A+B

2) Существует нулевая матрица

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

O=zeros(size(A));

A+O

ans =

1 2 3

4 5 6

3 7 8

3) Возводить в степень можно только квадратные матрицы.

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

B=A^3

B =

267 474 564

612 1089 1296

788 1400 1667

4) Ассоциативность сложения:

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

B=[8 5 3;4 7 9;9 3 1];

C=[3 4 5;2 9 8;1 3 5];

A+(B+C)

ans =

12 11 11

10 21 23

13 13 14

(A+B)+C

ans =

12 11 11

10 21 23

13 13 14

5) Коммутативность сложения:

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

B=[8 5 3;4 7 9;9 3 1];

A+B

ans =

9 7 6

8 12 15

12 10 9

B+A

ans =

9 7 6

8 12 15

12 10 9

6) Ассоциативность умножения:

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

B=[8 5 3;4 7 9;9 3 1];

C=[3 4 5;2 9 8;1 3 5];

(A*B)*C

ans =

209 496 559

527 1270 1429

628 1528 1724

A*(B*C)

ans =

209 496 559

527 1270 1429

628 1528 1724

7) Вообще говоря, умножение матриц некоммутативно:

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

B=[8 5 3;4 7 9;9 3 1];

A*B

ans =

43 28 24

106 73 63

124 88 80

B*A

ans =

37 62 78

59 106 126

24 40 53

8) Дистрибутивность умножения относительно сложения:

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

B=[8 5 3;4 7 9;9 3 1];

C=[3 4 5;2 9 8;1 3 5];

A*(B+C)

ans =

53 59 60

134 152 153

155 187 191

A*B+A*C

ans =

53 59 60

134 152 153

155 187 191

(B+C)*A

ans =

71 123 151

121 211 250

52 92 114

B*A+C*A

ans =

71 123 151

121 211 250

52 92 114

9) Свойства операции транспонирования матриц:

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

B=[8 5 3;4 7 9;9 3 1];

(A')'

ans =

1 2 3

4 5 6

3 7 8

(A*B).'

ans =

43 106 124

28 73 88

24 63 80

B.'*A.'

ans =

43 106 124

28 73 88

24 63 80

(inv(A))'

ans =

-0.2222 -1.5556 1.4444

0.5556 -0.1111 -0.1111

-0.3333 0.6667 -0.3333

inv(A')

ans =

-0.2222 -1.5556 1.4444

0.5556 -0.1111 -0.1111

-0.3333 0.6667 -0.3333

(A+B)'

ans =

9 8 12

7 12 10

6 15 9

A'+B'

ans =

9 8 12

7 12 10

6 15 9

det(A)

ans =

9

det(A')

ans =

9

10) Для квадратных матриц существует единичная матрица

E=eye(size(A));

A*E

ans =

1 2 3

4 5 6

3 7 8

E*A

ans =

1 2 3

4 5 6

3 7 8

Отчет к упражнению 2

Написать функцию для вычисления определителя матрицы до 3-го порядка через подстановки

Напишем вспомогательные функции:

%функция находит все подстановки - перестановки чисел от 1 до N

function v=comb(k,n,m)

global v;

if(k==n)

v=[v;m];

else

for i=k+1:1:n

c=m(k+1);m(k+1)=m(i);m(i)=c;

comb(k+1,n,m);

end

end

end

%функция находит модуль подстановки

function s=absn(m,n)

s=0;

for i=2:1:n

for j=1:1:i-1

if(m(i)<m(j))

s=s+1;

end

end

end

if(mod(s,2)==0)

s=1;

else

s=-1;

end

Сама функция, рассчитывающая определитель матрицы:

%функция находит определитель матрицы при помощи подстановок

function s=det1(a)

if(max(size(a))~=min(size(a)))

s='Matrix must be square';

return

end

n=length(a);

for i=1:1:n

m(i)=i;

end

v=comb(0,n,m);

l=length(v);

s=sym('0');

for i=1:1:l

p=1;

for j=1:1:n

p=p*a(v(i,j),j);

end

s=s+absn(v(i,:),n)*p;

end

end

Проверим функцию:

syms a11 a12 a13 a21 a22 a23 a31 a32 a33;

a=[a11 a12 a13;a21 a22 a23;a31 a32 a33];

det1(a)

ans =

a11*a22*a33-a11*a32*a23-a21*a12*a33+a21*a32*a13+a31*a12*a23-a31*a22*a13

a=[a11 a12;a21 a22];

det1(a)

ans =

a11*a22-a21*a12

a=[a11];

det1(a)

ans =

a11

Отчет к упражнению 3

Проверить на примерах 9 свойств определителя

1) При добавлении к любой строке (столбцу) линейной комбинации других строк (столбцов) определитель не изменится.

a=[1 2 3;2 8 4;3 5 9];

det(a)

ans =

-2

a(1,:)=a(1,:)+a(3,:)

a =

4 7 12

2 8 4

3 5 9

det(a)

ans =

-2

2) Если две строки (столбца) матрицы совпадают, то её определитель равен нулю.

a=[1 2 3;2 8 4;3 5 9];

a(1,:)=a(3,:)

a =

3 5 9

2 8 4

3 5 9

det(a)

ans =

0

3) Если две (или несколько) строки (столбца) матрицы линейно зависимы, то её определитель равен нулю.

a=[1 2 3;2 8 4;3 5 9];

a(1,:)=-4*a(3,:)

a =

-12 -20 -36

2 8 4

3 5 9

det(a)

ans =

0

4) Если переставить две строки (столбца) матрицы, то её определитель умножается на (-1).

a=[1 2 3;2 8 4;3 5 9];

det(a)

ans =

-2

a=[3 5 9;2 8 4;1 2 3];

det(a)

ans =

2

5) Общий множитель элементов какого-либо ряда определителя можно вынести за знак определителя.

a=[1 2 3;2 8 4;3 5 9];

det(a)

ans =

-2

a=[1 2 3;1 4 2;3 5 9];

2*det(a)

ans =

-2

6) Если хотя бы одна строка (столбец) матрицы нулевая, то определитель равен нулю.

a=[1 2 3;0 0 0;3 5 9];

det(a)

ans =

0

7) Сумма произведений всех элементов любой строки на их алгебраические дополнения равна определителю.

function d=dop(i,j,a)

b=a;

b(i,:)=[];b(:,j)=[];

d=(-1)^(i+j)*det(b);

end

a=[1 2 3;2 8 4;3 5 9];

a(3,1)*dop(3,1,a)+a(3,2)*dop(3,2,a)+a(3,3)*dop(3,3,a)

ans =

-2

det(a)

ans =

-2

8) Сумма произведений всех элементов любого ряда на алгебраические дополнения соответствующих элементов параллельного ряда равна нулю.

a=[1 2 3;2 8 4;3 5 9];

a(1,1)*dop(3,1,a)+a(1,2)*dop(3,2,a)+a(1,3)*dop(3,3,a)

ans =

0

9) Определитель произведения квадратных матриц одинакового порядка равен произведению их определителей

a=[1 2 3;2 8 4;3 5 9];

b=[3 7 6;8 3 9;1 3 1];

det(a*b)

ans =

-122

det(a)*det(b)

ans =

-122

Отчет к упражнению 4

Реализовать рекурсивное вычисление факториала

function n=fact(k)

if k==0

n=1;

else

n=k*fact(k-1);

end

Отчет к упражнению 5

Реализовать рекурсивное вычисление определителя матрицы произвольного порядка через разложение по строке (столбцу)

function d=det2(a,i)

if(max(size(a))~=min(size(a)))

d='Matrix must be square';

return

end

n=length(a);

if(n==1)

d=a(1);

return

else

d=0;

for j=1:1:n

b=a;

b(i,:)=[];b(:,j)=[];

m=det2(b,1);

d=d+(-1)^(i+j)*a(i,j)*m;

end

return

end

end

a=[1 2 3;2 8 4;3 5 9];

det2(a,2)

ans =

-2

Соседние файлы в папке Модуль 4