
1 семестр / Линейная Алгебра / 23_Кучеренко Антон_Модуль4
.docx1) Написать функцию реализующую умножение двух матриц по определению
>> A=[1 2 3;1 0 1;5 4 3]
A =
1 2 3
1 0 1
5 4 3
>> B=[6 5 7;5 3 0;7 7 7]
B =
6 5 7
5 3 0
7 7 7
>>matrix_multiply(A,B)
ans =
37 32 28
13 12 14
71 58 56
function C=matrix_multiply(A,B)
n=size(A);
C=zeros(size(A));
for i= 1:1:n;
for j=1:1:n;
P=0;
for k=1:1:n;
P=P+A(i,k)*B(k,j);
end
C(i,j)=P;
end
end
2) Написать функцию реализующую метод Крамера для системы произвольной размерности
function X=CramersMethod(A,B)
n=size(A);
dx=zeros(size(A));
X=zeros(size(B));
d=det(A);
for j = 1:1:n
for i=1:1:n
if j==1
c=[B A(:,j+1)];
elseif j~=1
c=[A(:,1) B];
end
dx(j)=det(c);
end
X(j)=X(j)+dx(j)/d;
end
3) Написать функцию реализующую метод Гаусса для системы произвольной размерности
function x=Gauss(A,B)
n = size(A);
C = [A(:,1:n(1,2)) B(:,1)];
m = size(C);
for j = 1:n(1,2)-1
for k = j+1:n(1,1)
C(k,:) = C(k,:)-C(j,:).*C(k,j)./C(j,j);
end;
end;
for t = m(1,2)-1:-1:2
for l = t-1:-1:1
C(l,:) = C(l,:)-C(t,:).*C(l,t)./C(t,t);
end;
end;
for i = 1:n(1,1)
k = 0;
for j = 1:m(1,2)-1
k = k+1;
end;
if k == m(1,2) && C(i,j+1)~=0
disp('Решений нет');
end;
k=0;
for j = 1:m(1,2)
if C(i,j) == 0
k = k+1;
end;
if k == m(1,2)
disp('Бесконечно много решений');
end;
end;
end;
for i = 1:n(1,1)
for j = i:i
x(j) = (C(i,m(1,2)))/C(i,j);
end;
end;
end
4) Написать функцию реализующую вычисление обратной матрицы, используя уже написанную функцию из пункта 3)