ΠΡΡΠΌΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ Π°Π»Π³Π΅Π±ΡΠ°ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ
ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΠ°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΠ°ΡΡΡΠ° ΠΏΠΎΠ²ΡΠΎΡΠ΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΠ°ΡΡΡΠ° Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π‘ΠΠΠ£, Π² ΠΊΠΎΡΠΎΡΡΡ 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
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ²ΠΏΠ°Π»ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².