- •Задание:
- •1) Сложение и вычитание допускается только для матриц одинакового размера.
- •3) Возводить в степень можно только квадратные матрицы.
- •7) Умножение матриц некоммутативно: a*b≠b*a.
- •8) Дистрибутивность умножения относительно сложения:
- •9) Свойства операции транспонирования матриц:
- •10) Для квадратных матриц существует единичная матрица (аналог единицы для операции умножения чисел) такая, что умножение любой матрицы на неё не влияет на результат, а именно:
- •Задание:
- •1) Написать функцию реализующую умножение двух матриц по определению
- •2) Написать функцию реализующую метод Крамера для системы произвольной размерности
- •3) Написать функцию реализующую метод Гаусса для системы произвольной размерности
- •4) Написать функцию реализующую вычисление обратной матрицы, используя уже написанную
Задание:
1) Написать функцию реализующую умножение двух матриц по определению
Заголовок функции такого вида:
function C = matrix_multiply(A,B)
function C=matrix_multiply(A,B)
n=size(A);
C=zeros(size(A));
for i= 1:1:n
for j=1:1:n
C(i,j)=A(i,j)*B(i,j);
end
end
2) Написать функцию реализующую метод Крамера для системы произвольной размерности
Заголовок функции такого вида:
function X = CramersMethod(A,B)
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 = GaussMethod(A,B)
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)
Заголовок функции такого вида:
function X = GaussInverse(A,B)
function C=GaussInverse(A,B)
n=size(A,2);
d=Gauss(A,B);
d=transpose(d);
C=zeros(size(A));
for i= 1:n
C(i,:)=A(i,:)*d(i,1);
end