
- •Лабораторная работа №5 Точные и численные решения систем линейных алгебраических уравнений
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3. Решение системы линейных алгебраических уравнений методом Гаусса.
- •Упражнение 4.
- •Упражнение 5.
- •Упраженение 6.
- •Упражнение 7.
- •Упражнение 8.
- •Упражнение 9.
- •Упражнение 10.
- •Упражнение 11.
Лабораторная работа №5 Ярослав Ермилов
(
Лабораторная работа №5 Точные и численные решения систем линейных алгебраических уравнений
Работу выполнил: Ермилов Ярослав (МП-14)
Упражнение 1.
Подумайте, как наилучшим образом выполнить следующие действия над матрицами:
перестановку строк: например, можно поменять местами m-ю и n-ю строки матрицы A следующей последовательностью команд:
умножение n-й строки на число b, например,
сложение k-й строки, умноженной на число c, со строкой m и размещение в ней результата, например,
Сгенерируйте случайную квадратную матрицу A порядка 5 (см. help rand) и выполните перечисленные выше команды.
>> m = 1; n = 2; b = 3; c = 4; k = 5;
>> A = rand(5, 5)
A =
0.8147 0.0975 0.1576 0.1419 0.6557
0.9058 0.2785 0.9706 0.4218 0.0357
0.1270 0.5469 0.9572 0.9157 0.8491
0.9134 0.9575 0.4854 0.7922 0.9340
0.6324 0.9649 0.8003 0.9595 0.6787
>> % Меняем местами строки
>> B = A(m, :); A(m, :) = A(n, :); A(n, :) = B;
>> A
A =
0.9058 0.2785 0.9706 0.4218 0.0357
0.8147 0.0975 0.1576 0.1419 0.6557
0.1270 0.5469 0.9572 0.9157 0.8491
0.9134 0.9575 0.4854 0.7922 0.9340
0.6324 0.9649 0.8003 0.9595 0.6787
>> % Умножение строки на число
>> A(n, :) = b*A(n, :)
A =
0.9058 0.2785 0.9706 0.4218 0.0357
2.4442 0.2926 0.4728 0.4257 1.9672
0.1270 0.5469 0.9572 0.9157 0.8491
0.9134 0.9575 0.4854 0.7922 0.9340
0.6324 0.9649 0.8003 0.9595 0.6787
>> % Сложение k-й строки, умноженной на число c, со строкой m
>> A(m, :) = c*A(k, :)+A(m, :)
A =
3.4352 4.1381 4.1717 4.2597 2.7507
2.4442 0.2926 0.4728 0.4257 1.9672
0.1270 0.5469 0.9572 0.9157 0.8491
0.9134 0.9575 0.4854 0.7922 0.9340
0.6324 0.9649 0.8003 0.9595 0.6787
Упражнение 2.
Создать м-файл, позволяющий элементарными преобразованиями находить обратную матрицу для матриц произвольной размерности.В тетради и с помощью данной программы найти обратные матрицы для матриц:
,
,
.
Выполнить проверку ()
Файл lab_2_1_u_2.m
function [ans] = lab_2_1_u_2(A)
s = size(A);
if (s(1) ~= s(2))
disp('Матрица должна быть квадратной');
elseif (det(A) == 0)
disp('Определитель матрицы равен нулю');
else
n = s(1);
ans = eye(n);
for i = [1 : n]
for j = [1 : n]
if A(j, j) == 0
if j == n
k = 1;
else
k = j+1;
end
c = A(j, :);
A(j, :) = A(k, :);
A(k, :) = c;
c = ans(j, :);
ans(j, :) = ans(k, :);
ans(k, :) = c;
end
end
end
for j = [1 : n]
if (A(j, j) == 0)
for i = [1 : n]
for j = [1 : n]
if A(j, j) == 0
if j == n
k = 1;
else
k = j+1;
end
c = A(j, :);
A(j, :) = A(k, :);
A(k, :) = c;
c = ans(j, :);
ans(j, :) = ans(k, :);
ans(k, :) = c;
end
end
end
end
ans(j, :) = ans(j, :)/(A(j, j));
A(j, :) = A(j, :)/(A(j, j));
for i = [j+1 : n]
if j ~= n
ans(i, :) = ans(i, :)+ans(j, :)*(-A(i, j));
A(i, :) = A(i, :)+A(j, :)*(-A(i, j));
end
end
end
for j=[1 : n-1]
for i = [j+1 : n]
ans(j, :) = ans(j, :)+ans(i, :)*(-A(j, i));
A(j, :) = A(j, :)+A(i, :)*(-A(j, i));
end
end
end
end
>> L = [1, 0, 0; 1, 1, 0; 2, 3, 1];
>> U = [1, 2, 3, 4; 0, 5, 6, 7; 0, 0, 8, 9; 0, 0, 0, 10];
>> P = [1, 0, 0, 0, 0; 0, 0, 0, 1, 0; 0, 0, 1, 0, 0; 0, 1, 0, 0, 0; 0, 0, 0, 0, 1];
>> lab_2_1_u_2(L)
ans =
1 0 0
-1 1 0
1 -3 1
>> L*ans
ans =
1 0 0
0 1 0
0 0 1
>> lab_2_1_u_2(U)
ans =
1 -2/5 -3/40 -21/400
0 1/5 -3/20 -1/200
0 0 1/8 -9/80
0 0 0 1/10
>> U*ans
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> lab_2_1_u_2(P)
ans =
1 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
0 0 0 0 1
>> P*ans
ans =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1