ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΡ€ΡΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

НахоТдСниС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ НахоТдСниС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ модификациями ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Гаусса ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Гаусса для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ БЛАУ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… n+1 мСняСтся Π½Π° 2n. Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ алгСбраичСский ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ гаусс Π’Ρ‹Π²ΠΎΠ΄ Π’ Π½Π°ΡˆΠ΅ΠΌ случаС Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ оказался ΠΌΠ΅Ρ‚ΠΎΠ΄ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅, Π΅Π³ΠΎ нСвязка составила. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅. На ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΡΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования ΠΈ Π½Π°ΡƒΠΊΠΈ, ΠΌΠΎΠ»ΠΎΠ΄Π΅ΠΆΠΈ ΠΈ ΡΠΏΠΎΡ€Ρ‚Π° Π£ΠΊΡ€Π°ΠΈΠ½Ρ‹ Π₯Π°Ρ€ΡŒΠΊΠΎΠ²ΡΠΊΠΈΠΉ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ унивСрситСт ΠΈΠΌΠ΅Π½ΠΈ Π’. Н. ΠšΠ°Ρ€Π°Π·ΠΈΠ½Π° Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° № 2

ΠŸΡ€ΡΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°:

студСнтка Π³Ρ€ΡƒΠΏΠΏΡ‹ МП-31

ΠšΠ°Π»ΡŒΠ½ΠΈΡ†ΠΊΠ°Ρ Π‘.М.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»:

Π΄ΠΎΡ†. Π‘ΠΊΠΎΡ€ΠΈΠΊ Π’.А.

Π₯Π°Ρ€ΡŒΠΊΠΎΠ² 2014

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

I. Найти Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ах=b, Π½Π°ΠΉΡ‚ΠΈ А-1, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ det A.

1. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅.

2. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² ΡΡ‚ΠΎΠ»Π±Ρ†Π΅.

3. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅. На ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ вывСсти ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ A, Π²Π΅ΠΊΡ‚ΠΎΡ€ b, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ x, нСвязку, det A, А-1. Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

II. Найти Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ах=b, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ det A.

1. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠΠ°ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ вывСсти ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ A, Π²Π΅ΠΊΡ‚ΠΎΡ€ b, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ x, нСвязку, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ det A. Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ № 4

А =, b =

ΠœΠ΅Ρ‚ΠΎΠ΄ Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ Π’Π΅ΠΎΡ€Π΅ΠΌΠ°.

ΠŸΡƒΡΡ‚ΡŒ

Π’ΠΎΠ³Π΄Π°, А ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌΠ° СдинствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² Π²ΠΈΠ΄Π΅ Π³Π΄Π΅

— Π½ΠΈΠΆΠ½Π΅Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ,

— Π²Π΅Ρ€Ρ…Π½Π΅Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ;

.

ΠŸΡ€ΠΈ этом Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сводится ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π΄Π²ΡƒΡ… систСм

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

#include «stdafx.h»

#include

#include

#include

using namespace std;

const int n = 4;

int main ()

{

int i = 0, j = 0, k = 0, m = 0;

double A[n][n], B[n][n], C[n][n], f[n], x[n], y[n], r[n], Ax[n], max = -1;

cout << «Our matrix A is: «<< endl;

for (i = 0; i

{

for (j = 0; j

{

A[0][0] = 0.11;

A[0][1] = -0.17;

A[0][2] = 0.72;

A[0][3] = -0.34;

A[1][0] = 0.81;

A[1][1] = 0.12;

A[1][2] = -0.91;

A[1][3] = 0.17;

A[2][0] = 0.17;

A[2][1] = -0.18;

A[2][2] = 1;

A[2][3] = 0.28;

A[3][0] = 0.13;

A[3][1] = 0.17;

A[3][2] = -0.99;

A[3][3] = 0.35;

B[i][j] = 0;

C[i][j] = 0;

x[i] = 0;

y[i] = 0;

printf («%.4f», A[i][j], ««);

}

cout << endl;

}

cout << «Our string f is: «<< endl;

for (int i = 0; i

{

f[0] = 0.17;

f[1] = 1;

f[2] = 0.21;

f[3] = 2.71;

printf («%.0f», f[i], ««);

}

cout << endl;

for (int i = 0; i < n; i++)

{

for (int j = i; j < n; j++)

{

double s = 0;

for (int k = 0; k < i; k++)

s += B[j][k] * C[k][i];

B[j][i] = A[j][i] - s;

s = 0;

for (int k = 0; k < i; k++)

s += B[i][k] * C[k][j];

C[i][j] = (A[i][j] - s) / B[i][i];

}

}

cout << «Our matrix B is: «<< endl;

for (int i = 0; i

{

for (int j = 0; j

{

printf («%.4f», B[i][j], ««);

}

cout << endl;

}

cout << «Our matrix C is: «<< endl;

for (int i = 0; i

{

for (int j = i; j

{

printf («%.4f», C[i][j], ««);

}

cout << endl;

}

for (int i = 0; i < n; i++)

{

double s = 0;

for (int k = 0; k < i; k++)

s += B[i][k] * y[k];

y[i] = (f[i] - s) / B[i][i];

}

for (int i = n — 1; i >= 0; i—)

{

double s = 0;

for (int k = i + 1; k < n; k++)

s += C[i][k] * x[k];

x[i] = y[i] - s;

}

cout << «Vector x» << endl;

for (int i = 0; i

{

cout << x[i] << ««;

}

cout << endl;

for (int i = 0; i

{

double s = 0;

for (int j = 0; j

{

s += A[i][j] * x[j];

}

Ax[i] = s;

r[i] = Ax[i] - f[i];

}

cout << «Nevazka» << endl;

for (int i = 0; i

{

printf («%1.18fn», r[i]);

}

max = 0;

for (int i = 0; i

{

if (max< fabs (r[i]))

{

max = fabs (r[i]);

}

}

printf («n ||Ax-f||=%1.18fn», max);

double det = 1;

for (int i = 0; i

{

det *= B[i][i];

}

cout << «Determinant:» << endl;

cout << det << endl;

return 0;

}

РаспСчатка Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

Our matrix A is:

0.1100 -0.1700 0.7200 -0.3400

0.8100 0.1200 -0.9100 0.1700

0.1700 -0.1800 1.0000 0.2800

0.1300 0.1700 -0.9900 0.3500

Our string f is:

0.1700 1.0000 0.2100 2.7100

Our matrix B is:

0.1100

0.8100 1.3718

0.1700 0.0827 0.2619

0.1300 0.3709 -0.1614 0.4259

Our matrix C is:

1.0000 -1.5455 6.5455 -3.0909

1.0000 -4.5282 1.9490

1.0000 2.4600

1.0000

Vector x

-5.0073 -79.3203 -14.8955 5.99 673

Nevazka

-0.527

0.1 110

-0.2 470

0.444

||Ax-f||=0.2 470

Determinant:

0.168 305

ΠœΠ΅Ρ‚ΠΎΠ΄ Гаусса ΠŸΡƒΡΡ‚ΡŒ, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, нСвыроТдСнная.

Рассмотрим систСму

= - извСстный n-ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€

=; = - нСизвСстный ΠœΠ΅Ρ‚ΠΎΠ΄ Гаусса Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Рассмотрим 1 шаг:

.

Если Ρ‚ΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ мСстами ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΈ:

Ρ‚ΠΎ: .

Если Ρ‚ΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ мСстами ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†Ρ‹:

Ρ‚ΠΎ: .

Π”Π΅Π»ΠΈΠΌ 1-ю строку ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ :

Π˜ΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈΠ· Π²ΡΠ΅Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ 1-Π³ΠΎ, Ρ‚. Π΅.:

,

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ

.

ΠŸΡƒΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½ΠΎ k-1 шагов:

.

Рассмотрим k-ΠΉ шаг:

k.1. .

k.2. Если Ρ‚ΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ мСстами ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΈ:

ΠΎ .

k.3. Если Ρ‚ΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ мСстами ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†Ρ‹:

Ρ‚ΠΎ; .

k.4. Π”Π΅Π»ΠΈΠΌ k-ю строку ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ :

k.5. Π˜ΡΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈΠ· Π²ΡΠ΅Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ, ΠΊΡ€ΠΎΠΌΠ΅ k-Π³ΠΎ, Ρ‚. Π΅.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ

.

ПослС n-Π³ΠΎ шага ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ РСшСниС Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠœΠ΅Ρ‚ΠΎΠ΄ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ элСмСнта Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Рассмотрим k-ΠΉ шаг,

k.1.

k.2. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.3. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.4. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.5. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

РСшСниС Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠœΠ΅Ρ‚ΠΎΠ΄ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ элСмСнта Π² ΡΡ‚ΠΎΠ»Π±Ρ†Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

Рассмотрим k-ΠΉ шаг,

k.1.

k.2. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.3. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.4. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.5. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

РСшСниС Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

НахоТдСниС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ НахоТдСниС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ модификациями ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Гаусса ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Гаусса для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ БЛАУ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… n+1 мСняСтся Π½Π° 2n.

ΠŸΡ€ΠΈ этом Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½Ρ‹Ρ… n ΡˆΠ°Π³ΠΎΠ² ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ модификациях:

Для Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ:

ВычислСниС опрСдСлитСля ΠœΠ΅Ρ‚ΠΎΠ΄Π° Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅.

, p = 1, s = 1 — Π·Π½Π°ΠΊ опрСдСлитСля Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ шагС

1-ΠΉ шаг Если

Если, мСняСм мСстами 1-ю ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΈ.

Если мСняСм ΠΈ 1-ΠΉ столбцы.

Выносим элСмСнт Π·Π° Π·Π½Π°ΠΊ опрСдСлитСля ЗануляСм всС элСмСнты ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ столбца Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта.

ΠŸΡƒΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½ (k-1) шаг:

Π³Π΄Π΅ .

Если Ρ‚ΠΎ

k-й шаг

k.1.

Если

k.2.Если, мСняСм мСстами k-ю ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΈ.

k.3. Если мСняСм ΠΈ k-ΠΉ столбцы.

Выносим элСмСнт Π·Π° Π·Π½Π°ΠΊ опрСдСлитСля ЗануляСм всС элСмСнты k-Π³ΠΎ столбца начиная с (k+1)-Π³ΠΎ элСмСнта.

n-й шаг:

.

ΠœΠ΅Ρ‚ΠΎΠ΄ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ Рассмотрим k-ΠΉ шаг:

k.1.

Если

k.2. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.3. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.4. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.5. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

ΠœΠ΅Ρ‚ΠΎΠ΄ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π² ΡΡ‚ΠΎΠ»Π±Ρ†Π΅ Рассмотрим k-ΠΉ шаг:

k.1.

Если

k.2. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.3. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.4. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

k.5. Π‘ΠΌ. ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄.

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

#include «stdafx.h»

#include

#include

#include

using namespace std;

const int n = 4;

void Print (double array[n][n])

{

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

printf («%.4f», array[i][j]," «);

}

cout << endl;

}

}

void buldMatrA (double A[n][n])

{

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

A[0][0] = 0.11;

A[0][1] = -0.17;

A[0][2] = 0.72;

A[0][3] = -0.34;

A[1][0] = 0.81;

A[1][1] = 0.12;

A[1][2] = -0.91;

A[1][3] = 0.17;

A[2][0] = 0.17;

A[2][1] = -0.18;

A[2][2] = 1;

A[2][3] = 0.28;

A[3][0] = 0.13;

A[3][1] = 0.17;

A[3][2] = -0.99;

A[3][3] = 0.35;

}

}

}

void Gauss_Matr (double A[n][n], double f[n])

{

int P[n];

for (int i = 0; i < n; i++)

P[i] = i;

double max=-1;

int line = 0, column= 0;

double d, x[n], r[n], Ax[n];

double A1[n][n+1]; // создаём Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ

for (int i = 0; i < n; i ++)

{

for (int j = 0; j < n; j++)

{

A1[i][j] = A[i][j];

}

A1[i][n] = f[i];

}

cout << endl;

cout << «This is a matrix A1[n][n+1] «<< endl;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n+1; j++)

{

printf («%.4f», A1[i][j]," «);

}

cout << endl;

}

for (int k = 0; k < n; k++)

{

max = fabs (A1[k][k]);

line = k;

column = k;

for (int i = k; i < n; i++)

{

for (int j = k; j < n; j++)

{

if (fabs (A1[i][j]) > max)

{

max = fabs (A1[i][j]);

line = i;// Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ макс элСмСнта ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ

column = j;

}

}

}

if (line ≠ k)// мСняСм строки мСстами

{

for (int j = k; j < n+1; j++)

{

swap (A1[k][j], A1[line][j]);

}

}

if (column ≠ k)// мСняСм столбцы мСстами

{

for (int i = 0; i < n; i++)

{

swap (A1[i][k], A1[i][column]);

}

swap (P[k], P[column]);

}

d = A1[k][k];

for (int j = k; j < n+1; j++)// Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊ-ΠΉ строки Π½Π° ΠΌΠ°ΠΊΡ элСмСнт

{

A1[k][j] = (double) A1[k][j] / d;

}

for (int i = 0; i < n; i++)

{

if (i ≠ k)

{

d = A1[i][k];

for (int j = k; j < n+1; j++)

{

A1[i][j] -= d*A1[k][j];

}

}

}

}

cout << endl;

for (int i = 0; i < n; i++)

{

x[P[i]] = A1[i][n];

}

cout<<" Root" <

for (int i = 0; i < n; i++)

{

printf («%.4f», x[i], ««);

cout << endl;

}

buldMatrA (A);

cout<

for (int i=0; i

{

double s=0;

for (int j=0; j

{

s+=A[i][j]*x[j];

}

Ax[i]=s;

r[i] = Ax[i]-f[i];

}

cout<<" Nevazka" <

for (int i=0; i

{

printf («%1.17fn», r[i]);

}

max=0;

for (int i=0; i

{

if (max< fabs (r[i]))

{

max=fabs (r[i]);

}

}

printf («n ||Ax-f||=%1.18fn», max);

}

void Gauss_column (double A[n][n], double f[n])

{

double max;

int line = 0, column = 0;// ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ максимального элСмСнта

double d, x[n], r[n], Ax[n];

double A1[n][n+1]; // создаём Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ

for (int i = 0; i < n; i ++)

{

for (int j = 0; j < n; j++)

{

A1[i][j] = A[i][j];

}

A1[i][n] = f[i];

}

cout << endl;

for (int k = 0; k < n; k++)

{

max = fabs (A1[k][k]);

line = k;

column = k;

for (int i = k; i < n; i++)

{

if (fabs (A1[i][k]) > max)

{

max = fabs (A1[i][k]);

line = i;// Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ макс элСмСнта ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ

}

}

if (line ≠ k)// мСняСм строки мСстами

{

for (int j = k; j < n+1; j++)

{

swap (A1[k][j], A1[line][j]);

}

}

d = A1[k][k];

for (int j = k; j < n+1; j++)// Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊ-ΠΉ строки Π½Π° ΠΌΠ°ΠΊΡ элСмСнт

{

A1[k][j] = (double) A1[k][j] / d;

}

for (int i = 0; i < n; i++)

{

if (i ≠ k)

{

d = A1[i][k];

for (int j = k; j < n+1; j++)

{

A1[i][j] -= d*A1[k][j];

}

}

}

}

cout << endl;

cout<<" Root" <

for (int i = 0; i < n; i++)

{

x[i] = A1[i][n];

printf («%.4f», x[i], ««);

cout << endl;

}

buldMatrA (A);

cout<

for (int i=0; i

{

double s=0;

for (int j=0; j

{

s+=A[i][j]*x[j];

}

Ax[i]=s;

r[i] = Ax[i]-f[i];

}

cout<<" Nevazka" <

for (int i=0; i

{

printf («%1.18fn», r[i]);

}

max=0;

for (int i=0; i

{

if (max< fabs (r[i]))

{

max=fabs (r[i]);

}

}

printf («n ||Ax-f||=%1.18fn», max);

}

void Gauss_Line (double A[n][n], double f[n])

{

int P[n];

for (int i = 0; i < n; i++)

P[i] = i;

double max;

int line = 0, column= 0;// ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ максимального элСмСнта

double d, x[n], r[n], Ax[n];

double A1[n][n+1]; // создаём Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ

for (int i = 0; i < n; i ++)

{

for (int j = 0; j < n; j++)

{

A1[i][j] = A[i][j];

}

A1[i][n] = f[i];

}

cout << endl;

for (int k = 0; k < n; k++)

{

max = fabs (A1[k][k]);

line = k;

column = k;

for (int j = k; j < n; j++)

{

if (fabs (A1[k][j]) > max)

{

max = fabs (A1[k][j]);

column = j;

}

}

if (column≠ k)// мСняСм столбцы мСстами

{

for (int i = 0; i < n; i++)

{

swap (A1[i][k], A1[i][column]);

}

swap (P[k], P[column]);

}

d = A1[k][k];

for (int j = k; j < n+1; j++)// Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊ-ΠΉ строки Π½Π° ΠΌΠ°ΠΊΡ элСмСнт

{

A1[k][j] = (double) A1[k][j] / d;

}

for (int i = 0; i < n; i++)

{

if (i ≠ k)

{

d = A1[i][k];

for (int j = k; j < n+1; j++)

{

A1[i][j] -= d*A1[k][j];

}

}

}

}

cout << endl;

for (int i = 0; i < n; i++)

{

x[P[i]] = A1[i][n];

}

cout<<" Root" <

for (int i = 0; i < n; i++)

{

printf («%.4f», x[i], ««);

cout << endl;

}

buldMatrA (A);

cout<

for (int i=0; i

{

double s=0;

for (int j=0; j

{

s+=A[i][j]*x[j];

}

Ax[i]=s;

r[i] = Ax[i]-f[i];

}

cout<<" Nevazka" <

for (int i=0; i

{

printf («%1.18fn», r[i]);

}

max=0;

for (int i=0; i

{

if (max< fabs (r[i]))

{

max=fabs (r[i]);

}

}

printf («n ||Ax-f||=%1.18fn», max);

}

void Determinant (double A[n][n])

{

double max, p = 1;

int s = 1;

int line = 0, column= 0;// ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ максимального элСмСнта

double d;

for (int k = 0; k < n; k++)

{

max = fabs (A[k][k]);

line = k;

column = k;

for (int i = k; i < n; i++)

{

for (int j = k; j < n; j++)

{

if (fabs (A[i][j]) > max)

{

max = fabs (A[i][j]);

line = i;// Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ макс элСмСнта ΠΈ Ρ„икс ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ

column = j;

}

}

}

if (line ≠ k)// мСняСм строки мСстами

{

for (int j = k; j < n; j++)

{

swap (A[k][j], A[line][j]);

}

s *= -1;

}

if (column ≠ k)// мСняСм столбцы мСстами

{

for (int i = k; i < n; i++)

{

swap (A[i][k], A[i][column]);

}

s *= -1;

}

d = A[k][k];

for (int j = k; j < n; j++)// Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊ-ΠΉ строки Π½Π° ΠΌΠ°ΠΊΡ элСмСнт

{

A[k][j] = (double) A[k][j] / d;

}

p = p*d;

for (int i = k+1; i < n; i++)

{

d = A[i][k];

for (int j = k; j < n; j++)

{

A[i][j] -= d*A[k][j];

}

}

}

cout<

cout << endl;

}

void Multipluying (double A[n][n], double B[n][n])

{

double C[n][n];

double s = 0;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

s = 0;

for (int k = 0; k < n; k++)

{

s = s + A[i][k]*B[k][j];

}

C[i][j] = s;

}

}

Print (C);

}

void Inverted_Gauss_Matr (double A[n][n])

{

double d;

int P[n];

int line, column;

double max;

for (int l = 0; l < n; l++)

P[l] = l;

double A2[n][2*n]; // создаём Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ

for (int i = 0; i < n; i ++)

{

for (int j = 0; j < n; j++)

{

A2[i][j] = A[i][j];

}

}

for (int i = 0; i < n; i++)

{

for (int j = n; j < 2*n; j++)

{

if ((i+n) == j)

{

A2[i][j] = 1;

}

else

{

A2[i][j] = 0;

}

}

}

for (int i = 0; i < n; i++)

{

for (int j = 0; j < 2*n; j++)

{

printf («%.4f», A2[i][j], «»);

}

cout << endl;

}

for (int k = 0; k < n; k++)

{

max = fabs (A2[k][k]);

line = k;

column = k;

for (int i = k; i < n; i++)

{

for (int j = k; j < n; j++)

{

if (fabs (A2[i][j]) > max)

{

max = fabs (A2[i][j]);

line = i;// Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ макс элСмСнта ΠΈ Ρ„икс ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ

column= j;

}

}

}

if (line ≠ k)// мСняСм строки мСстами

{

for (int j = k; j < 2*n; j++)

{

swap (A2[k][j], A2[line][j]);

}

}

if (column ≠ k)// мСняСм столбцы мСстами

{

for (int i = 0; i < n; i++)

{

swap (A2[i][k], A2[i][column]);

}

swap (P[k], P[column]);//мСнял Ρ‚ΡƒΡ‚!!!11

}

d = A2[k][k];

for (int j = k; j < 2*n; j++)// Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊ-ΠΉ строки Π½Π° ΠΌΠ°ΠΊΡ элСмСнт

{

A2[k][j] = (double) A2[k][j] / d;

}

for (int i = 0; i < n; i++)

{

if (i ≠ k)

{

d = A2[i][k];

for (int j = k; j < 2*n; j++)

{

A2[i][j] -= d*A2[k][j];

}

}

}

}

double A_Inverted[n][n];

cout << endl << endl;

cout << «Inverted matrix is:» << endl;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

A_Inverted[P[i]][j] = A2[i][j+n];

}

}

cout << endl;

Print (A_Inverted);

cout << endl << «Check» << endl << endl;

Multipluying (A, A_Inverted);

}

void Inverted_Gauss_Line (double A[n][n])

{

double max;

int line = 0, column = 0;// ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ максимального элСмСнта

double d;

int P[n];

for (int l = 0; l < n; l++)

P[l] = l;

double A2[n][2*n]; // создаём Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ

for (int i = 0; i < n; i ++)

{

for (int j = 0; j < n; j++)

{

A2[i][j] = A[i][j];

}

}

for (int i = 0; i < n; i++)

{

for (int j = n; j < 2*n; j++)

{

if ((i+n) == j)

{

A2[i][j] = 1;

}

else

{

A2[i][j] = 0;

}

}

}

for (int k = 0; k < n; k++)

{

max = fabs (A2[k][k]);

line = k;

column= k;

for (int j = k; j < n; j++)

{

if (fabs (A2[k][j]) > max)

{

max = fabs (A2[k][j]);

column= j;

}

}

if (column ≠ k)// мСняСм столбцы мСстами

{

for (int i = 0; i < n; i++)

{

swap (A2[i][k], A2[i][column]);

}

swap (P[k], P[column]);

}

d =A2[k][k];

for (int j = k; j < 2*n; j++)// Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊ-ΠΉ строки Π½Π° ΠΌΠ°ΠΊΡ элСмСнт

{

A2[k][j] = (double) A2[k][j] / d;

}

for (int i = 0; i < n; i++)

{

if (i ≠ k)

{

d = A2[i][k];

for (int j = k; j < 2*n; j++)

{

A2[i][j] -= d*A2[k][j];

}

}

}

}

cout << endl;

double A_Inverted[n][n];

cout << endl;

cout << «Inverted matrix is:» << endl;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

A_Inverted[P[i]][j] = A2[i][j+n];

}

}

cout << endl;

Print (A_Inverted);

cout << endl << «Check» << endl << endl;

Multipluying (A, A_Inverted);

}

void Inverted_Gauss_Column (double A[n][n])

{

double max;

int line = 0, column = 0;// ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ максимального элСмСнта

double d;

double A2[n][2*n]; // создаём Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ

int P[n];

for (int l = 0; l < n; l++)

P[l] = l;

for (int i = 0; i < n; i ++)

{

for (int j = 0; j < n; j++)

{

A2[i][j] = A[i][j];

}

}

for (int i = 0; i < n; i++)

{

for (int j = n; j < 2*n; j++)

{

if ((i+n) == j)

{

A2[i][j] = 1;

}

else

{

A2[i][j] = 0;

}

}

}

for (int k = 0; k < n; k++)

{

max = fabs (A2[k][k]);

line = k;

column = k;

for (int i = k; i < n; i++)

{

if (fabs (A2[i][k]) > max)

{

max = fabs (A2[i][k]);

line = i;// Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ макс элСмСнта ΠΈ Ρ„икс ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ

}

}

if (line ≠ k)// мСняСм строки мСстами

{

for (int j = k; j < 2*n; j++)

{

swap (A2[k][j], A2[line][j]);

}

}

d = A2[k][k];

for (int j = k; j < 2*n; j++)// Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊ-ΠΉ строки Π½Π° ΠΌΠ°ΠΊΡ элСмСнт

{

A2[k][j] = (double) A2[k][j] / d;

}

for (int i = 0; i < n; i++)

{

if (i ≠ k)

{

d = A2[i][k];

for (int j = k; j < 2*n; j++)

{

A2[i][j] -= d*A2[k][j];

}

}

}

}

double A_Inverted[n][n];

cout << endl;

cout << «Inverted matrix is:» << endl;

for (int i = 0; i < n; i++)

{

for (int j = 0; j < n; j++)

{

A_Inverted[i][j] = A2[i][j+n];

}

}

cout << endl;

Print (A_Inverted);

cout << endl << «Check» << endl << endl;

Multipluying (A, A_Inverted);

}

void main ()

{

double A[n][n];

buldMatrA (A);

cout << «Our matrix A is:» << endl;

Print (A);

double f[n] = {0.17,1,0.21,2.71}; // это Π²Π΅ΠΊΡ‚ΠΎΡ€ свободных Ρ‡Π»Π΅Π½ΠΎΠ²

cout << endl << «Our vector f is:» << endl;

for (int i = 0; i < n; i++)

{

printf («%.4f», f[i], ««);

}

cout<

cout << «Gauss method — max element in MATRIX» ;

Gauss_Matr (A, f);

cout << «Gauss method — max element in COLUMN» ;

Gauss_column (A, f);

cout << «Gauss method — max element in LINE» ;

Gauss_Line (A, f);

cout << «Determinant:» << endl;

Determinant (A);

buldMatrA (A);

cout << «matrix A2[n][2*n]» << endl;

Inverted_Gauss_Matr (A);

cout << «Matrix by lines» << endl;

Inverted_Gauss_Line (A);

cout << «Matrix by the column» << endl;

Inverted_Gauss_Column (A);

system («PAUSE»);}

РаспСчатка Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

Our matrix A is:

0.1100 -0.1700 0.7200 -0.3400

0.8100 0.1200 -0.9100 0.1700

0.1700 -0.1800 1.0000 0.2800

0.1300 0.1700 -0.9900 0.3500

Our vector f is:

0.1700 1.0000 0.2100 2.7100

Gauss method — max element in MATRIX

This is a matrix A1[n][n+1]

0.1100 -0.1700 0.7200 -0.3400 0.1700

0.8100 0.1200 -0.9100 0.1700 1.0000

0.1700 -0.1800 1.0000 0.2800 0.2100

0.1300 0.1700 -0.9900 0.3500 2.7100

Root

-5.0073

-79.3203

-14.8955

5.9967

Nevazka

-0.8

-0.89

0.86

-0.178

||Ax-f||=0.1 776

Gauss method — max element in COLUMN

Root

-5.0073

-79.3203

-14.8955

5.9967

Nevazka

0.3 469

-0.888

-0.916

0.0

||Ax-f||=0.3 469

Gauss method — max element in LINE

Root

-5.0073

-79.3203

-14.8955

5.9967

Nevazka

0.1 249

-0.2 442

-0.472

-0.888

||Ax-f||=0.2 442

Determinant:

0.168 305

matrix A2[n][2*n]

0.1100 -0.1700 0.7200 -0.3400 1.0000 0.0000 0.0000 0.0000

0.8100 0.1200 -0.9100 0.1700 0.0000 1.0000 0.0000 0.0000

0.1700 -0.1800 1.0000 0.2800 0.0000 0.0000 1.0000 0.0000

0.1300 0.1700 -0.9900 0.3500 0.0000 0.0000 0.0000 1.0000

Inverted matrix is:

-1.4253 1.7694 0.2315 -2.4292

-28.4211 9.1371 -1.6455 -30.7307

-4.9593 1.5461 0.2594 -5.7760

0.3063 -0.7221 1.4468 2.3479

Check

1.0000 -0.0000 0.0000 -0.0000

0.0000 1.0000 0.0000 0.0000

-0.0000 0.0000 1.0000 -0.0000

0.0000 0.0000 0.0000 1.0000

Matrix by lines

Inverted matrix is:

-1.4253 1.7694 0.2315 -2.4292

-28.4211 9.1371 -1.6455 -30.7307

-4.9593 1.5461 0.2594 -5.7760

0.3063 -0.7221 1.4468 2.3479

Check

1.0000 -0.0000 0.0000 0.0000

-0.0000 1.0000 -0.0000 -0.0000

0.0000 0.0000 1.0000 -0.0000

-0.0000 0.0000 -0.0000 1.0000

Matrix by the column

Inverted matrix is:

-1.4253 1.7694 0.2315 -2.4292

-28.4211 9.1371 -1.6455 -30.7307

-4.9593 1.5461 0.2594 -5.7760

0.3063 -0.7221 1.4468 2.3479

Check

1.0000 -0.0000 -0.0000 0.0000

-0.0000 1.0000 0.0000 0.0000

-0.0000 0.0000 1.0000 -0.0000

-0.0000 -0.0000 0.0000 1.0000

Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ алгСбраичСский ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ гаусс Π’Ρ‹Π²ΠΎΠ΄ Π’ Π½Π°ΡˆΠ΅ΠΌ случаС Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ оказался ΠΌΠ΅Ρ‚ΠΎΠ΄ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅, Π΅Π³ΠΎ нСвязка составила

||Ax-f||=0.1 776.

ΠŸΠΎΡ‚ΠΎΠΌ ΠΈΠ΄Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅

||Ax-f||=0.2 442.

А ΡƒΠΆΠ΅ послС ΠΈΠ΄ΡƒΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ с Π½Π΅Π²ΡΠ·ΠΊΠΎΠΉ

||Ax-f||=0.2 470

ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Гаусса с Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта Π² ΡΡ‚ΠΎΠ»Π±Ρ†Π΅ с Π½Π΅Π²ΡΠ·ΠΊΠΎΠΉ

||Ax-f||=0.3 469

соотвСтствСнно. Π’Π°ΠΊ ΠΆΠ΅ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ систСмы

Root

-5.0073

-79.3203

-14.8955

5.9967

ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ

Determinant:

0.168 305

Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… совпало для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ