Professional Documents
Culture Documents
Lab 4 CPM
Lab 4 CPM
Ігоря Сікорського»
Факультет інформатики та обчислювальної техніки
Кафедра інформаційних систем та технологій
Лабораторна робота № 4
з дисципліни «Спеціальні розділи математики-2.
Чисельні методи»
на тему
Виконав:
студент гр. ІС-21
Заскалета Богдан
Викладач:
доц. Рибачук Л.В.
Київ – 2023
Зміст
1 Постановка задачі
Створити програму, для зведення матриці А до нормальної форми
Фробеніуса Р.
const int m = 4;
double M[m][m] = { };
double M2[m][m] = { };
double M1[m][m] = { };
double M0[m][m] = { };
double S[m][m] = { };
double invM[m][m] = { };
double intermA[m][m] = { };
double sol[m] = { 4.44214, 9.20913, 2.68065, 5.62808 };
double yVectors[m][m] = { };
double xVectors[m][m] = { };
double mistake[m][m] = { };
int main()
{
//Matrix A
double A[m][m] = {
{6.37, 1.26, 0.81, 1.225},
{1.26, 4.05, 1.30, 0.16},
{0.81, 1.30, 5.55, 2.10},
{1.225, 0.16, 2.10, 5.99}
};
double ACopy[m][m] = {
{6.37, 1.26, 0.81, 1.225},
{1.26, 4.05, 1.30, 0.16},
{0.81, 1.30, 5.55, 2.10},
{1.225, 0.16, 2.10, 5.99}
};
//Find P matrix
findMatrixM(A, i);
multOfMatrix(invM, A, M);
//Find P vectors
for (int i = 0; i < m; i++) {
//Find A vectors
//Find mistake
findMistake(ACopy);
cout << "Mistake:" << endl;
if (i == iter) {
if (i == j) {
M[i][j] = 1 / A[i + 1][j];
invM[i][j] = A[i + 1][j];
}
else {
M[i][j] = ((-1) * A[i + 1][j]) / A[i + 1][i];
invM[i][j] = A[i + 1][j];
}
}
else if (i == j) {
M[i][j] = 1;
invM[i][j] = 1;
}
else {
M[i][j] = 0;
invM[i][j] = 0;
}
switch (iter) {
case 0:
M0[i][j] = M[i][j];
break;
case 1:
M1[i][j] = M[i][j];
break;
case 2:
M2[i][j] = M[i][j];
break;
default:
break;
}
}
}
}
double intermMatrix[m][m] = { };
double elem = 0;
intermMatrix[k][i] = elem;
}
}
double elem = 0;
for (int j = 0; j < m; j++) {
elem += (intermMatrix[k][j] * M[j][i]);
}
intermA[k][i] = elem;
}
}
}
double elem = 0;
xVectors[i][j] = elem;
}
}
}
double elem = 0;
for (int j = 0; j < m; j++) {
elem += A[i][j] * xVectors[k][j];
}
intermAX[i] = elem;
}