Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЧМ_6

.docx
Скачиваний:
3
Добавлен:
28.06.2022
Размер:
249.42 Кб
Скачать

Никитиной Софии

Лабораторная работа №6

A=rand(3)

f=rand(3,1)

d=det(A)

if (det(A)==0)

disp("Матрица вырожденная: определитель равен 0.")

else

disp("Матрица не вырожденная: определитель не равен 0.")

end

disp("По формуле X=A^(-1)*f:")

X=inv(A)*f

disp("По Крамеру:")

A1 = A;

A2 = A;

A3 = A;

A1(:,1) = f;

A2(:,2) = f;

A3(:,3) = f;

x1 = det(A1) / det(A);

x2 = det(A2) / det(A);

x3 = det(A3) / det(A);

X=[x1;x2;x3]

A =

0.8322 0.8639 0.1080

0.6174 0.0977 0.5170

0.5201 0.9081 0.1432

f =

0.5594

0.0046

0.7667

d =

-0.1680

Матрица не вырожденная определитель не равен 0.

По формуле X=A^(-1)*f:

X =

-0.4727

1.0561

0.3737

По Крамеру:

X =

-0.4727

1.0561

0.3737

Берём ту же квадратную матрицу, т.к. оператор приводит её к треугольному виду.

n=4;

A=randn(n);

f=randn(n,1);

B=[A,f]

V=abs(A);

[m,i]=max(V(:,1))% i - строка с max=m элементом

E=B(i,:);

B(i,:)=B(1,:);

B(1,:)=E;

B

k=2;

for i=2:n

u=B(i,1)./B(1,1);

B(i,:)=B(i,:)-B(1,:).*u;

end

B

for i=3:n

u=B(i,2)./B(2,2);

B(i,:)=B(i,:)-B(2,:).*u;

end

B

for i=4:n

u=B(i,3)./B(3,3);

B(i,:)=B(i,:)-B(3,:).*u;

end

B

x=B(n,n+1)/B(n,n)

xx=(B(n-1,n+1)-B(n-1,n).*x)./B(n-1,n-1)

xxx=(B(n-2,n+1)-B(n-2,n).*x-B(n-2,n-1).*xx)./B(n-2,n-2)

xxxx=(B(n-3,n+1)-B(n-3,n).*x-B(n-3,n-1).*xx-B(n-3,n-2).*xxx)./B(n-3,n-3)

disp("По Гауссу:")

X=[xxxx;xxx;xx;x]

disp("Проверка:")

X=A\f

По Гауссу:

X =

-0.2218

-0.2620

0.0422

0.1170

Проверка:

X =

-0.2218

-0.2620

0.0422

0.1170

A=randn(4)

f=randn(4,1)

rref([A f])

X = A\f

ans =

1.0000 0 0 0 -0.3771

0 1.0000 0 0 -1.5774

0 0 1.0000 0 0.7957

0 0 0 1.0000 0.0764

X =

-0.3771

-1.5774

0.7957

0.0764

n=20;

A=randn(n);

X=randn(n,1);

disp("Число обусловленности")

disp("До:")

c=cond(A)

A(:,1)=1000;

disp("После:")

c_=cond(A)

f=A*X;

disp("Изначальное X:")

X

d=det(A);

disp("По формуле X=A^(-1)*f:")

X=inv(A)*f

disp("По Крамеру:")

for u=1:n

A_=A;

A_(:,u) = f;

X(u) = det(A_)./ det(A);

end

X

B = [A,f];

for j=1:n-1

[m,p]=max(B(j:n,j));

buf=B(p+j-1,:);

B(p+j-1,:)=B(j,:);

B(j,:) = buf;

for i=n:-1:j+1

B(i,:) = B(i,:)-B(i-1,:)*(B(i,j)/B(i-1,j));

end

end

for i = 1:n-1

for j = i+1:1:n

B(i,:) = B(i,:)-B(j,:)*B(i,j)/B(j,j);

end

end

for i = 1:n

B(i,:) = B(i,:)/B(i,i);

end

disp("По Гауссу с выбором главного элемента:")

x = B(:,21)

disp("По Гауссу без выбора главного элемента:")

X=A\f

Число обусловленности

До:

c = 36.3825

После:

c_ = 1.4390e+04

Изначальное X:

X =

1.4268

-0.2609

-0.6328

0.1524

-0.4703

1.2915

-0.5982

-0.0758

0.3290

0.2039

-0.6814

-0.0115

0.3792

-1.2556

-1.0184

-0.0791

0.8479

-0.2451

1.5698

2.1348

По формуле X=A^(-1)*f:

X =

1.4268

-0.2609

-0.6328

0.1524

-0.4703

1.2915

-0.5982

-0.0758

0.3290

0.2039

-0.6814

-0.0115

0.3792

-1.2556

-1.0184

-0.0791

0.8479

-0.2451

1.5698

2.1348

По Крамеру:

X =

1.4268

-0.2609

-0.6328

0.1524

-0.4703

1.2915

-0.5982

-0.0758

0.3290

0.2039

-0.6814

-0.0115

0.3792

-1.2556

-1.0184

-0.0791

0.8479

-0.2451

1.5698

2.1348

По Гауссу с выбором главного элемента:

x =

1.4268

-0.2609

-0.6328

0.1524

-0.4703

1.2915

-0.5982

-0.0758

0.3290

0.2039

-0.6814

-0.0115

0.3792

-1.2556

-1.0184

-0.0791

0.8479

-0.2451

1.5698

2.1348

По Гауссу без выбора главного элемента:

X =

1.4268

-0.2609

-0.6328

0.1524

-0.4703

1.2915

-0.5982

-0.0758

0.3290

0.2039

-0.6814

-0.0115

0.3792

-1.2556

-1.0184

-0.0791

0.8479

-0.2451

1.5698

2.1348

Все методы решения СЛАУ можно разбить на два класса: прямые и итерационные. Логично предположить, что прямые добиваются результата за конечное число действий, а итерационные лишь приближаются к нему, поэтому прямые методы имеют наиболее точное решение.

Соседние файлы в предмете Численные методы