- •Задание:
- •1) Сложение и вычитание допускается только для матриц одинакового размера.
- •3) Возводить в степень можно только квадратные матрицы.
- •7) Умножение матриц некоммутативно: a*b≠b*a.
- •8) Дистрибутивность умножения относительно сложения:
- •9) Свойства операции транспонирования матриц:
- •10) Для квадратных матриц существует единичная матрица (аналог единицы для операции умножения чисел) такая, что умножение любой матрицы на неё не влияет на результат, а именно:
- •Задание:
- •1) Написать функцию реализующую умножение двух матриц по определению
- •2) Написать функцию реализующую метод Крамера для системы произвольной размерности
- •3) Написать функцию реализующую метод Гаусса для системы произвольной размерности
- •4) Написать функцию реализующую вычисление обратной матрицы, используя уже написанную
10) Для квадратных матриц существует единичная матрица (аналог единицы для операции умножения чисел) такая, что умножение любой матрицы на неё не влияет на результат, а именно:
A*E=E*A =A.
>> a
a =
4 2
1 2
>> e=eye(2)
e =
1 0
0 1
>> a*e
ans =
4 2
1 2
>> e*a
ans =
4 2
1 2
2.Написать функцию для вычисления определителя матрицы до 3-го порядка через подстановки.
{function f=fun(a,n)
k=0;b=0;
for i = 1:1:n-1
for j = 1:1:n-1
if a(i,j)>a(i,j+1)
t=a(i,j);
a(i,j)=a(i,j-1);
a(i,j-1)=t;
k=k+1;
end
if i==j
b=b+a(i,j);
end
end
end
d=(-1)^k*b}
function d=fun(a)
n= size(a);
if n==1
d=a(1,1);
elseif n==2
d=a(1,1)*a(2,2)-a(2,1)*a(1,2);
elseif n==3
d=a(1,1)*a(2,2)*a(3,3)+a(1,2)*a(2,3)*a(3,1)+...
a(2,1)*a(1,3)*a(3,2)-a(1,3)*a(2,2)*a(3,1)-...
a(1,1)*a(2,3)*a(3,2)-a(2,1)*a(1,2)*a(3,3);
else
disp('Введите матрицу размерности не меньше 3')
end
3. Проверить на примерах 9 свойств определителя.
Свойства определителя
1) При добавлении к любой строке (столбцу) линейной комбинации других строк
(столбцов) определитель не изменится.
2) Если две строки (столбца) матрицы совпадают, то её определитель равен нулю.
a=[1,1,1;1,1,1;2,3,2]
a =
1 1 1
1 1 1
2 3 2
>> det(a)
ans =
0
3) Если две (или несколько) строки (столбца) матрицы линейно зависимы, то её
определитель равен нулю.
4) Если переставить две строки (столбца) матрицы, то её определитель умножается на
(-1).
>> a=[1,1,1;2,3,2;1,2,3]
a =
1 1 1
2 3 2
1 2 3
>> det(a)
ans =
2
>> a=[1,1,1;1,2,3;2,3,2]
a =
1 1 1
1 2 3
2 3 2
>> det(a)
ans =
-2
5) Общий множитель элементов какого-либо ряда определителя можно вынести за
знак определителя.
>> a=[2 4 6;4 6 8;6 8 6]
a =
2 4 6
4 6 8
6 8 6
>> isequal(2*det([1,4,6;2,6,8;3,8,6]),det(a))
ans =
1
6) Если хотя бы одна строка (столбец) матрицы нулевая, то определитель равен нулю.
>> a=[0,0,0;1,1,1;2,2,2]
a =
0 0 0
1 1 1
2 2 2
>> det(a)
ans =
0
7) Сумма произведений всех элементов любой строки на их алгебраические дополнения
равна определителю.
8) Сумма произведений всех элементов любого ряда на алгебраические дополнения
соответствующих элементов параллельного ряда равна нулю.
9) Определитель произведения квадратных матриц одинакового порядка равен
произведению их определителей
4. Реализовать рекурсивное вычисление факториала.
function n=fact(k)
if k==0
n=1;
else
n=k*fact(k-1);
end
5. Реализовать рекурсивное вычисление определителя матрицы произвольного порядка через разложение по строке (столбцу).
function f=opr(A)
n=length(A);
if n==2
f=A(1,1)*A(2,2)-A(1,2)*A(2,1);
else
for j=1:1:n
if j==1
f=A(1,j)*opr(A(j+1:n,j+1:n));
elseif j==n
f=A(1,j)*opr(A(j-1:n,j-1:n));
else
f=A(1,j)*opr([A(j+1:n,j+1:n);A(j-1:n,j-1:n)]);
end
end
end
Из файла Labsystems.