Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-й курс / МатЛаб - Алгебра / МП_14_Ермилов_Ярослав_лаб_2_1 (+).docx
Скачиваний:
92
Добавлен:
18.12.2017
Размер:
104.03 Кб
Скачать

Лабораторная работа №5 Ярослав Ермилов (МП-14)

Лабораторная работа №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